Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Form aktiv setzen, obwohl Fokus auf anderer Form liegt (https://www.delphipraxis.net/156958-form-aktiv-setzen-obwohl-fokus-auf-anderer-form-liegt.html)

s.h.a.r.k 21. Dez 2010 23:29

Form aktiv setzen, obwohl Fokus auf anderer Form liegt
 
Ich glaube, dass ich im Titel schon ausreichend Information gegeben habe ;) Und zwar habe ich eine Form, die ich aktiv setzen will, also so, als ob diese den Fokus hat, obwohl eine andere Form gerade den Fokus besitzt.

Ich weiß, dass sich das zunächst sehr komisch anhört, aber hier etwas zum Hintergrund: Ich habe eine semitransparenten Overlay programmiert, welches sich genau über diese eine Form legt -- z.B. ein Ladebildschirm oder ein Login. So liegen dann zwei Forms übereinander. Nun ist es aber so, dass wenn ich dem Overlay den Fokus gebe, dann wird der Schatten (unter Windows 7) der eigentlichen Form deaktivert, was ich aber nicht unbedingt will. Es soll so aussehen, als ob das Overlay-Fenster ein Bestandteil der eigentlichen Form ist.

alzaimar 22. Dez 2010 05:15

AW: Form aktiv setzen, obwohl Fokus auf anderer Form liegt
 
Ich mach das, indem ich einen Panel auf das Hauptformular lege, auf dem dann der Login stattfindet. Nach dem Login verschwindet das Panel.

Einen Splash zeige ich, bevor das Hauptfenster sichtbar ist. Im OnActivate des Hauptfensters starte ich einen Timer, der mir den Splash nach weiteren 500-schiessmichtot-Millisekunden entfernt.

Mir reicht das.

Blup 22. Dez 2010 07:13

AW: Form aktiv setzen, obwohl Fokus auf anderer Form liegt
 
Die Nachricht WM_NCACTIVATE an das Fenster senden.

Bummi 22. Dez 2010 07:43

AW: Form aktiv setzen, obwohl Fokus auf anderer Form liegt
 
Delphi-Quellcode:
procedure TForm2.FormActivate(Sender: TObject);
begin
  DefWindowProc(Form1.Handle,WM_NCACTIVATE,-1,0);
end;
und vice versa

stahli 22. Dez 2010 12:05

AW: Form aktiv setzen, obwohl Fokus auf anderer Form liegt
 
Vielleicht ist auch das einbetten der SubForm irgendwie hilfreich?
Delphi-Quellcode:
  SubForm.ManualDock(MainForm, nil, alNone);
//  SubForm.Align := alClient;
  SubForm.Show;
Ein evtl. Mainmenü würde damit jedoch sicher nicht überdeckt werden.

s.h.a.r.k 22. Dez 2010 14:11

AW: Form aktiv setzen, obwohl Fokus auf anderer Form liegt
 
@stahli: Das einbetten funktioniert leider nicht, da ich dann AlphaBlendValue nicht mehr nutzen kann. Ich kann es zwar setzen, aber es keinerlei Auswirkungen.

@Blup, Bummi: Danke, das ist die Nachricht/der Code den ich gesucht hatte :thumb: Muss ich das eigentlich auch wieder rückgängig machen?

@alzaimar: Jo, diese Lösung schwebte mir auch vor, allerdings will ich mal versuchen einen schönen Overlay zu programmieren, der ein- und ausfadet :) Sowas ist im Web weit verbreitet, allerdings wohl auch aufgrund der Tatsache, dass man da nicht unbedingt x Fenster öffnen will.

Bummi 22. Dez 2010 14:31

AW: Form aktiv setzen, obwohl Fokus auf anderer Form liegt
 
Zitat:

Muss ich das eigentlich auch wieder rückgängig machen?
nein...


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz