Fórum uso do botao speedbutton #424945
28/09/2012
0
preciso de uma ajuda, acho que e simples mas não sei como fazer, o caso e o seguinte :
tenho um sistema que fiz , e nele coloquei 55 speedbutton, cada um numerado, na composição do nome do componente usei a seguinte nomenclatura Spb_1, Spb_2, Spb_3 e assim sucessivamente ate chegar ao botao 55.
minha duvida e o seguinte como pos passar o numero do botao para completar seu nome , ou seja quero tornar o botao 40 por exemplo invisivel queria fazer o seguinte Spb_ + numero + proprieddae ou seja quero so informar o numero do botao na descricao o Spb_ seria padrão e a propriedade tambem. acho que deu para me explicar, eu so passaria o numero desejado e o sistema completaria o comando ficando da seguinte forma Spb_20.visible:= False, hoje eu uso o case e conforme o numero indicado ele usaria o comando certo, mas pense soa 55 botao para tornar invisivel e 55 para tornar visivel. atrazes da opçaõ que solicito so vou ter uma linha, ou melhor 2, so ficando para er passado o numero para completar o comando.
ajudem-me acho que deve ser facil, e confeço nao ter tentado fazer ainda uma tentativa para resolver.
pensei a seguinte forma 'Spb_'+Variavel+'.visible:= False', mas isso seria um texto como transformaria em comando
complicado
Edson Melo
Curtir tópico
+ 0Posts
28/09/2012
William
preciso de uma ajuda, acho que e simples mas não sei como fazer, o caso e o seguinte :
tenho um sistema que fiz , e nele coloquei 55 speedbutton, cada um numerado, na composição do nome do componente usei a seguinte nomenclatura Spb_1, Spb_2, Spb_3 e assim sucessivamente ate chegar ao botao 55.
minha duvida e o seguinte como pos passar o numero do botao para completar seu nome , ou seja quero tornar o botao 40 por exemplo invisivel queria fazer o seguinte Spb_ + numero + proprieddae ou seja quero so informar o numero do botao na descricao o Spb_ seria padrão e a propriedade tambem. acho que deu para me explicar, eu so passaria o numero desejado e o sistema completaria o comando ficando da seguinte forma Spb_20.visible:= False, hoje eu uso o case e conforme o numero indicado ele usaria o comando certo, mas pense soa 55 botao para tornar invisivel e 55 para tornar visivel. atrazes da opçaõ que solicito so vou ter uma linha, ou melhor 2, so ficando para er passado o numero para completar o comando.
ajudem-me acho que deve ser facil, e confeço nao ter tentado fazer ainda uma tentativa para resolver.
pensei a seguinte forma 'Spb_'+Variavel+'.visible:= False', mas isso seria um texto como transformaria em comando
complicado
Olá Edson, bom acho q vc precisa de um loop para percorrer esses botões, segue um exemplo:
procedure TForm1.btnLimpaCamposClick(Sender: TObject);
var
i: Integer;
begin
//Contador que verifica todos os componentes do Form
for i := 0 to ComponentCount -1 do
begin
//Verifica se o objeto é do tipo TSpeedButton
if (Components[i] is TSpeedButton) then
//Verifica o nome do TSpeedButton
if (Components[i] as TSpeedButton).Name = NomedoBotão then
(Components[i] as TSpeedButton).Visible = false;
end;
end;
Gostei + 0
28/09/2012
William
preciso de uma ajuda, acho que e simples mas não sei como fazer, o caso e o seguinte :
tenho um sistema que fiz , e nele coloquei 55 speedbutton, cada um numerado, na composição do nome do componente usei a seguinte nomenclatura Spb_1, Spb_2, Spb_3 e assim sucessivamente ate chegar ao botao 55.
minha duvida e o seguinte como pos passar o numero do botao para completar seu nome , ou seja quero tornar o botao 40 por exemplo invisivel queria fazer o seguinte Spb_ + numero + proprieddae ou seja quero so informar o numero do botao na descricao o Spb_ seria padrão e a propriedade tambem. acho que deu para me explicar, eu so passaria o numero desejado e o sistema completaria o comando ficando da seguinte forma Spb_20.visible:= False, hoje eu uso o case e conforme o numero indicado ele usaria o comando certo, mas pense soa 55 botao para tornar invisivel e 55 para tornar visivel. atrazes da opçaõ que solicito so vou ter uma linha, ou melhor 2, so ficando para er passado o numero para completar o comando.
ajudem-me acho que deve ser facil, e confeço nao ter tentado fazer ainda uma tentativa para resolver.
pensei a seguinte forma 'Spb_'+Variavel+'.visible:= False', mas isso seria um texto como transformaria em comando
complicado
Olá Edson, bom acho q vc precisa de um loop para percorrer esses botões, segue um exemplo:
procedure TForm1.btnLimpaCamposClick(Sender: TObject);
var
i: Integer;
begin
//Contador que verifica todos os componentes do Form
for i := 0 to ComponentCount -1 do
begin
//Verifica se o objeto é do tipo TSpeedButton
if (Components[i] is TSpeedButton) then
//Verifica o nome do TSpeedButton
if (Components[i] as TSpeedButton).Name = NomedoBotão then
(Components[i] as TSpeedButton).Visible = false;
end;
end;
Gostei + 0
28/09/2012
William
Gostei + 0
28/09/2012
Edson Melo
ja li muito a este respeito quando eu programava em clipper, mas me esqueci e tambem tudo mudor o laço ficaria coomo uso hoje seria trocar 6 por meia duzia
mas não vou me desesperar sei que conseguiremos chegar a um bom resultado
Gostei + 0
28/09/2012
Marcos Iwazaki
vc pode fazer assim
SeuForm.FindComponent(NomeDoComponenteEmString)
esta function retorn um TComponent
então p ter acesso as prop do speedbutton
faça assim:
if SeuForm.FindComponent(NomeDoComponenteEmString) is TSpeedButton then
TSpeedButton(SeuForm.FindComponent(NomeDoComponenteEmString)).visible
espero ter ajudado.
ja li muito a este respeito quando eu programava em clipper, mas me esqueci e tambem tudo mudor o laço ficaria coomo uso hoje seria trocar 6 por meia duzia
mas não vou me desesperar sei que conseguiremos chegar a um bom resultado
Gostei + 0
29/09/2012
Edson Melo
case StrToInt(Label3.caption) do
1 : Spb_1.visible:= False
2 : Spb_2.Visible:= False
3 : Spb_3.Visible:= False
4 : Spb_4.Visible:= False
5 : Spb_5.Visible:= False
6 : Spb_6.Visible:= False
7 : Spb_7.Visible:= False
8 : Spb_8.Visible:= False
9 : Spb_9.Visible:= False
..... e assim por diante ate chegar ao 55
so passo o numero do botao e o case se encarrega de executar o comando. so que são 55 botoes, esse case fica enorme e são 2 case um habilitando e outro desabilitando.
sei que tem como fazer do jeito que eu imagino. elpassaria o numero e o sistema completaria o comando Spb_ .Visible:= False; onde o espaço vazio seria completado com o numero e o comando seria executado
Gostei + 0
29/09/2012
Edson Melo
pode ser que resolva meu problema, pois monto o nome do componente como se fosse um texto e o comando fax a substituição
depois te respondo o que achei
obrigado
mas mesmo assim continuo a busca de uma solução mais simples, agora me correu uma ideia , cada componente tem um indice, e se eu passe o indice no comando ......componente.visible:= False. o numero do indice deveria ser igualao numero do botao para que essa minha ideia funcionase, so que não sei coomo por essa ideia em pratica.
ai sim e que chegaria o mais perto possivel do que eu quero.
me ajudem pr favor , quem souber executar isto que pensei
Gostei + 0
01/10/2012
Marcos Iwazaki
1 : Spb_1.visible:= False
2 : Spb_2.Visible:= False
3 : Spb_3.Visible:= False
4 : Spb_4.Visible:= False
5 : Spb_5.Visible:= False
6 : Spb_6.Visible:= False
7 : Spb_7.Visible:= False
8 : Spb_8.Visible:= False
9 : Spb_9.Visible:= False
vou exemplificar melhor o que eu disse...
talvez a sintaxe esteja errada pois estou sem o delphi aqui
for I:=0 to MeuForm.componentcount -1 do begin
if meuForm.components[i] is TSpeedButton then begin
if Assinged (TSpeedButton(meuForm.components[i])) then begin
if TSpeedButton(meuForm.components[i]).name = 'Spb_'+Label3.caption //aqui vc formata o nome certinho
TSpeedButton(meuForm.components[i]).visible := false;
break; //para sair do for, pois ja achou o q precisava. Evita gastar processamento sem necessidade.
end;
end;
end; //for
se não esqueci de nada deve ser isso..
pode ser que resolva meu problema, pois monto o nome do componente como se fosse um texto e o comando fax a substituição
depois te respondo o que achei
obrigado
mas mesmo assim continuo a busca de uma solução mais simples, agora me correu uma ideia , cada componente tem um indice, e se eu passe o indice no comando ......componente.visible:= False. o numero do indice deveria ser igualao numero do botao para que essa minha ideia funcionase, so que não sei coomo por essa ideia em pratica.
ai sim e que chegaria o mais perto possivel do que eu quero.
me ajudem pr favor , quem souber executar isto que pensei
Gostei + 0
01/10/2012
Marcos Iwazaki
vc pode fazer assim tbm
var
aux :TSpeedButton;
begin
aux := meuForm.FindComponent('Spb_'+Label3.caption) //aqui vc formata o nome certinho
if Assinged (aux) then begin
TSpeedButton(aux).visible := false;
end
Gostei + 0
01/10/2012
Edson Melo
mas vou tentar espere que te respondo]
Gostei + 0
26/10/2012
Claudia Nogueira
TSpeedButton(FindComponent('Spb_'+Label3.Caption)).Visible := False;
mas vou tentar espere que te respondo]
Gostei + 0
12/08/2015
Diego Jacauna
TSpeedButton(FindComponent('Spb_'+Label3.Caption)).Visible := False;
mas vou tentar espere que te respondo]
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)