Hola Jere_84.
No sé en que parte estas utilizando
Generics, pero en la parte de código que puedo alcanzar a ver estas utilizando
TList (aunque me parece mas simple usar
TObjectList).
De acuerdo a lo que entendí, con
TList creo que podrías hacer similar a esto:
Código Delphi
[-]
...
var
List: TList;
function CompareTags(Item1,Item2: Pointer): Integer;
begin
if TEdit(Item1).Tag > TEdit(Item2).Tag then
Result := 1
else if TEdit(Item1).Tag = TEdit(Item2).Tag then
Result := 0
else
Result := -1;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i,j: Integer;
begin
List := TList.Create;
with PageControl1 do
for i:= 0 to PageCount-1 do
for j:= 0 to Pages[i].ControlCount-1 do
if (Pages[i].Controls[j] is TEdit) and Pages[i].Controls[j].Visible then
List.Add(TEdit(Pages[i].Controls[j]));
List.Sort(CompareTags);
end;
procedure TForm1.btnAddFieldsClick(Sender: TObject);
var
i,j: Integer;
begin
with DataModule2 do
begin
i:= 0;
while (i < CDS1.FieldCount)and(i < List.Count) do
begin
CDS1.Fields[i].Tag := TEdit(List[i]).Tag;
Inc(i);
end;
for i:= 0 to List.Count-1 do
for j:= 0 to CDS1.FieldCount-1 do
if TEdit(List[i]).Tag = CDS1.Fields[j].Tag then
TEdit(List[i]).Text := CDS1.Fields[j].AsString;
end;
end;
procedure TForm1.FormDestroy(Sender: TObject);
var
i: Integer;
begin
for i:= List.Count-1 downto 0 do TEdit(List[i]).Free;
List.Free;
end;
Saludos.