Hallo Luckie.
Leider zwar nicht wie gewünscht, will sagen, nicht in einem einzigen Listview, sondern auf drei Listviews verteilt, die ich in einem PageControl untergebracht habe. Nicht schön aber es funktioniert. Das Filtern ist recht einfach.
Delphi-Quellcode:
procedure TForm1.ComboBox5Change(Sender: TObject);
var
StartKnoten : IXMLNode;
ANode : IXMLNode;
IDEENR,
NAME, NACHNAME, KOMPLEX, GRUPPE :
string;
begin
// Etwas fürs Auge für den User
Screen.Cursor:=crHourglass;
// Löschen der Listviews
lv.Clear;
lv2.Clear;
lv3.Clear;
// Lade XML-Dokument
XMLKomplex.FileName := '
C:\KOMPLEX\TEST_NEU.XML';
// Setzen der Komponente TXMLDocument auf Active
XMLKomplex.Active:=True;
// Start Knoten setzen
StartKnoten := XMLKomplex.DocumentElement.ChildNodes.First.ChildNodes.FindNode('
V_KOMPLEX');
ANode := StartKnoten;
// Durchlaufen bis Ende erreicht wurde
repeat
// Prüfen ob Wert aus ComboBox5 in XML-Datei
if ANode.ChildNodes['
IDEENR'].Text = ComboBox5.Text
THEN
begin
IDEENR := ANode.ChildNodes['
IDEENR'].Text;
NAME := ANode.ChildNodes['
NAME'].Text;
NACHNAME := ANode.ChildNodes['
NACHNAME'].Text;
KOMPLEX := ANode.ChildNodes['
KOMPLEX'].Text;
GRUPPE := ANode.ChildNodes['
GRUPPE'].Text;
// Eintragen in Listview
with LV.Items.Add
do
begin
SubItems.Add(IDEENR);
SubItems.Add(
NAME);
SubItems.Add(NACHNAME);
SubItems.Add(KOMPLEX);
SubItems.Add(GRUPPE);
end;
// Ende Eintrag in Listview
end;
// Weiter zum nächsten Knoten
ANode := ANode.NextSibling;
// Durchlaufen bis NIL
until ANode =
nil;
// Wieder normaler Cursor
Screen.Cursor:=crDefault;
// Aufruf OnClick, welche die anderen XML-Dateien durchsuchen und mit ComboBox5.Text vergleichen
// und zur Anzeige bringen
Button1.Click;
Button2.Click;
Button3.Click;
end;
Die OnClicks der Buttons 1 - 3 machen das gleiche wie diese Procedure. Sollte ich es noch "richtig" hinbekommen, poste ich meine Lösung.
Cu Achim