![]() |
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:
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.
var
arCtl: array of TControl; - 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:
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
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; 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 |
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;
|
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 21:36 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