Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.11;
Скачать: CL | DM;

Вниз

TreeView ключевое поле БД,   Найти похожие ветки 

 
AIB   (2003-07-17 15:53) [0]

У меня следующий вопрос:
я заполняю TreeView данными из таблицы БД,
(текстовое поле, и ключевое поле ID)таким образом:
TreeView.Items.AddChildObject(Node,Table.Fields[1].AsString,
Pointer(Table.Fields[0].AsInteger)).
Затем могу легко узнать в TreeView ID-поле так:
…=Integer(Node.Data).

Проблема в следующем.
Я работаю с таблицей FoxPro(.dbf) где ключевое поле имеет
не числовой, а строковый тип(примерно такого вида "rdk0000034" ).
Как в таком случае грамотно заполнить параметры процедуры
AddChildObject(...,...,Pointer(...))?
Чтобы определять ID из TreeView аналогично вышеуказанному
...(Node.Data)

Или это делается как-то иначе?. Кто сталкивался?
Спасибо всем тем, кто ответит по существу!!!

Любителей считать всех кроме себя "тормозами"
просьба не беспокоить, плз!


 
AkaSaint ©   (2003-07-17 16:36) [1]

Очевидно, в 4 байта значение типа "rdk0000034" не уместишь. Поэтому я бы на твоем месте выделял бы память под такую строку динамически и указатель на эту строку записывал бы в Node.Data. Затем, естетственно, освобождал бы память.


 
AIB   (2003-07-17 17:12) [2]

Ни разу так не делал. Но быть может вставишь
пару строк в предполагаемую процедуру, чтобы
мне понять в общих чертах механизм

procedure xxx;

begin

TreeView.Items.AddChildObject(Node,Table.Fields[1].AsString,
Pointer(....)).


....... //определение значения Node.Data
end

Спасибо!!!!




 
AIB   (2003-07-17 20:52) [3]

Ну что, никто так и не сможет мне помочь???


 
sniknik ©   (2003-07-17 22:25) [4]

> Любителей считать всех кроме себя "тормозами"
> просьба не беспокоить, плз!
(это не сноска, это ответ на AIB (17.07.03 20:52))


 
AkaSaint ©   (2003-07-17 22:47) [5]

Честно говоря, я уже не помню синтаксис в Дельфи. Могу на Си написать :)

AnsiString * KeyStrPtr = new AnsiString(Table.Fields[0].AsInteger);
TreeView.Items.AddChildObject(Node,Table.Fields[1].AsString,
KeyStrPtr).
Когда тебе больше не нужен этот узел в дереве, выполняешь:
delete Node.Data;


 
AkaSaint ©   (2003-07-17 22:50) [6]

Хорошенький гибрид Паскаля с Си получился :-) Точки нужно на стрелочки заменить.


 
Соловьев ©   (2003-07-18 10:08) [7]

Вот вырезка из моей проги, если что не понятно - спрашивай:

NodeData = ^ItemRec;
ItemRec = record
Id : integer;
Id_employee: integer;
Parent: integer;
CCount: integer;
Rating: integer;
CanChild: boolean;
Text: string;
end;

...

TTreeView(managment_structure).Items.BeginUpdate;
while not Eof do
begin
New(PNode);

PNode.Id := FieldByName("id").AsInteger;
PNode.Parent := FieldByName("management_parent").AsInteger;
PNode.CCount := FieldByName("count_child").AsInteger;
PNode.Text := FieldByName("management_txt").AsString;
PNode.Id_employee := FieldByName("id_employee").AsInteger;
PNode.CanChild := FieldByName("id_employee").AsInteger = -1;
PNode.Rating := FieldByName("raiting").AsInteger;

TempNode := managment_structure.Items.AddChildObject(Node, PNode.Text, PNode);

TempNode.HasChildren := PNode.CCount > 0;



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

Текущий архив: 2003.08.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
14-33368
Soft
2003-07-25 14:55
2003.08.11
Программирование как Высшая форма творчества


3-33047
Rov
2003-07-14 13:55
2003.08.11
Сохранение JPG


1-33101
Alex-21
2003-07-26 20:38
2003.08.11
Немедленное завершение процедуры


8-33232
Serg123
2003-04-14 15:37
2003.08.11
Получение свойств avi файла


1-33224
Vyacheslav
2003-07-29 15:27
2003.08.11
Как зашить exe в новый exe