Einzelnen Beitrag anzeigen

Tryer

Registriert seit: 16. Aug 2003
200 Beiträge
 
#4

Re: Ermitteln woher ein Control den Fokus erhalten hat

  Alt 29. Apr 2010, 23:49
Das Problem ist auseinanderzuhalten ob Popup.Deactivate und StatusBar.Click "direkt" aufeinander folgen, ansonsten wäre es ja legitim das dein Popupfenster erst verschwindet um dann beim Click wieder zu erscheinen.

Delphi-Quellcode:
type
  TMainForm = class(TForm)
  ..
  private
    ShowPopupOnClick: Boolean;
  ..
...
   
procedure TMainForm.StatusBarMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  //Würde sehr kurz nach Popup.Deactivate aufgerufen
  //wenn die Zeitspanne größer ist wird das Popup angezeigt
  ShowPopupOnClick := Abs(GetTickCount - Popup.TimeStampHide) > 20;
end;

procedure TMainForm.StatusbarClick(Sender: TObject);
begin
  if ShowPopupOnClick then
    Popup.Show;
end;

//##############################################################

type
  TPopup = class(TForm)
  ..
  public
    TimeStampHide: Integer;
  ..

procedure TPopup.FormDeactivate(Sender: TObject);
begin
  TimeStampHide := GetTickCount;
  Hide;
end;
Grüsse, Dirk
  Mit Zitat antworten Zitat