Wyświetlanie TForm na TPanel

0

Jak wyświetlić dynamicznie tworzoną formę w komponencie TPanel?

Mam kod taki jak poniżej, używałem wielu funckji (które także są zakomentowane), ale nowa forma jest niewidoczna a forma na której siedzi TPanel staje się nieaktywna na kliknięcia, tak jakby Form2 ją przysłaniała.

  Form2 := TForm2.Create(nil);
  //Form2 := TForm2.CreateParented(Panel1.Handle); - też nic
  try
    Form2.Parent := Panel1;
    //Form2.Parent := Panel1.Parent;
    //Form2.ParentWindow := Panel1.Handle;

    //Myślałem, że może jest przesunięta i dlatego niewidoczna więc dlatego poniższe linijki
    Form2.Left := 0;
    Form2.Top := 0;
  finally
    Form2.ShowModal;
    //Form2.Show;
  end;

Chciałem uniknąć w pętli ustawiania parent'a każdego komponentu formy nr.2 z Form2 na Panel1.

0

Nie mam pojęcia, czemu u ciebie powyższe funkcje nie działają.
U mnie działa większość (poza kilkoma ewidentnie źle napisanym).
Spróbuj jeszcze:

Form2 := TForm2.Create(Form1.Panel1);
0

Aha, i jeszcze uważaj na to, żeby podać dobry panel.

Form1.Panel1 //zapewne panel na którym chcesz utworzyć form 2
Form2.Panel1 //być może, że to na tym panelu jest tworzona forma
Panel1          //jak tak napiszesz to zależy od Unitu w którym to piszesz

Sorry, [wstyd] że w osobnym poście, ale przypomniałem sobie dopiero po kliknięciu "Publikuj"...

0

Już mam OK, panel był za mały a forma była na nim rysowana poniżej dolnej krawędzi panelu :), ustawiałem Left i Top na 0 ale powinienem to zrobić PO procedurze Show().

Juz wszystko działa:

Form2 := TForm2.Create(nil);
  try
    Form2.Parent := Panel1;
    Form2.ShowModal;
    Form2.Left := 0;
    Form2.Top := 0;
  finally
    Form2.Free;
  end;

Dzięki, siedzę w Delphi już ponad 5 lat i taka gafa :)

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