Hi,
was meinst du denn mit
Zitat von
cissi88:
... neue felder entstehen die den quelltext beeinhalten
Also was für Quelltext sollen die denn beinhalten?
Was du brauchst ist das Erzeugen von Controls (Klassen die Sichtbar sind) zur Laufzeit. Das ist an sich auch ganz einfach, es besteht immer aus den Schritten :
- Variable zum Zwischenspeichern deklarieren (optional, man kann auch annonym arbeiten)
- Neue Instanz erstellen
- Eigenschaften anpassen
- Auf einem Control einfügen
- ggf. (wenn kein Owner angegeben) um Speicherfreigabe kümmern
In Delphi sähe dass dann ungefähr so aus (kann sehr leicht auf andere Beispiele übertragen werden)
Delphi-Quellcode:
procedure insertDummyControl(const Destination : TControl);
var buffer : TLabel;
begin
buffer := TLabel.Create(Destination); // Erzeugt neue Instanz und setzt Destination als Owner
buffer.Caption := 'Bla Blubb'; // beliebige Eigenschaften anpassen
....
Destination.InsertControl(buffer); // Damit wird buffer auf Destination platziert / angezeigt
end;
Destination ist hier sehr abstrakt ein TControl, damit kannst du hier also jede beliebige Sichtbare Komponente verwenden (z.B. ein Form, ein Panel,...). Kannst natürlich auch direkt etwas wie Form1.insertControl(...); aufrufen.
Da du sicherlich alle erzeugten Instanzen kennen möchtest, solltest du diese einfach in einer Liste speichern. Delphi bietet dir in der
Unit Contnrs eine TControlList, die speichert eine beliebige Anzahl von TControls. Hiermit kannst du dann auch etwas anonym arbeiten:
Delphi-Quellcode:
var controlList : TControlList; // möglichst im private Teil deiner Klasse / global speichern
...
controlList.Add(TLabel.Create(Destination));
// zugriff auf das letzte eingefügte Element
// Zugriffe erfolgen immer auf eine TControl => muss gecastet werden
with TLabel(controlList.Items[controlList.Count - 1] do
begin
// Eigenschaften setzen
Caption := 'Bla Blubb';
// besser vor dem casting auf Typsicherheit prüfen
// if controlList.Items[controlList.Count - 1] is TLabel then...
end;
Gruß Der Unwissende