Einzelnen Beitrag anzeigen

Alaitoc

Registriert seit: 24. Okt 2008
263 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: selbsterstellte Combobox hat (noch) keinere Fehler

  Alt 14. Jun 2010, 14:41
Sorry, hatte vergessen mir den Beitrag zu den Favoriten hinzufügen und somit leider etwas verdrängt.

Also ich gehe davon aus das du das Formular per .Show() anzeigst und es hat den Formstyle fsStayOnTop, nicht wahr?

Ich habe es halt in dem Fall völlig anders gelöst, indem ich das Formular auf den Desktop anzeige und es so modifziere das es nicht den Focus klaut. (Per Windows-API Funktionen )
Per SetCapture() und ReleaseCapture() fange ich halt noch ab ob der Benutzer woanders hinkliegt und per OnFocusLost-Event ( eine extra Windows-Message ) überprüfe ich ob die Komponente den Focus verliert.

Da du ja sozusagen mit der VCL arbeitest und du ein neues Formular mit Gridview erzeugst kriegt das halt den Focus, da ist es selbstverständlich das das andere Formular den Focus verliert.
Das Problem,dass das Formular über anderen Fenster und so weiter hängt darf eigentlich gar nicht vorhanden sein. Zumindest in meiner Auffassung schließt sich eine Combobox automatisch wenn sie nicht mehr vorne ist. ( D.h. den Focus verloren hat oder sonstiges )

Also im Endeffekt kenn ich dabei leider keinen Weg mit der VCL zu arbeiten, abgesehen vll. mit TCustomCombobox zu arbeiten.

Vll. hilft dir aber trotzdem noch der Codeauszug weiter:
Delphi-Quellcode:
  private
    FFocusLostEvent: TNotifyEvent;
    procedure WMKillFocus( var Message: TWMKillFocus ); message WM_KILLFOCUS;

  published
    property OnFocusLost: TNotifyEvent read FFocusLostEvent write FFocusLostEvent;

procedure X.WMKillFocus( var Message: TWMKillFocus );
begin
  inherited;
  if Assigned( FFocusLostEvent ) then
  begin
   OnFocusLost( Self );
  end;
end;
Dieses Event ( wenn du es in eine Komponente einbaust ) wird immer ausgelöst, wenn die Komponente auf irgendeine Art den Focus verliert.

MfG Alaitoc

Geändert von mkinzler (14. Jun 2010 um 16:17 Uhr) Grund: Code-Tag durch Delphi-Tag ersetzt
  Mit Zitat antworten Zitat