AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Hint mit Tabulator formatieren

Ein Thema von bernau · begonnen am 14. Jun 2010 · letzter Beitrag vom 30. Mär 2011
Antwort Antwort
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.309 Beiträge
 
Delphi 12 Athens
 
#1

AW: Hint mit Tabulator formatieren

  Alt 14. Jun 2010, 13:10
da wirst Du Dein eigenes THintWindow bauen müssen...
Das denke auch....
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
David Martens

Registriert seit: 29. Sep 2003
205 Beiträge
 
Delphi XE Enterprise
 
#2

AW: Hint mit Tabulator formatieren

  Alt 14. Jun 2010, 14:44
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:
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;
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.
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#3

AW: Hint mit Tabulator formatieren

  Alt 14. Jun 2010, 17:13
Ich fürchte, mit Leerzeichen bekommt man bei Zeichensätzen mit variabler Buchstabenbreite nichts ordentlich untereinander
  Mit Zitat antworten Zitat
David Martens

Registriert seit: 29. Sep 2003
205 Beiträge
 
Delphi XE Enterprise
 
#4

AW: Hint mit Tabulator formatieren

  Alt 14. Jun 2010, 17:39
Ich hab mal ein wenig gestöbert und das hier gefunden: Creating custom hints for yoru application/component

Ein bisschen Modifikation bei:
Delphi-Quellcode:
sHeight := HintWindow.Canvas.TextHeight(s) * sList.Count;
HintWindow.ActivateHint(
  Rect(P.X,P.Y, P.x + sWidth + 6, P.Y + sHeight),s);
sollte eigentlich reichen.
  Mit Zitat antworten Zitat
BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
498 Beiträge
 
Delphi 12 Athens
 
#5

AW: Hint mit Tabulator formatieren

  Alt 15. Jun 2010, 06:37
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:
initialization
  HintWindowClass:=TTabHintWindow;// Tabulatoren werden unterstützt
end.
Ist schon recht alt, daher kann ich nicht sagen, wo das her ist.
Gruß Bernd
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.309 Beiträge
 
Delphi 12 Athens
 
#6

AW: Hint mit Tabulator formatieren

  Alt 15. Jun 2010, 09:43
Hallo Bernau, ich habe bei mir ein einfaches TTabHintWindow drin.
Perfekt. Das war's. Danke!
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.309 Beiträge
 
Delphi 12 Athens
 
#7

AW: Hint mit Tabulator formatieren

  Alt 15. Jun 2010, 10:20
Habe doch noch ein Problem. Wenn ich folgendes anzeigen will, sind die Texte nach dem Tabstop nicht mehr untereinander

Delphi-Quellcode:
TextZumAnzeigen :=
  'Spalte1'+#9+'Spalte2'+#13+#10+
  'ein gaaaaaaaaaaaaaanz langer Text'+#9+'Spalte2';
Gibt es so was wie LB_SETTABSTOPS für Listboxen?
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:02 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-2025 by Thomas Breitkreuz