ResFiles + Windows Unit und Programm beenden

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

Ich hab's mal drangehängt. Sorry, ich habe da einen Post von dir übersehen. :oops:

Aber jetzt verliere ich den Überblick. :(
Dateianhänge
Ginttu.zip
(67.01 KiB) 67-mal heruntergeladen

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6209
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

Läuft

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
const
     IDI_ICON1 = 101;
begin
     TrayIcon1.Icon.Handle:= LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1));
     TrayIcon1.PopUpMenu := PopupMenu1;
end;
 
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: boolean);
begin
  if self.Tag <> 1 then
  begin
    CanClose := false;
    TrayIcon1.Visible:= True;
    self.Visible:= False;
  end
  else
  begin
    if TrayIcon1.Visible then TrayIcon1.Visible:= false;
    self.Visible:= True;
  end;
end;
 
procedure TForm1.MenuItem1Click(Sender: TObject);
begin
  Form1.Visible := True;
  TrayIcon1.Visible := False;
end;
 
procedure TForm1.MenuItem2Click(Sender: TObject);
begin
     self.Tag := 1;
     Close;
end;


FormClse wird nicht benötigt, da es eigenlich zu spät ist. Das ganze macht Sinn in der FormCloseQuery. Dort ganz einfach das Behandeln. WIchtig war auch, das das TryIcon beim normalen schliessen wieder deaktiviert wird.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

Danke für die Hilfe!
Nachdem ich anfangs zu dumm war, CanCloseQuery an den OnClose-Event von Form1 zu binden, hat es dann doch funktioniert, wie es eigentlich soll.

Aber wo bitte, oder wie, kommt man auf solche Funktionen? Ich meine, ist es irgendwo dokumentiert, dass man die Events so übergehen und austricksen kann? Ist CanCloseQuery() ein willkürlicher Name, oder ist der wo vorgegeben, so wie Lazarus eben auch andere Prozeduren benennt?

Jedenfalls noch mals herzlichen Dank! Bin wirklich froh, dass es nun so funktionert, denn wie gesagt, das Application.Terminate; hätte mir nicht gefallen, auch wenn es vlt. gar nicht so böse ist, wie es mir scheint.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6209
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

Nein es ist alles nicht willkürlich.

Leider ist die Dokumentation die größte Schwäche bei Lazarus. Sie taugt leider nur dann wenn man schon ein Hacker ist. Gerade für den Anfang ist vieles zu konfus.

Bei vielen Sachen kann man auf Literatur von Delphi zurückgreifen. So ist es für mich natürlich mit OnCloseQuery und OnClose zu arbeiten. Aber das sind ein paar Jahre Programmierung und Kurse dazwischen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

Ah, ok.
Habe mittlerweile auch ein wenig gegoogelt und siehe da, CanCloseQuery(..) taucht da doch des Öfteren auf. Bin schon gespannt, wie viele Dinge mir in der Hinsicht noch unterkommen.
Ich habe hier zwar mittlerweile ein paar Bücher über Delphi liegen, aber CanCloseQuery ist mir da bisher nicht untergekommen. (Wobei mein Borland Delphi 7 - Grundlagen, Profiwissen, Kochbuch sehr wohl ein OnCloseQuery kennt).

Jedenfalls noch mals vielen Dank für die sehr kompetente Hilfe!

Antworten