Cita:
Empezado por jasmad
ok a ver si me explico en otras palabras lo que necesito es tomar un objeto declarado en un formulario y enviarlo como parametro a un procedimiento y que este lo modifique sin borrar los datos que el objeto ya trae
|
Ahora, creo entenderte.
Te pongo un ejemplo simple donde se crean
TCheckBox, a algunos se les modifica las propiedades
Left y
Checked al azar y luego se muestra en un ListBox aquellos que tengan la propiedad
Checked en
True.
Código Delphi
[-]
...
implementation
uses Contnrs;
var
Lst: TObjectList;
procedure TForm1.FormCreate(Sender: TObject);
begin
Lst:= TObjectList.Create;
end;
procedure AsignarDetalles(CB: TCheckBox; Accion: Integer);
begin
CB.Checked:= Boolean(Accion);
if CB.Checked then
CB.Left:= CB.Left + 20;
end;
procedure TForm1.btnCrearClick(Sender: TObject);
var
i: Integer;
cb: TCheckBox;
begin
for i:= 1 to 10 do
begin
cb:= TCheckBox.Create(nil);
cb.Name := 'CheckBox' + IntToStr(i);
cb.Height := 25;
cb.Left := 30;
cb.Top := 25 + 25 *i;
cb.Parent:= Self;
Lst.Add(cb);
end;
end;
procedure TForm1.btnAsignarClick(Sender: TObject);
var
i: Integer;
begin
Randomize;
for i:= 0 to Lst.Count -1 do
AsignarDetalles(TCheckBox(Lst.Items[i]), Random(2));
end;
procedure TForm1.btnMostrarClick(Sender: TObject);
var
i: Integer;
begin
for i:= 0 to Lst.Count - 1 do
if TCheckBox(Lst.Items[i]).Checked then
ListBox1.Items.Add(TCheckBox(Lst.Items[i]).Name);
end;
...
procedure TForm1.FormDestroy(Sender: TObject);
begin
ObjLst.Free;
end;
Si los componentes fueron añadidos en diseño para pasarlos al
TObjectList, habría que reemplazar btnCrearClick por:
Código Delphi
[-]
procedure TForm1.btnGuardarObjLstClick(Sender: TObject);
var
i: Integer;
begin
for i:= 0 to ComponentCount -1 do
if Components[i] is TCheckBox then
ObjLst.Add(TCheckBox(Components[i]))
end;
Saludos.