Autor Téma: 2 X Form  (Přečteno 3460 krát)

Leo11

  • Host
2 X Form
« kdy: 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

Offline pepak

  • Padawan
  • ******
  • Příspěvků: 1558
  • Karma: 37
    • Pepak.net
Re:2 X Form
« Odpověď #1 kdy: 26-02-2014, 08:07:20 »
FormStyle = fsStayOnTop

Offline Mi.Chal.

  • Guru
  • *****
  • Příspěvků: 576
  • Karma: 25
Re:2 X Form
« Odpověď #2 kdy: 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í.

Leo11

  • Host
Re:2 X Form
« Odpověď #3 kdy: 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????

Offline Ondřej Pokorný

  • Guru
  • *****
  • Příspěvků: 815
  • Karma: 59
    • Verze Delphi: Primárně Lazarus, jinak D7 až aktuální
    • Kluug.net
Re:2 X Form
« Odpověď #4 kdy: 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í).
Embarcadero Technology Partner

Offline Mi.Chal.

  • Guru
  • *****
  • Příspěvků: 576
  • Karma: 25
Re:2 X Form
« Odpověď #5 kdy: 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ží.

Offline TLama

  • Guru
  • *****
  • Příspěvků: 597
  • Karma: 31
    • Verze Delphi: 7, 2009, XE3
Re:2 X Form
« Odpověď #6 kdy: 26-02-2014, 21:26:48 »
Jsou to potvory :)

Offline Daniel_Andrascik

  • Guru
  • *****
  • Příspěvků: 502
  • Karma: 20
    • Verze Delphi: D2007, D10.4
Re:2 X Form
« Odpověď #7 kdy: 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?

Offline Ondřej Pokorný

  • Guru
  • *****
  • Příspěvků: 815
  • Karma: 59
    • Verze Delphi: Primárně Lazarus, jinak D7 až aktuální
    • Kluug.net
Re:2 X Form
« Odpověď #8 kdy: 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.
Embarcadero Technology Partner