AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Form mit Alt + Tab verliert Fokus

Ein Thema von RedOne · begonnen am 6. Jun 2013 · letzter Beitrag vom 7. Jun 2013
Antwort Antwort
RedOne

Registriert seit: 2. Jun 2008
71 Beiträge
 
Delphi XE2 Professional
 
#1

Form mit Alt + Tab verliert Fokus

  Alt 6. Jun 2013, 16:14
Hallo zusammen

Mich plagt zur Zeit folgendes Problem:
Ich habe ein Hauptformular. Von diesem aus öffne ich ein weiteres Formular (nicht Modal). Beide Forms sollen nun in der Taskleiste angezeigt werden und beide Forms sollen auch über Alt + Tab sichtbar sein.
Dies löse ich so:
Delphi-Quellcode:
procedure TFormSecond.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW; //Damit wird das Form in der Taskbar sichtbar
  Params.WndParent := GetDesktopWindow; //Damit wird das Form mit Alt + Tab auswählbar
end;
Wenn ich nun aber auf meinem Unterformular (TFormSecond) gewisse Komponenten aufrufe, die ein zusätzliches Fenster öffnen, verliere ich den Fokus.
Als Beispiel: Ich habe auf dem Unterformular eine TRichView-Komponente mit ihrem eigenen Color-Dialog.
Klicke ich auf den Button, erscheint unterhalb des Buttons die Farbpalette, wie man sie aus Word kennt. Nun aber wird der Fokus auf das Hauptformular gesetzt. Das heisst, ich sehe das Hauptformular und darüber die Farbpalette.
Der gleiche Effekt tritt z.B. auch mit dem SynEdit auf, wenn die Completion geöffnet wird.
Das ganze liegt an dieser Zeile: Params.WndParent := GetDesktopWindow;
Entferne ich sie, funktioniert alles wunderbar. Nur verliert das Fenster seine Alt+Tab-Funktionalität.

Über Vorschläge würde ich mich freuen

Herzlichen Dank!
RedOne
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Form mit Alt + Tab verliert Fokus

  Alt 6. Jun 2013, 16:31
Könnte das evtl. mit Application.MainFormOnTaskbar zusammenhängen?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Form mit Alt + Tab verliert Fokus

  Alt 6. Jun 2013, 16:34
Versuche mal WndParent auf Null anstatt auf das Desktop-Fenster zu setzen.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#4

AW: Form mit Alt + Tab verliert Fokus

  Alt 6. Jun 2013, 20:49
Wenn WndParent ein HWND (Fenster-Handle) ist (was ich ohne nachzuschlagen vermute), dann sind 0, bzw. NULL und GetDesktopWindow zumindest in allen bisherigen Windows Versionen identisch - zumindest in ein und dem selben Usercontext. Wie es bei "fremden" Desktops aussieht, weiss ich nicht.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
RedOne

Registriert seit: 2. Jun 2008
71 Beiträge
 
Delphi XE2 Professional
 
#5

AW: Form mit Alt + Tab verliert Fokus

  Alt 7. Jun 2013, 07:21
Hallo zusammen

Merci für Eure Antworten.
MainFormOnTaskbar hat auch nicht den gewünschten Effekt gebracht. Ebenso WndParent auf 0 zu setzen.
Verflixtes Ding...

[Edit]
Einen Workaraound habe ich anhand dieses Threads gefunden:
http://www.delphipraxis.net/114471-h...rdergrund.html
Ich mache nun eine Interceptorklasse die ich in der entsprechenden Komponente einbinde. Nicht besonders schön, da ich eingekauften Code verändern muss, aber wens anders nicht geht...

Delphi-Quellcode:
type
  TfrmRVBase = class( BaseRVFrm.TfrmRVBase )
  protected
    procedure CreateParams(var Params: TCreateParams); override;
  end;

implementation

procedure TfrmRVBase.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.WndParent := 0;
end;

Geändert von RedOne ( 7. Jun 2013 um 08:12 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:27 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