Ver Mensaje Individual
  #4  
Antiguo 20-12-2011
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Reputación: 22
Caro Va por buen camino
Cita:
Empezado por mizzard Ver Mensaje
.. tambien necesitaria que tuviera las propiedades TabStop y TabOrder.
Hola mizzard, el TSpeedButton no tiene esas propiedades, para hacer lo que quieres también puedes utilizar Panels y sus propiedades BevelOuter y BevelInner, el codigo que haga lo que necesitas mas o menos sería así:

Dentro de un GroupBox o Panel, añades todos los panels que necesites y lo redimensionas del tamaño de tu botón.

Código Delphi [-]
//Variable global para guardar el ultimo Panel que ha sido presionado
Control : TPanel;

//En el evento OnEnter
procedure TForm1.Panel2Enter(Sender: TObject);
begin
 if Assigned(Control) then
  begin
   Control.BevelOuter:=bvNone;
   Control.BevelInner := bvRaised;
  end;

 TPanel(Sender).BevelInner := bvNone;
 TPanel(Sender).BevelOuter:=bvLowered;
 Control := TPanel(Sender);
end;

//En el evento OnMouseDown
procedure TForm1.Panel2MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 if Assigned(Control) then
  begin
   Control.BevelOuter:=bvNone;
   Control.BevelInner := bvRaised;
  end;

 TPanel(Sender).SetFocus;//aumentamos esta línea para que tome el foco
 TPanel(Sender).BevelInner := bvNone;
 TPanel(Sender).BevelOuter:=bvLowered;
 Control := TPanel(Sender);
end;

Y debes hacer que todos tus panels apunten al mismo evento, en este caso a los eventos OnEnter y OnMouseDown.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita