AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Tabsheet aus dll erzeugen

Ein Thema von Dt2158 · begonnen am 21. Okt 2004 · letzter Beitrag vom 25. Okt 2004
Antwort Antwort
Seite 1 von 2  1 2      
Dt2158

Registriert seit: 23. Nov 2002
Ort: Berlin
40 Beiträge
 
Delphi 7 Personal
 
#1

Tabsheet aus dll erzeugen

  Alt 21. Okt 2004, 10:08
Habe in meinem Programm ein Pagecontrol mit namen "PageControlTool" auf diesem will ich mittels .dll ein Tabsheet erzeugen.

Hier der Code der libary:

Delphi-Quellcode:
library pl_html;

{ Wichtiger Hinweis zur DLL-Speicherverwaltung: ShareMem muß sich in der
  ersten Unit der unit-Klausel der Bibliothek und des Projekts befinden (Projekt-
  Quelltext anzeigen), falls die DLL Prozeduren oder Funktionen exportiert, die
  Strings als Parameter oder Funktionsergebnisse übergeben. Das gilt für alle
  Strings, die von oder an die DLL übergeben werden -- sogar für diejenigen, die
  sich in Records und Klassen befinden. Sharemem ist die Schnittstellen-Unit zur
  Verwaltungs-DLL für gemeinsame Speicherzugriffe, BORLNDMM.DLL.
  Um die Verwendung von BORLNDMM.DLL zu vermeiden, können Sie String-
  Informationen als PChar- oder ShortString-Parameter übergeben. }

  

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ComCtrls, ExtCtrls, TabNotBk, ImgList;

var
 TabSheetTest: TTabSheet;

{$R *.res}

procedure Test;
begin
TabSheetTest := TTabSheet.Create((FindComponent('PageControlTool') as TPageControl).Name);
TabSheetTest.PageControl := (FindComponent('PageControlTool') as TPageControl).Name;
TabsheetTest.Caption := 'Test';
TabsheetTest.Name := 'TabSheetTool1';
end;

exports Test;

begin
end.
nur bei compilieren meckert er, das findcomponent ein undefinert bezeichner ist, was ja auch irgendwie logisch ist, ich habe gelesen es liegt am fehlenden Form, dessen Methode "FindComponent" nunmal ist.
Aber wie kann ich das realiseren?

Dt2158
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Tabsheet aus dll erzeugen

  Alt 21. Okt 2004, 10:11
Hi,

du exportiest eine Prozedur, die einen Parameter vom Typ TPageControl hat. Das PageControl benutzt Du dann als Parent für Dein Tabsheet.
Dein Hauptprogramm übergibt dann das Ziel-PageControl der DLL beim Aufruf.

Aber vorsicht: Die DLL und Dein Programm sollten dann möglichst mit der selben Delphi-Version kompiliert werden, da die TPageControl Klassen sich sonst möglicherweise unterscheiden (das führt dann zu Fehlern).

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Dt2158

Registriert seit: 23. Nov 2002
Ort: Berlin
40 Beiträge
 
Delphi 7 Personal
 
#3

Re: Tabsheet aus dll erzeugen

  Alt 21. Okt 2004, 11:08
also hab mal so meine dll gemacht!
Delphi-Quellcode:
library pl_html;

{ Wichtiger Hinweis zur DLL-Speicherverwaltung: ShareMem muß sich in der
  ersten Unit der unit-Klausel der Bibliothek und des Projekts befinden (Projekt-
  Quelltext anzeigen), falls die DLL Prozeduren oder Funktionen exportiert, die
  Strings als Parameter oder Funktionsergebnisse übergeben. Das gilt für alle
  Strings, die von oder an die DLL übergeben werden -- sogar für diejenigen, die
  sich in Records und Klassen befinden. Sharemem ist die Schnittstellen-Unit zur
  Verwaltungs-DLL für gemeinsame Speicherzugriffe, BORLNDMM.DLL.
  Um die Verwendung von BORLNDMM.DLL zu vermeiden, können Sie String-
  Informationen als PChar- oder ShortString-Parameter übergeben. }



uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ComCtrls, ExtCtrls, TabNotBk, ImgList;

var
 TabSheetTest: TTabSheet;

{$R *.res}

procedure Test(pTool: TPageControl);
begin
TabSheetTest := TTabSheet.Create(pTool);
TabSheetTest.PageControl := pTool;
TabsheetTest.Caption := 'Test';
TabsheetTest.Name := 'TabSheetTool1';
end;

exports Test;

begin
end.
das hauptprogramm:
Delphi-Quellcode:
interface

...

 procedure Test(pTool: TPageControl);

implementation

 procedure Test(pTool: TPageControl); external 'pl_html.dll';

...
...
...

procedure TMainForm.Button1Click(Sender: TObject);
begin
 test(pagecontrol_tools);
end;

fehlermeldung
Zitat:
bla bla Converterror: "Tfont kann nicht tfont zugewiesen werden" blabla
logisch!

aber was nun?
  Mit Zitat antworten Zitat
Benutzerbild von Treffnix
Treffnix

Registriert seit: 25. Jun 2003
Ort: AC
740 Beiträge
 
Delphi 7 Professional
 
#4

Re: Tabsheet aus dll erzeugen

  Alt 21. Okt 2004, 11:23
Setz mal bei der DLL in den Projektoptionen unterm Reiter "Packages" den Haken "mit Laufzeitpackages aktualisieren"
  Mit Zitat antworten Zitat
Dt2158

Registriert seit: 23. Nov 2002
Ort: Berlin
40 Beiträge
 
Delphi 7 Personal
 
#5

Re: Tabsheet aus dll erzeugen

  Alt 21. Okt 2004, 11:45
ja also postiv ist, das dadurch die dll von 356 kb auf 12kb geschrumpft ist,
negativ ist das die meldung weiterhin kommt!
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.012 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

Re: Tabsheet aus dll erzeugen

  Alt 21. Okt 2004, 12:19
Frag mich nicht warum, aber wenn du vor der PageControl-Zuweisung TabSheetTest.ParentFont := False; schreibst, funktioniert es.

P.S. Achtung: Bei "mit Laufzeitpackages aktualisieren" müssen die Vcl-Bpls bei Weitergabe des Programms mitgegeben werden!!!
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von Treffnix
Treffnix

Registriert seit: 25. Jun 2003
Ort: AC
740 Beiträge
 
Delphi 7 Professional
 
#7

Re: Tabsheet aus dll erzeugen

  Alt 21. Okt 2004, 12:19


Versuch mal bei der Exe das gleiche. Ich bin mir ziemlich sicher, dass das Problem damit zu tun hatte. Welche Packages stehen denn bei dir in dem Edit unter dem Haken?
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.012 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

Re: Tabsheet aus dll erzeugen

  Alt 21. Okt 2004, 12:22
Zitat von Treffnix:


Versuch mal bei der Exe das gleiche. Ich bin mir ziemlich sicher, dass das Problem damit zu tun hatte. Welche Packages stehen denn bei dir in dem Edit unter dem Haken?
Sauber! Klappt... (hab die Vcl und die Rtl drin)
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Dt2158

Registriert seit: 23. Nov 2002
Ort: Berlin
40 Beiträge
 
Delphi 7 Personal
 
#9

Re: Tabsheet aus dll erzeugen

  Alt 22. Okt 2004, 08:45
jo geht
danke
aber was heißt die einstellung überhaupt?
die exe ist jetzt statt 800 kb nur noch 79 kb groß, läuft die auch auf jedem anderen system?? (Laufzeitpackage?)

Ich frage mich wenn alle projekte so um den faktor 10 verkleinert werden können, warum regen sich dann alle über die großen ausgabedateien auf, da muss doch ein hacken sein?
  Mit Zitat antworten Zitat
Dt2158

Registriert seit: 23. Nov 2002
Ort: Berlin
40 Beiträge
 
Delphi 7 Personal
 
#10

Re: Tabsheet aus dll erzeugen

  Alt 22. Okt 2004, 10:17
also hab mich kundig gemacht, das mit laufzeitpackages kommt für mich nicht in frage, da ich gerne nur eine exe weitergeben möchte und nicht erst noch runtime files mitliefern muss!

das mit dem Parentfont funktioniert zwar, liefert aber beim beenden eine fehlermeldung
  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:12 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