Einzelnen Beitrag anzeigen

karlkoch

Registriert seit: 26. Feb 2006
Ort: Leipzig
30 Beiträge
 
Delphi 10.4 Sydney
 
#1

Form anzeigen, aber nicht aktivieren

  Alt 30. Aug 2007, 15:49
Hallo,

ich möchte ein zweites Formular in meiner Anwendnung anzeigen, welches jedoch niemals aktiviert werden sollte. Ich möchte dabei ein ähnliches Verhalten wie die Delphi IDE mit der Codevervollständigung erreichen. Ein vollwertiges Fenster, immer im Vordergrund, jedoch ohne das es tatäschlich aktiviert wird (ähnlich einem Popup).

Dafür setze ich in CreateParams den ExStyle folgendermaßen:
Params.ExStyle := Params.ExStyle or WS_EX_TOPMOST or WS_EX_NOACTIVATE; Das funktioniert allerdings nur bei Mouseclicks. Eine Anzeige mit Form.Visible := True; aktiviert das Fenster trotzdem. Das lässt sich mit einem manuellen Aufruf über die Windows-API umgehen, so z.B.:
ShowWindow(Form.Handle, SW_NOACTIVATE); Das funktioniert, nur umgeht man da die VCL und es treten seltsame Phänomene auf, denn für die VCL ist die Form noch unsichtbar und alle Komponenten, die von TWinControl abgeleitet sind, werden nicht angezeigt.

Kennt jemand eine Lösung für dieses Problem? Ich möchte nur ungern den Fokus selber zurücksetzen müssen, denn das führt zu einem Flackern der Titelleiste des Fensters.

karlkoch
  Mit Zitat antworten Zitat