AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi OnClick-Ereignis wird ausgelöst, wenn Form geöffnet wird!?
Thema durchsuchen
Ansicht
Themen-Optionen

OnClick-Ereignis wird ausgelöst, wenn Form geöffnet wird!?

Offene Frage von "Svenkan"
Ein Thema von Svenkan · begonnen am 30. Apr 2008 · letzter Beitrag vom 2. Mai 2008
Antwort Antwort
Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#1

OnClick-Ereignis wird ausgelöst, wenn Form geöffnet wird!?

  Alt 30. Apr 2008, 23:35
Hallo!
Folgendes Problem: ich habe bspw. folgendes Ereignis:

Delphi-Quellcode:
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;
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.
Hat das schon damit was zutun, dass im OnCreate-Ereignis das Cb.Checked auf 'True' gesetzt wird?!
Sven Kannenberg
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: OnClick-Ereignis wird ausgelöst, wenn Form geöffnet wird

  Alt 30. Apr 2008, 23:51
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
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#3

Re: OnClick-Ereignis wird ausgelöst, wenn Form geöffnet wird

  Alt 30. Apr 2008, 23:52
Wobei ich den Sinn dahinter nicht verstehe, wenn man es per Code setzt, dass OnClick ausgeführt wird.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#4

Re: OnClick-Ereignis wird ausgelöst, wenn Form geöffnet wird

  Alt 30. Apr 2008, 23:59
Zitat von Svenkan:
Hat das schon damit was zutun, dass im OnCreate-Ereignis das Cb.Checked auf 'True' gesetzt wird?!
laß doch einfach mal zum Test das Setzen weg (auskommentieren) ?


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?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: OnClick-Ereignis wird ausgelöst, wenn Form geöffnet wird

  Alt 2. Mai 2008, 20:15
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.
Sven Kannenberg
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: OnClick-Ereignis wird ausgelöst, wenn Form geöffnet wird

  Alt 2. Mai 2008, 20:18
Für solche Sachen kann man immer sehr schön den Tag missbrauchen
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:if CheckBox1.Tag = 1 then Exit; Mfg
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#7

Re: OnClick-Ereignis wird ausgelöst, wenn Form geöffnet wird

  Alt 2. Mai 2008, 20:41
Als Erstes könnte man versuchen den Aufruf der Event-Funktion zu verhindern:
Delphi-Quellcode:
procedure NonClickSetChecked(Control: TCheckBox; NewChecked: Boolean);
var
  Temp: TNotifyEvent;
begin
  Temp := Control.OnClick;
  Control.OnClick := nil;
  Control.Checked := NewChecked;
  Control.OnClick := Temp;
end;
und dann z.B. statt CbAutorun.Checked := True; einfach nur NonClickSetChecked(CbAutorun, True); aufrufen.


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;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz