Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Per String Objekt ansprechen
yss - Do 26.05.11 13:30
Titel: Per String Objekt ansprechen
Hey Leute
Ich hab da mal ne Frage:
Ich habe 49 Bilder, die durchnummeriert sind: blatt1,blatt2,blatt3...blatt49.
Nun möchte ich über eine Randomfunktion diese zufällig ansprechen, aber wie mach ich aus einem String ein Objekt oder besser gesagt wie kann ich das Bild über meinen erstellten String ansprechen?
Hier der wichtige Code:
Delphi-Quelltext
1: 2:
| blattN:=random(49)+1; blatt:='blatt'+IntToStr(BlattN); |
Moderiert von
Narses: Delphi-Tags hinzugefügtModeriert von
Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Do 26.05.2011 um 13:31
Narses - Do 26.05.11 13:32
Moin und :welcome: im Forum!
Du suchst
FINDCOMPONENT, damit kommst du weiter. :idea: :les: ;)
cu
Narses
HenryHux - Do 26.05.11 13:33
Meinst du TImages oder TBitmaps?
Bei beiden gibts Lösungen, die TBitmaps funktionieren auch super als Blatt : Array [1..49] of TBitmap.
Verschiedene Komponenten kannst du mit FindComponent ansprechen.
lg
thepaine91 - Do 26.05.11 13:44
Die 1. Lösung wird schwierig da er die Bilder über den String ansprechen muss und das ist bei einem Array[0..48] schwierig.
Auser er steigt auf PHP um. :P
Also ich würde auch FindComponent vorschlagen ist zumindest am einfachsten.
yss - Do 26.05.11 13:55
Hey, also erstmal danke für die schnelle antwort.
Nun hab ich leider noch nen Problem. Habe mich leider vertan, sind keine Bilder sondern Shapes. Und leider ändert die procedure die Hintergrundfarbe vom Formfeld und nicht von dem Shape.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.waterliliesController(Sender: TObject); var blattN:integer; begin Randomize; blattN:=random(49)+1; if(blattN=43)or(blattN=7)then exit; with TShape(FindComponent('blatt'+IntToStr(blattN))) do begin color:=clGreen; end;
end; |
Moderiert von
Martok: Delphi-Tags hinzugefügt
jaenicke - Do 26.05.11 13:58
Lass das dämliche with weg, dann merkst du auch warum das nicht geht... :roll:
TShape hat keine Eigenschaft Color...
HenryHux - Do 26.05.11 14:03
Genau, wenn du es mit Farbe füllen willst, dann kannst du das zum Beispiel mit dem Canvas machen.
Gibt es viele Dokumentationen zu.
lg
jaenicke - Do 26.05.11 14:24
HenryHux hat folgendes geschrieben : |
| Genau, wenn du es mit Farbe füllen willst, dann kannst du das zum Beispiel mit dem Canvas machen. |
:roll:
Wie wäre es ganz einfach mit Brush.Color...
thepaine91 - Do 26.05.11 14:36
jaenicke hat folgendes geschrieben : |
| Lass das dämliche with weg, dann merkst du auch warum das nicht geht... :roll: |
Schlecht gelaunt? ^^
jaenicke - Do 26.05.11 14:42
Nee, aber das with verursacht ständig bei irgendwem wieder mal Fehler, führt dazu, dass man nicht mehr ordentlich debuggen kann, ... und trotzdem wird es immer wieder benutzt und gezeigt, so dass es viele gleich sich angewöhnen, wenn sie Delphi lernen...
Und hinterher kommen dann wieder hunderte Fragen warum dies oder jenes nicht funktioniert. Deshalb reagiere ich auf with ein wenig allergisch. ;-)
thepaine91 - Do 26.05.11 14:58
Stimmt with kann wirklich einige Fehler hervorrufen. In dem Fall war es auch noch unsinnig wenn man sowieso nur eine Zeile Code hat. Somit kann ich das verstehen. ^^
Hat es jetzt eig. funktioniert? @Author
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!