Segue um link com exemplo de como usar a nova RTTI no Delphi, este link explica com exemplo a funções da classe:
http://edn.embarcadero.com/br/article/41728
Em breve vou colocar uma serie de como usar esta RTTI na prática em OOP (Programação Orientada a Objeto ) no delphi.
ATT: Volnei;
ADSENSE
ADSENSE
sexta-feira, 5 de abril de 2013
quarta-feira, 9 de janeiro de 2013
Função pra limpar os campos de um Object
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.
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.
Marcadores:
Checked,
Instance,
ItemIndex,
Items,
Limpar Form,
LimparCampos,
Lines,
Pointer,
PPropInfo,
PropName,
SetPropValue,
Tag,
Text,
TWincontrol
Assinar:
Postagens (Atom)