Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Cambiar propiedades cuando quito el mouse (https://www.clubdelphi.com/foros/showthread.php?t=37404)

dany2006 12-11-2006 22:20:41

Cambiar propiedades cuando quito el mouse
 
hola, necesito que se cambien algunas propiedades de los Shapes cuando quito el puntero del mouse, por ejemplo Pen->Whidth. Como me pueden ayudar a resolverlo. gracias.

seoane 12-11-2006 22:35:35

:confused: ¿Probaste con los eventos OnMouseEnter y OnMouseLeave de TShape?

dany2006 12-11-2006 22:54:04

eventos de TShape
 
En la lista de eventos de TShape no me figuran estos que mencionas. Estoy usando Borland Builder C++ 6

seoane 12-11-2006 23:21:16

Supongo que la versión que tu utilizas no dispone de ese evento. Pues no queda otro remedio que implementarlo "a mano". Para eso declaramos una variable en la que almacenaremos el ultimo Shape sobre el que se movió el ratón.

Algo así:
Código Delphi [-]
TForm1 = class(TForm)
    Shape1: TShape;
    Shape2: TShape;
    Shape3: TShape;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    OldShape: TShape; // <- La variable de la que hablaba
  public
    { Public declarations }
  end;

Ahora en el evento OnCreate del formulario nos aseguramos de que la variable toma el valor nil.
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  OldShape:= nil;
end;

Por ultimo solo tenemos que dirigir todos los eventos OnMouseMove de los TShape y el de los objetos que se encuentren por debajo de estos (Normalmente se tratara del formulario, pero puede que sea un panel o algo similar) al mismo procedimiento. Seria algo como esto:
Código Delphi [-]
procedure TForm1.Shape1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if OldShape <> Sender then
  begin
    if OldShape <> nil then
    begin
      OldShape.Pen.Width:= 1;
    end;
    if (Sender is TShape) then
    begin
      OldShape:= TShape(Sender);
      OldShape.Pen.Width:= 5;
    end else
      OldShape:= nil;
  end;
end;

En el procedure anterior lo que hacemos es cambiar el pen del shape cada vez que el ratón entra o sale. Espero que te sirva, ya se que esta echo en delphi, pero no sera muy difícil traducirlo ;)

dany2006 14-11-2006 16:21:39

Gracias!!!!!!!!!!
 
Muchas Gracias.


La franja horaria es GMT +2. Ahora son las 05:48:15.

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