Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как работать с Data (Pointer) в компоненте TreeView? [D7, XP]


Страницы:   1 2 3

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;


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо