Destruir botões criados dinamicamente
10/05/2008
0
Tenho que criar no form principal alguns botões que o próprio cliente irá criar. Toda vez que o usuário trocar de senha tenho que destruir os botões e recriar novamente o dos outros.
abaixo a listagem do botão para criar.
procedure TfrmPrinc.IconeCria; var sb : TSpeedButton; sNome : string; begin iconeDestroi; dmADS.tbIcoAbrir; dmADS.tbIco.First; while not dmADS.tbIco.Eof do begin if iconeProcAct(dmADS.tbIcoNOMEACT.Value) <> -1 then begin sb := TspeedButton.Create(Self); sb.Parent := frmPrinc; sb.OnMouseDown := iconeMouseDown; sb.OnMouseUp := iconeMouseUp; sb.OnMouseMove := iconeMouseMove; sb.Height := 49; sb.Width := 77; //sb.Flat := true; sb.Cursor := crHandPoint; sb.Top := dmADS.tbIcoPOSX.value; sb.Left := dmADS.tbIcoPOSY.value; sb.Caption := dmADS.tbIcoNOMECAP.value; sNome := ´icone_´+dmADS.tbIcoNOMEACT.value; sb.Name := sNome; sb.OnClick := actPrinc.Actions[iconeProcAct(dmADS.tbIcoNOMEACT.Value)].OnExecute; end; dmADS.tbIco.Next; end; dmADS.tbIco.Close; end;
o problema agora é destruir esses botões para criar o do outro usuário
procedure TfrmPrinc.iconeDestroi; var iCont : integer; begin for iCont := 1 to frmPrinc.ComponentCount-1 do begin if copy(frmPrinc.Components[iCont].Name,1,6) = ´icone_´ then begin showmessage(frmprinc.Components[icont].Name); frmPrinc.Components[icont].DestroyComponents; end; end; end;
tentei o código acima mais tá dando erro ´List out of bounds (224)´ e não vai.
Teria outra forma de destruir esse botões, ou o código acima está errado.
Abraços
Adssistemas
Posts
10/05/2008
Emerson Nascimento
procedure TfrmPrinc.iconeDestroi; var iCont : integer; begin for iCont := frmPrinc.ComponentCount-1 downto 0 do if copy(frmPrinc.Components[iCont].Name,1,6) = ´icone_´ then begin showmessage(frmprinc.Components[icont].Name); frmPrinc.Components[icont].Free; end; end;
10/05/2008
Emerson Nascimento
10/05/2008
Adssistemas
Emersom, estou somente com outra duvida.
Que metodo usar: free ou destroy
[b:ad72275567]blz obrigadão[/b:ad72275567]
Clique aqui para fazer login e interagir na Comunidade :)