Avatar billede delphidaner Nybegynder
07. februar 2001 - 16:44 Der er 7 kommentarer og
1 løsning

Skjul taskbutton

Jeg har fået et nyt problem, som volder mig besvær. Jeg er i gang med programmet, som jeg nævnte i http://www.eksperten.dk/spm/48072, men nu har jeg brug for at skjule programmets taskbutton, dvs. knappen nede på proceslinjen, som repræsenterer programmet (eller snarere vinduet).

Hvordan gør jeg det?
Avatar billede stone Forsker
07. februar 2001 - 17:51 #1
form1.hide;
Avatar billede nca Juniormester
07. februar 2001 - 17:55 #2
Du skriver:
ShowWindow(Application.Handle, SW_HIDE);

Avatar billede delphidaner Nybegynder
07. februar 2001 - 20:10 #3
Formen skal ikke skjules, kun jobknappen. Jeg har rodet med ShowWindow, men den har jeg ikke fået til at virke.
Avatar billede nca Juniormester
07. februar 2001 - 20:43 #4
Sæt linien ind i den forms OnActivate event.
Prøv evt. at lave en knap, som udføre linie, når du trykker på den. Du vil da se, at genvejen til programmet forsvinder fra taskbaren.
Avatar billede delphidaner Nybegynder
08. februar 2001 - 07:37 #5
nca >> OK, jeg prøver det, når jeg kommer hjem fra skole.
Avatar billede borrisholt Novice
08. februar 2001 - 07:41 #6
delphidaner>>
Hvis du vil fjerne en applikation effiktivt fra din taskbar, som faktisk hedden en Application bar,  skal du overstyre message handleren for WM_SYSCOMMAND. Der udover skal du have et OnRestore event på din Application .... Og et par andere små tricks, så det hele sket \"automatisk\".

Alt i alt så kommer koden til at se således ud :


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  AppEvnts;

type
  TForm1 = class(TForm)
    procedure FormResize(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
    procedure ApplicationOnRestore(Sender: TObject);

  public
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormResize(Sender: TObject);
begin
  ShowWindow(Application.Handle, SW_HIDE);
end;

procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
begin
  case Message.CmdType of
    SC_MINIMIZE:
    begin
      ShowWindow(Handle, SW_HIDE);
      Application.Minimize;
      ShowWindow(Application.Handle, SW_SHOW);
    end;
    SC_RESTORE:
    begin
      Application.Restore;
      ShowWindow(Handle, SW_RESTORE);
      ShowWindow(Application.Handle, SW_HIDE);
    end;
    else
      inherited;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ShowWindow(Application.Handle, SW_HIDE);
  Application.Title := Caption;
  Application.OnRestore := ApplicationOnRestore;
end;

procedure TForm1.ApplicationOnRestore(Sender: TObject);
begin
  ShowWindow(Handle, SW_RESTORE);
  ShowWindow(Application.Handle, SW_HIDE);
end;

end.

Jens B
Avatar billede delphidaner Nybegynder
08. februar 2001 - 09:37 #7
borrisholt >> OK, det prøver jeg også, når jeg kommer hjem idag. Jeg havde ikke lige tænkt på at bruge WM_SYSCOMMAND, men det ser fornuftigt ud.
Avatar billede delphidaner Nybegynder
08. februar 2001 - 14:59 #8
nca >> Dit forslag virker ikke ordenligt; Application bar\'en vises igen, efter at formen har været minimeret.

borrisholt >> Dit forslag kan jeg godt bruge. Application bar\'en dukker op, når man minimere, og forsvinder igen, når man gendanner. Det er smart til en always-on-top applikation.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester