Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zugriffsverletzung - die letzte (https://www.delphipraxis.net/290-zugriffsverletzung-die-letzte.html)

Privateer3000 29. Jun 2002 10:22


Zugriffsverletzung - die letzte
 
Bis jetzt konnt ich dieses "Phänomen" mit den Ini's nicht abstellen, siehe Thread Zugriffsverletzung.
Bin jetzt auf die Registry ausgewichen um die Prog.Optionen zu speichern und es funktioniert einwandfrei!
Keinerlei Probleme, ich hab schon echt an mir gezweifelt.

schönes WoE

Marco Haffner 29. Jun 2002 22:03

Warum den gleich einen neuen Thread :?:
Registry ist natürlich auch gut, aber wie ich zuletzt geschrieben hatte und mir auch noch einmal genauer angesehen habe, lag der Fehler wohl daran das Du das speichern dem
OnClick-Ereignis zugewiesen hattest. Beim öffnen werden nun die Einstellungen aus der Ini-Datei ausgelesen und den Komponenten zugewiesen. Dummerweise wird aber beim
zuweisen dieser Werte erneut das OnClick-Ereignis ausgelöst und die Einstellungen werden noch während die ini-Datei geöffnet ist erneut gespeichert. Hier tritt dann die Zugriffsverletzung auf.

Privateer3000 30. Jun 2002 01:27

Hi Marco,

das hab ich auch gelesen...aber wie kann man das genau abstellen?
Seit Tagen hab ich versucht und probiert.Und ausserdem wenn nicht OnClick-Ereigniss was dann?
Die aktuelle Einstellung soll ja gespeichert werden wenn die Radio's gewechslet werden?!
OnChange hat auch nichts gebrach - über Menü gings es ja.
Wenn ich das richtig verstanden habe, werden die Ini's immer geöffnet,oder zumondest initialisiert. Das ist nicht gerade praktisch...wie löst man dies?


Gute Nacht allezsamm!

Christian Seehase 30. Jun 2002 02:17

Moin Privateer,

einen RadioButton setzen/löschen kannst Du auch so, ohne das das OnClick ausgelöst wird.

Code:
SendMessage(RadioButton1.Handle,BM_SETCHECK,BST_CHECKED,0);
SendMessage(RadioButton1.Handle,BM_SETCHECK,BST_UNCHECKED,0);
Nachteil:
Du kannst den Zustand des RadioButtons nicht mit der Eigenschaft Checked abfragen, da diese nur durch die Notification Message BN_CLICK gesetzt wird, was aber wiederum ein OnClick auslösen würde. Also auch hier die Abfrage via API:

Code:
SendMessage(RadioButton1.Handle,BM_GETCHECK,0,0) = BST_CHECKED
SendMessage(RadioButton1.Handle,BM_GETCHECK,0,0) = BST_UNCHECKED
Diese Messages können ebenso für CheckBoxen verwendet werden.

Wichtig:
Bei RadioButtons, muss man dann auch selber die Verwaltung der verschiedenen Zustände kümmern. Ein Setzen auf Checked setzt nicht automatisch den zuletzt gewählten auf unchecked.

Ach ja:
Da ich schon erlebt habe, dass die Methode Perform nicht unbedingt immer die gewünschte Wirkung hat, würde ich grundsätzlich die Verwendung von SendMessage empfehlen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:06 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