AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi alle Strings aus Edit.Text in der ListBox farbig darstellen
Thema durchsuchen
Ansicht
Themen-Optionen

alle Strings aus Edit.Text in der ListBox farbig darstellen

Ein Thema von newuser01 · begonnen am 5. Sep 2006 · letzter Beitrag vom 7. Sep 2006
 
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.120 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: alle Strings aus Edit.Text in der ListBox farbig darstel

  Alt 6. Sep 2006, 16:48
Moin Holger,

das klingt schwieriger als es ist.

Schau Dir mal dieses Beispiel an (ListBox.Style auf lbOwnerDrawFixed):
(Dazu brauchst Du nur ein Formular, mit einer ListBox, in der eine Zeile Text steht, die mit Leerzeichen getrennte Strings enthält)

Delphi-Quellcode:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);

var
  sValue : string;
  sOut : string;
  lb : TListBox;
  iLeft : integer;
  iTop : integer;

begin
  // Auszugebenden Eintrag merken
  sValue := ListBox1.Items[Index]+' ';
  // Startpunkt für die Ausgabe merken
  iLeft := Rect.Left;
  iTop := Rect.Top;
  // Damit's übersichtlicher wird die Listbox in eine kleine Variable
  lb := (Control as TListBox);
  // Aktuelle Schriftfarbe auf Blau
  lb.Canvas.Font.Color := clBlue;
  // Alle mit Leerzeichen getrennten Teile unterschiedlich einfärben
  // (rot / blau im Wechsel
  while pos(' ',sValue) > 0 do begin
    // Auszugebenden Teil auslesen
    sOut := copy(sValue,1,pos(' ',sValue));
    // Schriftfarbe setzen (aktuell rot? dann blau und umgekehrt)
    if lb.Canvas.Font.Color = clRed then begin
      lb.Canvas.Font.Color := clBlue;
    end else begin
      lb.Canvas.Font.Color := clRed;
    end;
    // Text ausgeben
    // (Dadurch wird auch gleich die Ausgabeposition neu gesetzt)
    lb.Canvas.TextOut(iLeft,iTop,sOut);
    // Auszugebenden ListBox eintrag um bereits ausgegebenen
    // Text verkürzen
    sValue := copy(sValue,pos(' ',sValue)+1,MaxInt);
    // Startposition für den nächst Abschnitt setzen
    iLeft := lb.Canvas.PenPos.X;
  end;
end;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
 


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 13:38 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