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 Property als Hexadezimal (https://www.delphipraxis.net/73344-property-als-hexadezimal.html)

Martin K 16. Jul 2006 13:30


Property als Hexadezimal
 
Moin,

ich würde gerne bei einer selbst abgeleiteten Komponente eine Eigenschaft im OI im Hexadezimal-Format anzeigen lassen.
Es handelt sich hierbei um die landesspeziefischen Informationen für FormatSettings, die üblicherweise in Hexadezimal dargestrellt werden (z.B. $0407), mit dem Dezimalwert kann da wohl kaum einer was anfangen.
Da der eigentliche Typ Integer ist, weiß ich nicht, wie ich die Anzeige im Hex-Format darstellen kann und IntToHex ist da auch keine wirkliche Lösung.

Bei einer Eigenschaft vom Typ TColor geht das ja auch - wenn nicht gerade eine "Standard-Farbe" eingegeben wird, wird sie im Hex-Format dargestellt.

Wäre nett, wenn irgendjemand dazu eine Idee hätte...

DGL-luke 16. Jul 2006 13:51

Re: Property als Hexadezimal
 
Beim Anzeigen weiß ichs nicht - aber die Eingabe sollte auf jeden Fall mit vorangestelltem $ funktionieren.

Martin K 16. Jul 2006 14:01

Re: Property als Hexadezimal
 
Das ist klar...

Aber es geht mir ja gerade um die Anzeige!
Wie wird das denn bei TColor gemacht ?
TColor ist ja eigentlich auch nichts anderes als ein Integer-Wert....

Mystic 16. Jul 2006 14:05

Re: Property als Hexadezimal
 
Wahrscheinlich ist die hexadezimale Anzeige von TColor hartkodiert.

Martin K 16. Jul 2006 14:09

Re: Property als Hexadezimal
 
Zitat:

Zitat von Mystic
Wahrscheinlich ist die hexadezimale Anzeige von TColor hartkodiert.

Und wie könnte man sowas selber machen :gruebel:

EDatabaseError 16. Jul 2006 14:12

Re: Property als Hexadezimal
 
Du lässt es den User als $.... eingeben und wandelst diesen HexString in eine Dezimal Zahl um.

Martin K 16. Jul 2006 14:16

Re: Property als Hexadezimal
 
Zitat:

Zitat von EDatabaseError
Du lässt es den User als $.... eingeben und wandelst diesen HexString in eine Dezimal Zahl um.

:shock: Die Eingabe ist kein Problem, die wandelt Delphi schon automatisch um...
Es geht vielmehr um die Ausgabe, um die Anzeige.
IntToHex wäre eine Möglichkeit, aber es soll eben kein String sein - sondern eine Integer-Property.

negaH 16. Jul 2006 14:21

Re: Property als Hexadezimal
 
1.) deine Komponente in zwei verschiedene Packages zerlegen. Dein Laufzeit-Package enthält ausschließlich nur deine Komponente. Dein Design-Time Package enthält wie das "Benutzer Package" nun eine Funktion "Register". In dieser wird deine Komponente registriert.
Soweit ist alles erstmal Standard und der vollkommen normale Weg.

2.) nun baust du in einer separaten Unit "MyKomponente_Reg.pas" eigene Property Editoren rein. In dieser Unit steht auch deine Funktion "Register". Diese Funktion erweiterst du nun indem du dort deine eigenen Property Editoren für die Delphi IDE registrierst -> RegisterPropertyEditor() etc.pp. Dein eigener Editor wird nun deine Integer-Property deiner Komponente als HEX String im OI der IDE anzeigen und editieren.
Fertig.

Du erweiterst also selektiv für deine Komponente->Property die Funktionalität der Delphi IDE. Wichtig dabei ist es mit diesen zwei Packages zu arbeiten. Exakt so geht auch der Editor für alle TColor Eigenschaften vor.

Gruß Hagen

Martin K 16. Jul 2006 14:28

Re: Property als Hexadezimal
 
Endlich mal ein Mann vom Fach :thumb:

Werd es gleich mal versuchen,
Danke für Deine Antwort!

EDatabaseError 16. Jul 2006 14:51

Re: Property als Hexadezimal
 
Zitat:

Zitat von Martin K
Zitat:

Zitat von EDatabaseError
Du lässt es den User als $.... eingeben und wandelst diesen HexString in eine Dezimal Zahl um.

:shock: Die Eingabe ist kein Problem, die wandelt Delphi schon automatisch um...
Es geht vielmehr um die Ausgabe, um die Anzeige.
IntToHex wäre eine Möglichkeit, aber es soll eben kein String sein - sondern eine Integer-Property.

Einfach das Dezimale in einen Hexstring umwandeln und dann ein $ davor... ;-)
so mach es ich jedenfalls ;-)


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