Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Einzelne Wörter in TListBox fett zeichnen (https://www.delphipraxis.net/174396-einzelne-woerter-tlistbox-fett-zeichnen.html)

jaenicke 9. Mai 2013 06:31

AW: Einzelne Wörter in TListBox fett zeichnen
 
Das mit dem PChar liegt daran, dass du Delphi 7 hast, darauf hatte ich nicht weiter geachtet. Damals (ist ja nun immerhin 11 Jahre alt) gab es die Stringversion von DrawText noch nicht.
Das mit der Markierung war noch ein Fehler, da fehlte ein FillRect um die Markierung aufzuräumen.

Mit Delphi 7 funktioniert es bei mir so:
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;
  MyListBox.Canvas.FillRect(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, PChar(CurrentItem), Length(CurrentItem), CurrentRect, FormatValue); // erst den Text dahinter
    MyListBox.Canvas.Font.Style := [fsBold];
    DrawText(MyListBox.Canvas.Handle, PChar(TextToHighlight), Length(TextToHighlight), CurrentRect, FormatValue); // nun den Namen vorne
  end
  else
    DrawText(MyListBox.Canvas.Handle, PChar(CurrentItem), Length(CurrentItem), CurrentRect, FormatValue);
end;

Dennis07 9. Mai 2013 13:26

AW: Einzelne Wörter in TListBox fett zeichnen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ehm, zumindest danke für die Mühe bis hierher.
Zuerst die gute Nachricht: Die optischen "Zwischenfälle" sind nun behoben, es funktioniert nun wieder alles.
Nur leider wird auch nichts ge-highlighted (siehe Screenshot).

jaenicke 9. Mai 2013 18:12

AW: Einzelne Wörter in TListBox fett zeichnen
 
Naja, die Abfrage, ob der Text in der Zeile vorkommt, musst du schon anpassen...
Delphi-Quellcode:
if AnsiSameText(Copy(CurrentItem, 1, Length(TextToHighlight)), TextToHighlight) then
// ...
Das war ja nur ein Beispiel, in dem wie im Screenshot zu sehen der Text "Dennis:" am Anfang der Zeile steht...

Dennis07 11. Mai 2013 01:27

AW: Einzelne Wörter in TListBox fett zeichnen
 
Hey, danke, jetzt hat alles funktioniert.
Habe gerade noch mal ~6h dran gesessen, und es scheint alles zu funktionieren.
Vielen Dank für die Hilfe.

MFG


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:33 Uhr.
Seite 3 von 3     123   

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