![]() |
Verlust von Handle?
Hallo Delphianer
Ich schätze ich verliere den Handle meiner Listbox1 wenn ich ein selberkreiertes Window wieder schliesse. Das Fenster öffne ich wie folgt:
Delphi-Quellcode:
Nach dem Schliessen dessen (mrOk oder einfach normales schliessen), kann ich im Hauptformular die Listbox1 nicht mehr mit der Maus bedienen. Alle anderen Steuerelemente lassen sich noch bedienen (die Listbox reagiert auch noch auf Tastenbefehle aber nicht mehr auf Mausklicks).
procedure Tmainform.Startup();
var wstartup : Tfrmstartup; begin logfileschreiben('Starting up...',logfilename); wstartup:=Tfrmstartup.Create(frmstartup); // Formular erstellen (create) // Filter Fenster abfüllen -> Datenbank Felder wstartup.Caption:=caption; // Version und Programmname anzeigen wstartup.Timer1.Enabled:=true; // Progressbar starten wstartup.timer2.Enabled:=true; // Formular anzeigen if wstartup.showmodal = mrOk then // Auswahlformular anzeigen begin logfileschreiben('Debug mode active',logfilename); debugmode:=true; end else begin logfileschreiben('Debug mode inactive - normal startup.',logfilename); debugmode:=false; // nicht benötigt end; wstartup.Free; // Formular wieder freigeben listbox1.Repaint; Update; end; Habt ihr eine Idee woran das liegen könnte? Auf Wunsch kann ich auch noch mehr Code zeigen. Aber ich denke das ist eigentlich der relevante Teil... Danke und Gruss |
Re: Verlust von Handle?
An dem Code sehe ich keinen Fehler (ausser das ein try finally sich gut machen würde; ändert aber nix an deinem Fehler).
Was macht den die Startupform so alles und wann wird diese Methode hier aufgerufen? |
Re: Verlust von Handle?
Zitat:
Delphi-Quellcode:
procedure Tmainform.FormActivate(Sender: TObject);
begin // Startup Window mainform.WindowState:=wsminimized; Startup; mainform.WindowState:=wsnormal; if listbox1.Count>=0 then begin // Buttons enablen btnsel.Enabled:=true; btnall.Enabled:=true; listbox1.ItemIndex:=0; end else begin btnsel.Enabled:=false; btnall.Enabled:=false; end; if debugmode=false then begin // Autostart Tasks wenn gewünscht if getinivalue('GUI_Settings','AutoStartTasks') = 'true' then begin logfileschreiben('AutoStart tasks set. Start all tasks now...',logfilename); if getinivalue('GUI_Settings','MinimizeWindow') = 'true' then begin logfileschreiben('Minimize window set.',logfilename); mainform.WindowState:=wsminimized; end else begin mainform.WindowState:=wsnormal; end; if btnall.Enabled=true then begin btnall.click; // Start alle Tasks end else begin logfileschreiben('No Task to do!',logfilename); end; if getinivalue('GUI_Settings','AutoClose') = 'true' then begin logfileschreiben('AutoClose Tool after ending all tasks.',logfilename); close; end; end; end else begin showmessage('TaskTools is ready, enjoy! (Debug-Mode)'); logfileschreiben('Debug mode activated (by user), disable autostart functions.',logfilename); end; end; |
Re: Verlust von Handle?
Das FormActivate wird aber u.U. mehrmals im Programmlauf ausgeführt. Setze den Code coh in die Projektdatei (dpr) an den Anfang.
Edit: Dann verschwindet vielleicht auch gleich das andere Problem. |
Re: Verlust von Handle?
Zitat:
Aber ich hab den Startup Aufruf nun in die onShow Prozedur gelegt und das hat geholfen! Funzt. Danke! |
Re: Verlust von Handle?
Für mich klingt der Effekt als ob du da mit Threads arbeitest und dabei etwas durcheinander kommt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz