Cita:
Empezado por aitorqrv
...
Para cambiar el estado de las salidas, me gustaria que variase su estado al pulsar sobre los circulos que representan las salidas que me encienden o me apagan las bonbillas, sin tener que utilizar un checkbox.
|
Hola aitorqrv.
Te propongo esta idea, con el editor gráfico que prefieras (el que trae Delphi sirve perfectamente) crea dos imágenes .bmp de 16 x 16. Estas imágenes que podrías guardar con los nombres
LedOff.bmp y
LedOn.bmp por ejemplo, serán: Un circulo pintado de verde oscuro la primera y la otra de verde muy claro para lograr el efecto apagado/encendido.
En el form coloca un
TImageList, agrega en la posición 0 a LedOff.bmp y en la 1 LedOn.bmp. Un
TPanel con ocho
TSpeedButton dentro y los
TLabel que precises. Luego mediante Ctrl+mouse selecciona los 8 SpeedButtons y asígnale a todos el mismo evento
OnClick.
El código quedaría:
Código Delphi
[-]
...
implementation
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
sp : TSpeedButton;
begin
for i := 0 to 7 do
begin
sp := FindComponent('SpeedButton'+IntToStr(i+1)) as TSpeedButton;
if Assigned(sp) then
begin
sp.Flat := True;
sp.Tag := 0; ImageList1.GetBitmap(sp.Tag, sp.Glyph)
end;
end;
end;
procedure TForm1.SpeedButtonsClick(Sender: TObject);
begin
with Sender as TSpeedButton do
begin
Tag := Integer(not Boolean(Tag)); Glyph := nil;
ImageList1.GetBitmap(Tag,Glyph);
end;
end;
El estado de encendido o apagado se almacena en la propiedad
Tag de los SpeedButtons y se cambia ante el click sobre el mismo como solicitabas.
El resultado es:
Saludos