2012-10-10 7 views
6

Możliwe jest ustawienie wyrównania na TFormie, powiedzmy ustawić jedną formę na alTop i inną na alClient - przy czym te dwa formularze w oczywisty sposób zajmują cały obszar ekranu. Czy jest to sensowne w przypadku aplikacji?Jakie są zastosowania właściwości Wyrównaj i Zakotwiczenia w TForm?

Ja również zauważyć, że kotwice są narażone na formach - (? Zmiany rozdzielczości MDI apps?), Ale nie mogę myśleć, co by być przydatna dla Any ideas?

Edytuj: Zrobiłem video about this post, aby wszystko było bardziej przejrzyste.

+4

Można naśladować pasek zadań na krawędzi pulpitu, przez ustawienie 'Align' do, powiedzmy,' alTop” –

Odpowiedz

15

Można użyć TForm jak zwykły kontroli przez ustawienie jego Parent właściwość:

procedure TForm1.Button1Click(Sender: TObject); 
begin 
    frmEmbed:= TForm.Create(Self); 
    frmEmbed.Parent:= Self; 
    frmEmbed.Width:= 50; 
    frmEmbed.Height:= 50; 
    frmEmbed.Align:= alRight; 
    frmEmbed.Anchors:= [akLeft, akBottom]; 
    frmEmbed.Visible:= True; 
end; 

należy komentować frmEmbed.Align:= alRight; linię, aby zobaczyć jak Anchors prace własności.


Jeśli jesteś zainteresowany gdzie powyższe jest używany: forma wychowywane bez paska podpisu jest alternatywą dla TFrame; Ramki nie były dostępne z wczesnymi wersjami Delphi, więc zamiast nich użyto formularzy rodzicielskich. Możesz je znaleźć w starszym kodzie.

+0

nadal używać wbudowanych formularzy w bieżącym kodu. Czy jest jakikolwiek powód, dla którego formy ponownego rodzicielstwa powinny być ograniczone do istniejącego kodu? Łatwiej jest podzielić złożone formularze (zazwyczaj różne arkusze kart) na wiele formularzy zamiast ramek. Pomaga mi zachować podział logiczny i ogranicza liczbę kontrolek, które mam w jednej formie. Zazwyczaj ustawiam element nadrzędny na zakładkę i ustaw Align: = alClient. –

3

Możesz umieścić formularz wewnątrz innej formie. Nie wiem, jak dobrze to będzie działać. W Delphi1 razy były specjalne kontrole innych firm do kierowania wydarzeniem. Dzisiaj wydaje się, że mniej więcej działa po wyjęciu z pudełka, z wyjątkiem dialogów modalnych. Spróbuj tak:

procedure TMainForm.Button1Click(...); 
begin 
    with TForm.Create(Self) do begin 
     Caption := 'Internal one'; 
     Parent := Self; 
     Visible := True; 
    end;  
end;  

Być może kotwice i wyrównanie miałyby sens w tej konfiguracji. Po tym wszystkim wydaje się, jak wdrażany jest nowy układ IDE "one-window".

1

Możesz umieścić formularz wewnątrz dowolnego innego elementu kontenera.

To przydatna dla dokującej, f.i. możesz zadokować formularze na kartach sterowania stronami lub gdziekolwiek indziej.

Jest to również przydatne jako alternatywa dla TFrame: jeśli projektujesz ramkę jako TForm, a nie TFrame, nie będzie można jej osadzać w czasie projektowania, a zatem nie można jej edytować/sabotować przez projekt. edytor czasu.

Osadzone ramki mogą mieć ponownie zdefiniowane ich właściwości lub zdarzenia w formie, w której są osadzone, co nie zawsze jest pożądane lub praktyczne, szczególnie gdy chcemy, aby ramka była łatwa do uaktualnienia lub możliwa do zrestruowania. Zmienione właściwości osadzonych ramek trafiają do DFM, a nie do PAS, więc nie są widoczne w czasie kompilacji i nie są łatwe do refaktoryzacji/zmiany nazwy/etc.

2

Jedna prosta sprawa jest dla postaci captionless (np win-8 metropolii styl) można zakotwiczyć przycisk EXIT, aby w prawym górnym rogu.

Jednak najlepszym sposobem jest uproszczenie tworzenia złożonej formy, reagującej na zmiany wielkości ... Za pomocą akLeft i akRight można poziomo wypełnić poziomo wypełnienie kontrolne. Używanie wszystkich 4 kotwic jest podobne do ustawienia klienta na alclient, bez potrzeby otaczania go innymi panelami.

Większość tego, co można zrobić z kotwic może być również wykonane z wielu paneli, ale jako forma staje się bardziej złożona będzie bałagan czasami wymagając kilka poziomów paneli upon paneli.

Oczywiście używanie kombinacji paneli i kotew będzie często najlepszą odpowiedzią.

+0

Wydaje mi się, że nieco błędnie zrozumiałeś pytanie. Naprawdę podążam za użytecznością właściwości Zakotwiczenia/Wyrównania w klasie TForm, tj. Do umieszczania formularza na ekranie - zamiast używać go do ustawiania formantów na formularzach. – Alister

+0

Tak, źle zrozumiałem. –

+0

możesz wtedy wycofać odpowiedź. – Alister

Powiązane problemy