AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Wie kann ich Komponenten während der Laufzeit einbinden?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie kann ich Komponenten während der Laufzeit einbinden?

Ein Thema von Aurus · begonnen am 10. Nov 2009 · letzter Beitrag vom 10. Nov 2009
Antwort Antwort
Seite 1 von 2  1 2      
Aurus

Registriert seit: 26. Aug 2005
Ort: Schweiz
53 Beiträge
 
#1

Wie kann ich Komponenten während der Laufzeit einbinden?

  Alt 10. Nov 2009, 12:00
Hallo

Wie kann ich einem Programm was ich in Delphi geschrieben haben, während der Laufzeit, Visuelle-Komponenten hinzufügen, die es beim erstellen dieses Delphi-Programms noch gar nicht gab?

Ich hoffe ich werde richtig verstanden da ich es nicht viel besser formulieren kann.

Ein Beispiel:

Ich schreibe in Delphi ein ganz ganz einfaches 2D CAD. Die Visuellen Komonenten (z.B. Schraube, Bolzen usw) werden nach und nach durch externe Dateien hinzugefügt. Ich müsste also irgendwie die neu erstelle Komponte in eine DLL binden, die dann mein Programm laden und so verwenden kann?


Wie würdet ihr so was machen ohne dass ich das Programm neu kompilieren muss?


Auf eine Antwort würde ich mich freuen

Gruss

Aurus
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

Re: Wie kann ich Komponenten während der Laufzeit einbinden?

  Alt 10. Nov 2009, 12:08
Hier im Forum suchenKomponente dynamisch erzeugen

Einfach genau so, wie du es auch mit jedem anderem Objekt auch machst.

Delphi-Quellcode:
E := TEdit.Create(Self); // self = deine Form
E.Parent := Self; // oder ein Panel ... halt das, worauf das Edit letztendlich drauf ist
...
$2B or not $2B
  Mit Zitat antworten Zitat
Aurus

Registriert seit: 26. Aug 2005
Ort: Schweiz
53 Beiträge
 
#3

Re: Wie kann ich Komponenten während der Laufzeit einbinden?

  Alt 10. Nov 2009, 12:14
Ich glaube du hast mich falsch verstanden.

Dynamisch Komponenten erzeugen kann ich schon.

Zu deinem Beispiel:

Nur mal so angenommen dass TEDit in deinen Programm noch gar nicht gibt. Also kein Teil von Delphi wäre.

Nun würde ich diese Komponente in Delphi erzeugen


Wie könnte in nun diese Komponente in mein Programm einbinden und dann dynamisch erzeugen ohne dass das Programm neu compiliert werden muss?

Gruss

Aurus
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: Wie kann ich Komponenten während der Laufzeit einbinden?

  Alt 10. Nov 2009, 12:19
Diese Komponenten mußt du aber schon in deinem Programm drinnen haben,
oder eine Komponente, welche aus externen Daten ein "Bild" zusammenbaut.

Dann ließt du deine Datei ein, parst sozusagen diese Datei und erstellst dann die entpsrechende Komponente.
Also da steht z.B. in der Datei, daß jetzt eine Schraube erstellt werden soll
und dein Programm erstellt dann die vorhandene Komponente TSchraube
oder TCADObjekt und sagt diesem Objekt noch, wie es diese Schraube darzustellen hat.
$2B or not $2B
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Wie kann ich Komponenten während der Laufzeit einbinden?

  Alt 10. Nov 2009, 12:21
Du müsstest Bpls verwenden, dann kannst du die Bpl welche die Komponente enthält dynamisch zur Laufzeit dazuladen
Markus Kinzler
  Mit Zitat antworten Zitat
Balu der Bär
(Gast)

n/a Beiträge
 
#6

Re: Wie kann ich Komponenten während der Laufzeit einbinden?

  Alt 10. Nov 2009, 12:21
Schreib dir einfach eine Funktion die gewisse Objekte dynamisch zur Laufzeit erstellt. Wo ist das Problem?
  Mit Zitat antworten Zitat
Aurus

Registriert seit: 26. Aug 2005
Ort: Schweiz
53 Beiträge
 
#7

Re: Wie kann ich Komponenten während der Laufzeit einbinden?

  Alt 10. Nov 2009, 12:30
Aha ich glaube ich habe verstanden.

Meine neuen Komponenten werden abgeleitet von den schon vorhanden Komponeten in meinen Programm?

Ich muss nun meine neue Komponente während der Laufzeit anhand der vorhanden Komponenten zusammenbauen, dann während dynamisch erzeugen.


Wie diese zusammengebaut wird steht in einer Datei auf die ich zugreifen kann.



Wird für mich nicht ganz einfach umsetzen sein. Werde es aber versuchen und vermutlich auch schaffen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#8

Re: Wie kann ich Komponenten während der Laufzeit einbinden?

  Alt 10. Nov 2009, 12:36
Nur als Info:

Die VCL macht es übrigens ähnlich.
- sie ließt beim Laden einer Form die zugehörige Resource aus
- darin steht dann der Klassenname und die Werte einiger Properties
- nun sucht sie in einer Liste der vorhandenen Komponenten nach der gewünschten Komponente
- erstellt diese und weißt den Properties die Werte zu
$2B or not $2B
  Mit Zitat antworten Zitat
Aurus

Registriert seit: 26. Aug 2005
Ort: Schweiz
53 Beiträge
 
#9

Re: Wie kann ich Komponenten während der Laufzeit einbinden?

  Alt 10. Nov 2009, 12:39
Ja jetzt ist es einleuchtend für mich was du sagst.

Dürfte vermutlich für mich viel Tipparbeit verursachen wenn ich noch die gewünschten Properties und Events erzeugen muss.

Gibt es da vielleicht einen guten Trick wie man dies "möglichst" einfach (sofern möglich) umsetzen kann.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#10

Re: Wie kann ich Komponenten während der Laufzeit einbinden?

  Alt 10. Nov 2009, 12:55
Du könntest, wie schon gesagt, via BPLs neue Komponenten einbinden

oder über DLLs mittels Interfaces.
Im Programm eine "Haupt"-Komponente, welche sich dann über ein Interface die nötigen Daten aus der DLL holt.
(Objekte lassen sich ja nicht (einfach) von einer DLL in das Programm einbinden)
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 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