Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Proxies.dcu-Problem (https://www.delphipraxis.net/2189-proxies-dcu-problem.html)

CalganX 11. Jan 2003 16:01


Proxies.dcu-Problem
 
Hi,
ich habe gerade die mdControls neuzuinstallieren. Dabei ergab sich das Problem, dass die Proxies-Unit nicht gefunden wurde (nur bei der Run-Time).
Ich habe mir den Tipp in der Library bereits durchgelesen, verstehe aber nicht, was ich machen muss, damit ich nun die Kompo nutzen kann?

Chris

sakura 11. Jan 2003 16:21

Na Du kennst die Suche doch inzwischen, oder :mrgreen: http://www.delphipraxis.net/viewtopic.php?t=1157

Christian Seehase 11. Jan 2003 16:24

Moin Sakura,

Zitat:

Ich habe mir den Tipp in der Library bereits durchgelesen, verstehe aber nicht, was ich machen muss, damit ich nun die Kompo nutzen kann?
;-)

sakura 11. Jan 2003 16:44

SORRY :oops: SORRY

Du musst zwei Komponenten-Sammlungen anlegen. Eine für die Delphi-IDE (Design-Time) und eine für die EXE (Run-Time) zur Kompilation.

Die Design-Time-Editoren, welche durch Delphi definiert werden, dürfen lt. Lizenz nicht ausserhalb der IDE eingesetzt werden. Um Missbrauch vorzubeugen hat Borland seit D6 diese auch forciert.

Deshalb musst Du das Komponenten-Package welches Du jetzt hast in zwei aufteilen. Für eines stellst Du im Projekt-Manager Run-Time Only ein und für eines Design-Time Only. Letzterem fügst Du noch die DCP DesignIDE hinzu.

Anschließend musst Du im Run-Time Package alle Aufrufe zu den Methoden aus den Units DesignIntf und DesignEditors entfernen. Unter Umständen musst Du die Registrierung dieser Komponenten neu schreiben.

CalganX 11. Jan 2003 17:17

Hä??? Wat???
Bitte noch einmal langsam... Erkläre mir das bitte etwas genauer, da ich immer noch nicht ganz verstanden habe, was du meinst...

Chris

CalganX 27. Feb 2003 19:15

*heul* Und wieder läuft nichts. Naja, jetzt habe ich zwei Packages: Eines mit Einstellungen "Designtime only" das andere mit "Runtime only". Ersteres hat das Package DesignIDE.dcp drin; das zweite nicht.
Wie mache ich jedoch jetzt dem Compiler das alles klar, denn er meint, die Proxies.dcu gibt es immer noch nicht...

Hat jemand da Hilfe?

Chris

PS: Denn eigentlich würde ich gerne das Programm ohne RTLs weitergeben...
PPS: Das hat mal problemlos geklappt: Install gedrückt; DsgnIntf ersetzt fertig. Keine RTLs nix... *help*

APP 28. Feb 2003 06:21

Hallo,
ich kann Dir nur posten, was ich durch meine 1. Komponente gelernt habe:

Seit Delphi 6 müssen Komponenten in ein Design- und Runtime-Package aufgeteilt werden,wenn sie Property-Editoren enthalten (aus lizenzrechtlichen Gründen, wegen der Designtime Editoren).

Ich verwende einen FileOpenDialog für ein Logfile.

Frei nach Jeff Overcash (TeamB):
http://community.borland.com/article...,27717,00.html [20.02.2003]

Das Designtime-Package (also FlappErrorReg) sollte folgendes Beinhalten:
1. Die Registrier-Anweisungen
2. alle Property Editioren
3. alle Komponenten Editoren
4. DesignIDE und alle RuntimePackages die die Komponente selbst benötigt

Das Runtime-Package (FlappError) sollte folgendes Beinhalten:
1. die Komponente selbst
2. Optional, alle Forms die die Editoren benützen können WENN die Komponente diese zur Laufzeit SELBST aufrufen kann.

Delphi-Quellcode:
package flappErr;

{$R *.res}
{$R 'FlappError.dcr'}
{$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}
{$DESCRIPTION 'Armin''s FlappException Component (c) Armin P'}
{$DESIGNONLY}
{$IMPLICITBUILD OFF}

REQUIRES
  rtl,
  designide,
  vcl,
  vclactnband,
  vclx,
  DJCL70,
  SMCmpntD7,
  indy;

CONTAINS
  FlappError IN 'FlappError.pas',         // Die Komponente
  FlappErrorReg IN 'FlappErrorReg.pas',   // Designtime Package
  FlappErrorDlg IN 'FlappErrorDlg.pas' {fFlappErrorDlg}, // graphischer Teil der Kompo
  Flapp_Utils IN 'Flapp_Utils.pas';
END.
Delphi-Quellcode:
UNIT FlappErrorReg;

{$include Compilers.inc}

INTERFACE

USES
{$IFDEF DELPHI_6_UP}
  DesignIntf,
  DesignEditors,
{$ELSE}
  dsgnintf,
{$ENDIF}
  FlappError;

  TYPE
  TLogFileNameProperty = CLASS(TPropertyEditor)
    FUNCTION AllEqual: boolean; OVERRIDE;
    PROCEDURE Edit; OVERRIDE;
    FUNCTION GetAttributes: TPropertyAttributes; OVERRIDE;
    FUNCTION GetValue: STRING; OVERRIDE;
    PROCEDURE SetValue(CONST Value: STRING); OVERRIDE;
  END;
PROCEDURE Register;

IMPLEMENTATION

USES SysUtils,
  Forms,
  Dialogs,
  Classes;

PROCEDURE Register;
BEGIN
  RegisterPropertyEditor(TypeInfo(STRING), TFlappError, 'LogFileName',
    TLogFileNameProperty);
  RegisterComponents('APP', [TFlappError]);
END;

FUNCTION TLogFileNameProperty.AllEqual: boolean;
VAR
  FirstVal                   : STRING;
  i                          : Integer;
BEGIN
  FirstVal := GetStrValue;
  Result := True;
  i := 1;
  WHILE Result AND (i < PropCount) DO
    BEGIN
      Result := Result AND (GetStrValueAt(i) = FirstVal);
      Inc(i);
    END;
END;

PROCEDURE TLogFileNameProperty.Edit;
VAR
  Dlg                        : TOpenDialog;
BEGIN
  Dlg := TOpenDialog.Create(Application);
  TRY
    WITH Dlg DO
      BEGIN
        Dlg.Filter := 'Logfile (*.log)|*.log|Textfile (*.txt)|*.txt|all Files|*.*';
        Dlg.DefaultExt := '*.log';
        Title := 'File for ' + TComponent(GetComponent(0)).Name;
        FileName := Value;
        IF Execute THEN Value := FileName;
      END;
  FINALLY
    FreeAndNil(Dlg);
  END
END;

FUNCTION TLogFileNameProperty.GetAttributes: TPropertyAttributes;
BEGIN
  Result := [paDialog]
END;

FUNCTION TLogFileNameProperty.GetValue: STRING;
BEGIN
  Result := GetStrValue;
END;

PROCEDURE TLogFileNameProperty.SetValue(CONST Value: STRING);
BEGIN
  SetStrValue(Value);
END;

END.
Delphi-Quellcode:
UNIT FlappError;

{$INCLUDE Compilers.inc}

INTERFACE

USES
...
...
  TFlappError = CLASS(TComponent)                // Hauptklasse FlappError
  PUBLIC                                        
    FOptions: TOptions;
    CONSTRUCTOR Create(Owner: TComponent); OVERRIDE;
    DESTRUCTOR Destroy; OVERRIDE;
  PRIVATE                                        
    FActive: Boolean;
    FEmailOptions: TEmailOptions;
    FLogFileOptions: TLogFileOptions;
    FFileName: STRING;
...
    PROPERTY LogFileName: STRING READ FFileName WRITE FFileName;   // Hier ist der Property-Editor aktiv
...
...
END.
Falls Dir das obige zu konfus erscheint, kann ich folgende Links empfehlen (dort gibt es auch Beispiele zum saugen):


Creating Custom Delphi Components, Part I


Creating Custom Delphi Components, Part II


Creating Custom Delphi Components, Part III


lG Armin

clownxx 18. Jun 2003 11:43

Hallo, ich verzweifle auch noch bald an der Datei dsgnintf. ich habe sie schon durch die zwei neuen Units ersetz, aber nun findet der Compiler die Proxies.dcu nicht!! Das ist ja echt wahnsin dass das alles so kompliziert ist...! Ich möchte ja nicht mal ein Package erstellen oder installieren, sondern einfach nur mein Projekt öffnen (TSMS) welches ich mit downgeloadet habe! Da ist aber gar kein Package dabei...! Nur Lauter PAS Dateien, also quellcode! Wie soll ich das denn machen??

Stanlay Hanks 18. Jun 2003 12:24

Willst du Komponenten installieren, oder was?

clownxx 18. Jun 2003 12:29

ne eigendlich nicht, ich wollte nur das Projekt, das damit erstellt wurde kompilieren, diese benötigt eben die Units. Installieren wollte ich das nicht!


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:45 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