Autor |
Beitrag |
LittleBen
      
Beiträge: 258
Erhaltene Danke: 4
Win 7, Mac OS
Delphi 7
|
Verfasst: Sa 18.12.10 18:05
Hallo,
ich bin gerade an einem Projekt, bei dem ich die TValueListEditor-Komponente benutze.
Ich füge in die Liste 10 Rows (z.B eine Verwaltung von irgendwelchen Leuten):
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| ValueListEditor1.InsertRow('Franz', 'Müller', true); ValueListEditor1.InsertRow('Franz', 'Müller', true); ValueListEditor1.InsertRow('Heinz', 'Beck', true); ValueListEditor1.InsertRow('Lisa', 'Franke', true); ValueListEditor1.InsertRow('Heike', 'Müller', true); ValueListEditor1.InsertRow('Isabell', 'Jakubik', true); ValueListEditor1.InsertRow('Julia', 'Meier', true); ValueListEditor1.InsertRow('Max', 'Müller', true); ValueListEditor1.InsertRow('Paul', 'Meier', true); ValueListEditor1.InsertRow('Louise', 'Meier', true); |
Gut! Nun möchte ich alle Leute deren Nachnamen Müller sind aufgelistet haben und alle deren Nachnamen Meier sind, wie geht das?
Ich hoffe ihr könnt mir helfen!!!
Grüße,
Benny
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 18.12.10 18:16
Das klingt nach dem typischen Fehler, dass du die Datenhaltung mit der Anzeige auf der Oberfläche verwechselst. Der ValueListEditor ist zur Anzeige der anzuzeigenden Daten da. Nicht aber zum Halten der gerade nicht angezeigten Daten.
Füge aus deinen internen Daten einfach nur die Zeilen hinzu, die du auch haben möchtest.
|
|
Tranx
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: Sa 18.12.10 19:51
Am Besten speicherst Du die zu durchsuchenden Daten in einer Stringliste. Dann gibst Du in zwei Editfeldern die zu suchenden Nachnamen ein und anschließend durchsuchst Du die Stringliste nach dem Nachnamen und speicherst jede gefundende Zeile in deinen ValuelistEditor.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55:
| var Namen : TStringList;
procedure LadeNamen; begin Namen := TStringList.Create; Namen.LoadFromFile('C:\TEMP\TEST.TXT'); end;
procedure EditFeld1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin case Key of VK_RETURN : begin EditFeld2.SetFocus; Key := 0; end; end; end;
procedure EditFeld2KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin case Key of VK_RETURN : begin SucheNamen(EditFeld1.Text, TRUE); SucheNamen(EditFeld2.Text, FALSE); Key := 0; end; end; end;
procedure SucheNamen(const welcher : string; const ListeLoeschern : boolean); var i : integer; p : integer; begin if Trim(welcher)='' then Exit; if ListeLoeschen then ValuelistEditor1.Clear; for i := 0 to Namen.Count do begin p := Pos(' '+welcher,Namen[i]); if p>0 then begin ValuelistEditor1.InsertRow(Trim(Copy(Namen[i],1,p)),Trim(Copy(Namen[i],p+1,255)), TRUE); end; end; end; |
P.S. dies habe ich ohne Test der Prozeduren im Beitrag geschrieben. Bitte versuche es bei Dir. Für Fehlerfreiheit kann ich nicht garantieren.
Die Namen gibst Du in die beiden Editfelder ein. Mit Enter verlässt Du die Eignabe und beim ersten Editfeld wird das 2. aufgerufen, beim 2., Editfeld die Suche gestartet.
Die Komponenten TValuelistEditor habe ich in meiner Delphi-Version nicht.
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
Zuletzt bearbeitet von Tranx am Sa 18.12.10 20:09, insgesamt 2-mal bearbeitet
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 18.12.10 19:59
|
|
Tranx
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: Sa 18.12.10 20:02
Das ist klar. Das ist dann noch einfacher. Aber wenn man irgendwelche Textdateien zur Verarbeitung hat, ist das einfacher mit TStringlist.
Bei derartigen Aufgaben ist das kaum aufwändig, wie mein Code zeigt.
Was macht TValuelistEditor eigentlich? Außer Daten zeigen?
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 18.12.10 20:15
Tranx hat folgendes geschrieben : | Was macht TValuelistEditor eigentlich? Außer Daten zeigen? |
Es ist wie ein einfacher Objektinspektor. Leider kein sonderlich guter, besser ist TJvInspector von den JEDIs.
|
|
LittleBen 
      
Beiträge: 258
Erhaltene Danke: 4
Win 7, Mac OS
Delphi 7
|
Verfasst: So 19.12.10 02:36
Hat geklappt! Danke an euch.
Doch nun bin ich auf ein neues "Problem" gestoßen.
Also ich habe jetzt ein String hinzugefügt mit:
Delphi-Quelltext 1:
| ValueListEditor1.InsertRow('Hans','Otto',true); |
Und nun möchte ich die LINKE Seite ändern...hab eigentlich schon alles ausprobiert und bin zu keinem Ergebnis gekommen.
Habt ihr eine Lösung?
Glaub ich sollte doch die Komponente von JEDIs runterladen.
Grüße,
Benny
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 19.12.10 03:00
Für diesen Beitrag haben gedankt: LittleBen
|
|
LittleBen 
      
Beiträge: 258
Erhaltene Danke: 4
Win 7, Mac OS
Delphi 7
|
Verfasst: Mo 20.12.10 18:17
|
|
|