Autor Beitrag
yss
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 26.05.11 13:30 
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:
ausblenden Delphi-Quelltext
1:
2:
blattN:=random(49)+1;
blatt:='blatt'+IntToStr(BlattN); //Hier wird der Name erstellt


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Do 26.05.2011 um 13:31
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 26.05.11 13:32 
Moin und :welcome: im Forum!

Du suchst Suche in: Delphi-Forum, Delphi-Library FINDCOMPONENT, damit kommst du weiter. :idea: :les: ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
HenryHux
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: 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..49of TBitmap.
Verschiedene Komponenten kannst du mit FindComponent ansprechen.

lg
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: 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.

ausblenden 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 user profile iconMartok: Delphi-Tags hinzugefügt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19339
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19339
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 26.05.11 14:24 
user profile iconHenryHux hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Do 26.05.11 14:36 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Lass das dämliche with weg, dann merkst du auch warum das nicht geht... :roll:


Schlecht gelaunt? ^^
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19339
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: 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