![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как работать с Data (Pointer) в компоненте TreeView? [D7, XP]
Yellow_D © (2009-02-19 14:59:00)Здравсьвуйте!
Уважаемый мастера, подскажите пожалуйста, как пользоваться Data в компоненте TreeView?
т.е. я хочу, чтобы к индексу была ссылка на документ C:\\1.txt.
Сохранить и загрузить?
p.s. Кода нет :( Поэтому куда копать с данным вопросом не знаю.
С Уважением.
Yellow_D (2009-02-20 22:20:00) [1]Уважаемые мастера, я так и не смог понять реализацию..... :(
Мне должно быть стыдно. Но очень хочу понять, как решается данная задача. Покажите пожалуйста, как правильно решить задачу. С Ума уже начинаю сходить!
С Уважением!
Сергей М. (2009-02-20 14:20:00) [2]
> результат не тот
Ну тогда лезем в генофонд и видим там действительный порядок обхода узлов дерева при их сохранении:
procedure TTreeStrings.SaveTreeToStream(Stream: TStream);
..
begin
..
ANode := Owner[0]; // эквивалент TreeView.Items.GetFirstNode
while ANode <> nil do
begin
...
ANode := ANode.GetNext;
end;
end;
end;
Отсюда следует, что при сохранении св-в Data узлов с целью последующего правильного восстановления необходимо придерживаться именно такого порядка обхода.
Yellow_D (2009-02-20 14:00:00) [3]
> реализация должна быть правильная.
> изучать основы программиования.
> опираться на хелп.
И всё????
Yellow_D (2009-02-20 14:00:00) [4]
> реализация должна быть правильная.
> изучать основы программиования.
> опираться на хелп.
И всё????
Медвежонок Пятачок (2009-02-20 09:55:00) [5]реализация должна быть правильная.
изучать основы программиования.
опираться на хелп.
Mozgan (2009-02-20 09:41:00) [6]
> есть еще код отображения
Я это уже понял из постов выше.
Прошу подсказать мне какова реализация данного кода.
С чего начать, куда смотреть и на что опираться.
Медвежонок Пятачок (2009-02-20 09:23:00) [7]кроме кода загрузки есть еще код отображения. его здесь никто не видел.
Yellow_D (2009-02-20 09:17:00) [8]
> И что наблюдаешь ?
TreeView заполняется всем содержимым из файла, т.е. имена узлов и значения свойства Data плюс ко всему.
Давайте еще раз посмотрим.
for i:=0 to SL.Count-1 do //в цикле начиная с первого элемента пробегаю по всему стринглисту.
treeview1.Items[i].Data := StrNew(PChar(SL[i])); //далее заполняю компонент значениями и добавляя свойство Data к узлам.
Вы говорите что есть ошибка в коде. Я согласен, не спорю, так как результат не тот. Тогда в чем же тогда ошибка, или что-то пропущено в коде?
Сергей М. (2009-02-19 23:16:00) [9]
> бегу в цикле
> treeview1.Items[i].Data := StrNew(PChar(SL[i]));
И что наблюдаешь ?
Yellow_D (2009-02-19 22:50:00) [10]Сергей, я же все написал так, как вы посоветовали и так же как соображал.
var
s: String;
pStr: PChar;
FS: TFileStream;
begin
FS := TFileStream.Create('c:\проверка.dat', fmOpenRead);
SL := TStringList.Create; //стринглист
try
treeview1.LoadFromStream(FS);
SL.LoadFromStream(FS);
for i:=0 to SL.Count-1 do //бегу в цикле....
treeview1.Items[i].Data := StrNew(PChar(SL[i]));
finally
SL.Free;
FS.Free;
Yellow_D (2009-02-19 22:48:00) [11]
> ляг поспи
Это значит, я трус!
Не засну, пока не разберусь!!!! Я это выбрал - значит должен до последнего!
Я над этим проектом полдня копаю, сейчас тупик и не знаю как из него вылезти, где выход искать.
В коде всего несколько строк, и для начинающего это не всегда просто найти ошибку и устранить. Так же и думать. Вы с опытом и к Вам обратился за помощью и консультацией, а не слушать, как все здесь лучше других знают delphi. Обидно очень!
Сергей М. (2009-02-19 22:48:00) [12]
> Yellow_D (19.02.09 22:39) [28]
Ты и вправду тупой или прикидываешься ?
Сказано же
> присваивая указатель на копию св-ву Data i-гоже элемента
> дерева
Разницу сежду 0и iвидишь ?
Медвежонок Пятачок (2009-02-19 22:40:00) [13]ляг поспи
Yellow_D (2009-02-19 22:39:00) [14]Не доходит. Мастера подскажите пожалуйста!
Медвежонок Пятачок (2009-02-19 22:34:00) [15]примерно так же как и код загрузки
Yellow_D (2009-02-19 22:32:00) [16]
> теперь правь код отображения
Вот про это и спрашиваю.....
Как?
Медвежонок Пятачок (2009-02-19 22:30:00) [17]ну зашибись. поменял.
загрузку.
теперь правь код отображения
Yellow_D (2009-02-19 22:28:00) [18]Исх выше.
treeview1.Items[ i].Data := StrNew(PChar(SL[i]));
Медвежонок Пятачок (2009-02-19 22:27:00) [19]Ты не в уме меняй, ты в исходнике меняй
treeview1.Items[0].Data := StrNew(PChar(SL[i]));
Yellow_D (2009-02-19 22:26:00) [20]Извиняй! Ошибочка :)
Поправка
procedure TForm1.Button2Click(Sender: TObject);
var
s: String;
pStr: PChar;
FS: TFileStream;
begin
FS := TFileStream.Create('c:\проверка.dat', fmOpenRead);
SL := TStringList.Create; //стринглист
try
treeview1.LoadFromStream(FS);
SL.LoadFromStream(FS);
for i:=0 to SL.Count-1 do //бегу в цикле....
treeview1.Items[i].Data := StrNew(PChar(SL[i]));
finally
SL.Free;
FS.Free;
end;