Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Zensurenübersicht mit automatisches hinzufügen von formulare (https://www.delphipraxis.net/65660-zensurenuebersicht-mit-automatisches-hinzufuegen-von-formulare.html)

cissi88 19. Mär 2006 17:01


Zensurenübersicht mit automatisches hinzufügen von formulare
 
hey leute,
ich muss ein zensurenübersichtsprogramm , für die schule, schreiben. bin damit auch soweit fertig.
doch ich möchte, dass das programm keine begrenzte anzahl an felder (edit oder panel),wo die zensuren stehen, hat. sonder das mit einen mausklick auf einen button neue felder entstehen die den quelltext beeinhalten. hat jemand eine ahnung wie das geht??

Der_Unwissende 19. Mär 2006 17:23

Re: Zensurenübersicht mit automatisches hinzufügen von formu
 
Hi,
was meinst du denn mit
Zitat:

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

cissi88 19. Mär 2006 17:38

Re: Zensurenübersicht mit automatisches hinzufügen von formu
 
danke
ich denke das wird mir weiter helfen


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