AGB  ·  Datenschutz  ·  Impressum  







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

Form anzeigen, aber nicht aktivieren

Ein Thema von karlkoch · begonnen am 30. Aug 2007 · letzter Beitrag vom 30. Aug 2007
Antwort Antwort
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, 16: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
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Form anzeigen, aber nicht aktivieren

  Alt 30. Aug 2007, 16:56
Versuch's mal mit einem THintWindow.
Delphi-Quellcode:
var
   s : string;
   FHintRect : TRect;

   // Hint-Window, um dem Benutzer eine Info anzuzeigen
   FHintWin := THintWindow.Create(Self);

   s := 'He du da!'#13#10+'Du musst hier clicken!';
   FHintRect := FHintWin.CalcHintRect(200, s, nil);
   FHintWin.ActivateHint(FHintRect, s);
   FHintWin.Refresh;
   ....
   FHintWin.ReleaseHandle; // Hint Fenster ausblenden
Andreas
  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 18:54 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