Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-09-2011
Toni Toni is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona - España
Posts: 364
Poder: 24
Toni Va por buen camino
Hola,

Primero de todo daros las gracias por las respuestas.

Cita:
Yo no entiendo a qué te refieres con "mover sólo verticalmente sin superar los límites del mismo" De hecho tampoco entiendo para qué podrías querer un formulario que ocupe más que el escritorio; quizá si nos explicas más acerca de lo que quieres hacer podríamos ayudarte mejor.
El motivo de todo esto es para realizar un interface de usuario en una nueva aplicación un poco diferente, la idea es hacer una aplicación con un aspecto 'similar' al interface de usuario del Ipod. Por eso comentaba que queria poder definir un formulario de mayor tamaño que el escritorio y por eso quiero poderlo desplazar de una forma facil arrastrando con el puntero del raton o con el dedo en una pantalla tactil.

Lo de no superar los limites, pues me refiero a que si tengo un formulario mayor que el escritorio, pues cuando lo muevo que solo me permita moverlo hasta el inicio o el fin del mismo no mas alla. Para que el efecto de mover el formulario sea como si fuese una pagina.

Con el codigo que me pones perfecto puedo mover el formulario verticalmente, pero me sucede el mismo problema que comentaba que cuando lo desplazo hacia arriba y supera el margen de la pantalla al soltar el boton del mouse me revota el formulario a la posicion Top=0. Como puedo evitar este revote?

Para que os hagais una idea lo que quiero hacer es una aplicación que se ejecutara en una PDA via terminal server y quiero que la aplicación se pueda manejar algo 'parecido' al Ipod, ya que la pantalla de estas pda's es bastante reducida y con esto me permitira darle un poco mas de juego a la hora de introducir datos en formulario mayores que la pantalla.
__________________
Saludos,

Bitman
Responder Con Cita
  #2  
Antiguo 12-09-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Lo del Top=0 no le veo solución. Es decir, ni cuenta me había dado, pero parece ser el comportamiento normal; incluso si mueves una ventana cualquiera con el teclado (Alt+Space, Mover); aunque lo hace, apenas terminas el movimiento, regresa la ventana a Top=0.

Ahora, sigo sin entender del todo lo que quieres lograr, más que nada porque no conozco los iPods. Pero me da la impresión de que podrías lograrlo de otra forma. El formulario simplemente podría ocupar todo lo alto de la pantalla y lo que desplazas es el contenido. Es decir, un formulario puede tener más elementos de los que visualmente caben en la pantalla y al suceder esto aparecen barras de desplazamiento que puedes manipular.

// Saludos
Responder Con Cita
  #3  
Antiguo 12-09-2011
Toni Toni is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona - España
Posts: 364
Poder: 24
Toni Va por buen camino
Lo que intentaba explicar pues seria muy similar ha esto que tu comentas, de alguna forma realizar una aplicación que permitiese utilizar formualrio mayores que la pantalla, pero en lugar de utilizar barras de desplazamiento desplazarse por el formulario arrastrandolo con el mouse o dedo.

por ejemplo, como cualquier aplicación web que el formulario es mayor que la pantalla y lo vamos desplazando con la barra de desplazamiento o se va desplazando a medida que vamos introduciendo datos en los campos. Lo que queria realizar es esto, el porque no quiero utilizar las barras de desplazamiento, es porque lo estoy pensando para dispositivos tipo PDA y la pantalla ya es pequeña de por si y la barra te come un poco de pantalla.

Corrijo que mencione el Ipod y es Ipad:

http://www.youtube.com/watch?v=adnx6...tailpage#t=74s

Realmente la unica pega que encontraba ahora es el reposicionamiento automatico en Top=0 que hace cuando desplazo la ventana hacia arriba.

El porque queria hacer de esta forma, con formularios es para aprovechar todo el IDE de Builder para crear los formularios en tiempo de diseño y no mediante código.

Espero haberme explicado un poco mejor.

Muchas gracias Roman.
__________________
Saludos,

Bitman
Responder Con Cita
  #4  
Antiguo 12-09-2011
_cero_ _cero_ is offline
Miembro
 
Registrado: abr 2007
Posts: 147
Poder: 20
_cero_ Va por buen camino
Y el ejemplo que te dejé, te sirvió? Lo ejecutaste? Hace exactamente lo que pides (claro de una forma básica), ya solo falta que tú le agregues las animaciones y el límite inferior, no se para las animaciones se me ocurre un timer que te regrese el formulario a 0 o al máximo de abajo.

Pd. Si, me imaginaba que lo que intentabas hacer era algo táctil, por eso mi mención de metro (en mi opinión un mejor concepto), que se puede mover en X y Y.

Pd2. Builder XE ya tiene forma de manejar interfaces táctiles, ahora mismo no te puedo decir como (ya que no lo he necesitado), pero por ahí debe de haber algo que te facilite la tarea.
Responder Con Cita
  #5  
Antiguo 12-09-2011
Toni Toni is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona - España
Posts: 364
Poder: 24
Toni Va por buen camino
Hola _cero_, muchas gracias por tu ejemplo tambien.

Si que lo mire pero esta hecho en una version superior a mi builder (BCB6.0) y al no poder abrir el proyecto no he podido ver que propiedades has modificado del TForm. He editado los archivos .cpp y .h para ver el codigo pero aqui no he visto que es lo que hace que se pueda desplazar hacia arribar el formulario fuera del margen.

La verdad que tambien me despisto porque has utilizado un TImage y pense que desplazabas el image y no el form.

Haber si me puedes decir que propiedades cambiastes en el form.
__________________
Saludos,

Bitman
Responder Con Cita
  #6  
Antiguo 13-09-2011
_cero_ _cero_ is offline
Miembro
 
Registrado: abr 2007
Posts: 147
Poder: 20
_cero_ Va por buen camino
Bueno, en el form solo cambie la propiedad “BorderStyle” a “bsNone”, y puse el tamaño a 2000 de ancho y 2000 de alto, y la magia de todo se hace en los eventos OnMouseDown, OnMouseMove, y OnMouseUp, estos eventos están en casi todos los componentes visuales, incluyendo el form, así que puedes moverlo desde el mismo form o desde un TImage como lo hago yo. Ahora explicare lo que hago:

Código:
//Primero declaramos dos variables globales.
bool dra = false; //Esta nos sirve para saber cuándo el usuario da click (o toca la pantalla), y cuando lo suelta.
TPoint poi; //Y esta nos sirve para saber en qué coordenadas lo hiso

//---------------------------------------------------------------------------
void __fastcall TForm1::ima2MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
/*En esta parte guardamos las coordenadas en las que el usuario hiso click*/
    dra = true;
    poi = Point( X, Y );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ima2MouseMove(TObject *Sender, TShiftState Shift, int X, int Y)
{
/*Si dra == true o sea si el usuario hiso click y no lo ha soltado,
calculamos el punto Y (o Top), que el formulario tendrá*/
    if ( dra == true ) {
//        int xx = Form1->Left + X - poi.x;
        int yy = Form1->Top + Y - poi.y;

        if ( yy < 0 ) {
            Form1->Top = yy;
        }
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ima2MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
/*Aquí ponemos dra = false, porque el usuario levanto el click*/
    dra=false;
}
//---------------------------------------------------------------------------
Pd. Para abrir el formulario que subí, solo tienes que crear un nuevo proyecto y agregar el cpp al proyecto que creaste, en teoría no debería haber mayor inconveniente, aunque no me acuerdo muy bien del builder 6.
Responder Con Cita
  #7  
Antiguo 13-09-2011
Toni Toni is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona - España
Posts: 364
Poder: 24
Toni Va por buen camino
Hola,

Por fin he tenido un poco de tiempo para probar el codigo que me enviaste. Funciona perfectamente, no tiene el problema del mencionado rebote que nos pasaba con las otras tecnicas.

La verdad que el codigo es muy similar ha como lo probe yo la primera vez y por eso me despisto cuando me lo enviaste, eso y el no poder abrir directamente el proyecto por no ser la misma version de builder.

Pero la verdad que asi funciona perfecto! Ahora tengo que hacerme una rutinas para que cuando cambie el foco de los objetos desplace tambien el formulario a la posicion correcta.

Por cierto, se os ocurre una vez hecho esto como se podria captar la velocidad del dedo al mover el formulario y para darle el efecto este como si lo lanzases.

Muchas gracias!
__________________
Saludos,

Bitman
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Bloquear el tamaño de un formulario manolop Varios 2 28-03-2008 08:48:01
Ver imagen en un DBImage en tamaño mayor pablorc Gráficos 2 23-01-2006 16:16:21
Tamaño del Formulario alfil123 Varios 3 30-12-2005 16:13:42
Problema con el tamaño de un formulario Javi2 Varios 1 11-08-2005 13:25:55
Tamaño formulario hijo craven Varios 1 22-05-2003 00:13:33


La franja horaria es GMT +2. Ahora son las 09:07:10.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi