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 Menuitem und Ownderdraw und Hotkey (https://www.delphipraxis.net/202285-menuitem-und-ownderdraw-und-hotkey.html)

NoGAD 16. Okt 2019 14:23

Menuitem und Ownderdraw und Hotkey
 
Hallo,

in Menü zeichne ich die Einträge selbst.

Jedoch muss ich, wenn AutoHotkeys eingeschaltet sind, diese erkennen.

Gibt es dafür eine Function?

LG Mathias

NoGAD 16. Okt 2019 20:40

AW: Menuitem und Ownderdraw und Hotkey
 
Liste der Anhänge anzeigen (Anzahl: 1)
Huhu Frühlingsrolle, schön, dich wieder einmal schreiben zu sehen :-)


Danke für den Hinweis, ich hatte einen Fehler im Code, deshalb hatte es nicht funktioniert.

Mit folgendem Code kann ich es selbst zeichnen:

Code:
  var
    X : Integer;
    Y : Integer;
    dummy_string : string;
    dummy_string_and : String;

[..]
      if Pos( '&', dummy_string ) > 0 then
      begin
        dummy_string_and := Copy( dummy_string, 0, Pos( '&', dummy_string ) - 1 );
        ACanvas.Font.Style := [ ];
        ACanvas.TextOut( X, Y, dummy_string_and );
        dummy_string_and := Copy( dummy_string, Pos( '&', dummy_string ) + 1, 1 );
        ACanvas.Font.Style := [ fsBold, fsUnderline ];
        X := ACanvas.PenPos.X + ACanvas.TextWidth( dummy_string_and );
        ACanvas.TextOut( ACanvas.PenPos.X, Y, dummy_string_and );
        dummy_string_and := Copy( dummy_string, Pos( '&', dummy_string ) + 2, Length( dummy_string ) );
        ACanvas.Font.Style := [ ];
        ACanvas.TextOut( X, Y, dummy_string_and );
      end;

Jedoch habe ich in der Zeile:
Code:
X := ACanvas.PenPos.X + ACanvas.TextWidth( dummy_string_and );
noch einen Fehler, welchen ich beinah mit
Code:
X := ACanvas.PenPos.X + round(ACanvas.TextWidth( dummy_string_and ) * 1.125);
beheben kann. (Screenshot zeigt die Darstellung ohne * 1.125)

Fehlt mir da noch irgendein Zeichenabstand zwischen den Buchstaben?

LG Mathias

NoGAD 22. Okt 2019 15:19

AW: Menuitem und Ownderdraw und Hotkey
 
Hallo zurück,

in der angehängten Grafik meines Posts ist beim unterstrichenen P zu erkennen, dass etwas fehlt.

Und ich weiß nicht, wie das zu beheben sein könnte.

LG Mathias

Aviator 22. Okt 2019 15:27

AW: Menuitem und Ownderdraw und Hotkey
 
Versuch mal ein
Delphi-Quellcode:
Canvas.BrushStyle := bsClear
zu setzen. Du scheinst ja den Text auch komplett selbst zu malen und schneidest den unterstrichenen Buchstaben aus und zeichnest ihn separat. Durch das nachträgliche Zeichnen der restlichen Caption wird dann natürlich der vordere Teil übermalt, da
Delphi-Quellcode:
Canvas.TextOut()
ein Rechteck zeichnet und nicht nur den Text.

NoGAD 22. Okt 2019 15:43

AW: Menuitem und Ownderdraw und Hotkey
 
Darauf bin ich einfach nicht gekommen.

Danke für die Hilfe!

LG Mathias


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

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