Form nicht in Taskabar anzeigen
Form nicht in Taskabar anzeigen
Hallo,
wie ist es möglich den Taskbar-Eintrag des Fensters nicht anzeigen zu lassen?
Pascal
wie ist es möglich den Taskbar-Eintrag des Fensters nicht anzeigen zu lassen?
Pascal
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Form nicht in Taskabar anzeigen
Frag mal bitte Google oder die Forensuche oder was weiß ich wen (z.b. die Bibliothekssuche auf der Portal-Seite), aber das Thema hatten wir hier erst vor kurzem.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Re: Form nicht in Taskabar anzeigen
Gibts nicht so was wie ShowInTaskbar als Property von TForm?
Danke schonmal für eure Antworten
it´s not a bug, it´s a feature!
it´s not a bug, it´s a feature!
Re: Form nicht in Taskabar anzeigen
Hallo!
Für die, die es interresiert:
Ich habe es nun aber folgendermaßen hingekriegt:
Das darf weder ins OnCreate, noch ins OnShow, weil die Form danach erst auf dem Bildschirm erstellt (gezeichnet) wird (bzw. beim OnShow).
So wollte ich eine kleine Verzögerung von ein paar Millisekunden einbauen, was nicht ganz so ordentlich wäre.
Also hab ichs dann so hingekriegt (wohl der sauberste Weg):
Edit:
Aha, den Thread habe ich nun gefunden, den "Socke" wohl meinte: http://www.lazarusforum.de/viewtopic.php?p=40108#p40108
Der Property ShowInTaskBar sei nicht für das Hauptformular.
So ist es eher das Gegenteil, nach dem ich suchte, weil man damit vermutlich andere Forms zusätzlich in der Taskleiste anzeigen kann.
Naja, so habe ich wenigstens eine vernünftige Lösung.
//Edit Ende
Pascal
Ja, ich habe schon gesucht, aber nur Möglichkeiten für Delphi, das so dann nicht mit Lazarus ging.Socke hat geschrieben:Frag mal bitte Google oder die Forensuche oder was weiß ich wen (z.b. die Bibliothekssuche auf der Portal-Seite), aber das Thema hatten wir hier erst vor kurzem.
Ja, soetwas gibt es. Nur leider funktioniert es nicht, wenn ich stNever wähle.felix96 hat geschrieben:Gibts nicht so was wie ShowInTaskbar als Property von TForm?
Für die, die es interresiert:
Ich habe es nun aber folgendermaßen hingekriegt:
Code: Alles auswählen
procedure HideTaskBarEntry(AHandle:THandle);
var
Owner1 : HWnd;
begin
Owner1:=GetWindow(AHandle,GW_OWNER);
ShowWindow(Owner1,SW_HIDE);
end;
So wollte ich eine kleine Verzögerung von ein paar Millisekunden einbauen, was nicht ganz so ordentlich wäre.
Also hab ichs dann so hingekriegt (wohl der sauberste Weg):
Code: Alles auswählen
procedure TForm1.FormActivate(Sender: TObject);
begin
HideTaskBarEntry(Form1);
end;
Aha, den Thread habe ich nun gefunden, den "Socke" wohl meinte: http://www.lazarusforum.de/viewtopic.php?p=40108#p40108
Der Property ShowInTaskBar sei nicht für das Hauptformular.
So ist es eher das Gegenteil, nach dem ich suchte, weil man damit vermutlich andere Forms zusätzlich in der Taskleiste anzeigen kann.
Naja, so habe ich wenigstens eine vernünftige Lösung.
//Edit Ende
Pascal
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Form nicht in Taskabar anzeigen
Genau den Thread meinte ich.
Wenn du dein Programm plattformunabhängig machen willst (also auch für Linux/Mac/etc.), solltest du ein paar {$IFDEF windows}{$ENDIF} Compilerschalter einbauen. Die Funktionen, die du nutzt, sind nämlich nur unter Windows vorhanden (bzw. gehören zu Windows selbst) und gibt es somit woanders nicht.
Wenn du dein Programm plattformunabhängig machen willst (also auch für Linux/Mac/etc.), solltest du ein paar {$IFDEF windows}{$ENDIF} Compilerschalter einbauen. Die Funktionen, die du nutzt, sind nämlich nur unter Windows vorhanden (bzw. gehören zu Windows selbst) und gibt es somit woanders nicht.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Re: Form nicht in Taskabar anzeigen
Hallo,
Mit solchen "Compilerschalter" bzw. Compileranweisungen im Quellcode habe ich mich noch nicht allzu sehr beschäftigt.
Kennt jemand vielleicht auch eine andere (bessere) Möglichkeit, auch wenn es so funktioniert. In dem anderen Thread wurde ja keine Lösung gefunden.
Pascal
Mit solchen "Compilerschalter" bzw. Compileranweisungen im Quellcode habe ich mich noch nicht allzu sehr beschäftigt.
Code: Alles auswählen
{$IFDEF windows}
...
{$ENDIF}
Pascal
-
- Beiträge: 657
- Registriert: Sa 9. Jan 2010, 17:32
- OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
- CPU-Target: 64Bit
Re: Form nicht in Taskabar anzeigen
Die eingebaute Lazarzs-Property der MainForm benutzen und in den Bugtracker schreiben, dass das Feature noch nicht implementiert ist.
Re: Form nicht in Taskabar anzeigen
Hallo.
Ob es sich dabei um einen Bug handelt oder nicht weiß ich nicht.
Es kann sein, dass diese Eigenschaft (ShowInTaskBar) nur für die Nebenformulare (nicht das Hauptformular) geeignet ist
Pascal
Der "Bug" wurde bereits gemeldet: http://bugs.freepascal.org/view.php?id=9684carli hat geschrieben:[...] In den Bugtracker schreiben, dass das Feature noch nicht implementiert ist.
Ob es sich dabei um einen Bug handelt oder nicht weiß ich nicht.
Es kann sein, dass diese Eigenschaft (ShowInTaskBar) nur für die Nebenformulare (nicht das Hauptformular) geeignet ist
Pascal
-
- Lazarusforum e. V.
- Beiträge: 395
- Registriert: Sa 15. Mai 2010, 13:46
- CPU-Target: 64 bit
- Kontaktdaten:
Re: Form nicht in Taskabar anzeigen
Auch wenn dieses Thema jetzt schon fast ein Jahr alt ist - ich hatte das gleiche Problem und bin deswegen fast verrückt gewordenJa, ich habe schon gesucht, aber nur Möglichkeiten für Delphi, das so dann nicht mit Lazarus ging.

Wer danach sucht, findet sicher folgende Zeilen, die aber nur in Delphi (und auf Windows) funktionieren:
Code: Alles auswählen
ShowWindow(Application.Handle, SW_HIDE);
SetWindowLong(Application.Handle, GWL_EXSTYLE, getWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW);
ShowWindow(Application.Handle, SW_SHOW);
Code: Alles auswählen
ShowWindow(GetParent(Handle), SW_HIDE);
SetWindowLong(GetParent(Handle), GWL_EXSTYLE, getWindowLong(GetParent(Handle), GWL_EXSTYLE) or WS_EX_TOOLWINDOW);
ShowWindow(GetParent(Handle), SW_SHOW);
Ich hoffe, das wird allen, die in Zukunft dieses Problem haben, helfen.
-
- Beiträge: 290
- Registriert: Mo 24. Dez 2007, 13:14
- OS, Lazarus, FPC: WinXP-Pro-Sp3, Xubuntu 12.04, (Laz 1.1-SVN Mai2012, FPC 2.6.1 / 2.6.0-Linux)
- CPU-Target: AMD64X2
Re: Form nicht in Taskabar anzeigen
Damit klapt's auch:
2.te Formular hat automatisch Visible:=false; Entweder oben oder bei ObjektInspektor Visible:=true setzen nicht vergessen.
Code: Alles auswählen
uses Windows;
.
.
.
procedure TForm2.FormCreate(Sender: TObject);
begin
SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_APPWINDOW);
end;
-
- Beiträge: 619
- Registriert: Mi 9. Mär 2011, 16:34
- OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
- CPU-Target: 64Bit
- Wohnort: seit 01.06.2011 in Wahlstedt
Re: Form nicht in Taskabar anzeigen
??? aba net unter Ubuntu 10.04 zumindes net bei mir...Bora4d hat geschrieben:Damit klapt's auch:2.te Formular hat automatisch Visible:=false; Entweder oben oder bei ObjektInspektor Visible:=true setzen nicht vergessen.Code: Alles auswählen
uses Windows; . . . procedure TForm2.FormCreate(Sender: TObject); begin SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_APPWINDOW); end;
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache
und der Kreis Segeberg meine LIEBE 


-
- Lazarusforum e. V.
- Beiträge: 395
- Registriert: Sa 15. Mai 2010, 13:46
- CPU-Target: 64 bit
- Kontaktdaten:
Re: Form nicht in Taskabar anzeigen
Also GetParent braucht man schon, sonst ist mindestens ein Icon in der Taskleiste zu sehen, aber die beiden ShowWindow kann man weglassen. Keine Ahnung, warum überall steht, dass man die braucht...
-
- Beiträge: 290
- Registriert: Mo 24. Dez 2007, 13:14
- OS, Lazarus, FPC: WinXP-Pro-Sp3, Xubuntu 12.04, (Laz 1.1-SVN Mai2012, FPC 2.6.1 / 2.6.0-Linux)
- CPU-Target: AMD64X2
Re: Form nicht in Taskabar anzeigen
Ohh Entschuldigung, meinte er für Linux? Dann muß man vielleicht in X-Window-Api o.ä. nachschauen.
Hier ist link zu X-Api mehr kann ich da leider nicht helfen:
http://tronche.com/gui/x/xlib/
Hier ist link zu X-Api mehr kann ich da leider nicht helfen:
http://tronche.com/gui/x/xlib/
-
- Beiträge: 290
- Registriert: Mo 24. Dez 2007, 13:14
- OS, Lazarus, FPC: WinXP-Pro-Sp3, Xubuntu 12.04, (Laz 1.1-SVN Mai2012, FPC 2.6.1 / 2.6.0-Linux)
- CPU-Target: AMD64X2
Re: Form nicht in Taskabar anzeigen
Also bei mir klapt mein Code so wie ich es angegeben habe unter XP. Also beide Icons sichtbar.MitjaStachowiak hat geschrieben:Also GetParent braucht man schon, sonst ist mindestens ein Icon in der Taskleiste zu sehen, aber die beiden ShowWindow kann man weglassen. Keine Ahnung, warum überall steht, dass man die braucht...
Was ich auch jetzt entdeckte ist dass es für Formulare eine ShowInTaskBar-Eigenschaft gibt. Damit klappts auch, also das alles oben umsonst gemacht.
