Condição no Form

Delphi

23/08/2009

Boa tarde,

Eu quero por uma condição para aparecer alguns botões no form.
Eu tenho um grid no form e se esse Grid tiver 1 ou mais registro no grid que apareça os outros botões no form.

Eu fiz inicialmente um speed botão que au quando eu clico os outros botões aparecem.

´procedure TFpesquisausuario.SpeedButton5Click(Sender: TObject);
begin
SpeedButton1.Visible:=true;
SpeedButton2.Visible:=true;
SpeedButton3.Visible:=true;
SpeedButton4.Visible:=true;
Barra.Panels[1].Text:=IntToStr(Qusuario.RecordCount);´
end;


Obrigado
Gustavo Gomes


Gomes451

Gomes451

Curtidas 0

Respostas

Djfabioninja

Djfabioninja

23/08/2009

Boa tarde Gomes! Não sei se entendi muito bem o que vc quer, mas abaixo posto um exemplo pra exibir/ esconder speedbuttons de acordo com a condição de ´registro > 1´

//No evento onShow do form, busco a quantidade de registros na tabela //através de uma ADOQuery e a partir disso, disponibilizo ou não os botoes:

if ADOQuery1.recordcount>0 then
begin
speedbutton1.visible:= true;
speedbutton2.visible:= true;
speedbutton3.visible:= true;
speedbutton4.visible:= true;
end
else
begin
speedbutton1.visible:= false;
speedbutton2.visible:= false;
speedbutton3.visible:= false;
speedbutton4.visible:= false;
end;

Espero ter ajudado...


GOSTEI 0
Osocram

Osocram

23/08/2009

Eu uso o OnUpdate do ActionList para controlar esse tipo de evento.


GOSTEI 0
Gomes451

Gomes451

23/08/2009

Vlw djfabioninja

Deu muito certo a diga que voce mim passo, no final fico assim.

´begin
Barra.Panels[1].Text:=IntToStr(Qadv.RecordCount);
if Qadv.recordcount>0 then
begin
speedbutton2.visible:= true;
speedbutton3.visible:= true;
speedbutton4.visible:= true;
end
else
begin
speedbutton2.visible:= false;
speedbutton3.visible:= false;
speedbutton4.visible:= false;

end;
end;´

Osogram: Essa diga do OnUpdate não entendi muito não, se tiver como especificar mais eu agradeço.

Obrigado
Gustavo


GOSTEI 0
Osocram

Osocram

23/08/2009

É o seguinte amigo.
Pelo jeito vc não usa os componente ActionList.

Vou tentar explicar aqui depois vc testa.
Qdo vc usar o componente TActionList
Vc cria um action la dentro com o nome acFechar e da 2 cliques nele e adiciona isso no evento (execute)
close;


Adiciona um botão TBitBtn e na prop Action dele vc liga essa action que vc criou.

Dae pronto... esse botão vai executar o Action qdo vc clicar.

-----------------------------------------
Tudo que expliquei ae em cima é p vc poder testar...
agora vem aqui o que eu disse.
no comp ActionList vai ter um evento OnUPdate, da 2 cliques nele
Esse evento vai ser disparado praticamente toda hora que acontecer qq coisa no form. Então é o local perfeito p fazer controles de tela.
acFechar.Enable := false;

Esse codigo vai fazer q a ação fique sempre desabilitada, repare que ligamos esta ação com um botão, esse botão vai ficar enable false tbm.

Espero ter conseguido explicar +- como utilizar este recurso... ele é mto util.

Outra dica, em vez de usar assim:
if Qadv.recordcount>0 then
begin
speedbutton2.visible:= true;
speedbutton3.visible:= true;
speedbutton4.visible:= true;
end
else
begin
speedbutton2.visible:= false;
speedbutton3.visible:= false;
speedbutton4.visible:= false; 


faça assim:
speedbutton2.visible:= Qadv.recordcount>0;
speedbutton3.visible:= Qadv.recordcount>0;
speedbutton4.visible:= Qadv.recordcount>0;
 



GOSTEI 0
Emerson Nascimento

Emerson Nascimento

23/08/2009

uma recomendação para os exemplos passados:

na solução, evite o uso de RecordCount. ele só é indicado se você quiser saber exatamente quantos registros há na tabela. para simplesmente saber se há registros - independente de quantos - utilize IsEmpty.

Barra.Panels[1].Text := IntToStr(Qadv.RecordCount); // aqui, OK


agora, todas aquelas linhas podem ser substituídas por:
speedbutton2.visible := not Qadv.IsEmpty; // não use RecordCount
speedbutton3.visible := speedbutton2.visible; // visibilidade igual ao speedbutton2
speedbutton4.visible := speedbutton2.visible; // visibilidade igual ao speedbutton2



GOSTEI 0
Gomes451

Gomes451

23/08/2009

Bom dia,

Obrigado pela dica de vocês eu não sabia que seria tão interessante entra em um fórum como esse.
Por isso que eu nunca usava.

Obrigado
Gustavo Gomes

:D


GOSTEI 0
POSTAR