Parametr do OnShow

Odpowiedz Nowy wątek
2008-12-19 18:42
dev246
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 ?

Pozostało 580 znaków

2008-12-19 19:40
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;

<span style="color: blue">"Kolarstwo to jedna z najtrudniejszych dyscyplin sportu. Nawet najgorszy kolarz jest wciąż wybitnym sportowcem."
s.p. Marco Pantani
</span>

Pozostało 580 znaków

2008-12-19 19:41
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.


Pozostało 580 znaków

2008-12-19 19:53
dev246
0

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

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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