Editorschriftart auslesen
Wie hier beschrieben, bin ich gerade dabei ein bis zwei Kleinigkeiten in dem LiveBlame Plugin zu beheben. Ich bin kein großer Plugin Held, ich habe mir dieses Projekt ausgesucht, weil es schon fertig ist, und die störenden Kleinigkeiten mir einfach zu beheben erschienen :stupid:
Die erste Kleinigkeit hab ich schon behoben, eine Zugriffsverletzung, sobald im Blame-Bereich ein Tooltip gezeichnet werden sollte. Da stimmt etwas mit dem gestylten Zeichnen des Tooltips in TBlameHintWindow.PaintHint nicht. Was genau kann ich nicht sagen, für mich sieht der Tooltip aber auch in clBtnFace gut aus, und es gibt jetzt keine Zugriffsverletzung mehr ;-) Die zweite Kleinigkeit geht tiefer: Die Schriftart der Liveblame Paintbox ist fest auf Courier New mit 10Pt verdrahtet. Das ist ungünstig für Leute, die gerne andere Schriftarten oder auch nur -größen verwenden wollen. Immerhin "verrutschen" dann die Commits gegenüber den Zeilen. Ich könnte jetzt hergehen und meinen Font fest verdrahten, mir wäre aber eine flexiblere Behandlung lieber, und das Plugin liest ja ohnehin schon so einiges aus der IDE aus. Hier also die Frage: <TLDR> Wie lese ich die Editorschriftart aus der IDE aus? Welches Service Interface muss ich dazu nutzen? Sherlock |
AW: Editorschriftart auslesen
Wenn es keine Möglichkeit gibt per OTA-Interfaces ran zu kommen, kannst du immer noch per Registry arbeiten und die Werte auslesen.
Beispiel: Computer\HKEY_CURRENT_USER\SOFTWARE\Embarcadero\BD S\21.0\Editor\Options und dann der Schüssel "Editor Font" und "Font Size". |
AW: Editorschriftart auslesen
Da tippe ich mal auf IOTAEditorServices.
Ansonsten schau doch mal hier, ob da was hilfreiches und brauchbares zum Thema bei ist: Dave's Development Blog |
AW: Editorschriftart auslesen
Delphi-Quellcode:
IOTAEditOptions60 = interface(IUnknown)
['{487BEA91-DBC0-11D2-ABDE-00C04FB16FB3}'] function AddSpeedSetting(const SpeedSetting: IOTASpeedSetting): Integer; procedure BeginUpdate; procedure EndUpdate; function GetBlockIndent: Integer; function GetBufferOptions: IOTABufferOptions; function GetFontName: string; // <--- ah, hier! function GetFontSize: Integer; ... |
AW: Editorschriftart auslesen
Danke! Probier ich gleich mal aus. Werde berichten ob es geklappt hat.
Sherlock |
AW: Editorschriftart auslesen
Klappt prima. Habe die TLiveBlameEditorPanel.PaintBoxPaint Methode um folgendes ergänzt:
Code:
Und verwende die beiden Fonteigenschaften wo gebraucht. Das ging viel schneller als erwartet. Dann schau ich mir mal an, warum das Styling für den Tooltip ab 10.3 nicht mehr funktioniert.
try
// Ungefähr so gefunden bei David Hoyle - https://github.com/Embarcadero/OTAPI-Docs/blob/main/The%20Delphi%20IDE%20Open%20Tools%20API%20-%20Version%201.2.md With (BorlandIDEServices As IOTAEditorServices) Do if EditOptionsCount > 0 then begin FontName := EditorOptions[0].FontName; FontSize := EditorOptions[0].FontSize; end; except FontName := 'Consolas'; FontSize := 11; end; Sherlock |
AW: Editorschriftart auslesen
Was liefert dein Code bei NICHT
Delphi-Quellcode:
:duck:
if EditOptionsCount > 0 then
|
AW: Editorschriftart auslesen
:D
Mittlerweile 11Pt Consolas ;-) Ich war so froh, daß es lief, da hab ich die Details erst später rund gemacht. Sherlock |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:16 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