IsWindowVisible entspticht dem Auslesen von
TForm.Visible und jetzt rate mal, was man damit prüfen kann.
Was du suchst, wäre z.B.
GetForegroundWindow.
if GetForegroundWindow = {Form1.}Handle then ...
PS: der Wert für Result entspricht doch VISIBLE, also kann man da auch noch was einsparen
und SWP_NOSIZE sagt, daß die Positionsangabe eh nicht ausgewertet wird.
Eventuell braucht man nichtmal soviel
WinAPI in seine
VCL-Anwendung reinquetschen
.
Delphi-Quellcode:
Function TForm1.Switch: Boolean;
begin
Result := GetForeGroundWindow =
Handle;
if Result
then
begin
SetWindowPos(Application.Handle, HWND_BOTTOM, 0, 0, 0,
0, SWP_NOACTIVATE
or SWP_NOMOVE
or SWP_NOSIZE);
Hide;
end else
begin
if IsIconic(Application.Handle)
then Application.Restore
else Show;
Application.BringToFront;
end;
end;
oder wie wäre es hiermit?
Delphi-Quellcode:
Function TForm1.Switch: Boolean;
begin
Result := GetForeGroundWindow =
Handle;
if Result
then
Application.Minimize
else
begin
if IsIconic(Application.Handle)
then Application.Restore
else Show;
Application.BringToFront;
end;
end;