Ver Mensaje Individual
  #6  
Antiguo 30-04-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
La verdad es que sigo sin entender lo que buscas pero vamos a aclarar algunos puntos, y quizá de ahí puedas partir.

El colocar los edits dentro de un panel es nada más para facilitar la inicialización del arreglo mediante un ciclo for, pero si tienes varios controles mezclados y no todos ellos han de formar parte del arreglo, siempre puedes optar por hacer la asignación directa:

Código Delphi [-]
Edits[0] := UnEdit;
Edits[1] := OtroEdit;
Edits[2] := UnEditMas;

Ahora, para efectos de eventos asociados a estos edits, te conviene, además, asignar a cada edit el índice que ocupa en el arreglo. Esto puedes hacerlo en la propiedad Tag del edit.

Código Delphi [-]
(* Este ciclo se hace después de inicializar el arreglo *)
for J := 0 to Length(Edits) - 1 do
begin
  Edit[J].Tag := J;

  Edit[J].OnExit := EditExit;
  Edit[J].OnKeyPressed := EditKeyPressed;
  ...
end;

EditExit y EditKeyPressed son métodos que declaras manualmente con los mismos parámetros que los eventos normales:

Código Delphi [-]
type
  TForm1 = class(TForm)
  private
    procedure EditExit(Sender: TObject);
    procedure EditKeyPressed(Sender: TObject; var Key: Char);
  end;

Nota que los pones en la sección private, porque no los genera el IDE sino tú mismo.

Entonces, todos los edits del arreglo comparten los mismos manejadores de eventos, así que en éstos, debes distinguir cuál es el que está generando el evento, y para ello usas el Tag que asignaste:

Código Delphi [-]
procedure TForm1.EditExit(Sender: TObject);
var
  Edit: TEdit;

begin
  Edit := Sender as TEdit;
  case Edit.Tag of
    0: ...;
    1: ...;
    2: ...;
    ...
  end;
end;

// Saludos
Responder Con Cita