C++ Builder Snippets  


Komponenten zur Programmlaufzeit erzeugen:
 
Siehe auch: InputQuery-Eingabefeld mit Passworteingabeoption und Unterstützung von langen Texten, Menüeinträge zur Programmlaufzeit hinzufügen und Bitmaps und ProgressBar in der Statusleiste anzeigen.

Folgende Routine demonstriert das Erstellen der Steuerelemente "on the fly" während der Programmlaufzeit (in diesem Fall TLabels).

Die Test-Anwendung besteht aus einem Formular, einer EditBox "editCmpCount" und einem TButton "btnCreateLabels". Nach dem Anklicken der Schaltfläche werden im Formular Labels erzeugt, deren Anzahl mit Hilfe der EditBox vorgegeben werden kann. Damit die Anzahl der Labels nach der Ausführung der Funktion immer der Vorgabe entspricht, werden zuerst die ggf. zuvor erzeugten Labels aus dem Formular entfernt.


void __fastcall TfrmMain::btnCreateLabelsClick(TObject *Sender)
{
  AnsiString slNewLabelNamePrefix = "NewLabel";

  // Ggf. zuvor erzeugte Labels entfernen:
  for(int ilCmpNo = 0; ilCmpNo < ComponentCount; ilCmpNo++)
  {
    if(Components[ilCmpNo]->Name.Pos(slNewLabelNamePrefix))
    {
      delete Components[ilCmpNo];
      ilCmpNo--;
    }
  }

  // Neue Labels erzeugen:
  TLabel* pCmpTemp;
  int ilCmpCount=editCmpCount->Text.ToIntDef(0);

  for(int i=0;i<ilCmpCount;i++)
  {
    pCmpTemp=new TLabel(this);
    pCmpTemp->Parent=this;
    pCmpTemp->Caption=AnsiString("Neues Label #")+AnsiString(i+1);
    pCmpTemp->Name=slNewLabelNamePrefix+AnsiString(i);
    pCmpTemp->Top=i*20+45;
    pCmpTemp->Left=20;
  }
}

  Download BCB4
Projekt-Quellcode
Download
Demo-Exe

© '99-2000 by S. Kreutzmann