Hola.
Para reconocer de que botón procede la llamada podes evaluar el nombre del argumento enviado.
A modo de ejemplo:
Código Delphi
[-]
type
TForm1 = class(TForm)
...
private
procedure Listas(Sender: TObject);
...
implementation
procedure TForm1.Listas(Sender: TObject);
var
lista1 : TStringList;
lista2 : TstringList;
begin
if not (Sender is TButton) then Exit;
lista1 := TStringList.Create;
lista2 := TStringList.Create;
try
lista1.Add('1');
lista1.Add('2');
lista1.Add('3');
lista2.Add('4');
lista2.Add('5');
lista2.Add('6');
if TButton(Sender).Name = 'Button1' then ListBox1.Items.AddStrings(lista1);
if TButton(Sender).Name = 'Button2' then ListBox2.Items.AddStrings(lista2);
finally
lista1.Free;
lista2.Free;
end;
end;
...
Algo muy importante: Fijate que al finalizar el procedimiento se libera la memoria ocupada por la creación de las dos listas.
Saludos