Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TNA Nach RESTORE doch eine Anzeige in der Taskbar -.- (https://www.delphipraxis.net/63694-tna-nach-restore-doch-eine-anzeige-der-taskbar.html)

Don 21. Feb 2006 17:24


TNA Nach RESTORE doch eine Anzeige in der Taskbar -.-
 
Hiho...

Ich habe folgendes Problem mit meinem Programm:

Das Programm soll sobald es gestartet wird nur in der TNA angezeigt werden
und von dort aus mittels PopUpMenu oder Linksklick auf das Icon auch wiederherzustellen sein.
Das klappt auch erstmal ganz gut, aber wenn man das Programm minimiert hat und es dann wiederherstellt,
erscheint es auf einmal doch in der Taskbar.

Habe ich was vergessen oder geht das nicht anders?

Hier der (leider :oops: - bin halt noch in den Anfängen) teilweise aus verschiedenen Hilfe-Threads zusammengesuchte Quellcode:
Delphi-Quellcode:
procedure TForm1.TaskbarEvent(var Msg: TMessage);
var Point : TPoint;
    h:HWnd;
begin

  { Die WM_TaskbarEvent-Message "Msg" gibt in Msg.LParam
    das genaue Ereignis an. Msg.LParam kann folgende Werte für
    Mausereignisse annehmen:

    WM_MouseMove
    WM_LButtonDown
    WM_LButtonUp
    WM_LButtonDblClk
    WM_RButtonDown
    WM_RButtonUp
    WM_RButtonDblClk }

  { Eventhandler-Beispiele von Robert Fischer: }
  case Msg.LParam of
    WM_LBUTTONUP:
      BEGIN
        //Mach etwas nach einem Linksklick...
         h:=handle;
         postmessage(h,WM_SYSCOMMAND,SC_RESTORE,1);
      END;
    WM_RBUTTONUP:
      begin
// Rechtsklick
        // Diese Zeile ist wichtig, damit das PopupMenu korrekt
        // wieder geschlossen wird:
        SetForegroundWindow(Handle);
        // PopupMenu anzeigen:
        GetCursorPos(Point);
        PopupMenu1.Popup(Point.X, Point.Y);
        //oder ohne Variable Point:
        //PopupMenu1.Popup(Mouse.CursorPos.x, Mouse.CursorPos.y);
      end;
  end;
end;

//...

procedure TForm1.Maximieren1Click(Sender: TObject);
var
  h:HWnd;
begin
  h:=handle;
  postmessage(h,WM_SYSCOMMAND,SC_RESTORE,0);
end;

procedure TForm1.Minimieren1Click(Sender: TObject);
var
  h:HWnd;
begin
  h:=handle;
  postmessage(h,WM_SYSCOMMAND,SC_MINIMIZE,0);
end;
MfG Don

SirThornberry 21. Feb 2006 17:27

Re: TNA Nach RESTORE doch eine Anzeige in der Taskbar -.-
 
wie verhinderst du das dein Programm in der Taskbar angezeigt wird? In dem bisher geposteten Source ist nix davon zu finden.

Don 21. Feb 2006 17:33

Re: TNA Nach RESTORE doch eine Anzeige in der Taskbar -.-
 
Sry... hab nur den Teil mit dem RESTORE/MINIMIZE kopiert :wall: .... der komplette Quellcode folgt

//EDIT: Habs gefunden *freu*... Das was da unter FormShow steht muss auch in die beiden IFs unter WMSysCommand.

MfG Dragon

Delphi-Quellcode:
implementation

{$R *.dfm}

procedure TForm1.WMSysCommand(var Message: TMessage);
begin
  if(Message.Msg = WM_SYSCOMMAND) and (Message.wParam = SC_RESTORE) then
   Application.Restore;
   inherited;
  if (Message.Msg = WM_SYSCOMMAND) and (Message.wParam = SC_MINIMIZE) then
    Hide
  else
    inherited;
end;



procedure TForm1.FormShow(Sender: TObject);
var Owner : HWnd;
begin
  Owner:=GetWindow(Handle,GW_OWNER);
  ShowWindow(Owner,SW_HIDE);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:55 Uhr.

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