So klappt es:
Delphi-Quellcode:
procedure TForm1.MitLinie1MeasureItem(Sender: TObject; ACanvas: TCanvas;
var Width, Height: Integer);
begin
// hier die Breite des Textes bestimmen, und etwas zugeben
Width := ACanvas.TextWidth((Sender as TMenuItem).Caption)+20;
end;
procedure TForm1.MitLinie1AdvancedDrawItem(Sender: TObject;
ACanvas: TCanvas; ARect: TRect; State: TOwnerDrawState);
begin
If Not((odSelected) in State) Then
Begin
ACanvas.MoveTo(2,(ARect.Bottom-ARect.Top)Div 2);
ACanvas.LineTo(ARect.Right-2,(ARect.Bottom-ARect.Top)Div 2);
DrawText(ACanvas.Handle, PChar(' '+(Sender as TMenuItem).Caption+' '), Length((Sender as TMenuItem).Caption)+2, ARect,
DT_CENTER);
End;
end;
Wenn man enabled jetzt noch auf false setzt, kann man das Item weder anklicken, noch wird es 'gehighlighted'.
Gruß, teebee