Fórum Typecast #377547
13/05/2010
0
Importadora Ltda
Curtir tópico
+ 0Posts
13/05/2010
Wesley Yamazack
Com o método abaixo você consegue varrer o formulário e saber os componentes que estão nele, em específico eu fiz o TBitBtn, além de adicionar o mesmo(Objeto), em um ListBox, com o caption e a Tag.
procedure TForm1.Button1Click(Sender: TObject);
Var
I : Integer;
begin
for I := 0 to ComponentCount - 1 do
begin
if Components[I] is TBitBtn then
begin
ListBox1.Items.AddObject(TBitBtn(Components[I]).Caption + ' - Tag : '+
IntToStr(TBitBtn(Components[I]).Tag),TBitBtn(Components[I]));
end;
end;
end;
Seria isso que você estava querendo ?
Att,
Wesley Y
Gostei + 0
14/05/2010
Importadora Ltda
begin
if (Editar) then
begin
(ListBtn[0] as TBitBtn).Enabled := False; //Incluir
(ListBtn[1] as TBitBtn).Enabled := False; //Alterar
(ListBtn[2] as TBitBtn).Enabled := True; //Gravar
(ListBtn[3] as TBitBtn).Enabled := True; //Cancelar
(ListBtn[4] as TBitBtn).Enabled := False; //Delete
end
else
begin
(ListBtn[0] as TBitBtn).Enabled := True; //Incluir
(ListBtn[1] as TBitBtn).Enabled := True; //Alterar
(ListBtn[2] as TBitBtn).Enabled := False; //Gravar
(ListBtn[3] as TBitBtn).Enabled := False; //Cancelar
(ListBtn[4] as TBitBtn).Enabled := True; //Delete
end;
end; Sendo que eu passo o formulario da aplicação como parametro, a variavel Editar boolean se é editar ou não . .e o ListBtn que é um array que no caso ... o 0, 1, 2, representam os mesmos numeros das tags dos Bitbtns do formulario da aplicação chamando ConfigButtons que herda de TFomPrincipal = class(TformularioBase) de acordo com as tags dessa forma eu vou definir o comportamento em toda a aplicação.Exemplo . todas as tags 0 (Listbtn[0] serão inclusoes) e assim por diante.
Gostei + 0
14/05/2010
Wesley Yamazack
Gostaria de saber se você utiliza herança visual em sua aplicação, se usa concorda comigo que sempre terá o mesmo número de botões? Não havendo assim a necessidade deste código o que eu faço em minha aplicação com formulário padrão é o seguinte.
procedure TFrmPadrao.HabilitaControles;
begin
BtnNovo.Enabled := not(DSPadrao.DataSet.State in [dsInsert, dsEdit]);
BtnGravar.Enabled := (DSPadrao.DataSet.State in [dsInsert, dsEdit]);
BtnEditar.Enabled := (DSPadrao.DataSet.State in [dsBrowse]);
BtnDeletar.Enabled := (DSPadrao.DataSet.State in [dsBrowse]);
BtnCancelar.Enabled := (DSPadrao.DataSet.State in [dsInsert, dsEdit]);
BtnPesquisa.Enabled := not (DSPadrao.DataSet.State in [dsInsert, dsEdit]);
end;
Mas eu tenho DSPadrao no meu formulário, o que você poderia fazer era desabilitar simplesmente os botões pelo nome, mas isso tudo que eu falei só serve se você utilizar herança visual, ok ?
Agora se você não utiliza estou vendo aqui uma solução e assim que terminar lhe mando a resposta ok ?
Att,
Wesley Y
Gostei + 0
14/05/2010
Importadora Ltda
Gostei + 0
14/05/2010
Wesley Yamazack
procedure TForm1.FormShow(Sender: TObject);
Var
ListBtn: array of TObject;
I, J : Integer;
begin
J := 0;
SetLength(ListBtn, 5);
for I := 0 to componentcount - 1 do
begin
if Components[I] is TBitBtn then
begin
ListBtn[J] := TBitBtn(Components[I]); //TBitBtn(Components[I]);
Memo1.Lines.Add((ListBtn[J] as TBitBtn).Caption);
Inc(J);
end;
end;
ConfigButtons(Self,True,ListBtn);
end;
E os botões foram desabilitados sem problemas.
Seria isso que você estava querendo ?
Att,
Wesley Y
Gostei + 0
14/05/2010
Importadora Ltda
Gostei + 0
14/05/2010
Importadora Ltda
Gostei + 0
14/05/2010
Wesley Yamazack
Teria como você fazer um exemplo ? Mandar pra mim 2 formulários, para eu poder simular exatamente oque você esta querendo?
Um abraço
Wesley Y
Gostei + 0
20/05/2010
Wesley Yamazack
Att,
Wesley Y
Gostei + 0
20/05/2010
Importadora Ltda
Gostei + 0
20/05/2010
Wesley Yamazack
Att,
Wesley Y
Gostei + 0
21/05/2010
Importadora Ltda
Gostei + 0
21/05/2010
Devmedia
Gostei + 0
21/05/2010
Importadora Ltda
Gostei + 0
21/05/2010
Wesley Yamazack
Veja se isso lhe ajudaria.
procedure TFormCadastro.Habilitarbotoes(Editar: boolean);
Var
I : Integer;
begin
for I := 0 to ComponentCount - 1 do
begin
if Components[I] is TBitBtn then
begin
if TBitBtn(Components[I]).Tag = 0 then
TBitBtn(Components[I]).Enabled := not Editar
else
if TBitBtn(Components[I]).Tag = 1 then
TBitBtn(Components[I]).Enabled := not Editar
else
if TBitBtn(Components[I]).Tag = 2 then
TBitBtn(Components[I]).Enabled := Editar
else
if TBitBtn(Components[I]).Tag = 3 then
TBitBtn(Components[I]).Enabled := Editar
else
if TBitBtn(Components[I]).Tag = 4 then
TBitBtn(Components[I]).Enabled := not Editar
end;
end;
Um abraço
Wesley Y
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)