Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Editorschriftart auslesen (https://www.delphipraxis.net/210975-editorschriftart-auslesen.html)

Sherlock 7. Jul 2022 12:39

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

TiGü 7. Jul 2022 13:17

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".

Delphi.Narium 7. Jul 2022 13:17

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

TiGü 7. Jul 2022 13:20

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;
...

Sherlock 7. Jul 2022 14:16

AW: Editorschriftart auslesen
 
Danke! Probier ich gleich mal aus. Werde berichten ob es geklappt hat.

Sherlock

Sherlock 7. Jul 2022 15:25

AW: Editorschriftart auslesen
 
Klappt prima. Habe die TLiveBlameEditorPanel.PaintBoxPaint Methode um folgendes ergänzt:
Code:
              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;
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.

Sherlock

himitsu 7. Jul 2022 16:58

AW: Editorschriftart auslesen
 
Was liefert dein Code bei NICHT
Delphi-Quellcode:
if EditOptionsCount > 0 then
:duck:

Sherlock 8. Jul 2022 10:07

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