| Autor | Beitrag | 
| hRb 
          Beiträge: 297
 Erhaltene Danke: 12
 
 
 
 
 | 
Verfasst: Do 31.03.16 20:31 
 
Hallo,
 vielleicht gibt es das Thema, habe es jedoch nicht gefunden. Ich habe eine Pascal-Sprach-Formulier-Problem. 
 Aufgabe: Ich habe etwa 15-20 Groupbox-Objekte, die alle unterschiedlich mit weiteren Objekten auskonstruiert sind. Ich würde die einzelnen Box-Objekte gerne per Index aktivieren/deaktivieren. Meine jetzige (primitive) Lösung ist:
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 
 | if n=1 then GroupBox1.visible:=true  else then if n=2 then GroupBox2.visible:=true else then
 if n=3 then GroupBox3.visible:=true else then
 ..
 if n=20 then GroupBox20.visible:=true;
 |  Ideal wäre eine Formulierung wie bei Arrays:
 		                       Delphi-Quelltext 
 									| 1:2:
 
 | for i:=1 to 20 doif i=n then Groupbox[i].visible:=true else GroupBox[i].visible:=false;
 |  Das lässt zwar der Compiler nicht zu, aber gibt es eine Sprach-Formulierung, die solches im Prinzip ermöglicht?
 Hinweis: eine Variable array[1..20] of TGroupBox ist zwar formulierbar, aber dann weiß ich nicht, wie die einzelnen Boxen mit Inhalt zu konstruieren sind.
 Lösungen?Moderiert von  Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Do 31.03.2016 um 21:49 | 
|  | 
| Narses 
          
  Beiträge: 10183
 Erhaltene Danke: 1256
 
 W10ent
 TP3 .. D7pro .. D10.2CE
 
 | 
Verfasst: Do 31.03.16 20:50 
 
Moin!
 Du suchst   FINDCOMPONENT .        cu
 Narses_________________ There are 10 types of people - those who understand binary and those who don´t.
 | 
|  | 
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: Fr 01.04.16 04:14 
 | 
|  | 
| hRb  
          Beiträge: 297
 Erhaltene Danke: 12
 
 
 
 
 | 
Verfasst: Di 12.04.16 20:46 
 
Narses: Danke für den Hinweis auf FindComponent. Man findet immer wieder bisher unbekannte Funktion!
jaenicke: Du schreibst: "ich würde die Groupboxen per eben genanntem FindComponent beim Programmstart suchen und in das Array eintragen".
 Wie muss ich mir das konkret vorstellen? Die GroupBoxen sind ja "nur Behälter" für weitere Komponenten. Bei mir u.a. Richedit-, TextEdit-, Button- und Label-Objekte (mein Beispiel mit "visible" habe ich gewählt, um mein Problem "Objekte in Schleife ansprechen" übersichtlich und einfach darzustellen.)
 Wenn ich alles in ein Array speichere, entstehen da echte Kopien oder nur Zeiger auf die Objekte? Bei Kopien bläht sich das Programm doch mächtig auf. Oder sehe ich da was falsch?
 | 
|  | 
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: Di 12.04.16 21:49 
 
Im Array hast du nur Referenzen, also Pointer auf die Steuerelemente. Eine Kopie würde dir ja auch nichts bringen. So sparst du dir dann immer mit FindComponent die Komponenten jedesmal zu suchen, was nicht wenig zeit in Anspruch nimmt. | 
|  | 
| Frühlingsrolle Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Mi 13.04.16 03:17 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - | 
|  | 
| doublecross 
          Beiträge: 149
 Erhaltene Danke: 27
 
 Windows 7
 C#; Visual Studio 2015
 
 | 
Verfasst: Mi 13.04.16 08:38 
 
Eine weitere Möglichkeit wäre es, sofern die 20 GroupBoxen mehr oder weniger Identisch sind, diese nicht im Designer anzulegen, sondern per Code, dann könntest du die Referenzen direkt beim erzeugen in deinem Array speichern und auch über dieses auf sie zugreifen.
 Das mag Initial ein wenig mehr Aufwand sein (insbesondere weil diese dann ja auch passend auf deiner Seite platziert werden müssen), ist aber im falle vieler Gleichartiger Komponenten oft einfacher bei der späteren Verwendung. Insbesondere wenn du z. B. bei einem Resize deines Fensters ohnehin die Positionen neu berechnen musst.
 | 
|  | 
| WasWeißDennIch 
          Beiträge: 653
 Erhaltene Danke: 160
 
 
 
 
 | 
Verfasst: Mi 13.04.16 18:18 
 
	  |  doublecross hat folgendes geschrieben  : |  	  | ..., ist aber im falle vieler Gleichartiger Komponenten oft einfacher bei der späteren Verwendung. | 
 Inwiefern? Ob man zur Design- oder zur Laufzeit angelegte Komponenten in einem Array oder einer Liste ablegt, macht doch keinen Unterschied. | 
|  | 
| doublecross 
          Beiträge: 149
 Erhaltene Danke: 27
 
 Windows 7
 C#; Visual Studio 2015
 
 | 
Verfasst: Do 14.04.16 13:18 
 | 
|  |