Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Dos estados de un botón (https://www.clubdelphi.com/foros/showthread.php?t=66899)

hernan35 17-03-2010 22:38:38

Dos estados de un botón
 
Hola a todos, mas de uno ya habrá visto que recién estoy aprendiendo a programar con delphi.
Logre que cuando clickeo un button1, el caption de dicho button cambie de 'desactivado' a 'activado', lo que no me sale es que al apretear nuevamente el button por segunda vez cambie a desactivado. ¿Es posible hacerlo con un button?

Desde ya muchas gracias a todos.
Saludos.

BrunoBsso 17-03-2010 23:13:55

Sí, acá te pongo 2 ejemplos simples
Código Delphi [-]
//En el evento OnClick
if (TButton(Sender).Caption[1]='D') or (TButton(Sender).Captio[1]='d') then
  //Si la primer letra del caption es D o d
  TButton(Sender).Caption:='Activado'
else
  TButton(Sender).Caption:='Desactivado';
Eso tomando como precondición que el botón solamente va a decir "Activado" y "Desactivado".
Otra idea es usar la propiedad Tag.
Código Delphi [-]
//Tag=1 sería activado y Tag=0 sería desactivado
if (TButton(Sender).Tag = 0) then begin
  //Si el Tag está en 0 al momento de pulsarlo
  TButton(Sender).Tag:=1;
  TButton(Sender).Caption:='Activado';
end
else begin
  TButton(Sender).Tag:=0;
  TButton(Sender).Caption:='Desactivado';
end;
Ahí tendrías que ver vos cómo inicializás el Tag para hacerlo bien.
Saludos!

ContraVeneno 18-03-2010 17:02:19

¿por que no usas un SpeedButton?

Ese botón tiene una propiedad "Down", la cuál es verdadera cuando está presionado y falso cuando no está presionado, solo tienes que establecer la propiedad "AllowAllUp" a verdadero y debes asignar un número a la propiedad "GroupIndex":

Código Delphi [-]
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
 if (Sender as TSpeedButton).Down then
  (Sender as TSpeedButton).Caption := 'Activo'
 else
  (Sender as TSpeedButton).Caption := 'NO Activo';
end;


La franja horaria es GMT +2. Ahora son las 06:04:30.

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