Einzelnen Beitrag anzeigen

Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Toolwindow aufrufen und zurück zur aufrufenden Form

  Alt 10. Sep 2014, 14:17
Ich kann mich nicht mehr genau erinnern warum ich das so gemacht habe, aber einen Versuch ist es sicherlich wert. Mein Fenster bleibt immer sichtbar, egal ob ich in der Anwendung bin oder nicht, bleibt aber immer in der gerade aktiven Anwendung mit dem Fokus stehen, zudem schließt es sich selbstständig nach einer gewissen Zeit.

Ich kopiere einfach mal den relevanten Teil hier rein:

Delphi-Quellcode:
procedure TfmShowAnrufer.FormHide(Sender: TObject);
begin
  Timer2.Enabled := False;
  Timer1.Enabled := False;
  ShowWindow(handle, SW_HIDE);
end;

procedure TfmShowAnrufer.FormShow(Sender: TObject);
begin
  Left := Screen.WorkAreaLeft + Screen.WorkAreaWidth - Width;
  Top := Screen.WorkAreaTop + Screen.WorkAreaHeight - Height;
  Timer2.Enabled := True;
  Timer1.Enabled := True;
  Timer2Timer(Nil); // das müssen wir machen, damit das Fenster keinen Fokus bekommt
end;

procedure TfmShowAnrufer.Timer1Timer(Sender: TObject);
var
  Merk : TWindowState;

begin // Fenster schließt sich nach einer gewissen Zeit automatisch
  Timer2.Enabled := False;
  If not Application.Active then
  begin
    // diesen Workaround müssen wir machen, weil sonst nach ToggleDesktop das Fenster
    // sichtbar bleibt und sich auch nicht manuell schlie0en läßt
    Merk := Application.MainForm.WindowState;
    Application.Minimize;
    Application.Restore;
    Close;
    Application.MainForm.WindowState := Merk;
  end else
  begin
    Close;
  end;
end;

procedure TfmShowAnrufer.Timer2Timer(Sender: TObject);
begin
  // den Aufstand müssen wir machen, da das Fenster sonst beim Minimieren, Deaktivieren
  // oder ToggleDesktop verschwinden würde
  Application.RestoreTopMosts;
  ShowWindow(handle, SW_SHOWNOACTIVATE);
end;
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)

Geändert von baumina (10. Sep 2014 um 14:21 Uhr)
  Mit Zitat antworten Zitat