Parametr do OnShow

0

Witam

Jak sprawdzić z jakiego Forma została wywołana funkcja show innej formy ew przesłać jakiś dodatkowy parametr.
Np.

Mam 2 formy (form1 i form2) na których mam po 1 przycisku w którym jest funkcja form3.show;
A w formie 3 w funkcji on show chciałbym żeby w przypadku jeśli form3.show było wywołane z forma1 to powiedzmy i:=1 a jeśli z forma2 to i:=2 ?

0

Możesz tak:

1). w Klasie Form3 dajesz pole publiczne np : FormNo :Byte;

2). w OnClick buttona dla Form1

procedure TForm1.Button1Click(Sender :TObject);
begin
  with Form3 do
  begin
    FormNo := 1;
    ShowModal();  // Show();
  end;
end;

3). w OnClick buttona dla Form2

procedure TForm2.Button1Click(Sender :TObject);
begin
  with Form3 do
  begin
    FormNo := 2;
    ShowModal();  // Show();
  end;
end;

4). W onShow Form3 masz już prosto

case FormNo do
  1 :Procedura1();
  2 :Procedura2();
end;
0

Wpadłem póki co na to, że można zmienić władność Tag trzeciej formatki. Można też w sekcji public
umieścić jakąś zmienną i poprzez pozostałe formatki nadawać jej odpowiednią wartośc. Jednak skoro
i tak masz Form3 w sekcjach uses poprzednich modułów, to skorzystaj z jej zdefiniowanej własności:

Pierwsza formatka:

procedure TForm1.Button2Click(Sender: TObject);
begin
  Form3.Tag := 1;
  Form3.ShowModal;
end;

Druga formatka:

procedure TForm2.Button1Click(Sender: TObject);
begin
  Form3.Tag := 2;
  Form3.ShowModal;
end;

Zdarzenie OnShow dla trzeciej formatki:

procedure TForm3.FormShow(Sender: TObject);
begin
case Tag of
   1 : Caption := 'Wywołanie z pierwszej formatki';
   2 : Caption := 'Wywołanie z drugiej formatki';
else
   Caption := 'Wywolanie z innej formatki'
end;
end;

Wiedziałem, że ktoś mnie uprzedzi :) Tym razem Oleksy_Adam, ale dzięki temu dev246 - ma więcej
rozwiązań do wzięcia pod uwagę. Chociaż użycie zdefiniowanej zmiennej w Form3 jest chyba najlepsze.

0

Dzięki :) Ciężko czasem wpaść na najprostsze pomysły :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1