![]() |
Hint mit Tabulator formatieren
Gibt's ne Möglichkeit einen Hint formatiert anzuzeigen. Sprich ich möchte zwei Spalten darstellen. Produktname und Preis.
Folgendes wird beim mir nicht sehr schön angezeigt:
Delphi-Quellcode:
Gibt's ne Möglichkeit, wie bei der Listbox eine Tabulatorposition zu setzen?
Label1.hint:=
'Langer Name'+#9+'123.23'+#13+#10+ 'Name'+#9+'213.23'; |
AW: Hint mit Tabulator formatieren
Die TAB-Taste hat den Scancode 15.
Delphi-Quellcode:
Stelle soeben fest, dass #15 als Quadrat ersetzt wird...
TAB8:=' ';
bExit.hint:='Das'+#15+'ist'+#15+'das'+#15+'Ende!'; Exit.hint:='Das'+TAB8+'ist'+TAB8+'das'+TAB8+'Ende!';//so geht's Ersetze #15 einfach durch eine Stringkonstante oder Variable, z.B. TAB8:=' '; Das wird hier im Forum falsch dargestellt, weil Leerzeichen gelöscht werden... Ein Font mit konstanter Zeichenbreite wäre sehr sinnvoll! |
AW: Hint mit Tabulator formatieren
Wie kommst Du auf 15? Tab war immer und ist nach wie vor #9 in allen Zeichensätzen, die ich kenne (ich habe aber selbst nicht ausprobiert, ob tabs in einem Hint fnktionieren).
Zitat:
|
AW: Hint mit Tabulator formatieren
Zitat:
|
AW: Hint mit Tabulator formatieren
Hi,
da wirst Du Dein eigenes THintWindow bauen müssen... Wichtig ist dann in der überschriebenen Paint-Procedure den Text mit DrawText ausgeben und dort das Flag DT_EXPANDTABS zu setzen. |
AW: Hint mit Tabulator formatieren
Zitat:
|
AW: Hint mit Tabulator formatieren
Du kannst dir ja die Breite der einzelnen Texte berechnen und dann zu einer gestimmten Breite auffüllen.
Hier wie ich die Breite der DropdownListe für ComboBoxen ermittle:
Delphi-Quellcode:
Im Grunde reicht dir WMFCanvas.TextWidth(String) mit den richtigen Fonteinstellungen für die einzelnen Texte und das muß dann nur mit Leerzeichen sinnvoll aufgefüllt werden.
procedure OnComboBoxDropdown(Sender: TObject);
var WMF : TMetafile; // virtuelle WMF bzw. EMF Datei (enthält das Image) WMFCanvas : TMetafileCanvas; // virtuelle Oberfläche des Metafiles i, Width : integer; begin WMF := TMetafile.Create; WMFCanvas := TMetafileCanvas.Create( WMF, 0); WMFCanvas.Brush.Style := bsClear; WMFCanvas.Font := TComboBox(Sender).Font; Width := TComboBox(Sender).Width; for i := 0 to TComboBox(Sender).Items.Count - 1 do begin Width := max(Width ,WMFCanvas.TextWidth(TComboBox(Sender).Items[i]) + 25); end; TComboBox(Sender).Perform(CB_SETDROPPEDWIDTH, Width, 0); WMFCanvas.Free; WMF.Free; end; |
AW: Hint mit Tabulator formatieren
Ich fürchte, mit Leerzeichen bekommt man bei Zeichensätzen mit variabler Buchstabenbreite nichts ordentlich untereinander
|
AW: Hint mit Tabulator formatieren
Ich hab mal ein wenig gestöbert und das hier gefunden:
![]() Ein bisschen Modifikation bei:
Delphi-Quellcode:
sollte eigentlich reichen.
sHeight := HintWindow.Canvas.TextHeight(s) * sList.Count;
HintWindow.ActivateHint( Rect(P.X,P.Y, P.x + sWidth + 6, P.Y + sHeight),s); |
AW: Hint mit Tabulator formatieren
Hallo Bernau, ich habe bei mir ein einfaches TTabHintWindow drin. Sieht dann so aus:
Delphi-Quellcode:
TTabHintWindow=class(THintWindow) // Stellt auch Tabs mit dar
public function CalcHintRect(MaxWidth: Integer; const AHint: string;AData: Pointer): TRect; override; procedure Paint; override; end;
Delphi-Quellcode:
function TTabHintWindow.CalcHintRect(MaxWidth: Integer;
const AHint: string; AData: Pointer): TRect; begin Result := Rect(0, 0, MaxWidth, 0); DrawText(Canvas.Handle, PChar(AHint), -1, Result, DT_CALCRECT or DT_LEFT or DT_EXPANDTABS or DT_WORDBREAK or DT_NOPREFIX or DrawTextBiDiModeFlagsReadingOnly); Inc(Result.Right, 6); Inc(Result.Bottom, 2); end; procedure TTabHintWindow.Paint; var R: TRect; begin R := ClientRect; Inc(R.Left, 2); Inc(R.Top, 2); Canvas.Font.Color := clInfoText; DrawText(Canvas.Handle, PChar(Caption), -1, R, DT_LEFT or DT_NOPREFIX or DT_EXPANDTABS or DT_WORDBREAK or DrawTextBiDiModeFlagsReadingOnly); end;
Delphi-Quellcode:
Ist schon recht alt, daher kann ich nicht sagen, wo das her ist.
initialization
HintWindowClass:=TTabHintWindow;// Tabulatoren werden unterstützt end. Gruß Bernd |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 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