Delphi-PRAXiS

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 keine VCLSMP.dpk (https://www.delphipraxis.net/142816-keine-vclsmp-dpk.html)

Mattze 4. Nov 2009 10:46


keine VCLSMP.dpk
 
Hallo,

ich muss TSpinEdit in der Spin.pas ändern. (In einer davon abgeleiteten Komponente wird auf Variable zugegriffen, die in der TSpinEdit private sind, also muss ich die öffentlich machen - oder geht das auch anders?)
Dann müsste ich das Package VCLSMP damit neu compilieren und installieren.
Dazu brauche ich die VCLSMP.DPK und die kann ich nicht finden.
Ich habe Delphi 7 pro. Wo muss ich suchen oder ist die da nicht dabei?

Gruß
Mattze

Bernhard Geyer 4. Nov 2009 10:59

Re: keine VCLSMP.dpk
 
Du kannst keine von Borland/Codegear/Emba-Dingsbums gelieferten Packages neu übersetzen.

Copiere die Sourcen von TSpinEdit um mach dein eigenes TMySpinEdit draus mit entsprechenden wünschen.

Mattze 4. Nov 2009 11:17

Re: keine VCLSMP.dpk
 
Hallo und danke für die schnelle Antwort!

Das habe ich fast geahnt, aber ich wollte doch mal fragen...

Wenn man das rauszieht (Habe ich sicherheitshalber schon gemacht - die Spin.pas neu gebastelt.), dann wird das so elendig viel mit "doppelten Ressourcen" (also muss man die Dinger auch umbenennen) usw.

Gruß
Mattze

uligerhardt 4. Nov 2009 12:01

Re: keine VCLSMP.dpk
 
Zitat:

Zitat von Mattze
In einer davon abgeleiteten Komponente wird auf Variable zugegriffen, die in der TSpinEdit private sind,

Dumme Frage: Welche denn? In meinem Spin.pas (D2007) sind alle privaten Membervariablen von TSpinEdit per public/published-Property zugänglich.

Mattze 4. Nov 2009 14:08

Re: keine VCLSMP.dpk
 
Hi,

ich brauche FIncrement: LongInt; und FEditorEnabled: Boolean; und die sind eben leider privat deklariert. (D7 pro)

Gruß
Mattze

uligerhardt 4. Nov 2009 14:32

Re: keine VCLSMP.dpk
 
Zitat:

Zitat von Mattze
ich brauche FIncrement: LongInt; und FEditorEnabled: Boolean; und die sind eben leider privat deklariert. (D7 pro)

Ich hab grad noch ein D5-Spin.pas gefunden. Das enthält
Delphi-Quellcode:
  published
    // ...
    property EditorEnabled: Boolean read FEditorEnabled write FEditorEnabled default True;
    property Enabled;
    property Font;
    property Increment: LongInt read FIncrement write FIncrement default 1;
Also Lese- und Schreibzugriff - was willst du mehr? :shock:

Mattze 4. Nov 2009 14:49

Re: keine VCLSMP.dpk
 
Hi,

na ja, ich muss einige interne SpinEdit-Methoden ändern. Im Original werden da natürlich diese privaten Variablen
benutzt und das wollte ich eben auch - irgendwie. Halte ich für den saubereren Weg, aber geht wohl nicht.
Wenn ich da die Properties benutze, wird wieder erst mal eine Funktion aufgerufen, um die aus den privaten Variablen
auszulesen. Dieses "hintenrum durchs Auge" wollte ich vermeiden.

Mal mit den Properties versuchen und gucken, ob's ordentlich, auch zeitmäßig, funktioniert.
Müsste aber sogar, da es neben dem ganzen Prozeduraufruf nur eine kleine Zuweisung ist.

Gruß
Mattze

uligerhardt 4. Nov 2009 15:07

Re: keine VCLSMP.dpk
 
Zitat:

Zitat von Mattze
Wenn ich da die Properties benutze, wird wieder erst mal eine Funktion aufgerufen, um die aus den privaten Variablen auszulesen.

Nö. Da bei read und write jeweils die Variable selbst angegeben ist und nicht eine Get-/Set-Methode, hast du mit ziemlicher Sicherheit exakt den gleichen Assemblercode wie bei direktem Zugriff auf die Membervariablen (wenn diese protected oder public wären).

Mattze 5. Nov 2009 18:09

Re: keine VCLSMP.dpk
 
Hallo,

stimmt! Da habe ich nicht aufgepasst und das einfach so als gesetzt angenommen, dass da Proceduren stehen.
Dann hätte ich mir die Frage eigentlich sparen können. Jedenfalls geht es jetzt perfekt.
Danke!

Gruß
Mattze


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz