Boa Noite pessoal.
Na rotina de programar sempre encontramos campos que precisam ser limpados antes de qualquer outro processo, mas sempre é uma função chata de fazer e sempre da um monte de programação.
Abaixo seque uma função que achei,não me lembro o autor da mesma que faz este serviços pra vocês.
Esta procedure usa informações em RunTime com auxilio da unit TypeInfo verificando uma propriedade em comum em todos os componentes que a TAG;
Por favor declarar as seguintes units: TypeInfo, StrUtils, WideStrings;
procedure LimparCampos(Controle: TWincontrol; const cTag: Integer);
//procedure interna ao metodo
procedure SetPropStr(Instance: TObject; const PropName:string; const Value: Variant);
var P:Pointer;
E:String;
begin
E:=VarToWideStr(GetPropValue(Instance,PropName));
p:=Pointer(strtoint(E));
TStringList(TObject(P)).Text:=Value;
end;
//fim de procedure Interna
const
Propriedade:Array[0..4] of String =('Text','ItemIndex','Checked','Lines','Items');
var index,i:Integer;
prop:PPropInfo;
begin
for index:=0 to Controle.ControlCount -1 do begin
if Controle.Controls[index].tag = cTag then begin
for i := 0 to High( Propriedade) do begin
if isPublishedProp(controle.Controls[index],Propriedade[i]) then begin
case i of
0:SetPropValue(Controle.Controls[index],Propriedade[0],'');
1:SetPropValue(Controle.Controls[index],Propriedade[1],-1);
2:SetPropValue(Controle.Controls[index],Propriedade[2],false);
3:SetPropStr(Controle.Controls[index],Propriedade[3],'');
4:SetPropStr(Controle.Controls[index],Propriedade[4],'');
end;
Break;
end;
end;
end;
end;
end;
Como Usar:
LimparCampos(Form1, 0);
LimparCampos(Panel1, 0);
Se tiver um campo que vocês não querem limpar e so informar a TAG com valor diferente a usada na procedure.