Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - OnClick zur Laufzeit variabel zuweisen - Fehler
Hendrik - Mi 26.09.12 18:45
Titel: OnClick zur Laufzeit variabel zuweisen - Fehler
Hallo,
ich möchte gerne über eine Procedure einer Komponente eine Procedure für das OnClick-Ereignis zuweisen. Folgende Procedure habe ich geschrieben:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure setonclick(value:string;cont:TComponent); var ev:TNotifyevent; begin value:=lowercase(value);
if value='p1' then ev:=buttonp1Click; if value='p2' then ev:=buttonp2Click;
if cont is TButton then begin (cont as TButton).onclick:=ev; end;
if cont is TMenuitem then begin (cont as TMenuitem).OnClick:=ev; end; end; |
Leider kommt beim OnClick auf den Button immer eine Zugriffsverletzung. Hat jemand eine Idee?
Nersgatt - Mi 26.09.12 19:54
Die Zugriffsverletzung kommt erst, wenn man auf den Button klickt? Dann wäre der Fehler in Buttonp1Click bzw. Buttonp2Click zu suchen und nicht in dem Quellcode, den Du hier gespostet hast.
glotzer - Mi 26.09.12 21:18
[quote="
Hendrik"(668133)
Delphi-Quelltext
1: 2: 3: 4:
| procedure setonclick(value:string;cont:TComponent); var ev:TNotifyevent; begin |
hast du "ev" keinen Wert zugewiesen? Falls nicht ist es standardmäsig nil, d.h. Zugriffsverletzung.
bummi - Mi 26.09.12 22:28
nil gäbe keine Zugriffsverletzung, aber Du hast trotzdem Recht, weil ev dann einen beliebigen Stackwert als Adressen darstellen würde, wen value weder p1 noch p2 wären ... und das gäbe ziemlich sicher eine Zugriffsveretzung.
Hendrik - Do 27.09.12 14:24
Das von euch genannte Problem hatte ich nicht bedacht, das wars. Danke!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!