Forum Delphi.cz

Delphi => Obecné => Téma založeno: Leo11 26-02-2014, 07:52:23

Název: 2 X Form
Přispěvatel: Leo11 26-02-2014, 07:52:23
Nazdar.
Mam form1 skoro přes celou obrazovku.
S Form1 volám Form2  - form2.show
Form 2 je malý a po kliknutí myšákem na form1 se schová pod něj.
Jde nějak docilit aby byl furt nahoře.
PS:Nechci ho v modal režimu
Název: Re:2 X Form
Přispěvatel: pepak 26-02-2014, 08:07:20
FormStyle = fsStayOnTop
Název: Re:2 X Form
Přispěvatel: Mi.Chal. 26-02-2014, 08:26:25
FormStyle = fsStayOnTop

To jsem kdysi použil pro vysouvací hlavní okno aplikace, když jsem chtěl, aby byla nad okny ostatních aplikací. Nevím, jestli to opravili, ale v D7 to bylo spíš takové demo - chvíli to fungovalo, ale po chvíli práce s ostatními aplikacemi se to začalo chovat, jako kdyby to nastavené nebylo. Nakonec jsem to vyřešil tak, že jsem při zobrazení okno periodicky cpal do popředí.
Název: Re:2 X Form
Přispěvatel: Leo11 26-02-2014, 20:11:48
chvíli to fungovalo, ale po chvíli práce s ostatními aplikacemi se to začalo chovat, jako kdyby to nastavené nebylo.

Co je u tebe chvili????
Název: Re:2 X Form
Přispěvatel: Ondřej Pokorný 26-02-2014, 21:06:53
Mi.Chal má pravdu: občas se ten StayOnTop ztrácí. Těžko říct za jak dlouho, je to spíš o náhodě. Taky těžko říct, jestli za to můžou Delphi nebo Windows. Já bych to tipoval na Windows, protože mi to dělaly i jiné programy, které v Delphi napsané nebyly.

Taky si nedefinoval, co znamená přesně "Jde nějak docilit aby byl furt nahoře." -> má to být furt nahoře v rámci systému, nebo v rámci aktuálního formuláře (v delphi aplikaci).

Pokud v systému => FormStyle = fsStayOnTop (pepak)

Pokud v aplikaci => Form2.PopupParent := Form1.

Jestli to je nějaké notifikační okýnko, tak je taky lepší ho zobrazit pomocí
Kód: Delphi [Vybrat]
  1.   ShowWindow(Form2.Handle, SW_SHOWNOACTIVATE);
  2.   Form2.Visible := True;
protože tak nedostane focus (jestli to je žádané chování).
Název: Re:2 X Form
Přispěvatel: Mi.Chal. 26-02-2014, 21:13:43
Mi.Chal má pravdu: občas se ten StayOnTop ztrácí. Těžko říct za jak dlouho, je to spíš o náhodě. Taky těžko říct, jestli za to můžou Delphi nebo Windows. Já bych to tipoval na Windows, protože mi to dělaly i jiné programy, které v Delphi napsané nebyly.

Ono to někdy dělá i třeba i u winampu, je nad ostatními okny, občas to přestane fungovat, tak stay on top vypnu a zapnu a zase to chvíli drží.
Název: Re:2 X Form
Přispěvatel: TLama 26-02-2014, 21:26:48
Jsou to potvory (http://blogs.msdn.com/b/oldnewthing/archive/2011/03/10/10138969.aspx) :)
Název: Re:2 X Form
Přispěvatel: Daniel_Andrascik 26-02-2014, 22:38:38
Je nejaky zasadny rozdiel medzi


Form2.PopupParent := Form1

a

Kód: Delphi [Vybrat]
  1.  
  2. type
  3.   TForm2 = class(TForm)
  4.   public
  5.     { Public declarations }
  6.     procedure CreateParams(var Params: TCreateParams); override;
  7.   end;
  8.  
  9. procedure Form2.CreateParams(var Params: TCreateParams);
  10. begin
  11.   inherited;
  12.   Params.WndParent := Form1.Handle;
  13. end;
  14.  

Okrem toho ze ta prva verzia je jednoduchsia?
Název: Re:2 X Form
Přispěvatel: Ondřej Pokorný 27-02-2014, 08:07:35
Je nejaky zasadny rozdiel medzi


Form2.PopupParent := Form1

a

Kód: Delphi [Vybrat]
  1.  
  2. type
  3.   TForm2 = class(TForm)
  4.   public
  5.     { Public declarations }
  6.     procedure CreateParams(var Params: TCreateParams); override;
  7.   end;
  8.  
  9. procedure Form2.CreateParams(var Params: TCreateParams);
  10. begin
  11.   inherited;
  12.   Params.WndParent := Form1.Handle;
  13. end;
  14.  

Okrem toho ze ta prva verzia je jednoduchsia?

Ne, PopupParent dělá přesně toto.