Komponente zur Laufzeit kopieren
-
Hallo,
wie kann man eine Komponente (z.B. TLabel) während der Laufzeit z.B. 10mal kopieren? Aus "Label1" soll dann einfach "Label2" u.s.w. werden. Alle Eigenschaften und Events sollen bei allen gleich bleiben.Danke!
-
Ich zitiere Th69 aus dem anderen Thread:
Th69 schrieb:
Steht in der FAQ: Komponenten benutzen - zur Laufzeit erstellen, anzeigen und Events zuweisen
Da steht, wie das geht.
-
kenne ich, Danke, habe so z.B. eine Komponente zur Laufzeit (ActiveX für eine VNC-Verbindung) erstellt (was zunächst auch prima funktioniert):
for (int i=1;i<=20;i++) { //ViewerX-Komponente erzeugen, dem entsprechenden Panel zuweisen //und den Zugriff in einem Array speichern: TPanel* PanelX = dynamic_cast<TPanel*>(FindComponent("Panel"+String(i))); ViewerX[i] = new TCSC_ViewerXControl(PanelX); ViewerX[i]->Parent = PanelX; ViewerX[i]->Name = "ViewerX"+IntToStr(i);
weiterhin soll eine Verbindung hiermit aufgebaut werden:
void TForm1::Verbindung_herstellen(int ViewerXNummer, String Hostname) { //zunächst ViewerX-Komponente einblenden, sonst ist kein Connecten möglich!: float Faktor = float(Form4->UpDown_Zoomfaktor->Position) / 7; TCSC_ViewerXControl* ViewerXX = dynamic_cast<TCSC_ViewerXControl*>(FindComponent("ViewerX" + String(ViewerXNummer))); ViewerX[ViewerXNummer]->Height=ViewerX_Standard_Height*Faktor; ViewerX[ViewerXNummer]->Width=ViewerX_Standard_Width*Faktor; ViewerX[ViewerXNummer]->Visible=true; if (ViewerX[ViewerXNummer]->Connected == false) //wenn nicht verbunden, dann.. { ViewerX[ViewerXNummer]->HostIP=Hostname; //ActivX-VNC-Verbindung herstellen: try { ViewerX[ViewerXNummer]->ConnectAsync(); } catch ( Exception& Excp ) { } } }
was so aufgerufen wird:
Verbindung_herstellen(i, rechnername);
Leider funktioniert der Verbindungsaufbau nicht. Es erfolgt eine Zugriffsverletzung $00005 (utilcls.h, Zeile 3536 "m_Dispatch->Release();").
Genau der (fast) gleiche Code funktioniert aber, wenn ich in der VCL diese Komponente händisch ins Formular ziehe.
Hat jemand eine Idee? Danke!