Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2012, 20:52   #1
googl
Форумчанин
 
Регистрация: 05.06.2010
Сообщений: 154
По умолчанию TreeView.Data левые значения

Доброго времени суток! Который раз извините за мое нубовство.
Суть проблемы:
имееется табилцв бд, в которой храняться материалы и классы.
Строится дерево по названию классов. Для каждого узла мне нужно хранить id записи из таблицы. Делаю следующим образом:
Код:
procedure TMaterialForm.TreeRefresh;
var
  i,y:integer;
  Node: TTreeNode ;
  P:^string;
begin
TreeView1.Items.Clear;
Adodataset1.Active:=false;
Adodataset1.CommandText:='Select * from Материалы ';
Adodataset1.Active:=true;
Adodataset1.First;
SetLength(mas,Adodataset1.RecordCount+1);
for i := 1 to Adodataset1.RecordCount do
  begin
    if (Adodataset1.Fields.Fields[13].AsString='') then
      begin
        Node:=TreeView1.Items.Add(nil, Adodataset1.Fields.Fields[1].Asstring);
        Mas[i]:=Adodataset1.Fields.Fields[0].Asstring;
        p := AllocMem(sizeOf(string));
        p^:=mas[i];
        node.Data:=(p);
        node.HasChildren:=true;
      end;
    if  (Adodataset1.Fields.Fields[13].AsString<>'') then
       begin
      For y:=0 to TreeView1.Items.Count-1 do
        begin
           If TreeView1.Items[y].Text=Adodataset1.Fields.Fields[13].AsString then
            begin
              TreeView1.Selected:=TreeView1.Items[y];
              Node:=TreeView1.Items.AddChild(TreeView1.Selected,adodataset1.Fields.Fields[1].Asstring);
              Mas[i]:=Adodataset1.Fields.Fields[0].Asstring;
              p := AllocMem(sizeOf(string));
              p^:=mas[i];
              //node.TreeView.Tag:=strtoint(Adodataset1.Fields.Fields[0].Asstring);
              node.Data:=(p);
              if Adodataset1.Fields.Fields[2].value=true then
                begin
                  Node.HasChildren:=true;
                   Mas[i]:=Adodataset1.Fields.Fields[0].Asstring;
                   p := AllocMem(sizeOf(string));
                   p^:=mas[i];
                   node.Data:=(p);
                end;
              TreeView1.Selected.Expanded := True;
              break;
            end;
          end;
        end;
    Adodataset1.Next;
  end;
end;
вывожу данные потом следующим образом
Код:
showmessage(inttostr(integer(Treeview1.Selected.Data)));

Все классно, все работает, но выводит левые цифры такого вида "14488592". Подскажите, пожалуйста, в чем моя криворукость?
googl вне форума Ответить с цитированием
Старый 07.05.2012, 21:02   #2
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Не надо сохранять указатель. Надо записывать значение ID. Например, так:
Код:
        Node:=TreeView1.Items.Add(nil, Adodataset1.Fields.Fields[1].Asstring);
        Node.Data := Pointer(Adodataset1.Fields[0].AsInteger);
Прик вне форума Ответить с цитированием
Старый 07.05.2012, 21:06   #3
googl
Форумчанин
 
Регистрация: 05.06.2010
Сообщений: 154
По умолчанию

Цитата:
Сообщение от Прик Посмотреть сообщение
Не надо сохранять указатель. Надо записывать значение ID. Например, так:
Код:
        Node:=TreeView1.Items.Add(nil, Adodataset1.Fields.Fields[1].Asstring);
        Node.Data := Pointer(Adodataset1.Fields[0].AsInteger);
Блин, спасибо большое!!!! Который раз выручаешь!!!
googl вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
левые формы DNLHC Общие вопросы Delphi 4 23.04.2012 19:20
missing data provider or data packet Dexes БД в Delphi 3 06.01.2012 11:58
Куда исчезает строка из Node.Data (TreeView)? Alexei91 Компоненты Delphi 12 07.08.2010 12:08
программа Добавляет левые элементы в массив, и не считает числа входящие в условие! lutfi Общие вопросы C/C++ 1 12.12.2009 00:48
Помогите TreeView и цифровые значения KWN, lnc Общие вопросы Delphi 15 02.06.2009 17:22