Здравствуйте! Пишу программу, по крайней мере, пытаюсь ее писать, но очень много трудностей возникает, надеюсь на вашу помощь.
На форме есть TreeView и ListView, также ADOConnection и ADOQuery. и таблица Access: (см. рисунок)

TreeView заполнен таким образом: (см. рисунок)

С помощью ADOQuery я вывожу строки из таблицы в ListView: (см. код)
Код:
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 | 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);
if ADOQuery1 . FieldByName( 'run' ).AsInteger = 0 then res := 'Нет'
else res := 'Да' ;
SubItems . Add(res);
end ;
ADOQuery1 . Next;
end ;
TasksLV . Items . EndUpdate;
end ;
|
на событие изменения TreeView я поставил загрузку этой процедуры LoadTasks:
Код:
1 2 3 4 | procedure TForm1 . TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
LoadTasks;
end ;
|
Но при компиляции программы, и на событие OnChange - TreeView, показ итемов в ListView происходит неправильно, как задумано. Помогите найти правильный ход решения моей задумки, и исправить ее.
Также выкладываю исходник своей программы.
http://evgenmil.gimnaziya-nt.ho-stin...c/ListView.rar
Заранее благодарю!