Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Programm in den Vordergrund bringen (https://www.delphipraxis.net/72219-programm-den-vordergrund-bringen.html)

bonanza 27. Jun 2006 10:35


Programm in den Vordergrund bringen
 
HI,

ich möchte mein Programm, wenn ein bestimmter fall eintritt, in den Vordergrund bringen. Wie kann ich das machen ?

ich hab schon danach gegoogelt habe nur "alte" methoden gefunden, die bei mir nicht funktionieren, da ich XP habe.

Vielen dank schonmal im voraus.

Obi-Wan 27. Jun 2006 10:46

Re: Programm in den Vordergrund bringen
 
Ich würds einfach so machen:

Delphi-Quellcode:
procedure MeinEreignis;
begin
 FormStyle := fsStayOnTop; //Form in den "StayOnTop" Modus bringen
 FormStyle := fsNormal; //Form wieder "normalisieren"
end;
Gibt vielleicht noch ne elegantere Methode die mich auch interressieren würde ^^

bonanza 27. Jun 2006 10:50

Re: Programm in den Vordergrund bringen
 
und wie kann ich es verbergen, also, dass das Form nicht mehr zu sehen ist (habe es schon in Tray gebracht)?

TheAn00bis 27. Jun 2006 10:52

Re: Programm in den Vordergrund bringen
 
Auch TApplication kennt

Delphi-Quellcode:
BringToFront;
,

wenn ich mich denn nicht irre.

Edit:
Zitat:

Zitat von bonanza
und wie kann ich es verbergen, also, dass das Form nicht mehr zu sehen ist (habe es schon in Tray gebracht)?

Delphi-Quellcode:
form1.visible := false
?

Luckie 27. Jun 2006 10:53

Re: Programm in den Vordergrund bringen
 
Zitat:

Zitat von Obi-Wan
Ich würds einfach so machen:

Und ich nicht, denn:
Zitat:

Note: It is not advisable to change FormStyle at runtime.
Grund ist der, dass das Formular neu erzeugt wird und somit ein neues Handle bekommt, was ungewollte Nebeneffekte zur Folge haben kann. Nimm besser MSDN-Library durchsuchenSetWindowPos mit dem Flag HWND_TOPMOST.

Verbergen geht mit der Eigenschaft Delphi-Referenz durchsuchenHide von TForm.

bonanza 27. Jun 2006 11:03

Re: Programm in den Vordergrund bringen
 
könntest du mir dafür ein beispiel geben ?

ich weiß nämlich nicht, wie ich das mit den "uFlags" machen soll:

Delphi-Quellcode:
SetWindowPos(HWND,HWND_TOPMOST,0,0,0,0,UINT uFlags);
?

Luckie 27. Jun 2006 11:24

Re: Programm in den Vordergrund bringen
 
Sthet doch alles im PSDK: http://msdn.microsoft.com/library/de...twindowpos.asp

NicoDE 27. Jun 2006 11:28

Re: Programm in den Vordergrund bringen
 
Ansonsten kannst du dir das Vordergrundfenster holen (GetForegroundWindow), die Eingabequeues verbinden (GetWindowThreadProcessId, AttachThreadInput) und mittels (Windows.)SetFocus dein Programm aktivieren.

Delphi-Quellcode:
function BringToFrontEx(AWnd: HWND): Boolean;
var
  FgWindow: HWND;
  ThreadId: DWORD;
  Attached: BOOL;
begin
  FgWindow := GetForegroundWindow();
  ThreadId := GetWindowThreadProcessId(FgWindow, nil);
  Attached := AttachThreadInput(GetCurrentThreadId(), ThreadId, True);
  if Attached or (ThreadId = GetCurrentThreadId()) then
    Result := SetFocus(AWnd) <> 0
  else
    Result := SetForegroundWindow(AWnd);
  if Attached then
    AttachThreadInput(GetCurrentThreadId(), ThreadId, False);
end;
Wenn dein Programm sich ohne Grund den Fokus holt, wird der Benutzer es schnell hassen lernen...

Obi-Wan 27. Jun 2006 11:57

Re: Programm in den Vordergrund bringen
 
Achso ok, danke Luckie für die Aufklärung :)
Habs halt mit bringToFront versucht aber das funktioniert leider nicht :(

bonanza 27. Jun 2006 14:29

Re: Programm in den Vordergrund bringen
 
Ich hab das Porgramm jetzt versteckt mit:

Delphi-Quellcode:
ShowWindow(Handle, SW_HIDE);
ShowWindow(Application.Handle, SW_HIDE);

aber wie kann ich es wieder anzeigen ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:54 Uhr.
Seite 1 von 2  1 2      

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