Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];

Вниз

tTreeView, помогите с датами в узлах   Найти похожие ветки 

 
Vlad Oshin ©   (2008-04-30 14:33) [0]

по статье
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=488
делаю свой DBTreeView

Есть Таблица
CREATE TABLE [dbo].[tbWH] (
[ID] [uniqueidentifier] NOT NULL ,
[NameGroup] [nchar] (50) COLLATE Cyrillic_General_CI_AS NOT NULL ,
[ParentID] [uniqueidentifier] NOT NULL ,
[Folder] [int] NOT NULL
) ON [PRIMARY]


ID - идентификатор узла
ParentID - подчинение узла узлу
"{00000000-0000-0000-0000-000000000000}" - идентификатор никому не подчиняющемуся узлу
Задача построить дерево
----------------------------------------------------------------
Procedure TFormTree.ExpandLevel( Node : TTreeNode);
Var
 ID : string[40];
 i  : Integer;
 TreeNode : TTreeNode;
Begin
// Для самого верхнего уровня выбрать только тех, кто не имеет родителей.
   IF Node = nil
    Then ID:=QuotedStr("{00000000-0000-0000-0000-000000000000}")
    Else begin
          ID:=string(Node.Data);

Тут ID приходит со всяким мусором в конце, например
ID = {B10471CF-3EB4-4C7B-AE8B-B4B2C336BB34"#0#0#0
это верно, до момента выделенного курсивом, т.е. такая запись в таблице есть, но последние символы не такие
        end;

   qTreeCompanies.Close;
   qTreeCompanies.SQL.Text:="select * from tbWH where ParentID="+ ID;
   qTreeCompanies.Open;
   TreeCompanies.Items.BeginUpdate;
   // Для каждой строки из полученного набора данных
   // формируем ветвь в TreeView, как дочерние ветки к той,
   // которую мы только что "раскрыли"
   For i:=1 To qTreeCompanies.RecordCount Do
   Begin
      // Запишем в поле Data ветки ее идентификационный номер(ID) в таблице
      TreeNode:=TreeCompanies.Items.AddChildObject(Node,
                                 qTreeCompanies.FieldByName("NameGroup").AsString ,
                                 Pointer(qTreeCompanies.FieldByName("ID").AsString));

-----
Как избавится, как построить таки дерево? (если я руками под дебагером эти символы перебиваю - то все правильно строит)


 
Сергей М. ©   (2008-04-30 14:43) [1]


>       // Запишем в поле Data ветки ее идентификационный
> номер(ID) в таблице
>       TreeNode:=TreeCompanies.Items.AddChildObject(Node,
>
>                                  qTreeCompanies.FieldByName("NameGroup").
> AsString ,
>                                  Pointer(qTreeCompanies.
> FieldByName("ID").AsString));


Не номер ты туда записываешь, а указатель на галиматью, потому что время жизни строки, получаемой вызовом qTreeCompanies.FieldByName("ID").AsString, меньше времени выполнения метода AddChildObject.


 
Reindeer Moss Eater ©   (2008-04-30 14:54) [2]

Он пойнер использует как хранилище интегер типа. Так что все нормально.


 
Reindeer Moss Eater ©   (2008-04-30 14:55) [3]

Только непонятно зачем AsString, если нужно AsInteger


 
Reindeer Moss Eater ©   (2008-04-30 14:57) [4]

Ежели нужна строка, то
AddObject("bla bla bla", StrNew(Pchar(FieldByName("bla bla bla ").AsString)))


 
Сергей М. ©   (2008-04-30 15:02) [5]


> непонятно зачем AsString, если нужно AsInteger
>


Вот потому и галиматья)


 
Vlad Oshin ©   (2008-04-30 15:09) [6]


> Reindeer Moss Eater ©   (30.04.08 14:57) [4]
> Ежели нужна строка, то
> AddObject("bla bla bla", StrNew(Pchar(FieldByName("bla bla
> bla ").AsString)))

спасибо, так работает


 
Reindeer Moss Eater ©   (2008-04-30 15:25) [7]

Работать-то работает, только StrDispose делать кроме тебя будет некому. Пушкина убили на дуэли.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
2-1209826304
AndreWG
2008-05-03 18:51
2008.05.25
DbGrid


2-1209531259
solo_
2008-04-30 08:54
2008.05.25
Назначение OnDrawColumnCell в Рантайм для Грида


4-1189595802
aidyn
2007-09-12 15:16
2008.05.25
Как можно изменить региональные настройки


15-1207764860
@!!ex
2008-04-09 22:14
2008.05.25
Ура! Проект собрался на FPC!!


15-1208174302
LinkOs10
2008-04-14 15:58
2008.05.25
Вопрос администраторам MSSQL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский