Ver Mensaje Individual
  #6  
Antiguo 28-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por jasmad Ver Mensaje
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.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita