![]() |
mehrere Elemente in einer Schleife bearbeiten
Hy!
ich würde gerne in einer Prozedur die Eigenschaften vieler Elemente hintereinanderweg ändern. Das Ganze stelle ich mir folgendermaßen vor:
Delphi-Quellcode:
Damit hätte ich 10 Buttons aktiviert mit 4 Quellzeilen, anstatt jedesmal den gesamten Seremon zu kopieren.
for i := 1 to 10 do
Begin Button[i].enabled := true; end; Ich bin der Ansicht, daß das irgendwie gehen müsste... wenn ich nur wüsste wie... :wall: |
Re: mehrere Elemente in einer Schleife bearbeiten
So müßte es gehen.
Zuerst die ShellAPI einbinden.
Delphi-Quellcode:
Jetzt werden die Button mit dem Namen Button1 bis Buttons auf Enabled true gesetzt.
var i : integer;
for i := 1 to s do //s Anzahl der Buttons TButton(FindComponent('Button' + IntToStr(i))).Enabled := true; |
Re: mehrere Elemente in einer Schleife bearbeiten
Danke, hat hingehauen
:thuimb: |
Re: mehrere Elemente in einer Schleife bearbeiten
Und sind sogar nur 2 Zeilen. :lol:
|
AW: mehrere Elemente in einer Schleife bearbeiten
hey..danke für den code! älteres topic aber ich muss es grad mal ausbuddeln :D
ich habe allerdings das problem das meine objekte keine zahlen AM ENDE haben, sondern so aussehen: Hotspots[3], Hotspots[4], Hotspots[5], Hotspots[6] ich habe schwierigkeiten das anzupassen, hat jemand nen tip wie ich den code ändern muss :S ? |
AW: mehrere Elemente in einer Schleife bearbeiten
Einfach Hotspots[i]?
|
AW: mehrere Elemente in einer Schleife bearbeiten
Das scheint ja ein Array zu sein, also müsste das auch so gehen:
Delphi-Quellcode:
for i := Low(Hotspots) to High(Hotspots) do
MachWasMit(Hotspots[i]); |
AW: mehrere Elemente in einer Schleife bearbeiten
Code:
complilieren kann ich den code so zwar, aber ich bekomme eine zugriffsverletzung wenn ich versuche zu starten :lol:
procedure Tworldmapsource.FormCreate(Sender: TObject);
var i : integer; begin for i := 1 to 48 do THotSpot(FindComponent('Hotspots[i]')).HoverColor := clwhite; hsiafrika.Loaded; end; |
AW: mehrere Elemente in einer Schleife bearbeiten
Hast Du es einmal mit dem Vorschlag von DeddyH versucht
Delphi-Quellcode:
Gruß
for i:=low() to high()
K-H |
AW: mehrere Elemente in einer Schleife bearbeiten
jop...the same..
Code:
die zugriffsverletzung kommt in der FindComponent zeile.
procedure Tworldmapsource.FormCreate(Sender: TObject);
var i : integer; begin for i:=low(1) to high(5) do THotSpot(FindComponent('Hotspots[i]')).HoverColor := clwhite; end; |
AW: mehrere Elemente in einer Schleife bearbeiten
Übernimm mal den kompletten Code, der stimmt nämlich so!
|
AW: mehrere Elemente in einer Schleife bearbeiten
hab ich grad probiert, allerdings meckert er bei den hotspots bei low/high dann bzw er bez. sie als undefiniert
ich bin mir nicht sicher ob das Arrays sind. Die hotspots sind bereiche die ich auf dem hotspotimage(ner komponente) anklickbar gemacht habe und denen ich verschiedenen eigenschaften zuweisen kann. edit: ansprechen tue ich die hotspots via: hotspotimage.hotspots[1].hovercolor:= clwhite; zum bsp |
AW: mehrere Elemente in einer Schleife bearbeiten
Hallo,
Zitat:
Delphi-Quellcode:
Gruß
c := THotSpot(FindComponent('Hotspots[' IntToStr (i) ']'));
if Assigned (c) and (c is THotSpot) then c.HoverColor := clwhite; |
AW: mehrere Elemente in einer Schleife bearbeiten
Delphi-Quellcode:
var
i:Integer; begin for I := 0 to HotSpotImage1.HotSpots.Count - 1 do Showmessage(IntToStr(HotSpotImage1.HotSpots[i].ID) +' - '+ HotSpotImage1.HotSpots[i].Name); end; |
AW: mehrere Elemente in einer Schleife bearbeiten
danke! bin gerade auf der arbeit aber ich teste das heute abend aus wenn ich @ home!
|
AW: mehrere Elemente in einer Schleife bearbeiten
danke Bummi...
Code:
problem gelöst & wieder was dazu gelernt..
var
i:Integer; begin for I := 0 to Hsiafrika.HotSpots.Count - 1 do hsiafrika.HotSpots[i].HoverColor:= clwhite; danke euch allen! 8-) edit: aber wie funktioniert das? for i := 1 to 10 do..verstehe ich, aber 0 to Hsiafrika.HotSpots.Count - 1 hmm..wieso MINUS 1? und wieso werden dann alle verfügbaren hotspots durchlaufen? wird das hochgezählt? wenn ja wo ist stop? Ich möchte das verstehen. :) |
AW: mehrere Elemente in einer Schleife bearbeiten
Wenn du 10 Elemente hast (Count) und das erste Element mit Index 0 beginnt, dann schreib dir doch mal auf einem Blatt alle Indizes der Elemente auf (Kleiner Tipp, zähl beim Schreiben mit)
Wenn du alles richtig gemacht hast, dann verstehst du auch das
Delphi-Quellcode:
;)
-1
Lösung: 0,1,2,3,4,5,6,7,8,9 |
AW: mehrere Elemente in einer Schleife bearbeiten
ah...also der zehnte hotspot hat dann index 10 und es wird RUNTER gezählt bis 0 mit -1 anstatt hoch?
|
AW: mehrere Elemente in einer Schleife bearbeiten
nimm die Finger und fange bei 0 an zu zählen ...
|
AW: mehrere Elemente in einer Schleife bearbeiten
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21: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