![]() |
In StringGrid suchen
Hi!
Gibt es eine Möglichkeit in einem StringGrid mit 2 Spalten beide Spalten zu durchsuchen nach einem beliebigen String? Soll heißen: Die erste Zeile ist makiert, der User gibt in ein Edit einen Suchbegriff ein und dann wird im StringGrid gesucht (hat nix mit DBs zutun). Wenn was gefunden wurde wird dahin gescrollt. Wenn man auf weitersuchen klickt, wird zum nächsten Suchergebnis gescrollt etc. Wie geht das??? :?: :?: :?: :?: Chris1308 |
Du kannst doch einfach mit ner Schleife die StringGrid durchgehen. Als Startwert nimmst du den ZeilenIndex der markierten Zelle und als Ende den RowCount bzw. den Vergleich ob Cell[x,y]='dein suchstring' ergibt.
Gruß |
ich habe den ganzen nachmittag gesessen und versucht solch eine schleife aufzubauen, aber trotzdem klappt es nicht :cry: :cry: :cry:
wie muss ich das anstellen? Grüße, dopeline |
Hier mal was auf die Schnelle:
Delphi-Quellcode:
Gruß
procedure TForm1.Button1Click(Sender: TObject);
var suchtext:string; r,c:integer; begin suchtext:=Edit1.Text; For r:=0 to StringGrid1.RowCount-1 do For c:=0 to StringGrid1.ColCount-1 do If StringGrid1.Cells[c,r]=suchtext then begin ShowMessage('Eintrag in Zeile '+InttoStr(r+1)+', Spalte '+InttoStr(c+1)+' gefunden!'); Break; end; end; |
danke! das funktioniert soweit. jetzt soll er aber die gesamte zeile markieren, in der er den suchtext gefunden hat. geht das?
Gruß, dopeline :dancer: |
Re: In StringGrid suchen
ich habe mal noch eine frage. ich habe den suchalgorithmis noch etwas verdeinert. dunktioniert ja auch super. allerdings, muss der suchstring immer dem kompletten zelleninhalt entsprechen! was muss ich ändern, damit auch ein "teilstring" als suchergebnis anerkannt wird? also wenn ich nach "Schule" suche, soll er auch in der zelle "stehen bleiben", in der "Schule ist toll" steht! wie mach ich das?
Delphi-Quellcode:
var suchtext:string;
r,c:integer; gefunden:boolean; begin gefunden:=False; suchtext:=ESuche.Text; if (suchtext='')or(suchtext=' ') then else begin For r:=zeile to FormHaupt.SGS.RowCount-1 do For c:=0 to FormHaupt.SGS.ColCount-1 do If (FormHaupt.SGS.Cells[c,r]=suchtext) then begin gefunden:=True; zeile:=r+1; WaehleZeileSGS(r); // ist eine Funktion, die die gesamte zeile markiert, in der sich der suchstring befindet BitBtn1.Caption:='Weitersuchen'; exit; end; end; if (gefunden=False) then MessageDlg('" '+suchtext+'" wurde nicht gefunden', mtInformation, [mbOK],0); end; |
Re: In StringGrid suchen
wie wärs mit Pos ?
mfG mirage228 |
Re: In StringGrid suchen
ich weiß jetzt nicht genau, was du meinst.... :roll: :oops:
dopeline |
Re: In StringGrid suchen
Du kannst mit Pos prüfen ob "Schule" (oder ein anderer) in dem String den du durchsuchst, vorhanden ist.
In der Delphi-Hilfe gibts auch ein Beispiel zu Pos. mfG mirage228 |
Re: In StringGrid suchen
Hi,
die Funktion pos gibt dir die genaue Stelle eines Substrings in einem String an. Wenn dieser Substring nicht vorhanden ist, so wird 0 zurückgegeben, ansonsten die exakte Position des Substrings. Chris PS: Siehe dazu auch :arrow: OH! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:09 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