Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Tutorials und Kurse (https://www.delphipraxis.net/36-tutorials-und-kurse/)
-   -   Delphi Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.dcu (https://www.delphipraxis.net/33572-loesung-das-leidige-problem-mit-der-dsgnintf-bzw-proxy-dcu.html)

MaBuSE 9. Nov 2004 10:56


Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.dcu
 
Das leidige Problem mit der DsgnIntf bzw. Proxy.dcu

In Delphi 5 Komponenten wird oft die Unit DsgnIntf verwendet.

Damit ist es möglich "Component-" und "Propertyeditoren" zu programmieren, die dann in der IDE ausgeführt werden. Diese Design-Editoren sind ausschließlich für die IDE lizenziert und dürfen nicht in die eigenen Programme, welche außerhalb der IDE laufen eingebunden werden. Da es einige Verstöße (meistens wohl aus Unwissenheit) gab, wurden die Units getrennt und durch "Compiler-Magic" können die Editoren jetzt nicht mehr in Programme außerhalb der IDE eingebunden werden.

Wenn keine Laufzeit-BPLs erstellt werden müssen, ist die Lösung relativ einfach:
Aus dem Eintrag DsgnIntf in der Uses Anweisung wird einfach DesignIntf, DesignEditors.

In das Package wird dann automatisch die teilweise benötigte designide.dcp eingefügt. Und alles läuft wieder.

Falls es dennoch zu der Fehlermeldung "DesignIntf.dcu konnte nicht gefunden werden" (oder "DesignEditors.dcu konnte nicht gefunden werden") auftritt, ist der Pfad (C:\Programme\Borland\Delphi7\Source\ToolsAPI)zu den Dateien nicht im Suchpfad.

Falls die Meldung "Proxy.dcu konnte nicht gefunden werden" auftritt, muss die designide.dcp dem Package hinzugefügt werden. (requires designide im dpk)

Damit sollten sich die Komponenten kompilieren lassen.

Abschließend ein Link zum BDN - wo etwas tiefer in die Materie eingegangen wird. (englisch)
http://community.borland.com/article...,27717,00.html


Quellcode für D5 und D7 erstellen
Mit einer einfachen $IFDEF kann man Quelltext erstellen, der unter Delphi 5 und Delphi 7 kompiliert.
Delphi-Quellcode:
{$ifdef ver150}
  DesignIntf, DesignEditors,
{$else}
  DsgnIntf,
{$endif}
Dieses einfache Verfahren hat aber den Nachteil, dass es nur zwischen Delphi 7 und dem Rest unterscheidet.

Besser ist folgendes Verfahren:

Bei der JCL bzw. JVCL gibt es eine JEDI.inc Datei die einfach eingebunden werden kann.
Hier werden Symbole definiert. (z.B. DELPHI6_UP bedeutet Delphi 6 oder neuer)

Delphi-Quellcode:
uses unit1;

{$I JEDI.inc}

interface

uses
  Unit1, {$IFDEF DELPHI6_UP}DesignIntf, DesignEditors{$ELSE} DsgnIntf{$ENDIF}, Unit3, Unit4;
...
Die JEDI.INC Datei kann hier bezogen werden:
http://cvs.sourceforge.net/viewcvs.p...1.19&view=auto

sakura 9. Nov 2004 10:57

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Man lese auch hier: http://www.delphipraxis.net/internal...ect.php?t=1157

...:cat:...

P.S.: Das Problem ist, dass die Leute die fragen einfach nie suchen :roll:

phlux 9. Nov 2004 11:08

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Zitat:

Zitat von sakura
P.S.: Das Problem ist, dass die Leute die fragen einfach nie suchen :roll:

Ich hoffe das war ironisch von dir gemeint, wenn man die Forensuche zu dem Problem nutzt kriegt man zwar genügend Threads, doch in der Mehrzahl davon wird man nur aufgefordert die Forensuche zu nutzen ( :thumb: ). Als ich einmal vor dem Problem stand habe ich die Lösung in einem Thread gefunden, der vom Topic her garnicht zu dem gepasst hat was ich gesucht hab, deshalb :arrow: Hut ab vor Herrn Dr.Mabuse, dass endlich mal einer auf die Idee gekommen ist einen handfesten Lösungsweg hier zu schreiben. :dp:

MaBuSE 9. Nov 2004 11:43

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Zitat:

Zitat von phlux
Zitat:

Zitat von sakura
P.S.: Das Problem ist, dass die Leute die fragen einfach nie suchen :roll:

:arrow: Hut ab vor Herrn Dr.Mabuse, dass endlich mal einer auf die Idee gekommen ist einen handfesten Lösungsweg hier zu schreiben.

Das war nur eine Reaktion auf den Hilferuf eines Suchenden ;-)

http://www.delphipraxis.net/images/common/icon_dp.gifSchon mal nach DsgnIntf gesucht?

sakura 9. Nov 2004 11:45

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Zitat:

Zitat von MaBuSE
Schon mal nach DsgnIntf gesucht?[/URL]

:mrgreen: Na ja, dann :| Dann empfehle ich die Suche in den Sparten CodeLib und Tutorials :stupid:

...:cat:...

Sanchez 9. Nov 2004 11:46

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Zitat:

Zitat von phlux
Ich hoffe das war ironisch von dir gemeint, wenn man die Forensuche zu dem Problem nutzt kriegt man zwar genügend Threads, doch in der Mehrzahl davon wird man nur aufgefordert die Forensuche zu nutzen ( :thumb: ).

Und das kommt genau daher, dass ständig gefragt wird, anstatt zu suchen.

Qnkel 13. Nov 2004 19:30

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Tolles Tutorial. In Delphi 7 Personal, was ich von der c't-CD habe, ist die DesignIntf aber nicht dabei, glaube ich.

Sie wird nicht gefunden! Ein Verzeichnis "ToolsAPI" existiert garnicht.

Edit:

Langsam werd ich wahnsinnig. Hab jetz n Delphi 3 Pro installiert um von da die DCU zu nehmen. Aber jetz kanna die PAS nicht kompilieren weil "TDesigner" fehlt...

Verdammt nochmal...

Robert_G 14. Nov 2004 00:27

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Zitat:

Zitat von Qnkel
Langsam werd ich wahnsinnig. Hab jetz n Delphi 3 Pro installiert um von da die DCU zu nehmen. Aber jetz kanna die PAS nicht kompilieren weil "TDesigner" fehlt...

Eine Delphi 3 DCU wir dnicht mit dem Delphi7 Compiler klarkommen (bzw anderesrum...)
Aber die Unit sollte es sogar bei der Personal geben...

Qnkel 14. Nov 2004 10:35

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Tada. Gibt es sie aber nicht :wall:

MaBuSE 15. Nov 2004 13:08

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Hier eine erweiterte Version, da es noch ein paar Probleme mehr gibt ;-)

Das leidige Problem mit der DsgnIntf bzw. Proxy.dcu

In Delphi 5 Komponenten wird oft die Unit DsgnIntf verwendet.

Damit ist es möglich "Component-" und "Propertyeditoren" zu programmieren, die dann in der IDE ausgeführt werden. Diese Design-Editoren sind ausschließlich für die IDE lizenziert und dürfen nicht in die eigenen Programme, welche außerhalb der IDE laufen eingebunden werden. Da es einige Verstöße (meistens wohl aus Unwissenheit) gab, wurden die Units getrennt und durch "Compiler-Magic" können die Editoren jetzt nicht mehr in Programme außerhalb der IDE eingebunden werden.

Wenn keine Laufzeit-BPLs erstellt werden müssen, ist die Lösung relativ einfach:
Aus dem Eintrag DsgnIntf in der Uses Anweisung wird einfach DesignIntf, DesignEditors.

In das Package wird dann automatisch die teilweise benötigte designide.dcp eingefügt. Und alles läuft wieder.

Falls es dennoch zu der Fehlermeldung "DesignIntf.dcu konnte nicht gefunden werden" (oder "DesignEditors.dcu konnte nicht gefunden werden") auftritt, ist der Pfad (C:\Programme\Borland\Delphi7\Source\ToolsAPI)zu den Dateien nicht im Suchpfad.

Falls die Meldung "Proxy.dcu konnte nicht gefunden werden" auftritt, muss die designide.dcp dem Package hinzugefügt werden. (requires designide im dpk)

Damit sollten sich die Komponenten kompilieren lassen.

Beim Benutzen der Komponenten wird Delphi aber wieder Probleme haben die Property Editoren in die Exe Datei einzubinden.
Eine relativ einfache Möglichkeit ist es die Property- bzw. Component Editoren von der Komponente zu trennen.
Dazu wird der DesignIntf, DesignEditors Abschnitt, der Quelltext der Property- und Component Editoren einfach aus der Datei entfernt und in eine neue Unit geschrieben. Der Unitname sollte dann unitname_dsgn.pas lauten. Dann ist klar was in der Unit enthalten ist.
Es ist ratsam auch die Register Prozedur in die unitname_dsgn zu verschieben.

Abschließend ein Link zum BDN - wo etwas tiefer in die Materie eingegangen wird. (englisch)
http://community.borland.com/article...,27717,00.html


Quellcode für D5 und D7 erstellen
Mit einer einfachen $IFDEF kann man Quelltext erstellen, der unter Delphi 5 und Delphi 7 kompiliert.
Delphi-Quellcode:
{$ifdef ver150}
  DesignIntf, DesignEditors,
{$else}
  DsgnIntf,
{$endif}
Dieses einfache Verfahren hat aber den Nachteil, dass es nur zwischen Delphi 7 und dem Rest unterscheidet.

Besser ist folgendes Verfahren:

Bei der JCL bzw. JVCL gibt es eine JEDI.inc Datei die einfach eingebunden werden kann.
Hier werden Symbole definiert. (z.B. DELPHI6_UP bedeutet Delphi 6 oder neuer)

Delphi-Quellcode:
uses unit1;

{$I JEDI.inc}

interface

uses
  Unit1, {$IFDEF DELPHI6_UP}DesignIntf, DesignEditors{$ELSE} DsgnIntf{$ENDIF}, Unit3, Unit4;
...
Die JEDI.INC Datei kann hier bezogen werden:
http://cvs.sourceforge.net/viewcvs.p...1.19&view=auto

Ein vollständiges Beispiel:

myLabel.pas:

Delphi-Quellcode:
unit myLabel;

interface

uses
  {$ifdef ver150} DesignIntf, DesignEditors,{$else} DsgnIntf,{$endif}
  SysUtils, Classes, Controls, StdCtrls;

type
  TmyLabelCaptionPropEditor = class(TStringProperty)
  public
    procedure Edit; override;
    function GetAttributes: TPropertyAttributes; override;
  end;

  TmyLabel = class(TLabel)
  private
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
    procedure About;
  published
    { Published-Deklarationen }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Beispiele', [TmyLabel]);
  RegisterPropertyEditor(TypeInfo(TCaption), TmyLabel, 'Caption', TmyLabelCaptionPropEditor);
end;

{ TmyLabelCaptionPropEditor }

procedure TmyLabelCaptionPropEditor.Edit;
begin
  inherited;
  SetStrValue(DateTimeToStr(now));
  Modified;
end;

function TmyLabelCaptionPropEditor.GetAttributes: TPropertyAttributes;
begin
  Result:= [paDialog];
end;

{ TmyLabel }

procedure TmyLabel.About;
begin
  MessageDlg('myLabel v1.0 (c) 2004, MaBuSE', mtInformation, [mbOk], 0);
end;

end.
Das lässt sich nun im Package mit Delphi 7 kompilieren.

verwendet man nun aber TmyLabel und kompiliert die Anwendung, so gibt es den Fehler
Fehlermeldung:
[Fataler Fehler] DesignEditors.pas(530): Datei nicht gefunden: 'Proxies.dcu'


Die Unit mylabel.pas muss nun in 2 units gesplittet werden:
unit myLabel_dsgn.pas:
Delphi-Quellcode:
unit myLabel_dsgn;

interface

uses
  SysUtils, Classes, Controls,
  {$ifdef ver150} DesignIntf, DesignEditors,{$else} DsgnIntf,{$endif}
  myLabel;

type
  TmyLabelCaptionPropEditor = class(TStringProperty)
  public
    procedure Edit; override;
    function GetAttributes: TPropertyAttributes; override;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Beispiele', [TmyLabel]);
  RegisterPropertyEditor(TypeInfo(TCaption), TmyLabel, 'Caption', TmyLabelCaptionPropEditor);
end;

{ TmyLabelCaptionPropEditor }

procedure TmyLabelCaptionPropEditor.Edit;
begin
  inherited;
  SetStrValue(DateTimeToStr(now));
  Modified;
end;

function TmyLabelCaptionPropEditor.GetAttributes: TPropertyAttributes;
begin
  Result:= [paDialog];
end;

end.
und myLabel.pas:
Delphi-Quellcode:
unit myLabel;

interface

uses
  SysUtils, Classes, Controls, StdCtrls, Dialogs;

type
  TmyLabel = class(TLabel)
  private
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
    procedure About;
  published
    { Published-Deklarationen }
  end;

implementation

{ TmyLabel }

procedure TmyLabel.About;
begin
  MessageDlg('myLabel v1.0 (c) 2004, MaBuSE', mtInformation, [mbOk], 0);
end;

end.
Nun funktioniert der Property Editor und das Kompilieren der Anwendung :-)

HavoC 17. Nov 2004 16:38

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Ich hab auch in D7 keinen ToolsAPI-Ordner ...
Da hilft auch das Update nichts :(
Brauch doch nur nen gescheiten Unicode-Handler :/

MaBuSE 17. Nov 2004 16:49

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Zitat:

Zitat von HavoC
Ich hab auch in D7 keinen ToolsAPI-Ordner ...

Das ist der Inhalt des ToolsApi Verzeichnisses:
Code:
C:\Programme\Borland\Delphi7\Source\ToolsAPI>dir

 Volume in Laufwerk C: hat keine Bezeichnung.
 Volumeseriennummer: MAB-USE

 Verzeichnis von C:\Programme\Borland\Delphi7\Source\ToolsAPI

12.10.2004  09:35    <DIR>         .
12.10.2004  09:35    <DIR>         ..
23.08.2002  08:00             7.363 ClxDesignWindows.pas
23.08.2002  08:00            24.762 ClxEditors.pas
23.08.2002  08:00             7.904 ClxSprigs.pas
23.08.2002  08:00             1.979 DesignConst.pas
23.08.2002  08:00            90.415 DesignEditors.pas
23.08.2002  08:00            48.713 DesignIntf.pas
23.08.2002  08:00             5.057 DesignMenus.pas
23.08.2002  08:00             6.460 DesignWindows.pas
23.08.2002  08:00            29.968 EditIntf.pas
23.08.2002  08:00             6.534 ExptIntf.pas
23.08.2002  08:00             3.931 FileIntf.pas
23.08.2002  08:00             5.286 IStreams.pas
23.08.2002  08:00            14.609 PropertyCategories.pas
23.08.2002  08:00            26.086 ToolIntf.pas
23.08.2002  08:00           164.917 ToolsAPI.pas
23.08.2002  08:00            70.675 TreeIntf.pas
23.08.2002  08:00            45.121 VCLEditors.pas
23.08.2002  08:00             7.812 VCLSprigs.pas
23.08.2002  08:00             3.539 VcsIntf.pas
23.08.2002  08:00             1.694 VirtIntf.pas
              20 Datei(en)       572.825 Bytes
               2 Verzeichnis(se), 23.435.892.620.288 Bytes frei
Das ist der Baum ;-)
Code:
C:\Programme\Borland\Delphi7>tree /A

Auflistung der Ordnerpfade
Volumenummer: MAB:USE
C:.
+---Bin
|   +---Netscap3
|   +---Netscp35
|   +---Netscp36
|   \---Netscp41
+---Demos
|   +---ActionBands
|   |   +---AlphaBlendMenus
|   |   +---DynaActionBands
|   |   \---MRU
|   +---Actions
|   +---ActiveX
|   |   +---COM+Event
|   |   |   +---Event
|   |   |   +---Publisher
|   |   |   \---Subscriber
|   |   +---OleAuto
|   |   |   +---AutoCtrl
|   |   |   +---AutoServ
|   |   |   +---SrvComp
|   |   |   |   +---PowerPoint
|   |   |   |   \---Word
|   |   |   \---Word8
|   |   +---OleCtnrs
|   |   +---ShellExt
|   |   +---SvrExtra
|   |   \---TRegSvr
|   +---Ado
|   |   +---AdoTest
|   |   +---Briefcase
|   |   +---Rds
|   |   \---Shape
|   +---AppEvents
|   +---Clx
|   |   +---BasicEd
|   |   +---ClxExplorer
|   |   +---QuickStart
|   |   +---StopWatch
|   |   \---TextBrowser
|   +---ConvertIt
|   +---CoolStuf
|   +---Corba
|   |   \---Idl2Pas
|   |       +---Account DOS
|   |       +---Account GUI
|   |       +---Any
|   |       +---Arrays
|   |       +---Attributes
|   |       +---Callbacks
|   |       +---CosNaming40
|   |       +---EJB
|   |       |   \---euroconverter
|   |       |       \---Java
|   |       |           +---classes
|   |       |           |   +---currencyconverter
|   |       |           |   +---dependency cache
|   |       |           |   \---Generated Source
|   |       |           |       \---currencyconverter
|   |       |           \---src
|   |       |               \---currencyconverter
|   |       +---Event Service
|   |       |   +---Pull Demo
|   |       |   +---Push Demo
|   |       |   \---Templates
|   |       +---Exceptions
|   |       +---Midas XML
|   |       +---Multiple Inheritence
|   |       +---NestedModules
|   |       +---Sequences
|   |       +---Single Inheritence
|   |       +---Structs
|   |       \---Unions
|   +---Cpl
|   |   \---Date
|   +---CustomDraw
|   +---Db
|   |   +---BkQuery
|   |   +---CacheDup
|   |   +---CsDemos
|   |   +---CtrlGrid
|   |   +---DbErrors
|   |   +---DbxExplorer
|   |   +---Filter
|   |   +---FishFact
|   |   +---GdsDemo
|   |   +---IBDemo
|   |   +---IBMastApp
|   |   +---IBX
|   |   |   +---Admin
|   |   |   +---CachedUp
|   |   |   +---IBSilentInstall
|   |   |   +---IBXEvents
|   |   |   +---SQLMonitor
|   |   |   \---ThreadedIBX
|   |   +---MastApp
|   |   +---MtsPool
|   |   +---SQLClientDataset
|   |   \---TextData
|   +---DbClx
|   |   +---fishfact
|   |   +---frames
|   |   \---mybasexplorer
|   +---Demolbl
|   +---Doc
|   |   +---Filmanex
|   |   +---Graphex
|   |   \---TextEdit
|   +---Docking
|   +---EarthPng
|   +---Football
|   +---Frames
|   |   \---Db
|   +---ImagView
|   +---Indy
|   +---Internet
|   |   +---ApacheConfigEditor
|   |   +---ApacheDSO
|   |   |   +---Authentication
|   |   |   +---Authorization
|   |   |   +---DBModule
|   |   |   +---Hello
|   |   |   +---logging
|   |   |   \---ModuleInit
|   |   +---CGIs
|   |   |   +---demo_bin
|   |   |   +---demo_html
|   |   |   \---demo_src
|   |   |       +---PageProducerCGI
|   |   |       +---PortScanner
|   |   |       \---WebRequestCGI
|   |   +---NetChat
|   |   +---rexec
|   |   +---WebServ
|   |   |   +---Apache
|   |   |   \---IIS
|   |   +---XMLTransform
|   |   +---XMLTransformClient
|   |   +---XMLTransformParam
|   |   \---XMLTransformProvider
|   +---IntraWeb
|   |   +---Features
|   |   |   +---Downloads
|   |   |   +---Files
|   |   |   \---Templates
|   |   +---FishFact
|   |   +---FishFactDM
|   |   +---FormData
|   |   +---Guess
|   |   +---GuessWB
|   |   +---Phonetics Customer Profiler
|   |   |   +---Files
|   |   |   \---Templates
|   |   \---WebSnapSurvey
|   +---Ipcdemos
|   +---Midas
|   |   +---Activefm
|   |   +---AdHoc
|   |   +---Aggregate
|   |   +---Alchtest
|   |   +---Brfcase
|   |   +---EmpEdit
|   |   +---InternetExpress
|   |   |   +---CustomerList
|   |   |   +---InetXCenter
|   |   |   +---InetXCustom
|   |   |   \---TroubleShoot
|   |   +---Intrcpt
|   |   +---Login
|   |   +---MstrDtl
|   |   +---Pooler
|   |   +---SetParam
|   |   \---SharedConn
|   +---Oracle8
|   |   \---OrTypes
|   +---Ownerlst
|   +---PropEdit
|   +---Quickrpt
|   |   +---Qr2
|   |   \---Qr3
|   +---ResXplor
|   +---RichEdit
|   |   +---Deu
|   |   +---Enu
|   |   \---Fra
|   +---ShellControls
|   +---Swat
|   +---TeeChart
|   +---Threads
|   +---ToolsAPI
|   |   +---ActionServices
|   |   +---Editor Keybinding
|   |   |   \---Emacs
|   |   +---INTAServices
|   |   +---PackageDemo
|   |   \---XPAppWiz
|   +---Virtual Listview
|   +---WebServices
|   |   +---DBServer
|   |   +---EchoService
|   |   |   +---Client
|   |   |   \---Server
|   |   |       \---Data
|   |   +---IssuesSample
|   |   +---PostTool
|   |   +---SOAPAttachments
|   |   |   +---Client
|   |   |   \---Server
|   |   +---SOAPDataModule
|   |   |   +---Client
|   |   |   +---Data
|   |   |   \---Server
|   |   \---SOAPHeaders
|   |       +---client
|   |       \---server
|   \---WebSnap
|       +---ActionField
|       +---ActionFieldTest
|       +---BioLife
|       +---CountryEditor
|       +---CountryReport
|       +---DBExpress
|       +---DispHandlers
|       +---DumpModules
|       +---Images
|       +---ImgBtnCountryEditor
|       +---ImgBtnProducer
|       +---Include
|       +---InternetExpress
|       +---LocateFileService
|       +---MasterDetail
|       +---MinApp
|       +---PhotoGallery
|       +---ProducerTemplates
|       +---ScriptObject
|       +---ScriptObjectTest
|       +---SessionTest
|       +---SimpleAdapter
|       +---TestSvrInfo
|       +---Tutorials
|       +---Util
|       +---WebDispatcher
|       +---WebMail
|       +---XMLBiolife
|       +---XMLBuilder
|       \---XSLProducer
+---Doc
+---Help
|   +---Examples
|   |   +---BatchMv
|   |   +---BatchMv2
|   |   +---Bitmap
|   |   +---Combobox
|   |   +---Jpeg
|   |   +---Menu
|   |   +---Menu2
|   |   +---Prgrsbar
|   |   +---RegIni
|   |   +---Scrollba
|   |   +---TabCntrl
|   |   \---Update
|   +---IntraWeb
|   \---Tools
+---Imports
|   \---Idl
+---Lib
|   +---Debug
|   |   \---IDL45
|   +---Delphi2
|   \---IDL45
+---MergeModules
+---Objrepos
|   +---CLXMdiApp
|   +---IntraWeb
|   |   +---Apache
|   |   +---Apache2
|   |   +---AppForm
|   |   +---Icons
|   |   +---ISAPI
|   |   +---PageForm
|   |   +---StandAlone
|   |   \---StandAloneDM
|   +---LogoApp
|   +---MdiApp
|   +---SdiApp
|   \---Win2KApp
+---Ocx
|   +---Chartfx
|   +---Isp
|   +---Servers
|   \---Vci
|       +---Form1
|       +---Impress
|       \---VSpell
+---Projects
|   \---Bpl
+---Rave5
|   +---DataLinks
|   +---Demos
|   +---Help
|   +---Lib
|   \---Server
\---Source
    +---Clx
    +---Decision Cube
    +---Indy
    +---Internet
    +---IntraWeb
    +---Property Editors
    +---Rtl
    |   +---Common
    |   +---Corba45
    |   +---Sys
    |   \---Win
    +---Samples
    +---Soap
    +---ToolsAPI
    +---Vcl
    +---WebMidas
    +---WebSnap
    \---Xml

HavoC 17. Nov 2004 18:23

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
das hilft mir nur recht wenig, weil mir das keine ToolsAPI bringt ^^

MaBuSE 17. Nov 2004 18:54

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Zitat:

Zitat von HavoC
das hilft mir nur recht wenig, weil mir das keine ToolsAPI bringt ^^

Und die darf ich Dir auch nicht geben, weder die Sourcen, noch die kompilierte Version. (Lizenzbedingungen von Borland)

Aber evtl findet sich ja jemand, der Deine Komponenten kompiliert.
Die erzeugten *.bpl. *.dcu und *.dcp kannst Du dann in Delphi einbinden und benutzen.
Das funktioniert!

Oder noch besser, schau mal nach, ob Du die Datei designide.dcp hast.

Wenn Du die im required bei dem Package einträgst, braucht er die Dateien auch nicht. Siehe Tutorial.

ich schrieb im Tutorial
In das Package wird dann automatisch die teilweise benötigte designide.dcp eingefügt. Und alles läuft wieder.


Probier das mal bitte aus. Ich werde dann das Tutorial anpassen.

Qnkel 17. Nov 2004 19:26

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Hey die hab ich. Einfach mit einbinden und dann soll das funzen?!

Qnkel 17. Nov 2004 19:33

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Ich raff nich wo ich das bei der Komponente eintragen soll...

HavoC 18. Nov 2004 05:10

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
die datei hab ich aber das package hat kein requires und ich weiß auch net so recht wohin damit :/

läuft das mit dem ToolsAPI Ordner von D6?

MaBuSE 29. Nov 2004 10:54

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Liste der Anhänge anzeigen (Anzahl: 3)
Zitat:

Zitat von Qnkel
Ich raff nich wo ich das bei der Komponente eintragen soll...

In der *.dpk Datei gibt es ein requires (wenn nicht anlegen ;-))


Ich habe mal das Beispiel von Oben vervollständigt.

Die drei Dateien habe ich unten nochmal als Atachment gepostet.
Bitte mit Delphi 6 / 7 Personal ausprobieren und Feedback hier ins Forum.
Ich werde dann das Tutorial anpassen.

Datei: myLabel.pas (s.o.)
Datei: myLabel_dsgn.pas (s.o.)
Datei: Package1.dpk (s.u.)

Delphi-Quellcode:
package Package1;

{$R *.res}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO ON}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS ON}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION ON}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$REFERENCEINFO ON}
{$SAFEDIVIDE OFF}
{$STACKFRAMES OFF}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
{$IMPLICITBUILD OFF}

requires
  rtl,
  designide;

contains
  myLabel_dsgn in 'myLabel_dsgn.pas',
  myLabel in 'myLabel.pas';

end.

MaBuSE 21. Jan 2005 13:17

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Zitat:

Zitat von MaBuSE
Bitte mit Delphi 6 / 7 Personal ausprobieren und Feedback hier ins Forum.
Ich werde dann das Tutorial anpassen.

Kann das mal bitte jemand Testen.
Danke.

MaBuSE 28. Feb 2005 08:08

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Zitat:

Zitat von MaBuSE
Zitat:

Zitat von MaBuSE
Bitte mit Delphi 6 / 7 Personal ausprobieren und Feedback hier ins Forum.
Ich werde dann das Tutorial anpassen.

Kann das mal bitte jemand Testen.
Danke.

Ich finde es schade, dass man sich die Mühe macht die Probleme (von z.B. Qnkel und HavoC) zu lösen,
und dann kein Feedback bekommt, ob es geklappt hat :cry:

TOC 26. Jun 2005 14:44

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Hi!

Zitat:

Zitat von MaBuSE
Zitat:

Zitat von MaBuSE
Zitat:

Zitat von MaBuSE
Bitte mit Delphi 6 / 7 Personal ausprobieren und Feedback hier ins Forum.
Ich werde dann das Tutorial anpassen.

Kann das mal bitte jemand Testen.
Danke.

Ich finde es schade, dass man sich die Mühe macht die Probleme (von z.B. Qnkel und HavoC) zu lösen,
und dann kein Feedback bekommt, ob es geklappt hat :cry:

Ich werd´s mal testen, den genau das Problem hab ich mit meiner neuen TDataList-Komponente und Delphi 7 Personel. Bei meinem Delphi 3.0 Pro klappt alles ohne jedes Problem. Echt ärgerlich das 7.0 da solche Probleme macht. ToolsApi hab ich leider auch nit...

Ich hoffe Du beobachtest Deinen Thread noch...

Grüße von TOC!

Nils_13 26. Jun 2005 15:32

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Zitat:

Zitat von TOC
Hi!

Zitat:

Zitat von MaBuSE
Zitat:

Zitat von MaBuSE
Zitat:

Zitat von MaBuSE
Bitte mit Delphi 6 / 7 Personal ausprobieren und Feedback hier ins Forum.
Ich werde dann das Tutorial anpassen.

Kann das mal bitte jemand Testen.
Danke.

Ich finde es schade, dass man sich die Mühe macht die Probleme (von z.B. Qnkel und HavoC) zu lösen,
und dann kein Feedback bekommt, ob es geklappt hat :cry:

Ich werd´s mal testen, den genau das Problem hab ich mit meiner neuen TDataList-Komponente und Delphi 7 Personel. Bei meinem Delphi 3.0 Pro klappt alles ohne jedes Problem. Echt ärgerlich das 7.0 da solche Probleme macht. ToolsApi hab ich leider auch nit...

Ich hoffe Du beobachtest Deinen Thread noch...

Grüße von TOC!

Sieht nicht so aus.

MaBuSE 27. Jun 2005 06:45

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Zitat:

Zitat von Nils_13
Zitat:

Zitat von TOC
Echt ärgerlich das 7.0 da solche Probleme macht. ToolsApi hab ich leider auch nit...

Ich hoffe Du beobachtest Deinen Thread noch...

Grüße von TOC!

Sieht nicht so aus.

@Nils_13: Was sieht nicht so aus?

@TOC: D7 macht nicht solche Probleme !!! Nur die Personal Edition ist abgespeckt, weil kostenlos. Klappts?

TOC 27. Jun 2005 14:07

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Hi!

Zitat:

Zitat von MaBuSE
@TOC: D7 macht nicht solche Probleme !!! Nur die Personal Edition ist abgespeckt, weil kostenlos. Klappts?

@Mabuse :

Hab aus versehen die Diskette mit Deiner Label-Komponente gelöscht und konnte es nit Testen :pale: ! Hab´s mir aber grad noch mal runtergeladen.

Vielen Dank für Deinen Thread, Du hast mir echt weitergeholfen. Nämlich mit dem Link auf Borlands Erklärung zu dem Thema. Ich hab mir das aufmerksam durchgelesen und nur eine Stunde (!) gebraucht um meine TDataList-Komponente unter D7 zum laufen zu bringen. Aber wer kein English kann hat geloost :oops: !

Demnächst gibts in OpenSource ´nen neuen Thread mit all meinen Komponenten im Packet für Delphi 3.0 oder 7.0 :drunken: !

Danke nochmal :thumb: !

Grüße von TOC

MaBuSE 27. Jun 2005 14:18

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Zitat:

Zitat von TOC
Hab aus versehen die Diskette mit Deiner Label-Komponente gelöscht und konnte es nit Testen :pale: ! Hab´s mir aber grad noch mal runtergeladen.

Disketten :shock: Du meinst diese schwarzen Plastik Dinger mit der Magnetscheibe drinn?
Ich habe gar kein Diskettenlaufwerk mehr im Rechner :mrgreen:

Zitat:

Zitat von TOC
Vielen Dank für Deinen Thread, Du hast mir echt weitergeholfen. Nämlich mit dem Link auf Borlands Erklärung zu dem Thema. Ich hab mir das aufmerksam durchgelesen und nur eine Stunde (!) gebraucht um meine TDataList-Komponente unter D7 zum laufen zu bringen. Aber wer kein English kann hat geloost :oops: !

Nichts zu Danken, gern geschehen. Wissen ist zum Weitergeben da. Ich profitiere ja genauso von den Antworten der Anderen.

Zitat:

Zitat von TOC
Demnächst gibts in OpenSource ´nen neuen Thread mit all meinen Komponenten im Packet für Delphi 3.0 oder 7.0 :drunken: !

Schreibst Du dann bitte noch, ob das mit dem Einbinden der designide.dcp funktioniert?
Dann kann ich dieses Tutorial noch mal in einen Text zusammenfassen.

Danke

TOC 28. Jun 2005 14:44

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Hi Mabuse!

Zitat:

Zitat von MaBuSE
Disketten :shock: Du meinst diese schwarzen Plastik Dinger mit der Magnetscheibe drinn?
Ich habe gar kein Diskettenlaufwerk mehr im Rechner :mrgreen:

Kicher! Nit alle Menschen sind Millionäre! Kann mir zur Zeit keinen USB-Stick leisten und auch keine Memory-Card! Ich bin völlig pleite :pale: ! Und hier im NetCafe kostet das brennen auf ´ne CD immerhin 1.50 Euro! Da is ne Diskette ´ne billige alternatieve (für ganz ganz ganz kleine Datenmengen :stupid: )!

Zitat:

Zitat von MaBuSE
Nichts zu Danken, gern geschehen. Wissen ist zum Weitergeben da. Ich profitiere ja genauso von den Antworten der Anderen.

Das seh ich auch so, da sind wir uns einig. Deshalb sind auch ALLE meine Programme OpenSource!

Zitat:

Zitat von MaBuSE
Schreibst Du dann bitte noch, ob das mit dem Einbinden der designide.dcp funktioniert?
Dann kann ich dieses Tutorial noch mal in einen Text zusammenfassen.

Ja, ich hab´s getestet. Ich konnte Deine Label-Komponente problemlos instalieren und verwenden, auch kompilieren kein Problem. Delphi fügt die Designide.dcp tatsächlich automatisch hinzu (teilweise).
Allerdings mußte ich die Komponente mit 'Komponente/Komponente installieren' einbinden, weil das mit Deinem Package1.dpk nit klappt.

Folgendes steht in Deinem Package :

Delphi-Quellcode:
package Package1;

{$R *.res}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO ON}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS ON}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION ON}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$REFERENCEINFO ON}
{$SAFEDIVIDE OFF}
{$STACKFRAMES OFF}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
{$IMPLICITBUILD OFF}

requires
  rtl;

contains
  Unit1 in 'Unit1.pas',
  Unit2 in 'Unit2.pas';

end.
Und das versteh ich nit! Diese Units 1 und 2 fehlen aber. Im Packet sollte aber folgendes stehen:

Delphi-Quellcode:
requires
  rtl,
  designide;

contains
  myLabel_dsgn in 'myLabel_dsgn.pas',
  myLabel in 'myLabel.pas';

end.
So stehts ja auch in Deinem Beispiel. Das sollte funktionieren wenn man einfach doppelt aufs Packet klickt!
Hast Du vielleicht aus versehen einen Fehler beim UpLoad gemacht? Oder hab ich was falsch verstanden?

Grüße von TOC!

MaBuSE 28. Jun 2005 14:53

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Zitat:

Zitat von TOC
Ja, ich hab´s getestet. Ich konnte Deine Label-Komponente problemlos instalieren und verwenden, auch kompilieren kein Problem. Delphi fügt die Designide.dcp tatsächlich automatisch hinzu (teilweise).

Dann ist es möglich alle Komponenten die bisher an der fehlenden ToolsAPI in der PE Version gescheitert sind zu kompilieren und zu benutzen. :cool:

Ich werde das Tutorial bei Gelegenheit überarbeiten und hier posten.

Danke für die Info.

TOC 28. Jun 2005 15:03

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Hi!

Zitat:

Zitat von MaBuSE
Zitat:

Zitat von TOC
Ja, ich hab´s getestet. Ich konnte Deine Label-Komponente problemlos instalieren und verwenden, auch kompilieren kein Problem. Delphi fügt die Designide.dcp tatsächlich automatisch hinzu (teilweise).

Dann ist es möglich alle Komponenten die bisher an der fehlenden ToolsAPI in der PE Version gescheitert sind zu kompilieren und zu benutzen. :cool:

Ich werde das Tutorial bei Gelegenheit überarbeiten und hier posten.

Danke für die Info.

Jaa! Es klappt OHNE ToolsApi! Es ist tatsächlich sehr einfach: Man muß nur darauf achten das die Editoren in einer extra datei sind (und dort registriert werden ) und die eigentlich Komponente in einer anderen Datei. Ich glaube das ist der ganze Trick :drunken: !

Noch mal Danke für Deine Thread :thumb: !

Grüße von TOC!

King555 3. Feb 2006 16:54

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Ich habe alle Tipps in diesem Thread verfolgt, bekomme aber ein Designtime Package (AsyncPro) nicht unter Delphi 2005 Personal zum Laufen. Hat jemand eine Idee, was der Grund sein kann?

DesignIntf, DesignEditors und DsgnIntf gibt's nicht, designide.dcp ist als required eingebunden.

Nachdem ich alle Designsachen (außer aus dem required) rausgenommen habe, ist der Compiler bis zu folgender Zeile vorgestoßen:

TApdPacketStringProperty = class(TStringProperty)

Er findet nun "TStringProperty" nicht.

Ideen?

MaBuSE 6. Feb 2006 10:17

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Zitat:

Zitat von King555
Ich habe alle Tipps in diesem Thread verfolgt, bekomme aber ein Designtime Package (AsyncPro) nicht unter Delphi 2005 Personal zum Laufen. Hat jemand eine Idee, was der Grund sein kann?

DesignIntf, DesignEditors und DsgnIntf gibt's nicht, designide.dcp ist als required eingebunden.

Ich kann nur sagen, dass in der designide.dcp die *.dcu Dateien aus dem ToolsApi Verz. "eingebunden" sind und Designpackages sich damit bauen lassen.
Designpackages werden nur von der IDE verwendet. In Designpackages sind z.B. Komponenteneditoren, Eigenschaftseditoren, ... definiert.
Designpackages dürfen nicht in Laufzeitprojekte eingebunden sein.
Dann lassen sich die Laufzeitprojekte nicht mehr kompilieren.

Tip: Schau mal nach, ob Das Package wirklich nur als Designtimepackage definiert ist,
oder evtl. als Runtimpackage oder Run- und Desgintimepackage.

King555 6. Feb 2006 16:07

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Das entsprechende Package ist definitv nur ein Entwufszeitpackage, habe eben nachgeschaut. Die "designide.dcp" ist wie schon gesagt eingebunden.

Der Sinn und Zweck von Designpackages war mir schon bewusst.

MaBuSE 6. Feb 2006 16:10

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Zitat:

Zitat von King555
Das entsprechende Package ist definitv nur ein Entwufszeitpackage, habe eben nachgeschaut. Die "designide.dcp" ist wie schon gesagt eingebunden.Der Sinn und Zweck von Designpackages war mir schon bewusst.

Tut mir leid, dann kann ich Dir nicht hefen.
Ich habe hier im Moment keine D2005 PE zur Hand

MarcRB1975 17. Aug 2006 07:28

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Hallo MaBuSe,

verfolgst du das Thema noch? Hast Du vielleicht schon 2005PE zu Hand? :wink:

Ich hab nämlich auch das Problem mit DesignIntf in Delphi 2005 PE.

Ich versteh das auch nicht, weshalb dieses solche Probleme macht. Zum Beispiel hab ich eine Komponente ich 2005PE installiert, die mit dem DesignIntf problemlos zu recht kommt.
Er unterkringelt zwar DesignIntf im Source aber diese Komponente funktioniert ja auch.
Ich meine, wenn diese Komponente funktioniert, weshalb soll dann meine(unsere) Komponenten nicht reibungslos funktionieren. Es kann doch nicht sein, dass das an dem DesignIntf scheitert. Also... irgendwas machen wir doch da falsch?

Wenn es Dich interessiert, dann könnte ich dir ja mal einen Auszug des Source schicken, bei das installieren der Komponente geklappt hat. Einen Auszug deshalb, weil es sich um 4 "Units" handelt, die ich alle ausgedruckt habe. Insgesamt waren es über 100 DIN A4-Seiten. :roteyes:
Vielleicht erkennst Du ja dann als Profi, wie man das machen muss. Also... ich habe ja versucht das nachzuvollziehen, aber irgendwie klappt das nicht.
Ich muss aber dazu sagen, dass es vom Prinzip her genauso ist, wie du gesagt hast. Man muss die Units auslagern.

Wäre schön, wenn Du dich mal melden würdest.

Danke im Voraus.

MaBuSE 17. Aug 2006 08:13

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Zitat:

Zitat von MarcRB1975
verfolgst du das Thema noch? Hast Du vielleicht schon 2005PE zu Hand? :wink:

Ja ich verfolge das Thema noch. ;-)
Ich habe keine 2005 PE installiert. (nur die D2006 Ent ;-))

Ich habe im Moment nur etwas wenig Zeit :-(

Du kannst mir aber Deinen (kompilierfähigen) Source Auszug schicken. Ich schau mal drüber. Das braucht aber etwas Zeit.

Hast Du die *.dpk (Entwurfszeitpackage) im Requires angepasst?
Dort muß die designide eingebunden sein.

MarcRB1975 17. Aug 2006 18:31

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Ich glaube, das "leidige Problem mit der DsgnInft..." hat nun ENDLICH ein Ende gefunden. :bounce2:

Also... ich denke besonders als Anfänger hat man es ja nicht leicht.

Mir hat das jetzt aber absolut keine Ruhe gelassen und hab überlegt, und überlegt ... :roteyes:
Ich dachte halt, es kann nicht sein, das das absolut nicht möglich ist.

Ich habe viele Möglichkeiten/Varianten ausprobiert und siehe da.... sogar in Delphi 2005 PE (!!!) klappt das jetzt ENDLICH.

Vorab möchte ich noch schnell sagen, dass man die erstellen Packages in den LIB-Ordner kopieren muss.
Naja.. vielleicht gehts ja auch anders, wenn man irgendwo was ändert, aber so funktionierte es wenigstens.
Alle (!!) Units oder besser gesagt Packages MÜSSEN in der ENTWURFSZEIT erstellt werden.
Ich weiss, das hat MABuSE immer gesagt und so ist es ja auch schliesslich.

Also... das soo richtig zu erklären... mhhh... das fällt mir in der "Fachsprache" ja nicht einfach, weil ich mir das programmieren selbst angeeignet habe.
Damit aber andere nicht soo verzweifeln wie ich :wall: und diejenigen, denen die Geduld und die Nerven fehlen, denn man dreht da wirkich am Rad bei diesem Problem, für die werde ich morgen bzw. am Wochenende eine PDF-Datei mit Screenshorts erstellen, in der ich alles beschreiben werde.

Schritt für Schritt, dass sogar Anfänger oder die, die das nicht so schnell kapieren - so wie ich - das verstehen werden.

Wenn es dann jemanden interessiert, kann er sich die Datei runterladen.

Aber ich muss mich erst noch schlau machen, wie ich dann hier die PDF-Datei irgendwie einbinden kann, damit sie anderen zur Verfügung steht.

MaBuSE 18. Aug 2006 08:08

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Zitat:

Zitat von MarcRB1975
Ich habe viele Möglichkeiten/Varianten ausprobiert und siehe da.... sogar in Delphi 2005 PE (!!!) klappt das jetzt ENDLICH.

Herzlichen Glückwunsch :thumb:

Zitat:

Zitat von MarcRB1975
Vorab möchte ich noch schnell sagen, dass man die erstellen Packages in den LIB-Ordner kopieren muss.
Naja.. vielleicht gehts ja auch anders, wenn man irgendwo was ändert, aber so funktionierte es wenigstens.
Alle (!!) Units oder besser gesagt Packages MÜSSEN in der ENTWURFSZEIT erstellt werden.
Ich weiss, das hat MABuSE immer gesagt und so ist es ja auch schliesslich.

Nein, das ist nicht notwendig, ich erklär es nochmal in der nächsten Antwort.

Zitat:

Zitat von MarcRB1975
..., für die werde ich morgen bzw. am Wochenende eine PDF-Datei mit Screenshorts erstellen, in der ich alles beschreiben werde.
Schritt für Schritt, dass sogar Anfänger oder die, die das nicht so schnell kapieren - so wie ich - das verstehen werden.
Wenn es dann jemanden interessiert, kann er sich die Datei runterladen.
Aber ich muss mich erst noch schlau machen, wie ich dann hier die PDF-Datei irgendwie einbinden kann, damit sie anderen zur Verfügung steht.

Super. Da werden sich sicherlich einige freuen.

Die PDF einfach als Attachment Deinem Beitrag hinzufügen.
(über dem [Absenden] Button im Beitragseditor)

MaBuSE 18. Aug 2006 10:00

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Hier noch mal ein paar weitere Hinweise zu den Packages und den Units:
  • Der meisten Entwickler binden alle Units in die Anwendung ein und verwenden keine Laufzeitpackages.
    Für diese Entwickler reicht es völlig aus, wenn alle von der Komponente (/n Sammlung) benötigte Units in einem Dessingntimepackage (Entwurfszeit Package) gepackt werden.
    Dieses Package wird dann in Delphi eingebunden und die Komponenten können benutzt werden.

    Es muss beachtet werden, das die Units, die die Komponenten enthalten keine Teile der ToolsAPI (z.B. DsgnIntf) benutzen!!! Sonst bekommt man die Fehlermeldung wegen fehlender ToolsAPI Units beim Kompilieren der Anwendung.
  • Es gibt aber auch Entwickler die sogenannte Runtimepackages (Laufzeit Packages) verwenden.
    Hier müssen 2 Package erstellt werden.
    • Das Runtimepackage, das ausschließlich die Teile der Komponente beinhaltet. Es darf keine Unit enthalten sein die Teile der ToolsAPI (z.B. DsgnIntf) benutzt!!!
    • Das Designtimepackage, das das Runtimepackage einbeindet (requires) und nur die Dinge beinhaltet die die ToolsAPI benutzen. (Komponenten-Editoren, Property-Editoren, ...)
    Falls keine ToolsAPI verwendet wird kann natürlich auch ein kombiniertes Laufzeit- und Entwurfszeit Package erstellt werden.
  • Welche Dateien entstehen beim Kompilieren der Packages. und wozu sind diese gut?
    • *.bpl Dateien: BPL steht für Borland Package Library.
      Das ist eigentlich nur eine umbenannte *.dll Datei, die die eingebundenen Komponenten enthält.
      Diese Dateien sollten im Systempfad stehen. (%PATH%)
    • *.dcp Dateien: DCP steht für Delphi Compiled Package.
      In dieser Datei sind die kompilierten Informationen für den Compiler enthalten, um das Package in die Anwendung einzubinden.
      Diese Dateien sollten im Suchpfad von Delphi stehen.
      (Menü -> Tools -> Umgebungsoptionen... -> Bibliothek -> Bibliothekspfad)
    • *.dcu Dateien: Das sind die einzelnen kompilierten Units (*.pas Dateien).
      In dieser Datei sind die kompilierten Informationen für den Compiler enthalten, um die Unit in die Anwendung einzubinden.
  • Folgende Verzeichnisstruktur hat sich in der Praxis bewährt:
    Code:
    Komponentenname
    +--Source      <- hier ist der Quelltext enthalten
    !                  (z.B. MyComp_D7.dpk, MyComp_D2006.dpk, *.pas, *.res, *.dfm, ...)
    !
    +--Packages    <- hier werden die *.bpl Dateien abgelegt
    !                  (z.B. MyComp_D7.bpl, MyComp_D2006.bpl, ...)
    !
    +--LibD7        <- hier werden die kompilierten Delphi 7 Dateien
    !                  (z.B. MyComp_D7.dcp, *.dcu)
    !                  sowie eine Kopie aller verwendeten Resourcen abgelegt.
    !                  (z.B. *.dfm, *.res, *.dcr)
    !
    +--LibD2006     <- hier werden die kompilierten Delphi 2006 Dateien
    !                  (z.B. MyComp_D2006.dcp, *.dcu)
    !                  sowie eine Kopie aller verwendeten Resourcen abgelegt.
    !                  (z.B. *.dfm, *.res, *.dcr)
    !
    +--Help        <- hier liegt die Hilfe zu den Komponenten
                       (z.B. *.pdf, *.txt, *.hlp, ...)
    In der obigen Verzeichnisstruktur muß dann das Packages Verzeichnis in den Systempfad und das Lib Verzeichnis in den Delphi Suchpfad.
    Wichtig ist nur, das die *.bpl im Systempfad stehen und die *.dcu, *.dfm, ... im Delphi Suchpfad.
Ich hoffe, dass diese weiteren Informationen Euch helfen die Probleme zu meistern.

Viel Spaß
MaBuSE

MarcRB1975 19. Aug 2006 13:49

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Hallo Dr. Mabuse , :hi:

ich hab jetzt mein Tutorial fertig. Wie versprochen! :dancer:

Naja... Tutorial ist vielleicht nicht das richtige Wort. Ich habe halt alle Auszüge in eine PDF-Datei zusammengefasst, wie man vorgehen muss, damit das endlich klappt.

Eins bischen hab ich schon auch was geschrieben. :wink:

Was mich persönlich noch interessieren würde ist, wie kann man eigentlich, wenn man eine Komponente entwickelt, auf andere Zugreifen.

Also.. zum Beispiel:
Ich habe 5 Editfelder. In jedem Edit steht als Text etwas drin.

Mit einer erstellten Komponente möchte ich nun eine Listbox erzeugen, in der alle Texte der Edit´s drin stehen. In meiner Komponente, also (OI) möchte ich dann aus dieser erzeugten Listbox einen Text daraus auswählen können.
Aber irgendwie komm ich da nicht drauf.
Muss ich property als String? Edit? Listbox? festlegen? Irgendwie schaff ichs nicht.
Muss die Listbox (Createt) werden? mhhh...
:roll:

MaBuSE 21. Aug 2006 08:38

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Zitat:

Zitat von MarcRB1975
Was mich persönlich noch interessieren würde ist, wie kann man eigentlich, wenn man eine Komponente entwickelt, auf andere Zugreifen.

neues Thema -> neuer Thread
auf Komponente aus Komponente zugreifen

mandoki 10. Okt 2006 19:31

Re: Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

habe für ein früheres Projekt die D5 Komponente ALSTipDialog verwendet. Leider gelingt es mir nicht, trotz ausführlichen Lesens der Tipps hier und des Tutorial, diese für D7 entsprechend anzupassen (Trennung des Design). Hatte mich leider nie mit der Komponentenentwicklung auseinandergesetzt (was sich nun wohl rächt). :wall:

Hier mal der erste Teil der Unit:

Delphi-Quellcode:
unit ALSTDlg;

interface

uses
  {$IFDEF WIN32}Windows,{$ELSE}WinTypes, WinProcs,{$ENDIF}
  Messages, SysUtils, Classes, Graphics, Controls, Forms,
  DesignIntf, DesignEditors, Dialogs, INIFiles{$IFDEF WIN32}, Registry{$ENDIF};

type
  TALSShowPos = (posScreenCenter, posFormCenter);
  TTipLocation = (locEmbeded, {$IFDEF WIN32}locRegistry,{$ENDIF} locINIFile);
  TRegRoot = (CURRENT_USER,LOCAL_MACHINE,CURRENT_CONFIG);

  TTipDialogEditor = class(TDefaultEditor)
  public
    procedure ExecuteVerb(Index : Integer); override;
    function GetVerb(Index : Integer): string; override;
    function GetVerbCount : Integer; override;
    procedure Edit; override;
  end;

  TAbout = class(TPropertyEditor)
  public
    procedure Edit; override;
    function GetAttributes: TPropertyAttributes; override;
    function GetValue: string; override;
  end;

  TFileNameProperty = class (TStringProperty)
  public
      function getattributes: TPropertyattributes; override;
      procedure Edit; override;
  end;


  TALSTipDlg = class(TComponent)
  private
    FAbout       : TAbout;
    FDlgCaption  : string;
    FTipTitle    : string;
    FTips        : TStrings;
    FTipTitleFont : TFont;
    FTipFont     : TFont;
    FRegRoot     : TRegRoot;
    FRegKey      : string;
    FINIFile     : string;
    FINISection  : string;
    FTipsLocation : TTipLocation;
    FPanelColor  : TColor;
    FCRLFSubst   : string;
    FRandomTips  : boolean;
    FShowAtStartup: boolean;
    FPosition    : TALSShowPos;
  protected
    {$IFDEF WIN32}
    function ReadFromRegistry : boolean;
    {$ENDIF}
    function ReadFromINIFile : boolean;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure SetTipValues(Value: TStrings);
    procedure SetTitleFont(Value: TFont);
    procedure SetTipFont(Value: TFont);
    function Execute : boolean;
  published
    property About: TAbout read FAbout write FAbout;
    property DlgCaption: string read FDlgCaption write FDlgCaption;
    property TipTitle: string read FTipTitle write FTipTitle;
    property Tips: TStrings read FTips write SetTipValues;
    property TipTitleFont: TFont read FTipTitleFont write SetTitleFont;
    property TipFont: TFont read FTipFont write SetTipFont;
    {$IFDEF WIN32}
    property RegistryRoot: TRegRoot read FRegRoot write FRegRoot default CURRENT_USER;
    property RegistryKey: string read FRegKey write FRegKey;
    {$ENDIF}
    property INIFile: string read FINIFile write FINIFile;
    property INISection: string read FINISection write FINISection;
    property TipsLocation: TTipLocation read FTipsLocation write FTipsLocation default locEmbeded;
    property PanelColor: TColor read FPanelColor write FPanelColor default
                         {$IFDEF VER120}clInfoBk {$ELSE} TColor($00E1FFFF){$ENDIF};
    property CRLFSubstitute : string read FCRLFSubst write FCRLFSubst;
    property RandomTips: boolean read FRandomTips write FRandomTips default False;
    property ShowAtStartup: boolean read FShowAtStartup write FShowAtStartup default True;
    property Position: TALSShowPos read FPosition write FPosition;
  end;

procedure Register;

implementation

uses TipFrm;
{$IFDEF WIN32}
  {$R ALSTDLG.R32}
{$ELSE}
  {$R ALSTDLG.R16}
{$ENDIF}

procedure Register;
begin
  RegisterComponents('Samples', [TALSTipDlg]);
  RegisterComponentEditor(TALSTipDlg, TTipDialogEditor);
  RegisterPropertyEditor(TypeInfo(TAbout), TALSTipDlg, 'ABOUT', TAbout);
  RegisterPropertyEditor(Typeinfo(string), TALSTipDlg, 'INIFile', TFileNameProperty);
end;
Welche Teile müssten den nun in den dsgn teil ausgelagert werden? :gruebel:

Habe 3 andere Free 'Tip of the Day' Komponenten getestet, aber leider waren diese alle nicht so funktionell und flexibel wie die ALSTipDialog.

Hat die vielleicht mal jemand bereits für Delphi 7 angepasst?
Oder kennt jemand eine ähnlich gute Komponente (keine jv,lmd,max)?


Hänge den Sourcecode der ALSTipDialog mal dran..

Gruß mandoki


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:47 Uhr.
Seite 1 von 2  1 2      

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