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
Antwort Antwort
Seite 2 von 2     12   
Christian Seehase
(Co-Admin)

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

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

  Alt 7. Sep 2006, 01:00
Moin Holger,

wenn ich es so mache

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

const
  _aclFont : array [boolean] of TColor = (clBlack,clRed);

var
  lb : TListBox;
  sLine : string;
  sOut : string;
  iPos : integer;
  iLeft : integer;

begin
  lb := Control as TListBox;
  sLine := lb.Items[Index];
  iLeft := Rect.Left;
  while length(sLine) > 0 do begin
    iPos := pos(Edit2.Text,sLine);
    case iPos of
      0 : begin
        sOut := sLine;
        sLine := '';
      end;
      1 : begin
        sOut := copy(sLine,1,length(Edit2.Text));
        sLine := copy(sLine,length(Edit2.Text)+1,MaxInt);
      end;
      else begin
        sOut := copy(sLine,1,iPos-1);
        sLine := copy(sLine,iPos,MaxInt);
      end;
    end;
    lb.Canvas.Font.Color := _aclFont[iPos=1];
    lb.Canvas.TextOut(iLeft,Rect.Top,sOut);
    iLeft := lb.Canvas.PenPos.X;
  end;
end;
wird alles, was sich in Edit2 befindet, und in der auszugebenden ListBoxzeile steht rot geschrieben
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
runger
(Gast)

n/a Beiträge
 
#12

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

  Alt 7. Sep 2006, 07:33
Hallo,

meine Auszubildenden meinen:
so kann man das Ganze verstehen und es funktioniert auch:
(das Ganze ist gedacht als Beispiel dafür wie man eine ganze Zeile einfärbt)

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    lb: TListBox;
    Edit: TEdit;
    procedure lbDrawItem(Control: TWinControl; Index: Integer; Rect: TRect;
      State: TOwnerDrawState);
    procedure EditChange(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    a:string;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.LBDrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);

var
  sValue : string;
  iLeft : integer;
  iTop : integer;

begin
  // Auszugebenden Eintrag merken
  sValue := lb.Items[Index];
  // Startpunkt für die Ausgabe merken
  iLeft := Rect.Left;
  iTop := Rect.Top;
  if lb.items[index]=a then lb.Canvas.Font.Color:=clred else lb.Canvas.Font.Color:=clblue;
  // Text ausgeben
  // (Dadurch wird auch gleich die Ausgabeposition neu gesetzt)
  lb.Canvas.TextOut(iLeft,iTop,svalue);
  iLeft := lb.Canvas.PenPos.X;
end;

procedure TForm1.EditChange(Sender: TObject);
begin
   a:=edit.Text;
   lb.Repaint;
end;
zum Teil stammt der Code aus vorhergegangenen Beiträgen.
Achtung: Listbox.style auf lbOwnerDrawFixed setzen.

Rainer
  Mit Zitat antworten Zitat
newuser01

Registriert seit: 31. Aug 2006
248 Beiträge
 
Delphi 7 Professional
 
#13

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

  Alt 7. Sep 2006, 12:12
Hallo DANKE für eure Hilfe und vor allem DANKE für die Geduld die ihr mit mir als Hobbyprogrammierer habt

Christian dein Code funktionier soweit sehr gut bis auf zwei kleine Fehler. Wenn in ListBox.items.string[0] zb: drin steht

"test1 test2 test3 test4 test5 test6"

und ich im Editfeld zu stehn habe "test1" dann wird auch "test1" in der Listbox gefunden und rot hervorgehoben. Wenn ich aber im Editfeld "Test1" zu stehn habe 1.Fehler also case sensitive dann findet er nichts mehr. Der zweite Fehler ist wenn ich im Editfeld zb: "test1 test3" zu stehn habe findet er es ebenfalls nicht mehr steht aber "test1 test2" drin findet er es wieder.

Christian zu dem Code möchte ich noch sagen das es mir nichts bringt ihn einfach zu kopieren. Ich möchte es auch verstehen könntest du ihn vielleicht auskommentieren ? Ich weiß ich NERVE


Gruß
Holger
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 11:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz