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 1 von 2  1 2      
newuser01

Registriert seit: 30. Aug 2006
248 Beiträge
 
Delphi 7 Professional
 
#1

alle Strings aus Edit.Text in der ListBox farbig darstellen

  Alt 5. Sep 2006, 11:45
Hallo

Ich habe ein Edit und eine ListBox und in der ListBox sind zb: 10 Einträge Jetzt möchte ich gerne das ein bestimmtes Wort was im Edit1 eingetragen wurde in der ListBox gesucht wird und alle gefundenen Wörter farblich dargestellt werden. Ich weiß das es mit RichEdit einfacher geht und dafür hätte ich auch schon eine Lösung nur RichEdit kommt für mich nicht in frage da es kein OnClick Ereignis also (items.strings[i] Selectierung per Maus) besitzt wie es ListBox hat.

Delphi-Quellcode:

for i := 0 to ListBox1.Items.Count -1 do
begin

if ListBox1.Items.Strings[i] = // hier Prüfen lassen ob das Wort was im Edit1 steht vorhanden ist wenn ja farblich darstellen

end;
Grüße
Holger
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#2

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

  Alt 5. Sep 2006, 11:50
Du könntest das ganze OwnerDraw machen und dann die Einträge selber zeichnen.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

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

  Alt 5. Sep 2006, 11:51
Hallo Holger,

vielleicht helfen dir ein paar Code-Zeilen aus einem anderen thread weiter: klick

Grüße vom marabu
  Mit Zitat antworten Zitat
newuser01

Registriert seit: 30. Aug 2006
248 Beiträge
 
Delphi 7 Professional
 
#4

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

  Alt 5. Sep 2006, 13:15
Ich versuche die ganze Zeit ein bestimmtes Wort in der ListBox zu suchen und zwar so

Delphi-Quellcode:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
i:integer;
s,sText:string;
slTemp: TStringList;
begin

try

        for i := 0 to lbAusgabe.Items.Count -1 do
        begin

        slTemp := TStringList.Create;
        slTemp.Clear();
        sText := '';
        
        //in lbAusgabe Strings[i] wird nach dem Wort was in eSearch.Text steht gesucht funktioniert aber leider nicht
        //sText := lbAusgabe.Items.Strings[i];


        //in edit1 wird nach dem Wort was in eSearch.Text steht gesucht das funktioniert sehr gut
        sText := Edit1.Text;
        s := eSearch.Text;

        //warum funktioniert die Suche nur in Edit1 ? und nicht in lbAusgabe Strings[i] ?


        while pos(s,sText) <> 0 do
        begin
        slTemp.Add(copy(sText,1,pos(s,sText)-1));
        delete(sText,1,pos(s,sText));
        end;

        slTemp.Add(sText);

                         if slTemp.Strings[i] = sText Then
                         begin
                         // nichts tun
                         end
                            else
                                begin
                                MessageDlg('gesuchte Wort gefunden',mtInformation, [mbOK], 0);
                                //wenn gefunden dann alle gefundenen Wörter farblich darstellen


                         end;//if

        end;//schleife


                                  except
                                  //Exit;

     end; //try



end;
oder bin ich völlig auf dem Holzweg ?

Gruß
Holger
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

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

  Alt 5. Sep 2006, 20:32
Hallo Holger,

wenn jeder Eintrag deiner ListBox ein Text ist, welcher dein Suchwort enthalten kann, dann scheint mir TRichEdit doch die bessere Wahl zu sein. Kannst du etwas genauer erklären, warum die verfügbaren Ereignisse der Komponente TRichEdit dir nicht genügen? Was möchtest du eigentlich erreichen?

marabu
  Mit Zitat antworten Zitat
newuser01

Registriert seit: 30. Aug 2006
248 Beiträge
 
Delphi 7 Professional
 
#6

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

  Alt 6. Sep 2006, 00:09
Zitat:
Kannst du etwas genauer erklären, warum die verfügbaren Ereignisse der Komponente TRichEdit dir nicht genügen? Was möchtest du eigentlich erreichen?

Hallo Marabu

TRichEdit hat kein OnClick Ereignis also ich kann bei Richedit nicht die Einträge wie bei der ListBox mit der Maus auswählen. Ich möchte also wie erwähnt jeden einzelnen Eintrag mit der Maus anwählen so das dieser Eintrag makiert ist und dann übernommen werden kann alleine wegen dem löschen schon hier mal ein bischen Code

Delphi-Quellcode:

//das würde zb: nicht so einfach gehen
for i := 0 to lbAusgabe.Items.Count -1 do
begin

     if lbAusgabe.Selected[i] = true then
     begin
     lbWunschliste.Items.Add(lbAusgabe.Items.Strings[i]);
     end;

end;

// oder das
for i := 0 to lbAusgabe.Items.Count -1 do
begin

     if lbAusgabe.Selected[i] = true then
     begin
     sDateiname := lbAusgabe.Items.Strings[i];
     ShellExecute(Handle,'open','C:\Programme\Winamp\winamp.exe',PChar('"' + sDateiname+'"'),'',SW_NORMAL);
     end;

end;

wenn diese Auswahlmöglichkeit auch bei Richedit gehen würde schreib ich sofort alles um aber allein schon Selected[i] geht bei Richedit nicht oder ?


so gute Nacht muss ins bett
Holger
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

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

  Alt 6. Sep 2006, 13:33
Hallo Holger,

du scheinst mit Song-Listen für einen Player zu hantieren - dann ist die ListBox schon richtig. Eine Selektion aller Titel, die einen bestimmten Suchbegriff enthalten, bekommst du hin?

Für die farbige Hervorhebung der Fundstellen musst du den song title zerlegen und für jeden SubString die Ausgabeweite ermitteln (DrawText() mit DT_CALC). In einer Schleife kannst du dann die einzelnen Text-Rechtecke hintereinander ausgeben.

Freundliche Grüße

marabu
  Mit Zitat antworten Zitat
newuser01

Registriert seit: 30. Aug 2006
248 Beiträge
 
Delphi 7 Professional
 
#8

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

  Alt 6. Sep 2006, 14:18
Hallo Marabu das übertrifft erhlich gesagt meine Fähigkeiten ich verzichte dann doch lieber auf die Farbigen Einträge
aber trotzdem Danke für deine Hilfe


Gruß
Holger
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

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

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

  Alt 6. Sep 2006, 15: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
newuser01

Registriert seit: 30. Aug 2006
248 Beiträge
 
Delphi 7 Professional
 
#10

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

  Alt 6. Sep 2006, 19:02
Das einzige was ich hinbekomme ist das jede ganze Zeile gefärbt wird aber nicht die Wörter die zb: im Edit stehn

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin

ListBox1.Style := lbOwnerDrawFixed;
ListBox1.Items.Add('test1 test2 test3 test4 test5 test6');

end;

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

  with (Control as TListbox) do
  begin

    if (Index mod 1 = 0) then
    begin
      Canvas.Brush.Color := clRed;
    end;
    DrawText(Canvas.Handle, Pchar(Items[Index]), Length(Items[Index]),Rect,DT_SINGLELINE or DT_VCENTER); // Text
  end;

end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 15:40 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