Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.586 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: Einzelne Wörter in TListBox fett zeichnen

  Alt 5. Mai 2013, 07:05
Mach es dir doch nicht so schwer... ich habe dir oben schon eine sehr einfache Lösung gepostet... ein Beispiel, folgender Text in der TJvHTListBox:
Zitat:
<b>Dennis:</b><ind=70>Test</ind>
Sebastian:<ind=70>Test2</ind>
Noch jemand:<ind=70>Ihr seid ja langweilig</ind>
<b>Dennis:</b><ind=70>Klappe</ind>
Ansonsten hat Luckie oben schon geschrieben wie Tabs korrekt angezeigt werden, so ca., bisschen Feintuning ist noch nötig:
Delphi-Quellcode:
procedure TForm246.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
const
  TextToHighlight = 'Dennis:';
var
  MyListBox: TListBox;
  CurrentItem: string;
  CurrentRect: TRect;
  CurrentPaintLeft: Integer;
  FormatValue: Integer;
begin
  MyListBox := Control as TListBox;
  CurrentItem := MyListBox.Items[Index];
  CurrentRect := Rect;
  FormatValue := DT_LEFT or DT_EXPANDTABS or DT_TABSTOP;
  LongRec(FormatValue).Bytes[1] := 14; // Tabbreite in Buchstaben
  if AnsiSameText(Copy(CurrentItem, 1, Length(TextToHighlight)), TextToHighlight) then
  begin
    Delete(CurrentItem, 1, Length(TextToHighlight));
    DrawText(MyListBox.Canvas.Handle, CurrentItem, Length(CurrentItem), CurrentRect, FormatValue); // erst den Text dahinter
    MyListBox.Canvas.Font.Style := [fsBold];
    DrawText(MyListBox.Canvas.Handle, TextToHighlight, Length(TextToHighlight), CurrentRect, FormatValue); // nun den Namen vorne
  end
  else
    DrawText(MyListBox.Canvas.Handle, CurrentItem, Length(CurrentItem), CurrentRect, FormatValue);
end;
Heraus kommt dann das (links: TJvHTListBox mit obigem Text, rechts: selbst gezeichnet):
htlistbox.png
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat