Form an Taskleiste an- und abheften

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Aries
Beiträge: 18
Registriert: Fr 26. Okt 2012, 01:41

Form an Taskleiste an- und abheften

Beitrag von Aries »

Mit welchen Befehlen kann man einstellen, ob eine Form an die Taskleiste an- oder abgeheftet ist? Ich meine eine ganz normale Verknüpfung auf der Taskleiste, mit der man, wenn das Programm läuft, die Form in den Vordergrund rücken und minimieren kann?


Aries
Beiträge: 18
Registriert: Fr 26. Okt 2012, 01:41

Re: Form an Taskleiste an- und abheften

Beitrag von Aries »

theo hat geschrieben:http://lazarus-ccr.sourceforge.net/docs/lcl/forms/twindowstate.html

Bei wsMinimized erscheint die Form über der Taskleiste minimiert. Mir geht es um die Schaltfläche auf der Taskleiste. Wie kann man die an- und abstellen?

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Form an Taskleiste an- und abheften

Beitrag von Michl »

Meinst du evtl. "hide" z.B. Form1.hide?! Das Programm läuft weiter, doch ist nicht mehr zu sehen (auch nicht auf der Task-Leiste).

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Thomas B.
Beiträge: 90
Registriert: Fr 2. Nov 2007, 13:32
OS, Lazarus, FPC: Win (L 1.0 FPC 2.6.0)
CPU-Target: 32Bit
Wohnort: Ulm

Re: Form an Taskleiste an- und abheften

Beitrag von Thomas B. »

Meinst Du die Funktionalität der Komponente TrayIcon?
http://wiki.freepascal.org/TrayIcon/de

Aries
Beiträge: 18
Registriert: Fr 26. Okt 2012, 01:41

Re: Form an Taskleiste an- und abheften

Beitrag von Aries »

Was ich meine habe ich angehängt.

Wenn das Programm aus einer Konsole und einer Form oder aus mehreren Formen besteht, dann ist dieses Objekt nur mit der Konsole oder einer Form verknüpft. Die andere Form wird nicht in den Vordergrund gerückt, wenn man draufklickt. Daher frage ich mich, wie man das für eine Form an- und abstellen kann.
Dateianhänge
Taskleiste.png
Taskleiste.png (1.38 KiB) 1446 mal betrachtet

Thomas B.
Beiträge: 90
Registriert: Fr 2. Nov 2007, 13:32
OS, Lazarus, FPC: Win (L 1.0 FPC 2.6.0)
CPU-Target: 32Bit
Wohnort: Ulm

Re: Form an Taskleiste an- und abheften

Beitrag von Thomas B. »

Wenn Du die Ausgabekonsole nicht mehr brauchst, lässt sie sich abstellen:
Projekteinstellungen (Strg+Shift+F11) --> Compilereinstellungen --> Linken --> Häckchen bei Win32-GUI-Anwendung

Zum Formular: Die erste Form, die mit Application.CreateForm erstellt wird, ist das Hauptformular.
Wahrscheinlich würde es gehen, wenn Du z.B. in dessen OnShow-Event die andere Form anzeigen lässt (z.B. Form2.Show)

Edit: bei der Form2 dann noch die Eigenschaft ShowInTaskBar anpassen

Aries
Beiträge: 18
Registriert: Fr 26. Okt 2012, 01:41

Re: Form an Taskleiste an- und abheften

Beitrag von Aries »

Thomas B. hat geschrieben:Wenn Du die Ausgabekonsole nicht mehr brauchst, lässt sie sich abstellen:
Projekteinstellungen (Strg+Shift+F11) --> Compilereinstellungen --> Linken --> Häckchen bei Win32-GUI-Anwendung

Das geht doch auch mit "{$apptype gui}".

Thomas B. hat geschrieben:Zum Formular: Die erste Form, die mit Application.CreateForm erstellt wird, ist das Hauptformular.

Bisher habe ich das Formular mit "Form1:=TForm1.CreateNew(Application);" erstellt.
Wenn ich das Formular mit "Application.CreateForm(TForm1,Form1);" erstelle, erscheint jetzt wie gewünscht ein Link auf der Taskleiste. Wenn die Konsole an ist sogar zwei: eines für die Konsole, eines für das Formular. Allerdings erscheint dann in der Konsole die Meldung: "Form resource TForm1 not found. For resourceless forms CreateNew constructor must be used. See the global variable RequireDerivedFormResourse." Funktionieren tut das Programm aber trotzdem.

Mein Problem scheint nun jedenfalls gelöst. Danke für die Hilfe.

Thomas B.
Beiträge: 90
Registriert: Fr 2. Nov 2007, 13:32
OS, Lazarus, FPC: Win (L 1.0 FPC 2.6.0)
CPU-Target: 32Bit
Wohnort: Ulm

Re: Form an Taskleiste an- und abheften

Beitrag von Thomas B. »

Wenn ich unter Datei-->Neu-->Projekt-->Anwendung eine neue Anwendung erstelle, dazu noch ein neues Formular hinzufüge, dann steht in der Projektdatei (nicht gespeichert):

Code: Alles auswählen

program Project1;
 
{$mode objfpc}{$H+}
 
uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Interfaces, // this includes the LCL widgetset
  Forms,Unit1,Unit2
  { you can add units after this };
 
{$R *.res}
 
begin
  RequireDerivedFormResource := True;
  Application.Initialize;
  Application.CreateForm(TForm1,Form1);
  Application.CreateForm(TForm2,Form2);
  Application.Run;
end.     

Damit sollte die Variable gesetzt sein und die Fehlermeldung nicht mehr kommen.

Antworten