Hallo zusammen,
folgendes: Ich habe eine Klasse, welche eine Referenz auf eine String/Caption o.ä. Variable braucht. So, jetz hab ich also ne procedure (setStr), welche als argument ....(var str : String)... nimmt. Klappt auch alles schön und gut. Was ist aber, wenn ich einer Instanz der Klasse, sagen wir z.B.: TButton die Caption übergeben will?
ausschnitt meiner setStr meiner Klasse
1: 2: 3: 4:
| procedure MeineKlasse.setStr(var str : String); begin self.strpointer := @str; end; |
Meines Wissens sollte das eine property sein. Und da ist auch schon mein Problem. Die Klasse soll die Referenz nehmen, speichern und beeinflussen, dabei aber auf die ORIGINAL-Variable zugreifen...
Mein Projekt funkioniert wunderbar mit einfachen Variablen und aus Speicherplatzgründen will ich keine Zeiger auf alle möglichen Steuerelemente anlegen und dann per
so müsste ich dann prüfen, welcher zeiger belegt ist
1: 2: 3: 4:
| if bttn <> nil then bttn.caption ... else if rdbttn <> nil then rdbttn.caption... ; |
zugreifen. sind immerhin 32/64 bit. und ich müsste die setStr/getStr für recht viele Steuerelemente überladen. (Könnte das zwar auch wieder als Property machen, um arbeit zu sparen, aber dann baue ich selben solchen salat, über den ich mich gerade ärger

)
Meine Idee war auch schon, einen Zeiger auf ein TButtonControl(oder so ähnlich) zu speichern, weil Buttons RadioButtons usw. die Caption von dem erben. Problem ist nur, das nützt mir auch nichts, weil dort die Caption protected ist....
Dann müsste ich Pointer auf die Methoden setText/getText speichern... doch das sind ja auch wieder zugriffsmethoden von eigenschaften

.
Also, nochmal meinen "Kauderwelsch" zusammengefasst:
Wie kann ich eine property als argument an eine methode übergeben und dann in der instanz speichern/darauf zugreifen?
Oder wie kann ich die Sache irgendwie umgehen (siehe irgendwo oben)? Achja, die Property in eine Variable auslagern, dann diese Variable übergeben ist in meinem Fall auch quatsch, weil ich dann bei vielen Steuerelementen auch wieder Spagetti-Code erzeugen.
Danke schonmal vorweg!
Moderiert von
Narses: Code- durch Delphi-Tags ersetzt und 5 Fragezeichen entfernt