Ver Mensaje Individual
  #5  
Antiguo 16-08-2012
sebamawa sebamawa is offline
Miembro
NULL
 
Registrado: ago 2012
Posts: 18
Reputación: 0
sebamawa Va por buen camino
Entiendo roman, es clara tu explicación y mala mi interpretación previa.
Haber si con parte del código se logra detectar el error.

En una unidad (UPersona) declaro un objeto persona de la siguiente forma:

Código:
TPersona = class
   private
     documento: Integer;
     nombre: String;
   public
     (* Constructores *)
     Constructor Create(doc: Integer; nom: String);
     
      (* Selectoras *)
      Function GetDocumento: Integer;
      Function GetNombre: String;

      (* Modificadoras *)
      Procedure SetDocumento(doc: Integer);
      Procedure SetNombre(nom: String);
   end;

implementation
  ...
end.
Luego en un TForm aparecen estos procedimientos asociados a dos botones.
Primero declaro las variables
Código:
var
  Form1: TForm1;
  p: TPersona;
  listaPersonas: TObjectList;
Primer botón:

Código:
procedure TForm1.Button1Click(Sender: TObject);
begin
  p:=TPersona.Create(StrToInt(Edit1.Text),Edit2.Text);
  listaPersonas:=TObjectList.Create(True);

  // Agregamos el objeto persona a la lista
  listaPersonas.Add(p);

  Edit1.Text:='';
  Edit2.Text:='';
end;
La idea es que cada vez que se presiona el botón Button1 se agrege un objeto persona a la lista TObectList, cuyos campos (documento y nombre) se leen desde dos TEdits.

Ahora el segundo botón:
Código:
procedure TForm1.Button2Click(Sender: TObject);
 function OrdenarPorDocumento(a: Pointer;b: Pointer): Integer;
 begin
   if TPersona(a).GetDocumento > TPersona(b).GetDocumento then
     result:=-1
   else
     if TPersona(a).GetDocumento < TPersona(b).GetDocumento then
       result:=1
     else
       result:=0;
 end;

begin
  ListaPersonas.Sort(OrdenarPorDocumento);
end;
La idea es que cuando se apreta el segundo botón (Button2) se ordene la lista.

Desde ya muy agredecido por cualquier comentario.

Saludos.
Responder Con Cita