procedure TMO18Form.IDM_EDITMOVIEClick(Sender: TObject);
var
curNode : IXMLDOMNodeList;
idx : integer;
i : integer;
li : TListItem;
begin
// nothing selected, or XML parser is blowin' in the wind ...
if(MovieList.Selected =
nil)
or (xmldoc =
nil)
then exit;
// get the node, using Movie's title
idx := -1;
curNode := xmldoc.selectNodes('
/' + mainnode + '
/' + movienode +
'
[name="' + MovieList.Selected.Caption + '
" and ' +
'
format="' + MovieList.Selected.SubItems[0] + '
"]');
if(curNode.length > 1)
then
begin
DoubleItems.ListView1.Items.Clear;
DoubleItems.ListView1.Items.BeginUpdate;
for i := 0
to curNode.length - 1
do
begin
li := DoubleItems.ListView1.Items.Add;
li.Caption := inttostr(i);
li.SubItems.Add(curNode.item[i].selectSingleNode(szMovieArray[1]).text);
li.SubItems.Add(curNode.item[i].selectSingleNode(szMovieArray[2]).text);
end;
DoubleItems.ListView1.Items.EndUpdate;
// show form
if(DoubleItems.ShowModal = mrOk)
then
idx := DoubleItems.ListView1.Selected.
Index;
end
// only 1 item
else
if(curNode.length = 1)
then idx := 0
// there's nothing
else
exit;
// nothing's selected
if(idx < 0)
then exit;
with AddingForm
do begin
// Hier werden die Werte aus der Datei an die entsprechenden
// Eingabefelder der "AddingForm"-Form übergeben
Caption := EDITMOVIE;
Edit1.Text :=
curNode.item[idx].selectSingleNode(szMovieArray[1]).text;
ComboBox1.ItemIndex := ComboBox1.Items.IndexOf(
curNode.item[idx].selectSingleNode(szMovieArray[2]).text);
ComboBox2.ItemIndex := ComboBox2.Items.IndexOf(
curNode.item[idx].selectSingleNode(szMovieArray[3]).text);
Edit2.Text :=
curNode.item[idx].selectSingleNode(szMovieArray[4]).text;
Edit3.Text :=
curNode.item[idx].selectSingleNode(szMovieArray[5]).text;
ComboBox3.ItemIndex := ComboBox3.Items.IndexOf(
curNode.item[idx].selectSingleNode(szMovieArray[6]).text);
ComboBox4.ItemIndex := ComboBox4.Items.IndexOf(
curNode.item[idx].selectSingleNode(szMovieArray[7]).text);
Edit4.Text :=
curNode.item[idx].selectSingleNode(szMovieArray[8]).text;
Memo1.Lines.Text :=
curNode.item[idx].selectSingleNode(szMovieArray[9]).text;
Edit5.Text :=
curNode.item[idx].selectSingleNode(szMovieArray[10]).text;
// Wenn der User diese Form mit OK schließt, dann bedeutet
// das, er möchte die neuen Werte speichern; und das passiert
// dann hier
if(AddingForm.ShowModal = mrOk)
then begin
curNode.item[idx].selectSingleNode(szMovieArray[1]).text := Edit1.Text;
curNode.item[idx].selectSingleNode(szMovieArray[2]).text :=
ComboBox1.Items[ComboBox1.ItemIndex];
curNode.item[idx].selectSingleNode(szMovieArray[3]).text :=
ComboBox2.Items[ComboBox2.ItemIndex];
curNode.item[idx].selectSingleNode(szMovieArray[4]).text := Edit2.Text;
curNode.item[idx].selectSingleNode(szMovieArray[5]).text := Edit3.Text;
curNode.item[idx].selectSingleNode(szMovieArray[6]).text :=
ComboBox3.Items[ComboBox3.ItemIndex];
curNode.item[idx].selectSingleNode(szMovieArray[7]).text :=
ComboBox4.Items[ComboBox4.ItemIndex];
curNode.item[idx].selectSingleNode(szMovieArray[8]).text := Edit4.Text;
curNode.item[idx].selectSingleNode(szMovieArray[9]).text :=
Memo1.Lines.Text;
curNode.item[idx].selectSingleNode(szMovieArray[10]).text := Edit5.Text;
self.UpdateList(ColumnToSort);
end;
end;
end;