Witam
Tworzę dynamicznie formy w taki sposób:
Application.CreateForm(TForm2, Form2);
Form2.Show;
Po utworzeniu kilku takich samych dynamicznych form jak mogę odwołać się do którejś z nich? Po czym mogę je identyfikować?
Proszę o odpowiedź.
Witam
Tworzę dynamicznie formy w taki sposób:
Application.CreateForm(TForm2, Form2);
Form2.Show;
Po utworzeniu kilku takich samych dynamicznych form jak mogę odwołać się do którejś z nich? Po czym mogę je identyfikować?
Proszę o odpowiedź.
Klasę sprawdzasz, np.
if (Application.ActiveForm is TForm2)
.
A konkretne formy... Porównujesz Caption, Tag, czy cokolwiek chcesz, przez:
(Application.ActiveForm as TForm2).Caption
.
To mi nie działa.
Dokładnie chodzi mo o coś takiego:
Gdybym miał 3 formy statyczne, np. Form1, Form2 i Form3. Na każdej z nich jest Memo. Chcę zrobić coś takiego Form2.Memo.Lines.Add('tekst'); Na statycznych formach to nie jest problem. Nie wiem jak to zrobic na dynamicznych. Musiałbym mieć chyba w uproszczeniu coś takiego: Form2[identyfikator].Memo.Lines.Add('tekst'); <-jak to zrobić???
Spróbuj:
for I := 0 to Screen.FormCount - 1 do
if Screen.Forms[I] is TForm2 then
begin
(Screen.Forms[I] as TForm2).Memo.Lines.Add('Tekst...');
end;
w zalezonsci czy tworzysz je w tablicy lub nie.. jak bys uzywal tablic to odowlaj sie do tfrom;
tablica : array of tfrom;?
A po co dodatkowa tablica? Jest przecież Screen.Forms i TForm.MDIChilds
Ale Wy kombinujecie. Po prostu odwołujesz się Form2, Form3 itd...
A poza tym taki sposób tworzenia, jaki podałeś w pliku projektu jest tworzeniem statycznym.
Tworzenie dynamiczne polega na czymś innym, np. gdzieś w kodzie programu:
var
forma: TMojaForma;
begin
forma:=TMojaForma.Create(application);
//jakiś kod z formą, np: forma.Caption:='Napis';
forma.Free;
end;
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.