Fórum Como manter um botão pressionado? #227008
19/04/2004
0
o problema é o seguite:
[b:5269438e3a]Momento 1:[/b:5269438e3a]
Tenho um [b:5269438e3a]edit[/b:5269438e3a] que, a princípio, está ReadyOnly=[u:5269438e3a]true[/u:5269438e3a], e um [b:5269438e3a]botão[/b:5269438e3a] (ainda não sei qual usar: bitbtn, speedbutton ou button) ao lado do edit que, a princípio, deverá estar com uma figura de um cadeado fechado.
[b:5269438e3a]Momento 2:[/b:5269438e3a]
Quando o usuário clicar no [b:5269438e3a]botão[/b:5269438e3a] ele deverá continuar pressionado e com uma figura de cadeado aberto. Ao mesmo tempo o [b:5269438e3a]edit[/b:5269438e3a] deverá mudar de estado para ReadyOnly=[u:5269438e3a]false[/u:5269438e3a].
Ao se clicar novamente no botão voltamos ao Momento 1.
O funcionamento é idêntico ao componente CheckBox, o problema é que tenho que fazer isto usando a figura do cadeado.
É simples, mas não sei como fazer o botão.
Por favor, ajudem-me.
Obrigado
Tenil
Curtir tópico
+ 0Posts
19/04/2004
Chambioso
Usei um speedbutton, ele tem a propiedade dwon.
Voçê pode controlar no evento onclick mudando a propiedade dwon e a figura.
Espero que tenha te ajudado.!!!!
Gostei + 0
20/04/2004
Rafael.valler
Coloca um ImageList com os Glyphs dos dois cadeados.
//No OnClick do Botão:
If speedbutton1.tag = 0 then
Begin
speedbutton1.down:= True;
speedbutton1.Glyph := nil;
ImageList1.GetBitmap(0,speedbutton1.Glyph);
Edit1.ReadyOnly:=false;
speedbutton1.tag := 1;
End
Else
Begin
speedbutton1.down:= False;
speedbutton1.Glyph := nil;
ImageList1.GetBitmap(1,speedbutton1.Glyph);
Edit1.ReadyOnly:= True;
speedbutton1.tag := 0;
End;[code:1:ed7581c7b3][/code:1:ed7581c7b3]
Gostei + 0
20/04/2004
Tenil
o problema é que tenho apenas 1 botão, essa propriedade só funciona quando temos mais de um. Fica funcionando igual aos RadioButtons.
[b:5ed4164b15]rafael.valler[/b:5ed4164b15],
funcionou legal. Só não funcionou o speedbutton1.down:= False; pq, como disse ao chambioso, só tenho um botão na tela.
Se alguém souber de algum componente que faça isso automaticamente, por favor me diga.
Obrigado a todos.
Eis o código:
// Tag = 0, o cadeado está fechado if SpeedButton1.Tag = 0 then begin SpeedButton1.Glyph := nil; ImageList1.GetBitmap(1, SpeedButton1.Glyph); SpeedButton1.Tag := 1; EdtNome.Enabled := True; EdtNome.SetFocus; end else // Tag = 1, o cadeado está aberto begin SpeedButton1.Glyph := nil; ImageList1.GetBitmap(0, SpeedButton1.Glyph); SpeedButton1.Tag := 0; EdtNome.Enabled := False; end;
Gostei + 0
20/04/2004
Marco Salles
procedure TForm1.SpeedButton1Click(Sender: TObject); begin If speedbutton1.tag = 0 then Begin speedbutton1.Glyph := nil; ImageList1.GetBitmap(0,speedbutton1.Glyph); Edit1.ReadOnly:=false; speedbutton1.tag := 1; End Else Begin speedbutton1.Glyph := nil; ImageList1.GetBitmap(1,speedbutton1.Glyph); Edit1.ReadOnly:= True; speedbutton1.tag := 0; End; end;
Gostei + 0
20/04/2004
Bacalhau
Então vamos aproveitar este efeito de ´liga-desliga´. No evento ´onclick´ poderiamos por uma coisa mais ou menos assim.
if sppedbutton1.down = true
then speedbutton1.glyph.picture.loadfromfile(<nome do cadeado aberto>)
else speedbutton1.glyph.picture.loadfromfile(<nome do cadeado fechado>)
edit1.readonly := not edit1.readonly;
Abraço
bacalhau
Gostei + 0
20/04/2004
Marco Salles
P:S:Se Deixar [b:da631ccd80]Down[/b:da631ccd80] em true inicialmente se tem a sensação do botão pressionado, se deixar down em false inicialmente o botão fica com a sensação de [b:da631ccd80]não[/b:da631ccd80] estar pressionado...Isto so Funciona com a Propiedade
[b:da631ccd80]GroupIndex[/b:da631ccd80] <>0 (No Caso Igual a 1) e Cetando a Propiedade [b:da631ccd80]AllowAllUp [/b:da631ccd80] inicialmente em [b:da631ccd80]True[/b:da631ccd80]....
procedure TForm1.SpeedButton1Click(Sender: TObject); begin If speedbutton1.tag = 0 then Begin speedbutton1.Glyph := nil; ImageList1.GetBitmap(0,speedbutton1.Glyph); Edit1.ReadOnly:=false; speedbutton1.tag := 1; end Else Begin speedbutton1.Glyph := nil; ImageList1.GetBitmap(1,speedbutton1.Glyph); Edit1.ReadOnly:= True; speedbutton1.tag := 0; end; end;
Gostei + 0
26/04/2004
Tenil
Valeu mano.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)