Autor Téma: Aby se nemodální okno neztratilo pod mainform  (Přečteno 456 krát)

Offline Morrison

  • Hrdina
  • ****
  • Příspěvků: 279
  • Karma: 12
    • Verze Delphi: D5, XE2
Aby se nemodální okno neztratilo pod mainform
« kdy: 12-11-2019, 10:44:50 »
Jak to udělat, aby se nemodální okno nemohlo "ztratit" pod hlavní okno aplikace? Nevíte někdo?
nil

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2402
  • Karma: 103
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:Aby se nemodální okno neztratilo pod mainform
« Odpověď #1 kdy: 12-11-2019, 13:15:05 »
Neco podobneho resim takto, jesli ti to pomuze nevim


Kód: Delphi [Vybrat]
  1. procedure TSuggestControl.CreateParams(var Params: TCreateParams);
  2. begin
  3.   inherited CreateParams(Params);
  4.   Params.WindowClass.style := Params.WindowClass.style or (CS_VREDRAW + CS_HREDRAW);
  5.   with Params do
  6.   begin
  7. //    Style := WS_THICKFRAME OR WS_POPUP or Style;
  8.     ExStyle := {WS_EX_TOOLWINDOW or} WS_EX_TOPMOST;
  9.   end;
  10. end;
  11.  
Embarcadero MVP - Czech republic

Offline Morrison

  • Hrdina
  • ****
  • Příspěvků: 279
  • Karma: 12
    • Verze Delphi: D5, XE2
Re:Aby se nemodální okno neztratilo pod mainform
« Odpověď #2 kdy: 12-11-2019, 13:45:39 »
Díky, WS_EX_TOPMOST funguje. Omlouvám se za zbytečný dotaz. Nevím totiž jak jsem na to přišel, ale měl jsem za to, že když se fomu nastaví FormStyle := fsStayOnTop, že to pak je i nad všemi ostatními okny jiných aplikací. Přitom fsStayOnTop je, jak se zdá, jen v rámci mojí aplikace.
nil

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2402
  • Karma: 103
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:Aby se nemodální okno neztratilo pod mainform
« Odpověď #3 kdy: 12-11-2019, 13:54:52 »
Díky, WS_EX_TOPMOST funguje. Omlouvám se za zbytečný dotaz. Nevím totiž jak jsem na to přišel, ale měl jsem za to, že když se fomu nastaví FormStyle := fsStayOnTop, že to pak je i nad všemi ostatními okny jiných aplikací. Přitom fsStayOnTop je, jak se zdá, jen v rámci mojí aplikace.

Taky si myslim, ze fsStayOnTop  coz je podle zdrojaku transformovan na HWND_TOPMOST je nad vsemi okny (nebo byval), proto WS_EX_TOPMOST, ale nijak moc jsem se v tom nevrtal.
Embarcadero MVP - Czech republic

Offline Morrison

  • Hrdina
  • ****
  • Příspěvků: 279
  • Karma: 12
    • Verze Delphi: D5, XE2
Re:Aby se nemodální okno neztratilo pod mainform
« Odpověď #4 kdy: 12-11-2019, 15:23:25 »
Třeba je to ve Windows 10 změněný. Taky bych právě řekl, že dříve fsStayOnTop bylo nade všemi ostatními okny. Bohužel teď momentálně nemám starší Windows, abych to vyzkoušel.
nil

Offline geby

  • Plnoletý
  • ***
  • Příspěvků: 212
  • Karma: 16
    • Verze Delphi: 7, 2007, XE2, 10.2
    • Synapse
Re:Aby se nemodální okno neztratilo pod mainform
« Odpověď #5 kdy: 12-11-2019, 21:20:44 »
Excellent
Rated 1 time
Pánové, proč to místo toho přepisování CreateParams nenastavíte pomocí property popupmode?

Viz. http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/Forms_TForm_PopupMode.html

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2402
  • Karma: 103
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:Aby se nemodální okno neztratilo pod mainform
« Odpověď #6 kdy: 13-11-2019, 00:45:43 »
Pánové, proč to místo toho přepisování CreateParams nenastavíte pomocí property popupmode?

Viz. http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/Forms_TForm_PopupMode.html

Protože jsem si doteď myslel, že se to týká jen modálních oken, ale podle popisu by to mohlo fungovat i na nemodální...
Embarcadero MVP - Czech republic

Offline JaroB

  • Guru
  • *****
  • Příspěvků: 973
  • Karma: 27
    • Verze Delphi: XE8, Seattle
Re:Aby se nemodální okno neztratilo pod mainform
« Odpověď #7 kdy: 13-11-2019, 08:23:19 »
Ono řešení od EMBT vypadá elegantně, ale já mám ponejvíce problém s okny např. QuickReport nebo jinými, třetích stran, které se schovávají pod hlavní okno. Problém je i s dialogs okny :(