|
Вопрос # 5 656/ вопрос открыт / |
|
Приветствую, уважаемые эксперты!
Помогите пожалуйста в вопросе отображения иконок в TreeView.
Проблема следующая.
Изображения в TreeView поступают из ImageList.
При добавлении раздела (подраздела) в коде прописывается индекс иконки (код прилагается)
NewRazd.ImageIndex:=3;
NewRazd.SelectedIndex:=4;
Все хорошо при запущенной программе.
Однако стоит выйти из программы и снова войти
то при загрузке дерева индекс иконки меняется на нулевой из ImageList. И изображение иконок не поймешь как :(.....
Заранее благодарен
Al_Sha
Приложение: Переключить в обычный режим-
-
- procedure TBook.MenuItem4Click(Sender: TObject);
- var
-
-
-
- id, RParentID: integer;
- fl:boolean;
- i:integer;
- label Fin;
- begin
-
-
- if sTreeView1.Selected = nil then
-
- s := '';
-
-
-
- fin:
-
-
- begin
- fl:=true;
- for i:=0 to sTreeView1.Items.Count-1 do
- if s=sTreeView1.Items[i].Text then
- begin
- fl:=false;
- break
- end;
- if fl then
- NewRazd := sTreeView1.Items.AddChild(sTreeView1.Selected, s)
- //TreeView1.Items.AddChild(TreeView1.Items.Item[0],edName.Text)
- else
- begin
-
- goto fin;
- end
- end;
- NewRazd.ImageIndex:=3;
- NewRazd.SelectedIndex:=4;
-
-
- Q1.SQL.Clear;
- Q1.SQL.Add('select * from Razdels where Name=''' + NewRazd.Parent.Text + '''');
- Q1.Open;
-
-
-
- tRazdels['ParentID'] := Q1['ID'];
-
- tRazdels['Name'] := NewRazd.Text;
-
- tRazdels.Post;
- end;
-
- procedure TBook.TreeViewAddChild(rod, doch: string; intID: Integer);
-
- begin
-
- for i := 0 to sTreeView1.Items.Count - 1 do begin
-
- if sTreeView1.Items[i].Text = rod then begin
- sTreeView1.Items[i].Selected := True;
- Break;
- end;
- end;
-
-
- sTreeView1.Items.AddChild(sTreeView1.Selected, doch);
- for i := 0 to sTreeView1.Items.Count - 1 do begin
-
- if sTreeView1.Items[i].Text = doch then begin
- sTreeView1.Items[i].Selected := True;
- Break;
- end;
- //if
- end; //for
-
-
- sTreeView1.Selected.Data := Pointer(intID);
- end;
-
-
-
- procedure TBook.CreateTreeView;
-
- begin
- ///////////////////////////////////////////
-
-
-
- sTreeView1.Items.Clear;
-
- Q1.SQL.Clear;
- Q1.SQL.Add('select * from Razdels where ParentID=0');
- Q1.Open;
-
-
- while not Q1.Eof do begin
- sTreeView1.Selected := nil;
- sTreeView1.Items.Add(sTreeView1.Selected, Q1.FieldByName('Name').AsString);
- Q1.Next;
- end;
-
-
- Q1.SQL.Clear;
- Q1.SQL.Append('select r.Name, d.Name, d.ID ' +
- 'from Razdels r, Razdels d ' +
- 'where r.ID=d.ParentID');
- Q1.Open;
-
- Q1.First;
- while not Q1.Eof do begin
- TreeViewAddChild(Q1.Fields[0].AsString, Q1.Fields[1].AsString, Q1.Fields[2].AsInteger);
- Q1.Next;
- end;
-
- sTreeView1.FullExpand;
- end;
-
-
 |
Вопрос задал: Al_Sha (статус: Посетитель)
Вопрос отправлен: 28 сентября 2011, 11:01
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, Al_Sha!
Хотя я и отношусь к xml немного предвзято, но в данном случае он будет самое оно. Для начала смотрим http://www.webdelphi.ru/2010/02/soxranenie-treeview-v-xml-fajl/ пример, как сохранить и достать с файла TreeView.
Там есть такая строка
Node.Attributes['Level'] := IntToStr(tn.Level);
Никто не мешает точно также сохранить себе индекс иконки и другую интересную инфу.
А а вот сами картинки можно сохранить как прям тут в файл в виде бинарных данных, либо отдельно в bmp.
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 28 сентября 2011, 12:09
|
Мини-форум вопроса
Всего сообщений: 1; последнее сообщение — 28 сентября 2011, 11:13; участников в обсуждении: 1.
|
min@y™ (статус: Доктор наук), 28 сентября 2011, 11:13 [#1]:
Цитата (Al_Sha):
Однако стоит выйти из программы и снова войти то при загрузке дерева индекс иконки меняется на нулевой из ImageList. И изображение иконок не поймешь как
Ну и ничего удивительного. У тебя же нет присвоения ImageIndex и SelectedIndex при загрузке дерева.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|