AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Ansprechen von während Laufzeit erzeugter Komponenten
Thema durchsuchen
Ansicht
Themen-Optionen

Ansprechen von während Laufzeit erzeugter Komponenten

Offene Frage von "TiGü"
Ein Thema von Kurt Wallander · begonnen am 7. Mär 2022 · letzter Beitrag vom 10. Mär 2022
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von dummzeuch
dummzeuch
Online

Registriert seit: 11. Aug 2012
Ort: Essen
1.466 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#11

AW: Ansprechen von während Laufzeit erzeugter Komponenten

  Alt 8. Mär 2022, 08:55
Es gibt immer die folgenden Möglichkeiten:
  1. Referenzen auf die Labels in einer wie immer gearteten Struktur (Array, Liste, Dictionary oder ggf. auch in einzelnen Variablen) zu speichern
  2. Label aus Controls[]-Property des Parents ermitteln, anhand des Namens (den man dann sinnvoll vergeben muss)
  3. Dito anhand ihrer Caption (problematisch, wenn z.B. Übersetzunen ins Spiel kommen)
  4. Dito anhand einer anderen Property, z.B. Tag

Ich persönlich verwende je nach Anwendung 1, 2 oder 4, mit starker Präferenz zu 1.

Statt Controls[] des Parents kann man auch Components[] des Owners nehmen. Kann evtl. sinnvoll sein, in der Regel ist es das aber nicht. Es ist auch wichtig, sicherzustellen, dass es in Controls[] nur diese Labels gibt, sonst hat man hinterher viel Spaß bei der Fehlersuche.
Thomas Mueller

Geändert von dummzeuch ( 9. Mär 2022 um 08:27 Uhr)
  Mit Zitat antworten Zitat
Kurt Wallander

Registriert seit: 11. Mai 2020
Ort: Freiberg
35 Beiträge
 
Delphi 10.4 Sydney
 
#12

AW: Ansprechen von während Laufzeit erzeugter Komponenten

  Alt 8. Mär 2022, 18:10
Hallo Delphianer,
erst einmal vielen Dank für die Anregungen. Bin ein ganzes Stück vorangekommen. Die Anzeige der Daten klappt.
Ich bin dabei im wesentlichen den Tipps vor runningSoft gefolgt. Aber Überraschungen gab es doch noch. GroupBox1 als parent geht nicht, die generierten Labels haben trotzdem Form1 als owner. Dann mußte ich explizit die autosize-Methode auf false setzen, die Caption=name ist so klein, dass die wesentlich größere (Font.Size:=48) für die Daten nicht mehr zu sehen waren.
Ich benutze deshalb Labels, weil diese eine canvas haben und man aufwändige Schriftausgaben mit anderen Farben, Größen und Positionen bequem erzeugen kann. Man erinnere sich an das Aussehen eines Periodensystems aus dem Chemie-Unterricht.
Ich arbeite noch an dem onClick-Ereignis.
Nochmal vielen Dank an alle.
Kurt Wallander
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
668 Beiträge
 
Delphi 12 Athens
 
#13

AW: Ansprechen von während Laufzeit erzeugter Komponenten

  Alt 9. Mär 2022, 06:53
GroupBox1 als parent geht nicht, die generierten Labels haben trotzdem Form1 als owner.
Parent <> Owner
Parent ist das Control, auf dem deine Labels liegen. Owner ist das Control, das sich um die Freigabe der Labels kümmert.

Delphi-Quellcode:
ALabel:=TLabel.Create(Self); // Hier wird der Owner gesetzt: Self, also das Form
ALabel.Parent := GroupBox1; // Hier wird der Parent gesetzt
  Mit Zitat antworten Zitat
Kurt Wallander

Registriert seit: 11. Mai 2020
Ort: Freiberg
35 Beiträge
 
Delphi 10.4 Sydney
 
#14

AW: Ansprechen von während Laufzeit erzeugter Komponenten

  Alt 9. Mär 2022, 07:56
Hi,
aber trotzdem ist Groupbox1.componentcount=0, die erzeugten labels Feld11..Feld99 finde ich als Komponenten der Form1.
  Mit Zitat antworten Zitat
Kurt Wallander

Registriert seit: 11. Mai 2020
Ort: Freiberg
35 Beiträge
 
Delphi 10.4 Sydney
 
#15

AW: Ansprechen von während Laufzeit erzeugter Komponenten

  Alt 9. Mär 2022, 08:08
Ich habe sowohl bei ALabel.create(GroupBox1) als auch ALabel.parent:=GroupBox1 stehen. Es funktioniert. Hatte Scheuklappen auf, da ich in anderen Programmen stets bei create stets self codiert hatte. Man lernt nicht aus!!!
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#16

AW: Ansprechen von während Laufzeit erzeugter Komponenten

  Alt 9. Mär 2022, 09:51
Warum nimmst du dafür eigentlich kein Grid?
Insbesondere wenn du die einzelnen Zellen sowieso selbst zeichnen möchtest.
z.B. TDrawgrid
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: Ansprechen von während Laufzeit erzeugter Komponenten

  Alt 9. Mär 2022, 12:23
Oder eine TListView.

Zeige doch mal ein Bildschirmphoto von dem was Du da machst, da gibt es bestimmt viel mehr konstruktive Vorschläge.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Kurt Wallander

Registriert seit: 11. Mai 2020
Ort: Freiberg
35 Beiträge
 
Delphi 10.4 Sydney
 
#18

AW: Ansprechen von während Laufzeit erzeugter Komponenten

  Alt 9. Mär 2022, 20:27
Hi Kodezwerg, hier ein screenshot. Es ist eine Sodoku-App. Die schwarzen Zahlen sind das Start-Bild, von einer Datei eingelesen. Das mintgrüne Feld wurde angeklickt und dient zur Eingabe der vom Nutzer erratenen Felder. Diese eingegebenen Zahlen sind von gleicher Größe, aber dann mit einer anderen Farbe. Sind Zeilen, Spalten oder Sub-Quadrate vollständig ausgefüllt, so werden diese mit Farbe unterlegt.
Beim onClick bin ich deinen Hinweisen weitgehendst gefolgt, auch dir meinen speziellen dank.
Kurt Wallander
Miniaturansicht angehängter Grafiken
sodoku.png  
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#19

AW: Ansprechen von während Laufzeit erzeugter Komponenten

  Alt 10. Mär 2022, 07:31
Sodoku <> Sudoku!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   

 

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 07:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz