Autor Beitrag
LittleBen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 258
Erhaltene Danke: 4

Win 7, Mac OS
Delphi 7
BeitragVerfasst: 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):
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: 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.

ausblenden volle Höhe Delphi-Quelltext
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 in der Form  'Vorname Nachname ' in einer Textdatei C:\TEMP\TEST.TXT gespeichert
  Namen := TStringList.Create;
  Namen.LoadFromFile('C:\TEMP\TEST.TXT');
end;

// dies ist die OnKeyProzedur der Editfelder

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 : stringconst ListeLoeschern : boolean);
var
  i : integer;
  p : integer;
begin
  if Trim(welcher)='' then 
    Exit;
  if ListeLoeschen then 
    ValuelistEditor1.Clear;  // nehme an, dass damit die Liste entleert wird
  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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 18.12.10 19:59 
user profile iconTranx hat folgendes geschrieben Zum zitierten Posting springen:
Am Besten speicherst Du die zu durchsuchenden Daten in einer Stringliste.
Geht irgendwie, aber am besten in einer geeigneten Datenstruktur. Zum Beispiel in einer eigenen Klasse für die Daten.

user profile iconTranx hat folgendes geschrieben Zum zitierten Posting springen:
Die Komponenten TValuelistEditor habe ich in meiner Delphi-Version nicht.
Das gibt es ab Delphi 7.
Tranx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 18.12.10 20:15 
user profile iconTranx hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 258
Erhaltene Danke: 4

Win 7, Mac OS
Delphi 7
BeitragVerfasst: 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 19.12.10 03:00 
Wie wäre es mit Keys?

Für diesen Beitrag haben gedankt: LittleBen
LittleBen Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 258
Erhaltene Danke: 4

Win 7, Mac OS
Delphi 7
BeitragVerfasst: Mo 20.12.10 18:17 
Boar geil!! Danke!!!