Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Array aus TControl / TComponent, noch einmal... (https://www.delphipraxis.net/159143-array-aus-tcontrol-tcomponent-noch-einmal.html)

Joerginger 15. Mär 2011 23:44

Delphi-Version: 7

Array aus TControl / TComponent, noch einmal...
 
Hallo liebe Delphianer,

bis jetzt hab' ich in diesem Forum sooo viele schöne Schnipsel - und auch großartige Hilfe - gefunden, aber jetzt steh' ich mit allem daneben. Vorgeschichte: Ich möchte einen Maskeneditor schreiben - und auch wenn mein Code seltsam aussieht, theoretisch kann ich ja schon ein bisschen programmieren :?

Zuallererst gibt's eine globale Variable
Code:
var
  arCtl: array of TControl;
und an beliebiger Stelle (derzeit zum testen in einer Listbox, später mal in einem Datenbanksatz oder WhatSoEver) stehen einzelne Sätze, die eben einzelne Controls/Komponenten abbilden sollten, mit deren Eigenschaften, wie z.B.
- Was ist es für ein Control (B=Button, E=Editfeld, L=Label, R=Radiobutton etc.)
- Die Bezeichnung auf der Maske (also quasi den Inhalt der Eigenschaft Caption)
- weiters (später) Position auf der Maske, Grösse, MaxLength, UpperCase etc...

Diese Werte lese ich sequentiell ein, interpretiere mir den Inhalt in Variablen und möchte dann daraus die Elemente darstellen, aber wie's bei Elementen so ist: es scheitert bereits am elementaren :roll:
Code:
begin
  iMaxA:=0;                                              //ARRAY HAT NULL SÄTZE
  SetLength(arCtl,0);                                           //ARRAY KNICKEN
  iMaxL:=Form1.lstCtl.Count-1;                             //ANZAHL SÄTZE LESEN
  for i:=0 to iMaxL do                //ALLE ZEILEN DURCHGEHEN, EGAL OB LISTBOX
  begin
    sI:=Form1.lstCtl.Items[i];           //INFO HOLEN, WIE DAS CONTROL AUSSIEHT
    cW:=sI[1];                               //CHAR: WAS IST ES FÜR EIN CONTROL
    sL:=Trim(Copy(sI,2,length(sI)-1));                        //LABEL FESTLEGEN
    Case cW of                                           //CASE ÜBER CONTROLTYP
    'E': //EDIT FELD
      begin
        if sL<>'' then                                   //WENN LABEL ANGEGEBEN
        begin
          iMaxA:=High(arCtl)+1;                          //ARRAY UM 1 ERWEITERN
          SetLength(arCtl,iMaxA+1);             //KANN MAN SICHER SCHÖNER LÖSEN
          arCtl[iMaxA]:=TLabel.Create(Self);                //DAS LABEL BASTELN
          arCtl[iMaxA].Parent:=Form1;                      //ALS KIND VON FORM1

          arCtl[iMaxA].Caption:=sL;       //<- GENAU HIER HAUT'S DAS SYSTEM AUF

          arCtl[iMaxA].Left:=20;
          arCtl[iMaxA].Top:=20+((arCtl[iMaxA].Height+10)*iMaxA);
        end;
        iMaxA:=High(arCtl)+1;                          //ARRAY UM 1 ERWEITERN
        SetLength(arCtl,iMaxA+1);
        arCtl[iMaxA]:=TEdit.Create(Self);
        arCtl[iMaxA].Parent:=Form1;
        arCtl[iMaxA].Left:=20;
        arCtl[iMaxA].Top:=20+((arCtl[iMaxA].Height+10)*i);
      end;
danach kommen die weiteren Controls in den einzelnen Case-Segmenten... Egal welche Eigenschaften ich übergeben möchte, es geht "Zack" und ich bekomme den Fehler
Undefinierter Bezeichner:Caption
Ich bin sicher dass ich da nur eine Kleinigkeit übersehe, aber ich find's heute einfach nimmer :cry:

Vielleicht hat's einer von Euch auf die schnelle? Bitte Danke! Und bevor ich mit dem Projekt all zu sehr in die Irre laufe bitte ich um Hinweise wenn jetzt schon was ganz arg verkehrt ist.

greetz, Joerginger

MondiBob 15. Mär 2011 23:54

AW: Array aus TControl / TComponent, noch einmal...
 
Für TControl gibts die Eigenschaft Caption nicht, deswegen gibts ne Fehlermeldung. Sag ihm einfach, dass du en Label benutzt:
Delphi-Quellcode:
(arCtl[iMaxA] as TLabel).Caption:=sL;

Joerginger 16. Mär 2011 00:37

AW: Array aus TControl / TComponent, noch einmal...
 
Wow... so schnell. Ich danke Dir 1000x, jetzt kann ich ne ganze Menge wieder alleine in Angriff nehmen.

greetz, Joerginger


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:10 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