komponenty na MDIForm przykrywaja MDIChild

0

Jak wstawić button lub DBgrida na MDIForm tak żeby nie przykrył on okienka MDIChild ?
Ewentualnie jak zmienić MDIChild zby nie było przykrywane komponentami MDIForm ?

0

albo robisz aplikację MDI albo SDI - musisz się zdecydować

0

Robię aplikacje MDI.
Senes jest taki: formę główną chce traktować jak "pulpit" i np. wyświetlać na niej komunikaty które pochodzą z bazy danych SQL, dlatego chciałbym żeby na formie głównej znalazł się DBGrid (żadnych operacji przez DBGrida nie będę robić -on może być "nieaktywny").
Informacje zawarte na "pulpicie" maja być przykrywane przez otwierane okienka MDIChild.

0

Nie da się. Takie komponenty (chyba wszystkie TWinControl) zawsze będą pokazywane nad oknami MDIChild. Na MDIParent możesz sobie walnąć np. Image, ale buttona już nie.

0

Niestety ostatnio z tym problemem się zetknąłem i taka jest prawda. MDI jest bardzo prymitywnym standardem. Microsoft już się od niego odcina i zachęca do stosowania innych standardów. http://msdn.microsoft.com/en-us/library/ms632591.aspx
Możesz spróbować zrobić coś takiego, jak zrobił Microsoft z Officem 2007 i nowszymi. Nie stosują tam już standardu MDI.
Jeżeli się uprzesz na MDI (tak jak ja) możesz spróbować obejść ograniczenia MDI np stosując MDIForm będącą podkładem dla okien MDIChild, lecz nie umieszczać nic na niej, a elementy systemowe takie jak buttony, panele umieszczać na innych formach (mogą to wówczas być MDIChild, Zwykłe niemodalne formy, formy StayOnTop - według uznania i potrzeb).

0
RTS napisał(a):

Jak wstawić button lub DBgrida na MDIForm tak żeby nie przykrył on okienka MDIChild ?
Ewentualnie jak zmienić MDIChild zby nie było przykrywane komponentami MDIForm ?

Chyba tworzysz go po prostu w MDIFrame.
Przynajmniej w WinApi tak należałoby robić, a nie wiem czy te gotowe formy z delphi pozwalają na coś takiego.

Struktura okien w MDI jest taka:
MDIFrame -> MDIClient -> i tu dopiero są te okieka, tj. MDIChilds

Toolbary i inne dekoracje siedzą bezpośrednio w MDIFrame.

0

MDI jest bardzo prymitywnym standardem. Microsoft już się od niego odcina i zachęca do stosowania innych standardów.

Szkoda tylko, że brakuje tych «standardów». Alternatywy są trzy:

  1. SDI i każdy otwarty dokument w osobnym oknie,
  2. interfejs z zakładkami (w przeglądarkach się sprawdza, ale gdzie indziej nie zawsze ma sens),
  3. mniej lub bardziej prymitywna reimplementacja MDI.

Możesz spróbować zrobić coś takiego, jak zrobił Microsoft z Officem 2007 i nowszymi.
Office 2007, zależnie od ustawień, używa osobnych okien głównych albo MDI:

word2007.PNG

0

Dziękuję za porady.
Rozwiązanie office to jest praktycznie MDI. Cały szkopuł w tym że nie chce poświęcać górnej (lub innej) części okna aplikacji na guziki itp.
Interesujące jest rozwiązanie z "zakładami" ale nie tak jak u MSO zmieniającymi tylko część zawartości okna aplikacji, ale tak że zmienia się cała zawartość.
Spróbuje to wymodelować używając na głównej formie TPageControl i dążąc do tego aby jedna z zakładek stanowiła pulpit aplikacji MDI.

0

To co te guziki na głównej formie mają robić? I jak sobie wyobrażasz klikanie takiego guzika jak masz otwarte np. 10 okien MDI - trzeba WSZYSTKIE zminimalizować, kliknąć guzik i je przywrócić? Przecież to żadnej ergonomii nie ma. Właśnie po to jest menu/tool bar aby można było stamtąd łatwo dostać się do akcji aktualnie aktywnego okna MDI. Zauważ, że jeśli okno MDI ma własne menu to to menu integruje się z menu okna głównego.
Jedyne zastosowanie przycisków na formie głównej (tak jak Ty chcesz zrobić) to jakieś menu ale co to za menu, do którego żeby się dostać muszę zamknąć/zminimalizować wszystkie okna z którymi pracuję.

Obejściem problemu może być walnięcie na okno główne np. panelu i na tym panelu rozmieszczenie wszystkiego co tam ma być i jeśli nie ma żadnego okna MDI lub są one zminimalizowane to pokazywanie panelu a jeśli chociaż jedno jest widoczne to chowanie panelu

0

Jeśli chodzi o ergonomie, to zamysł jest inspirowany (hihi) pulpitem windowsowym. Okien na raz otwartych w tej aplikacji nie będzie za dużo.
Pomysł z panelem nie jest idealny ale, bardzo ciekawy.
Ze względu na estetykę fajnie by wyglądało gdyby okno potomne na "pulpicie" przysłaniało tylko część funkcji. Ale ze względu na pracochłonność estetyka pójdzie do galerii sobie coś innego oglądać.

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