![]() |
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... |
Re: Property als Hexadezimal
Beim Anzeigen weiß ichs nicht - aber die Eingabe sollte auf jeden Fall mit vorangestelltem $ funktionieren.
|
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.... |
Re: Property als Hexadezimal
Wahrscheinlich ist die hexadezimale Anzeige von TColor hartkodiert.
|
Re: Property als Hexadezimal
Zitat:
|
Re: Property als Hexadezimal
Du lässt es den User als $.... eingeben und wandelst diesen HexString in eine Dezimal Zahl um.
|
Re: Property als Hexadezimal
Zitat:
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. |
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 |
Re: Property als Hexadezimal
Endlich mal ein Mann vom Fach :thumb:
Werd es gleich mal versuchen, Danke für Deine Antwort! |
Re: Property als Hexadezimal
Zitat:
so mach es ich jedenfalls ;-) |
Re: Property als Hexadezimal
@negaH
So, hab's probiert und komm nicht weiter bei der Prozedur RegisterPropertyEditor: Zitat:
Zitat:
Zitat:
@EDatabaseError: Ja, das meinte ich ja mit IntToHex: Aber dann ist die Property vom Typ String - ich will aber Integer! Ist zwar für die Ansicht im OI egal - ob String oder Integer merkt man da ja nicht - aber wenn ich's irgendwo im Code zuordnen oder auslesen will muss ich mit einem String arbeiten... |
Re: Property als Hexadezimal
PACKAGES ist das Zauberwort. Du musst alles mit Packages kompilieren und dein IDE Package in dem du designinft benutzt MUSS ein DesignTime Package sein. Also in den Projektoptionen zum Package das auch bitte auswählen.
Gruß Hagen |
Re: Property als Hexadezimal
Sorry, hab noch nie mit Packages gearbeitet.
Hab die Komponenten immer in einer Unit gehabt und diese dann über Komponente -> Komponente installieren... installiert. Wäre nett, wenn Du mir ein kleinen Code-Beispiel geben könntest bzw. geht das nicht in der Prozedur Register meiner Unit? Wenn's zu kompliziert ist, nehm ich den Vorschlag von Tobias und mach zwei properties: Eine published für den OI vom Typ String und eine public vom Typ Integer für das Arbeiten im Code... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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