AGB  ·  Datenschutz  ·  Impressum  







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

.dcu Datei aus .pas erstellen

Ein Thema von Yheeky · begonnen am 7. Jan 2007 · letzter Beitrag vom 9. Jan 2007
Antwort Antwort
Seite 4 von 4   « Erste     234   
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#31

Re: .dcu Datei aus .pas erstellen

  Alt 8. Jan 2007, 18:21
Zitat von mkinzler:
Liegt die ToolsApi auch im Bibliothekspfad? (Darf nicht)
Vielleicht liegt es auch an Vista.
Das eigentliche Problem ist, dass das Package in ein Design- und ein Runtime-Package gesplittet werden muss. Man kann zur Laufzeit (eigenes Programm) keinen Designtime-Code (Code der in der IDE läuft) nutzen. Das untersage die Lizenz und Borland hat das auch technisch verhindert.

Zitat:
Aha, davon habe ich auch schonmal gehört. Leider habe ich es auch mit Anleitung nicht hinbekommen...könntest du mir da womöglich helfen?
  • 1. Öffne die Projektoptionen des Packages und wähle unter "Verwenden für" den Eintrag "Laufzeit" aus. Dialog mit OK bestätigen.
  • 2. Entferne "designide" aus der requires-Liste
  • 3. Kopiere die SmartListView Unit und benenne die Kopie mit "SmartListViewReg.pas"
  • 4. Öffne die original Unit und entferne den "DesignEditors" und "DesignIntf" (sofern verwendet) aus den Uses-Klauseln.
  • 5. Entferne den PropertyEditor und die Register-Funktion
  • 6. Kompiliere das Package (alles was Fehler meldet einfach entfernen)
  • 6. Erzeuge ein neues Package (Datei/Neu/Package)
  • 7. Öffne die Projektoptionen und wähle unter "Verwenden für" den Eintrag "Entwurfszeit" aus. Dialog mit OK bestätigen.
  • 8. Füge "designide" zur requires-Liste hinzu
  • 9. Füge das Laufzeit-Package zur requires-Liste hinzu
  • 10. Füge die SmartListViewReg.pas zum Entwurfszeitpackage hinzu
  • 11. Öffne die SmartListViewReg.pas und entferne die Komponente, behalte aber alles, was du vorhin aus der anderen Datei entfernt hast.
  • 12. Füge die original-Unit in die uses-Klausel der SmartListViewReg.pas Datei hinzu.
  • 13. (Kompiliere und) Installiere das Laufzeitpackage


Ach ja, und lösche alle .dcu Dateien die du aus dem ToolsAPI Ordner erzeugt hast.
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#32

Re: .dcu Datei aus .pas erstellen

  Alt 8. Jan 2007, 19:05
Hi jbg,

wow, super Beschreibung...danke, dass du dir soviel Zeit genommen hast.
Klingt auch alles logisch, nur leider wird immer noch die Proxies.dcu vermisst

Habe dir mal einen Screenshot vom Aufbau meiner Packages gemacht. Das Package SmartLV ist das Laufzeit und SmartLV_D10 ist das Entwurfspackage, welches ich kompiliere/installiere.
Miniaturansicht angehängter Grafiken
screen_776.jpg  
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#33

Re: .dcu Datei aus .pas erstellen

  Alt 8. Jan 2007, 19:41
Zitat von Yheeky:
nur leider wird immer noch die Proxies.dcu vermisst
Das tritt bei mir nicht auf.
Angehängte Dateien
Dateityp: zip smartlv_195.zip (11,5 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#34

Re: .dcu Datei aus .pas erstellen

  Alt 8. Jan 2007, 20:37
Es ist vollbracht!
Nun geht´s! ABER!!!

Ich musste bei den beiden Packages die Einstellungen ändern. Ich musste das Entwurfspackage zum Laufzeitpackage machen und umgekehrt. Kannst du dir das erklären?
Nun funktioniert alles. Ich denke ich habe da nun auch etwas bei der Thematik durchgeblickt. Habe soeben auch noch eine eigene gestrickte Version OHNE DesignIntf und DesignEditors hinbekommen.

Danke nochmal an jbg und allen anderen, die mir hier geholfen haben!
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#35

Re: .dcu Datei aus .pas erstellen

  Alt 8. Jan 2007, 20:43
Zitat von Yheeky:
Hi jbg,
wow, super Beschreibung...danke, dass du dir soviel Zeit genommen hast.
Klingt auch alles logisch, nur leider wird immer noch die Proxies.dcu vermisst
Hallo, ich habe Deine PN erhalten und antworte hier:

jbg hat Recht! So wie er es beschrieben hat funktioniert es.

Es gibt nur eine kleine Tücke, die der Programmierer eingebaut hat.
Er verwendet den Property Editor in der Komponente.
So was macht man nicht !!!

Es gibt wie immer im Leben mehrere Lösungen.
Ich stelle hier 2 Lösungen vor.
  1. Quick and Dirty
  2. So wird's richtig gemacht
Beim Ansehen des Quelltextes sieht man es geht eigentlich "nur" um den About Box Dialog der Komponente.

Im Property Editor steht bei About nur ein "(About)", wenn man in die Property geht, erscheint ein Button mit 3 Punkten [...].
Wird auf diesen Button gedrückt, erscheint ein Dialog in dem die Versionsnummer und das Copyright des Autors zu lesen ist.
  • Lösung 1: Quick and Dirty
    • Ansatz: "Wozu brauch ich einen About Dialog. Ist mir ja egal, wer die Komponente programmiert hat."
    • Vorgehensweise wie bei jbg:
      Entferne alles, was der Compiler anmeckert.
      Ich habe es durch Voranstellen eines "//" auskommentiert.
    • nur ein Package, das kann ein Entwurfs- und Laufzeitpackage sein.
    • -> Datei: "Quick and Dirty.zip" im Anhang
  • Lösung 2: So wird's richtig gemacht
    • Ansatz: "Ich möchte die Funktion des About Dialogs erhalten."
    • Vorgehensweise wie bei jbg:
      Entferne alles, was der Compiler anmeckert.
      Ich habe es durch Voranstellen eines "//" auskommentiert.
    • Ausnahmen:
      Delphi-Quellcode:
      ...
      type
        TSmartListView = class(TListView)
        private
      // FAbout: TAboutButtonProperty;
      // neues About Property
          FAbout: string;
      //--
      ...
      published
      ...
      // property About: TAboutButtonProperty read FAbout write FAbout;
      // neues About Property
          property About: string read FAbout write FAbout;
      //--
        end;
      ...
      Zusätzlich wird die komplette Register Procedure entfernt.
      Das Ganze wird in ein Package gepackt, was in den Optionen als "Laufzeitpackage" gekennzeichnet wird.
      Das Package kompiliert -> fertig mit dem Laufzeitpackage.
    • Nun brauchen wir ein Entwurfszeitpackage.
      In das Entwurfszeitpackage fügen wir nun die auskommentierten Stellen des Quelltextes ein.
    • Wichtig: Die Unit mit der Komponente muss natürlich in der uses Zeile eingebunden werden.
    • Wichtig: Die Zeile mit dem RegisterPropertyEditor muss geändert werden.
      Da die Eigenschaft About in der Komponente nun vom Typ string ist, muss beim Zuweisen des PropertyEditor natürlich auch string angegeben werden. -> TypeInfo(string)

      Das Package wird als Entwurfszeitpackage gekennzeichnet und lässt sich nun kompilieren.
    • -> Datei: "So wirds richtig gemacht.zip" ist im Anhang
    • Installation:
      1. Laufzeitpackage kompilieren. (Installieren geht nicht, da es nix zu installieren gibt.)
      2. Entwurfszeitpackage kompilieren
      3. Entwurfszeitpackage installieren -> Fertig

    Delphi-Quellcode:
    ...
    unit SmartListView_AboutDialog;

    interface

    uses
      Forms, Classes, Windows, SysUtils, SmartListView, DesignIntf, DesignEditors;

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

    procedure Register;

    implementation

    procedure Register;
    begin
      RegisterComponents('Samples', [TSmartListView]);
      RegisterPropertyEditor(TypeInfo(string), TSmartListView, 'ABOUT', TAboutButtonProperty);
    end;

    procedure TAboutButtonProperty.Edit;
    var
       AboutTitle,
       AboutDesc: String;
    begin
       AboutTitle := 'About TSmartListView';
       AboutDesc := 'TSmartListView (Version 1.01)'+
       ^M^M+'Copyright © 1999 by Fabio De Pasquale'+
       ^M+ '<depa@pronet.it>'+
       ^M+ '<mes@freemail.it>' +
       ^M+ 'Check "http://members.xoom.com/MadElectron"'+
       ^M+ 'for latest version.';

       Application.MessageBox(PChar(AboutDesc), PChar(AboutTitle), MB_OK+ MB_ICONINFORMATION);
    end;

    function TAboutButtonProperty.GetAttributes: TPropertyAttributes;
    begin
        Result := [paMultiSelect, paDialog, paReadOnly];
    end;

    function TAboutButtonProperty.GetValue: string;
    begin
       Result := '(About)';
    end;


    end.
Angehängte Dateien
Dateityp: zip so_wirds_richtig_gemacht_955.zip (9,7 KB, 8x aufgerufen)
Dateityp: zip quick_and_dirty_954.zip (6,4 KB, 6x aufgerufen)
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#36

Re: .dcu Datei aus .pas erstellen

  Alt 8. Jan 2007, 20:46
Zitat von Yheeky:
Es ist vollbracht!
Nun geht´s!
Glückwunsch.
Ich war mal wieder 5 Min. zu langsam

Trotzdem lies Dir mal meinen Beitrag durch, ich habe versucht es zu erklären.

In meinem Tutorial steht es ja eigentlich auch schon drinn.

Designtime Units (Property Editoren) haben in der Anwendung nichts zu suchen.
Deshalb muß man 2 Packages draus machen oder auf die Editoren verzichten.

mfg
MaBuSE
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#37

Re: .dcu Datei aus .pas erstellen

  Alt 8. Jan 2007, 21:07
Danke auch dir für die Mühe, die du dir gemacht hast. Die Beschreibung ist super!
Ich denke du könntest das noch in dein Tutorial nehmen (wenn es das ist, worauf ich auch in der PN eingegangen bin), denn das ist hier noch besser erklärt, finde ich.

Besten Dank nochmal!
  Mit Zitat antworten Zitat
9. Jan 2007, 18:58
Dieses Thema wurde von "Phoenix" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Hier gehts definitiv um Delphi
Antwort Antwort
Seite 4 von 4   « Erste     234   


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 20:36 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