E
evgen
Здравствуйте! Пишу программу, по крайней мере, пытаюсь ее писать, но очень много трудностей возникает, надеюсь на вашу помощь.
На форме есть TreeView и ListView, также ADOConnection и ADOQuery. и таблица Access: (см. рисунок)
link removed
TreeView заполнен таким образом: (см. рисунок)
link removed
С помощью ADOQuery я вывожу строки из таблицы в ListView: (см. код)
на событие изменения TreeView я поставил загрузку этой процедуры LoadTasks:
Но при компиляции программы, и на событие OnChange - TreeView, показ итемов в ListView происходит неправильно, как задумано. Помогите найти правильный ход решения моей задумки, и исправить ее.
Также выкладываю исходник своей программы.
Посмотреть вложение ListView.rar
Заранее благодарю!
На форме есть TreeView и ListView, также ADOConnection и ADOQuery. и таблица Access: (см. рисунок)
TreeView заполнен таким образом: (см. рисунок)
С помощью ADOQuery я вывожу строки из таблицы в ListView: (см. код)
Код:
procedure TForm1.LoadTasks;
var
res, id_par, id_bab: string;
begin
TasksLV.Items.BeginUpdate;
TasksLV.Items.Clear;
case TreeView1.Selected.Parent.Index of
-1: id_par := 'where ID_parent = 0';
0: id_par := 'where ID_parent = 0';
1: id_par := 'where ID_parent = 1';
2: id_par := 'where ID_parent = 2';
end;
case TreeView1.Selected.Index of
0: id_bab := 'ID_baby = 0';
1: id_bab := 'ID_baby = 1';
2: id_bab := 'ID_baby = 2';
end;
ADOQuery1.SQL.Text := 'select * from task ' + id_par + ' and ' + id_bab;
ADOQuery1.Open;
while not ADOQuery1.Eof do
begin
with TasksLV.Items.Add do
begin
Data := Pointer(ADOQuery1.FieldByName('ID').AsInteger);
Caption := ADOQuery1.FieldByName('title').AsString;
SubItems.Add(ADOQuery1.FieldByName('description').AsString);
SubItems.Add(ADOQuery1.FieldByName('ID_parent').AsString);
SubItems.Add(ADOQuery1.FieldByName('ID_baby').AsString);
//SubItems.Add(ADOQuery1.FieldByName('run').AsString);
if ADOQuery1.FieldByName('run').AsInteger = 0 then res := 'Нет'
else res := 'Да';
SubItems.Add(res);
end;
ADOQuery1.Next;
end;
TasksLV.Items.EndUpdate;
end;
Код:
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
LoadTasks;
end;
Также выкладываю исходник своей программы.
Посмотреть вложение ListView.rar
Заранее благодарю!