2010-01-29 12 views

Odpowiedz

7

Pobierz JVCL Jedi i zainstaluj go i obejrzyj Demos dla JvDocking "dokowanie w kodzie". Robią to dokładnie.

Znaczy to, że w rzeczywistości nie używasz FormStyle = fsMDIChild, chyba że chcesz dużo problemów. MDI jest "emulowany", kiedy jest potrzebny, poprzez dokowanie w kodzie.

Nie konwertuj okien na ramki. To złe rozwiązanie.

Dla środowiska podobnego do MDI, które nie ma problemów z MDI, użyj rozwiązania dokowania (komponenty komercyjne lub open source obsługujące dokowanie). Używam JvDocking, który jest zawarty w JEDI JVCL, który jest darmowy i open source.

Korzystasz z formularzy zarówno w trybie "zadokowanym", jak i "niezadokowanym" (pływającym), dzięki czemu uzyskasz zadokowany wygląd i styl IDE (VIsual Studio i RAD Studio) oraz oddokowany wygląd i styl IDE (RAD Studio w undocked lub classic delphi 7).

4

Chciałbym przekonwertować moje bieżące okna na ramki i umieścić te ramki z align = alClient w oknach podrzędnych mdi lub normalnych oknach zgodnie z konfiguracją.

Ale uwaga: nigdy tak naprawdę tego nie robiłem, więc mogą być problemy, o których nie wiem.

+0

+1 To jest najprostsze rozwiązanie. – skamradt

+3

Nie musisz niczego konwertować. Możesz umieścić FOrms na swoich oknach, nie zmieniając ich w ramki, używając TForm.ManualDock. –

2

Przy uruchomieniu należy ustawić wartość TForm.FormStyle na wartość fsNormal lub fsMDIChild w zależności od tego, czy ma to być SDI, czy MDI.

+2

"prawdziwy MDI" to złe wieści. zobacz http: // stackoverflow.com/questions/1463221/delphi-mdi-vs-tabs-for-multi-document-interface –

+1

@WarrenP: Przykro mi, jeśli nie lubisz MDI, ale jest to poprawna odpowiedź na to pytanie. –

+1

NIC to nie robi z NIE WOLNYM to. Ma złe problemy z użytecznością. zobacz link. Dzisiejsi użytkownicy mają systemy z wieloma monitorami, a MDI już nie pasuje. Dokowanie pozwala na wszystkie zalety MDI bez jego wad. Brak dbałości o użyteczność nie sprawia, że ​​"lubię lub nie lubię". To użytkownicy, na których mi zależy. doświadczenie użytkownika ma znaczenie. Ponadto, MDI jest pełne wad. –

1

Podobnie jak w przypadku rozwiązania WarrenP, zdecydowanie zalecam rozwiązanie oparte na dokowaniu. Trzeba powiedzieć, że nie musisz używać VCL Jedi, aby to osiągnąć. Jako przykład, here's bardzo prosty (all-native-vcl) komponent, który stworzyłem, który pozwala po prostu rzucić na tyle instancji do formularza (-ów) i ustawić ich wyrównanie, aby umożliwić dokowanie (i dokowanie kartami) w tych regiony.

Sam MDI to wypadek czekający na miejsce. Dostępne są rozwiązania, które pozwolą osiągnąć "wygląd MDI" bez korzystania z samego MDI, chociaż jeszcze nie spotkałem się z takim "czystym" (prawdopodobnie z braku szukania).

Ostatecznie prawdopodobnie powinieneś zakwestionować mądrość w dostarczaniu MDI jako opcji. Dokowanie (z lub bez możliwości oddokowania, a szczególnie, gdy dokowanie z zakładką jest wyborem wybranym przez użytkownika) wydaje się być bardziej nowoczesne i (zrobione prawidłowo) może być dużo bardziej elastyczne i intuicyjne niż kiedykolwiek wcześniej.

Po prostu moja 2-pensowa wartość.

Powiązane problemy