| Autor |
Beitrag |
Henneberg
Hält's aus hier
Beiträge: 10
|
Verfasst: So 11.03.12 20:17
Ausgangssituation ich habe 4 Edits in denen jeweils 4 zahlen stehen. Nun sollen siese Zahlen an ihren stellen in ein 16 Felder langes Array kommen
dafür ich will zwei for-Schleifen ineinandergeschachtelt durchlaufen lassen. Die erste von i=1 zu 4 und die andere ii=1 zu 4. Jetzt will ich in der zweiten prozedur nun erst ein Edit abklappern. dann das nächste usw. Ich hatte mir das so gedacht:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| for I := 1 to 4 do begin for ii := 1 to 16 do begin Edit(I).Text end; end; |
Also es soll immer das Edit genommen werden mit dem Wert der ersten Zählvariable. So wie es oben steht funktioniert es nicht. Hat jemand eine Idee?
PS: Das ist mein erster Post hier also bitte seid gnädig mit mir^^
Moderiert von Martok: Delphi-Tags hinzugefügtModeriert von Narses: Topic aus Sonstiges (Delphi) verschoben am So 11.03.2012 um 19:36
|
|
haentschman
      
Beiträge: 285
Erhaltene Danke: 33
DX10 Berlin Professional
|
Verfasst: So 11.03.12 20:24
Hallo...
Stichworte:
- FindComponent
- Edits in einer ObjectList ablegen und über den Index abarbeiten

|
|
Henneberg 
Hält's aus hier
Beiträge: 10
|
Verfasst: So 11.03.12 20:39
:S bin leider noch ein neuling. Könnten sie das bitte etwas genauer erklären?
|
|
jaenicke
      
Beiträge: 19340
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 11.03.12 20:45
Erstens: Wir duzen uns hier im Forum
Zweitens: FindComponent eingeben, F1 drücken
In der Dokumentation gibt es sogar ein Beispiel, das ziemlich exakt das macht was du vorhast...
docwiki.embarcadero....ndComponent_(Delphi)
Wobei du dir das with dort nicht abschauen solltest, das macht alles nur unübersichtlich. Aber du siehst dort wie FindComponent benutzt wird.
|
|
Henneberg 
Hält's aus hier
Beiträge: 10
|
Verfasst: So 11.03.12 21:02
|
|
jaenicke
      
Beiträge: 19340
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 11.03.12 21:36
Die Meldung sagt doch schon was das Problem ist. Die Variable edittext ist ein String. Deshalb kannst du da nicht ein ganzes Editfeld hineinlegen.
Das ist als ob du eine Tiefkühltruhe hast und eine Lieferung per LKW bekommst. Du versuchst nun den ganzen LKW in die Kühltruhe zu legen. Stattdessen musst du den Inhalt herausnehmen und in die Kühltruhe legen.
Analog musst du den Text aus dem Editfeld herausnehmen und diesen in die Variable legen. Delphi-Quelltext 1: 2: 3: 4:
| edittext := MyEdit; edittext := MyEdit.Text; |
Davon abgesehen scheint dir nicht wirklich klar zu sein was du da tust. In der Zeile mit TEdit.Create wird ein neues Editfeld erzeugt. Das willst du ja wohl kaum, oder? Heißt: Diese Zeile brauchst du nicht.
|
|
Henneberg 
Hält's aus hier
Beiträge: 10
|
Verfasst: So 11.03.12 21:51
Tut mir leid ich habe eben nur mein bisheriges Schul Delphi und diese Aufgabe war eine zusatzaufgabe. Deswegen arbeite ich derzeit nach dem Motto: Einfugen testen verstehen.
Tut mit Leid ich vestehe deine Antwort immer noch nicht. Blicke da noch nicht so durch :S
|
|
jaenicke
      
Beiträge: 19340
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 11.03.12 22:42
Leg doch einfach mal in einem neuen Projekt nur ein Editfeld und einen Button auf das Formular und probiere nur FindComponent aus. In den Buttonklick kannst du schreiben: Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.Button1Click(Sender: TObject); var FoundEditField: TEdit; begin FoundEditField := FindComponent('Edit1') as TEdit; FoundEditField.Text := 'Ein Text'; end; | Damit suchst du das Editfeld mit dem Namen Edit1, legst das in FoundEditField und setzt dann den Text darin.
|
|
Henneberg 
Hält's aus hier
Beiträge: 10
|
Verfasst: Di 13.03.12 21:10
Aber wie mach ich das nun das er das editfeld nimmt mit dem index der schleifenvariablen?
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Di 13.03.12 23:22
Delphi-Quelltext 1:
| FoundEditField := FindComponent('Edit' + IntToStr(i)) as TEdit; |
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Mi 14.03.12 01:57
Ich möchte mal anmerken, dass ich mit FindComponent immer ziemlich unzufrieden war, da das ziemlich langsam ist.
Da man ja ohnehin keine x Edits platzieren will, mache ich das meist durch Erstellung zur Laufzeit (wie oben schon angedeuted):
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| var Edits: array of TEdit; [...] procedure TForm1.CreateEdits; var E: integer; begin SetLength(Edits, 1000); for E:= 0 to High(Edits) do begin Edits[E]:=TEdit.Create(Form1); Edits[E].Parent:=Form1; Edits[E].Text:=inttostr(E); Eidts[E].Top:=42*E; end; end; |
Genau wie die Schleife zeigt kannst du natürlich auch weitere Schleifen nutzen.
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|