2008-10-14 8 views
10

No estoy seguro de por qué el TSpeedButton tiene esta propiedad, pero cuando un TSpeedButton es el único botón de un índice de grupo dado, no se mantiene presionado, si se presiona o no "AllowAllUp". Tal vez un control Jedi sería suficiente, pero con suerte hay una solución. Cualquier ayuda o anécdota es apreciada.Cómo hacer que un TSpeedButton de Delphi permanezca presionado si es el único en el grupo

Por cierto, estoy (todavía) usando Delphi 7, no estoy seguro si esto es un enigma general.

Respuesta

16

que no tengo D7 aquí, pero en un D2006 SpeedButton se queda abajo si el groupIndex tiene un valor> 0.

Si este no es el comportamiento que se desea, se puede establecer la propiedad de down-manualmente OnClick-Eventhandler (asegúrese de que GroupIndex sea 0).

1

Hm, extraño, recuerdo haberlo usado bastantes veces con éxito. ¿Quizás debería intentar jugar con la propiedad Down del SpeedButton? No creo que conmuta automáticamente al hacer clic en él --- debe alternar de forma explícita Down, supongo ...

[editar: Checked reemplazado con Down --- TSpeedButton no tiene una propiedad Checked, lo siento !]

2

knight_killer es correcto. te puedo decir que va a trabajar en cualquier versión de Delphi:

object SpeedButton1: TSpeedButton 
    Left = 152 
    Top = 384 
    Width = 23 
    Height = 22 
    AllowAllUp = True 
    GroupIndex = 99 
end 
+0

GroupIndex = 99 es arbitrario ¿verdad? –

+1

sí, use cualquier GroupIndex que desee. Pero tiene que ser mayor que cero –

+0

gracias, knight_killer por responder ese cmt. –

10

simplemente he intentado en Delphi 7 (build 4.453):

  • Crear nueva aplicación
  • añadir TSpeedButton para formar
  • conjunto AllowAllUp := true;
  • conjunto GroupIndex := 1;
  • ejecución de la aplicación

Al hacer clic en el botón, cambia su estado hacia abajo sin ningún otro código necesario.

+0

Respuesta perfecta, gracias – Ugur

0

Estaba buscando una solución para mi problema y creo que este es casi el mismo. quería hacer un SpeedButton alternar el arriba y el estado hacia abajo al igual que un interruptor, y he conseguido esto mediante el establecimiento de las propiedades:

AllowAllUp := True; 
GroupIndex := 1; 

Luego, en el OnClick evento del botón escribí:

procedure TForm1.SpeedButton1Click(Sender: TObject); 
begin 
    if(SpeedButton1.AllowAllUp) then 
    begin 
    SpeedButton1.AllowAllUp := False; 
    SpeedButton1.Down := True; 
    end else 
    begin 
    SpeedButton1.AllowAllUp := True; 
    SpeedButton1.Down := False; 
    end; 
end; 

Esto alterna el botón cuando se hace clic y sube cuando se vuelve a hacer clic.

espero que sea de alguna ayuda

0

El truco consiste en establecer el groupIndex en un valor único y establecer AllowAllUp true. Si olvida el primero, no se quedará abajo, si olvida el segundo, no se mantendrá activo, una vez que se haya desactivado.

2

Delphi hace el trabajo por usted para "no escribir CUALQUIER CÓDIGO".

En el IDE de seleccionar todos los SpeedButtons que desea operar como un grupo y luego configure "groupIndex" el todo del grupo a algo distinto de "0" y ya está - sin código - NADA !!

0

Establezca AllowAllup en true y Down en false.

Luego, en caso OnClick:

.... 
btn.AllowAllUp := not btn.AllowAllUp; 
btn.Down  := not btn.Down; 
.... 
1

Para conseguir que esto funcione, no se puede simplemente cambiar entre la propiedad hacia abajo, porque es siempre hacia abajo en el evento OnClick. Necesita tener otro valor:

procedure TForm1.SpeedButton1Click(Sender: TObject); 
begin 
    MyBoolProperty := not MyBoolProperty; 
    SpeedButton1.Down := MyBoolProperty; 
end; 
0

Establezca AllowAllUp en True.

Conjunto groupIndex a 0. no

para mantener todo en el OnClick, intente

with Speedbutton1 do 
begin 
     if tag = 1 then tag := 0 else tag := 1; 
     down := (tag = 1); 
end; 
0

GroupIndex grupos de los botones. Solo un botón en el grupo puede estar activo. Todos ellos necesitan tener el mismo índice más alto que 0.

AllowAllUp permite cambiar el botón hacia abajo y hacia arriba, cuando se hace clic 2 veces seguidas.

Cuestiones relacionadas