AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrere Images --> Imagex ???

Ein Thema von Maurooon · begonnen am 31. Mär 2017 · letzter Beitrag vom 31. Mär 2017
Antwort Antwort
Maurooon

Registriert seit: 7. Dez 2016
70 Beiträge
 
#1

Mehrere Images --> Imagex ???

  Alt 31. Mär 2017, 17:57
Delphi-Version: 7
Hey Community,

ich bin gerade dabei etwas zu programmieren, für das ich mehrere Images benutze. Mit meinen bisherigen Kenntnissen würde ich die entsprechenden Zeilen jetzt X mal kopieren und jeweils die Nummer des Images ändern. Nur muss das doch einfacher gehen. Klar kann ich nicht ImageX schreiben, weil woher will das Programm wissen das X eine Variable ist. Gibt es eine Möglichkeit die Nummer eines Images irgendwie durch eine Art Variable zu ersetzen, damit man die ganze Prozedur nicht X mal kopieren muss? Ich hoffe es ist ansatzweise klar was mein Problem ist.

Hier ein weiterer Erklärungsversuch:

Ich hätte gern sowas wie:

Code:
begin
 for i := 1 to 5 do begin
  Imagei.visible := true;
 end;
end;
statt so:

Code:
begin
 Image1.visible := true;
 Image2.visible := true;
 Image3.visible := true;
 Image4.visible := true;
 Image5.visible := true;
end;
in meinem Fall benutze ich sogar weitaus mehr als 5 Images


Ich hoffe mein Problem ist zu genügend erläutert. Vielen Dank schonmal jetzt

Mit freundlichen Grüßen
Maurooon
"One of the basic rules of the universe is that nothing is perfect. Perfection simply doesn't exist... Without imperfection, neither you nor I would exist." - Stephen Hawking
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.196 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Mehrere Images --> Imagex ???

  Alt 31. Mär 2017, 18:04
durch eine Art Variable zu ersetzen
Ein "Array of TImage". Ja, einmal musst du alle deine Images da reinstecken.

Aber später kannst du dann genau das sagen was du gerne hättest. nur dass statt "Imagei.visible := true;" dann dort halt "meinImageArray[i].visible := true;" steht.


(Kenne mich mit FreePascal nicht aus, hoffe das ist dort genauso)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#3

AW: Mehrere Images --> Imagex ???

  Alt 31. Mär 2017, 18:05
Such mal hier im Forum nach Hier im Forum suchenFindComponent und den möglichen Alternativen dazu.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Maurooon

Registriert seit: 7. Dez 2016
70 Beiträge
 
#4

AW: Mehrere Images --> Imagex ???

  Alt 31. Mär 2017, 20:44
durch eine Art Variable zu ersetzen
Ein "Array of TImage". Ja, einmal musst du alle deine Images da reinstecken.

Aber später kannst du dann genau das sagen was du gerne hättest. nur dass statt "Imagei.visible := true;" dann dort halt "meinImageArray[i].visible := true;" steht.


(Kenne mich mit FreePascal nicht aus, hoffe das ist dort genauso)
Okay vielen Dank. Könnten Sie mir auch ein Beispiel für die Initialisierung eines ImageArrays zeigen?

LG
"One of the basic rules of the universe is that nothing is perfect. Perfection simply doesn't exist... Without imperfection, neither you nor I would exist." - Stephen Hawking
  Mit Zitat antworten Zitat
Maurooon

Registriert seit: 7. Dez 2016
70 Beiträge
 
#5

AW: Mehrere Images --> Imagex ???

  Alt 31. Mär 2017, 21:12
mhmm.... hab das Array nach googlen wie folgt definiert:

Code:
imagearray: array[1..20] of Timage;
und auch jeweils

Code:
imagearray[1] := Image1;
imagearray[2] := Image2;
imagearray[3] := Image3;
imagearray[4] := Image4;
imagearray[5] := Image5;
usw...

nur kriege ich wenn ich z.B. imageaaray[x].left := imagearray[x].left + 1; mache für x := 1 oder so, den error: Identifier idents no member "imagearray"

Jemand eine Lösung? Oder habe ich das Array falsch initialisiert?
"One of the basic rules of the universe is that nothing is perfect. Perfection simply doesn't exist... Without imperfection, neither you nor I would exist." - Stephen Hawking
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#6

AW: Mehrere Images --> Imagex ???

  Alt 31. Mär 2017, 21:13
Vergiss das Array.

=>

Delphi-Quellcode:
 for i := 1 to 5 do // begin in der nächsten Zeile. Das hier ist schließlich DELPHI ;)
  begin
   if Assigned((FindComponent('Image' + SysUtils.IntToStr(i)) as TImage))
    (FindComponent('Image' + SysUtils.IntToStr(i)) as TImage).Visible := True;
  end;
Ich würde das Ganze aber eher über eine TObjectList<TImage> machen.
  Mit Zitat antworten Zitat
Maurooon

Registriert seit: 7. Dez 2016
70 Beiträge
 
#7

AW: Mehrere Images --> Imagex ???

  Alt 31. Mär 2017, 21:19
Vergiss das Array.

=>

Delphi-Quellcode:
 for i := 1 to 5 do // begin in der nächsten Zeile. Das hier ist schließlich DELPHI ;)
  begin
   if Assigned((FindComponent('Image' + SysUtils.IntToStr(i)) as TImage))
    (FindComponent('Image' + SysUtils.IntToStr(i)) as TImage).Visible := True;
  end;
Ich würde das Ganze aber eher über eine TObjectList<TImage> machen.
Das ist mir viel zu kompliziert ehrlich gesagt. Könnten Sie mir das näher erklären oder eine etwas leichtere Variante vorschlagen? Mit FindComponent oder SysUtils habe ich noch nie gearbeitet.
"One of the basic rules of the universe is that nothing is perfect. Perfection simply doesn't exist... Without imperfection, neither you nor I would exist." - Stephen Hawking
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#8

AW: Mehrere Images --> Imagex ???

  Alt 31. Mär 2017, 21:22
Dann nehmen Sie am besten meinen Vorschlag wie oben. Da kann eigentlich nichts schiefgehen und allemal besser als ein Array ist es auch.
Delphi-Quellcode:
 for i := 1 to 5 do
  begin
   if Assigned((FindComponent('Image' + SysUtils.IntToStr(i)) as TImage)) // "SysUtils." kann auch weggelassen werden
    (FindComponent('Image' + SysUtils.IntToStr(i)) as TImage).Visible := True;
  end;
Rand-Info: die Zählung eines Arrays beginnt bei 0. Ein Array ist also 0-basiert. Das erste Element in einem Array steuert man mit [0] an, nicht [1].
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.336 Beiträge
 
Delphi 12 Athens
 
#9

AW: Mehrere Images --> Imagex ???

  Alt 31. Mär 2017, 23:15
Mit FindComponent oder SysUtils habe ich noch nie gearbeitet.
Wetten doch?

IntToStr
StrToInt
Format
Trim
UpperCase
...


SysUtils.IntToStr = IntToStr, wenn man den Namespace nicht braucht, wenn es keine Andere Methode/Funktion gibt, die auch so heißt, wie die in der SysUtils.pas
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (31. Mär 2017 um 23:17 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz