![]() |
OnClick-Ereignis wird ausgelöst, wenn Form geöffnet wird!?
Hallo!
Folgendes Problem: ich habe bspw. folgendes Ereignis:
Delphi-Quellcode:
Das Problem ist, dass die jew. Message selbst dann schon eingeblendet wird, sobald das Fenster im Programm geöffnet wird und nicht nur dann, wenn das Kästchen angeklickt wird. Aber komischerweise auch nur wenn die Option 'True' ist, ansonsten nicht.
procedure TGrundeinstellungen.CbAutorunClick(Sender: TObject);
begin if CbAutorun.Checked then ShowMessage('Damit VPlan Plus nach einem Windowsstart autom. gestartet werden kann, wird nach Bestätigung ein Eintrag im Schlüssel ''Software\Microsoft\Windows\CurrentVersion\Run'' erstellt.') else ShowMessage('Registrierungsschlüssel wird nach einem Klick auf ''OK'' entfernt!'); end; Hat das schon damit was zutun, dass im OnCreate-Ereignis das Cb.Checked auf 'True' gesetzt wird?! |
Re: OnClick-Ereignis wird ausgelöst, wenn Form geöffnet wird
setzt du das checked-property per quelltext? Das OnClick wird ausgelöst sobald die checked-eigenschaft geändert wird. Also auch wenn dies per Tastendruck oder Programmcode passiert
|
Re: OnClick-Ereignis wird ausgelöst, wenn Form geöffnet wird
Wobei ich den Sinn dahinter nicht verstehe, wenn man es per Code setzt, dass OnClick ausgeführt wird.
|
Re: OnClick-Ereignis wird ausgelöst, wenn Form geöffnet wird
Zitat:
Aber um es Kurz zu machen ... ja hat es. wenn .Checked etwas programmseitig zugewiesen wird, dann wird das OnClick-Ereignis der Checkbox ausgelöst. [edit] gibt's keine RedBox mehr? |
Re: OnClick-Ereignis wird ausgelöst, wenn Form geöffnet wird
Uff...
Gibt es da irgendwie eine Möglichkeit, das zumgehen? Ich hatte nicht vor, dem ganzen eine extra 'Start-Variable' zu geben, die danach auf TRUE oder so gesetzt wird und ab dann das ganze erst ausgeführt wird. |
Re: OnClick-Ereignis wird ausgelöst, wenn Form geöffnet wird
Für solche Sachen kann man immer sehr schön den Tag missbrauchen :wink:
Du setzt den Tag der CheckBox im OI auf 1 und änderst ihn nach den Änderungen im OnCreate auf 0. Ins CheckBox1.OnClick machst du dann noch:
Delphi-Quellcode:
Mfg
if CheckBox1.Tag = 1 then Exit;
|
Re: OnClick-Ereignis wird ausgelöst, wenn Form geöffnet wird
Als Erstes könnte man versuchen den Aufruf der Event-Funktion zu verhindern:
Delphi-Quellcode:
und dann z.B. statt CbAutorun.Checked := True; einfach nur NonClickSetChecked(CbAutorun, True); aufrufen.
procedure NonClickSetChecked(Control: TCheckBox; NewChecked: Boolean);
var Temp: TNotifyEvent; begin Temp := Control.OnClick; Control.OnClick := nil; Control.Checked := NewChecked; Control.OnClick := Temp; end; In deinem Fall könntest du auch einfach nur prüfen ob die Form grad angezeigt wird und wenn dieses nicht der Fall ist, dann führst du den Code nicht aus. (beim Aufruf von OnCreate wäre dieses noch der Fall)
Code:
procedure TGrundeinstellungen.CbAutorunClick(Sender: TObject);
begin [b]if not IsWindowVisible(Handle) then exit;[/b] if CbAutorun.Checked then ShowMessage('Damit VPlan Plus nach einem Windowsstart autom. gestartet ... else ShowMessage('Registrierungsschlüssel wird nach einem Klick auf ''OK'' entfernt!'); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:03 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