Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Suche für StringGrid
whitef - So 03.05.09 17:54
Titel: Suche für StringGrid
hallo,
ich bin grad dabei ne kleine suche für meine daten in einem stringgrid zu erstellen.
es sollte so funktionieren: Suchfeld ist hierbei eine normale TEdit.
bei eingabe "a", soll die der eintrag der mit a beginnt markiert werden.
bei eingabe "amselweg", soll die der eintrag der "amselweg" markiert werden.
ich bin zwar soweit dass ich den ersten buchstabe erfassen kann, aber weiss auch nicht weiter, wass da nicht stimmt.
Edit.OnChange:
Delphi-Quelltext
1: 2: 3: 4:
| procedure TFormVSC.JvDBSearchEdit1Change(Sender: TObject); begin SeekRecord(GridStrassenverzeichnis, [1], [JvDBSearchEdit1.text]); end; |
function:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| function SeekRecord(Grid: TStringGrid; ColOrder: array of Integer; StrList: array of string): Boolean; var I, j : Integer; begin Result := False; for I := 1 to Grid.RowCount - 1 do begin for J := Low(ColOrder) to High(ColOrder) do begin if (Grid.Cells[ColOrder[J], I] = StrList[J]) then Result := True else Result := False; end; if Result = True then Break; end;
if Result = True then Grid.Row := I end; |
hansa - So 03.05.09 20:42
| Zitat: |
| ... aber weiss auch nicht weiter, wass da nicht stimmt. |
Aber ich. So gut wie nichts. :mrgreen:
Delphi-Quelltext
1:
| GridStrassenverzeichnis, [1], [JvDBSearchEdit1.text]); |
[] stehen für Mengen "set of" und nicht für Arrays. [] gibts allerdings auch für Arrays. [1] schwebt frei im Raum ohne Bezug zu irgendwas. JvDBSearchEdit1.text ist kein OrdinalTyp -> F1 und kann deshalb gar nicht als Array-Index verwendet werden. Funktion wird nicht mal ausgewertet. Warum dann überhaupt ? Ähhmm, nicht gleich frustriert sein, aber die Anzahl der Fehler ist fast größer als die Zeilenanzahl. Soll das so weitergehen, oder wäre es nicht besser, mal absolute Grundlagen zu lesen. Z.B. Typen ???
dummzeuch - So 03.05.09 22:07
hansa hat folgendes geschrieben : |
| Zitat: | | ... aber weiss auch nicht weiter, wass da nicht stimmt. |
Aber ich. So gut wie nichts. :mrgreen:
Delphi-Quelltext 1:
| GridStrassenverzeichnis, [1], [JvDBSearchEdit1.text]); |
[] stehen für Mengen "set of" und nicht für Arrays.
|
Schonmal von Open Array Parameter gehoert? Wie sie z.B. bei der Format-Funktion verwendet werden? Das ist nicht das Problem.
twm
---
Moderiert von
Narses: Beiträge zusammengefasst---
whitef hat folgendes geschrieben : |
Suchfeld ist hierbei eine normale TEdit.
bei eingabe "a", soll die der eintrag der mit a beginnt markiert werden.
bei eingabe "amselweg", soll die der eintrag der "amselweg" markiert werden.
ich bin zwar soweit dass ich den ersten buchstabe erfassen kann, aber weiss auch nicht weiter, wass da nicht stimmt.
Delphi-Quelltext 1:
| if (Grid.Cells[ColOrder[J], I] = StrList[J]) then | |
Wenn Du den Anfang des Strings pruefen willst, solltest Du auch nur den Anfang vergleichen. Und am Besten auch noch case-insensitiv:
Delphi-Quelltext
1: 2:
| len := Length(StrList[j]); if SameText(grid.cells[colorder[j], i], LeftStr(StrList[J])) then |
Bin mir nicht sicher, ob das das Problem loest, habe es nicht ausprobiert.
twm
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!