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

 
 
Herramientas Buscar en Tema Desplegado
  #19  
Antiguo 08-04-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
En el ejemplo, los eventos del ratón, los maneja el propio formulario, aunque si te fijas, son eventos producidos por TImage. La función que maneja un evento, no suele ser miembro de la ventana que lo provoca, sino del formulario, de esa forma las VCL facilitan el no tener que derivar una clase de cada ventana que se use. En general esto es así a no ser que estemos programado un control.

Por otra parte no se si te has fijado que el canvas utilizado para pintar tu rectángulo no es el del TImage sino el del propio formulario. Con esto evitamos el parpadeo que aveces aparece al pintar en un TImage.

Esta expresión no deberías usarla:
Código:
TRect *SelectRect;
SelectRect= new TRect(100,100,200,200);
Esto te obliga a destruir explicitamente el TRect, una vez usado:

Código:
TRect *SelectRect = new TRect(100,100,200,200);
.
.
.
delete SelectRect;
Como TRect no pertenece a la estructura de clases de la VCL propiamente dicha, no estás obligado a usar punteros, asi que es mas fácil esto:

Código:
   TRect SelectRect(100,100,200,200);
¿No te parece?. No creas un puntero a un objeto, sino el objeto directamente.

Los Eventos del raton no los llamas tu, se producen al utilizar el ratón. Tu puedes controlarlos. Si no quieres que tu rectángulo selector se pinte hasta que no pulses previamente un botón, coloca una bandera en el evento, para que no se ejecute si no es verdadera.

Código:
Form1::Button1Click(..){
  Seleccionar = true; // Seleccionar es una variable global tipo bool usasa como bandera.
}

Form1::OnMouseMove(...){
    if(Selecionar){

      //Resto del evento.
   }
}

Form1::OnMouseDown(...){
    if(Selecionar){

      //Resto del evento.
   }
}
Form1::OnMouseUp(...){
     if(Selecionar){
 
       //Resto del evento.
    }
}
¿Me explico?.

Un buen ejercicio sería programar todo esto de la selección como un componente visual que incrustes en un formulario y al que asignes una propiedad de tipo control donde pintarás tu rectángulo selector.

Saludos.

Última edición por escafandra fecha: 08-04-2008 a las 23:52:49.
Responder Con Cita
 


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
Selección en Excel Jordy Servers 1 06-12-2005 08:55:00
Selección de figuras Luli Gráficos 8 01-12-2004 11:08:49
seleccion dbgrid davidgaldo Conexión con bases de datos 3 26-02-2004 09:45:33
Seleccion en DBLookUpComboBox NuncaMas Varios 1 22-12-2003 18:41:21
una seleccion YolandaM Impresión 2 04-10-2003 20:11:59


La franja horaria es GMT +2. Ahora son las 14:11:38.


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