Autor Beitrag
whitef
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 202
Erhaltene Danke: 1

Windows X
Delphi XE X
BeitragVerfasst: So 03.05.09 17:54 
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:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TFormVSC.JvDBSearchEdit1Change(Sender: TObject);
begin
  SeekRecord(GridStrassenverzeichnis, [1], [JvDBSearchEdit1.text]);
end;


function:
ausblenden 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;
     // if Result = False then Break;
    end;
    if Result = True then Break;
  end;

  if Result = True then
    Grid.Row := I
end;
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: So 03.05.09 20:42 
Zitat:
... aber weiss auch nicht weiter, wass da nicht stimmt.


Aber ich. So gut wie nichts. :mrgreen:

ausblenden 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 ???

_________________
Gruß
Hansa
dummzeuch
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 593
Erhaltene Danke: 5


Delphi 5 ent, Delphi 6 bis Delphi XE8 pro
BeitragVerfasst: So 03.05.09 22:07 
user profile iconhansa hat folgendes geschrieben Zum zitierten Posting springen:
Zitat:
... aber weiss auch nicht weiter, wass da nicht stimmt.


Aber ich. So gut wie nichts. :mrgreen:

ausblenden 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 user profile iconNarses: Beiträge zusammengefasst---

user profile iconwhitef hat folgendes geschrieben Zum zitierten Posting springen:
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.

ausblenden 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:

ausblenden 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