Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi In StringGrid suchen (https://www.delphipraxis.net/451-stringgrid-suchen.html)

CalganX 23. Jul 2002 14:35


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

Tpercon 23. Jul 2002 17:35

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ß

dopeline 12. Mai 2003 18:36

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

Tpercon 12. Mai 2003 19:27

Hier mal was auf die Schnelle:

Delphi-Quellcode:
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;
Gruß

dopeline 13. Mai 2003 07:20

danke! das funktioniert soweit. jetzt soll er aber die gesamte zeile markieren, in der er den suchtext gefunden hat. geht das?

Gruß, dopeline :dancer:

dopeline 10. Feb 2004 19:10

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;

mirage228 10. Feb 2004 19:16

Re: In StringGrid suchen
 
wie wärs mit Pos ?

mfG
mirage228

dopeline 10. Feb 2004 19:30

Re: In StringGrid suchen
 
ich weiß jetzt nicht genau, was du meinst.... :roll: :oops:

dopeline

mirage228 10. Feb 2004 19:40

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

CalganX 10. Feb 2004 19:41

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 03:15 Uhr.
Seite 1 von 2  1 2      

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