AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Zugriff auf Komponenten auf einer Form in einer DLL
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff auf Komponenten auf einer Form in einer DLL

Ein Thema von TPok · begonnen am 28. Sep 2005 · letzter Beitrag vom 28. Sep 2005
 
TPok

Registriert seit: 19. Jul 2004
Ort: Eisenach
25 Beiträge
 
Delphi 2005 Professional
 
#1

Zugriff auf Komponenten auf einer Form in einer DLL

  Alt 28. Sep 2005, 16:12
Hallo,

hab in Anlehnung an Assarbads Tutorial eine DLL erstellt, die ein Form mit einigen Komponenten enthält. Die einzige enthaltene und exportiere Funktion lautet:

Delphi-Quellcode:
function ShowForm: Pointer; stdcall;
begin
  frmListe := TfrmListe.Create(nil);

  frmListe.Show;
  Result := frmListe;
end;
Im Haupprogramm binde ich die DLL dynamisch ein und erzeuge das Formular.
Delphi-Quellcode:
var
  frmListe: TForm;
...
frmListe := ShowForm;
Ein Zugriff auf Die Komponenten des Formular gelingt problemlos durch
Delphi-Quellcode:
For i := 0 to frmListe.ComponentCount - 1 do
  If frmListe.Components[i].Name = 'btnOkthen
    TButton(frmListe.Components[i]).OnClick := btnOkClick;
Es scheitern aber Dinge wie
Delphi-Quellcode:
If frmListe.Components[i].ClassType = TButton then // ClassType hat keinen sinnvollen Wert

If frmListe.Components[i] is TButton then // Geht ebensowenig

(frmListe.Components[i] as TButton).OnClick := btnOkClick; // ungültiger Typecast
Kann mir dieses Verhalten bitte jemand erklären und ggf. Lösungswege aufzeigen?

Ich weiß, dass das alles keine sauber OOP ist und ich böse viele Sachen tue. Im meinem Anwendungsfall macht es aber Sinn.

Kurz zur Erläuterung:
Ich möchte die DLLs als einfache dumme Container für ein Formular verwenden. Ich habe ein Hauptprogramm, dass als Parameter den Namen der DLL erhält. Nach dem Start zeigt es das Formular aus der DLL an. Nach dem Klick auf dem Ok-Button auf diesem Formular liest das Hauptprogramm die Eingaben aus den einzelnen Controls aus und übergibt sie an einen in Crystal Reports erstellte Datenbankauswertung. Dabei wird die Zuornung zwischen Parameter der Datenbankauswertung und dem Control über Namen und Typ des Controls hergestellt.
Die gesamte "Intelligenz" soll im Hauptprogramm stecken, so daß zu jeder Datenbankauswertung nur eine DLL mit einem Formular erstellt werden muß und fertig.

Ich hoffe, das war jetzt einigermaßen verständlich.

Liebe Grüße,
Stephan
Stephan Fietzek
  Mit Zitat antworten Zitat
 


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 02:43 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