Ver Mensaje Individual
  #22  
Antiguo 07-03-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
El sistema de pintado de rayas es el mismo que tu pusiste, quería que el código comenzase a serte familiar.

Tienes una forma de detectar las pulsaciones del ratón que es asignar los eventos del mismo a una función tuya, exactamente como lo haces en el entorno visual con un formulario. La mecánica sería OnEvento = MiFuncion. Esto es aplicable a cualquier evento del control sobre el que trabajes, sólo tienes que declarar tu función como se declara el evento y asignar el puntero. De esta forma to tienes que capturar los mensajes de Windows, reservando esa técnica para cuando el control no reacciona a cierto evento que te interese.

Para ilustrar el tema te pongo un ejemplo sobre el anterior:
Código:
class TPrueba: public TWinControl
{
  __published:
    void __fastcall PruebaMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y);  
  private:
    TImage *Imagen;
    TPanel *Panel;
  public:
   __fastcall TPrueba(TComponent* Owner);
};
Código:
__fastcall TPrueba::TPrueba(TComponent* Owner): TWinControl(Owner)
{
  Imagen = new TImage(this);
  Imagen->Parent = this;
  Imagen->Align = alClient;
  for(int y=0; y<200; y++) {
    if((y%2)==0){Imagen->Canvas->Pen->Color = clRed;}else{Imagen->Canvas->Pen->Color = clBlue;}
    Imagen->Canvas->Pen->Width = 1;
    Imagen->Canvas->MoveTo(0,y);
    Imagen->Canvas->LineTo(199,y);
  }

  Panel = new TPanel(this);
  Panel->Top = 0;
  Panel->Left = 0;
  Panel->Width = 20;
  Panel->Height = 20;
  Panel->Parent = this;

  Imagen->OnMouseDown = PruebaMouseDown;  // Asignando el evento del TImage...
}

void __fastcall TPrueba::PruebaMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
{
   // Tu respuesta al ratón
}

Saludos.

Última edición por escafandra fecha: 07-03-2014 a las 19:43:20.
Responder Con Cita