Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.009 c
3-33044
tamara
2003-07-17 15:43
2003.08.11
КАК ВЫДЕЛИТЬ ЦВЕТОМ СТРОКИ DBGrid


6-33249
drnet
2003-06-06 03:58
2003.08.11
TWebBrowser не отрабатывает OnBeforeNavigate под XP


3-33074
AkaSaint
2003-07-18 23:31
2003.08.11
Locking granularity, используемая Jet Access


14-33265
Soft
2003-07-23 16:59
2003.08.11
Компьютерные игры для взрослых


8-33225
Andrew Kosovich
2003-04-13 12:57
2003.08.11
mp3 Теги...




   Наверх