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

Вниз

использование ehlib в режиме TreeView   Найти похожие ветки 

 
delphim   (2006-12-26 06:58) [0]

Здравствуйте !
Пытаюсь использовать ehlib 4 в режиме дерева. В документации написано:
“При появлении новой записи, MemTable пытается найти для нее Parent запись, осуществляя поиск записей, у которых значение поля KeyFieldName равно значению поля RefParentFieldName новой записи.”

А вот на таком наборе данных формируется ошибка
KeyFieldName RefParentFieldName nameNode
---------------------------------------------------------------
1  1   parent 1
0  1   child 1 of parent 1
0  1   child 2 of parent 1
2  2   parent 2
0  2   child 1 of parent 2
0  2   child 2 of parent 2
0  2   child 3 of parent 2

Используется связка  DBGridEh-DataSource-MemTableEh-DataDriverEh-DataSet. В качестве DataSet выступает хранимая процедура mssqlServer2000.
В delphi7 назначены свойства:

MemTable.TreeList.KeyFieldName := "KeyFieldName";
MemTable.TreeList.RefParentFieldName := "RefParentFieldName";
MemTable.TreeList.DefaultNodeExpanded := false;
MemTable.TreeList.FullBuildCheck := true;
MemTable.Active := true;
MemTable.TreeList.Active := true;  // here is error

Вроде всё верно. Что я не понял ?


 
delphim   (2006-12-26 07:00) [1]

извиняюсь, не сказал какая ошибка.
Формируется ошибка “Reference-loop found.


 
ЮЮ ©   (2006-12-26 10:00) [2]


> 1  1   parent 1


сам себе родитель? Н.д., ИМХО, должен быть вида
KeyFieldName RefParentFieldName nameNode
---------------------------------------------------------------
1  0   parent 1
2  1   child 1 of parent 1
3  1   child 2 of parent 1
4  0   parent 2
5  4   child 1 of parent 2
6  4   child 2 of parent 2
7  4   child 3 of parent 2


 
delphim   (2006-12-26 11:28) [3]

ЮЮ ! Спасибо.
Вот что значит свежий взгляд. Для 1-й строки я почему-то не обращал внимания на значение поля RefParentFieldName. После изменений всё поехало.


 
ЮЮ ©   (2006-12-26 11:32) [4]


> Для 1-й строки я почему-то не обращал внимания на значение
> поля RefParentFieldName


А для последующих - не обращал внимания на значение поля KeyFieldName? :)


 
delphim   (2006-12-26 13:09) [5]

ЮЮ ! Что-то сегодня я очень неаккуратен. Ну, дерево, наконец, получилось. Но не могу справиться с такой функциональностью: требуется отобразить данные одной колонки в несколько строк. Если использовать

aDBGrid.RowLines := 2;  // aDBGrid is type TDBGridEh
aDBGrid.Columns[1].WordWrap := true;  // эта колонка с длинным текстом

то высота строк устанавливается для всех строк.
А нужно только для некоторых, - для Parent узлов aDBGrid.RowLines должно быть равным := 1; для детёнышей равным := 2;
Написал
aDBGrid.OptionsEh := aDBGrid.OptionsEh + [dghFitRowHeightToText];
но эффект не получил.

Вот мои безрезультатные попытки:
//  aDBGrid.RowHeight := -1;
aDBGrid.RowLines := 0;
aDBGrid.OptionsEh := aDBGrid.OptionsEh + [dghFitRowHeightToText];
aDBGrid.DrawMemoText := true;
aDBGrid.RowSizingAllowed := true;

Возможно, TDBGridEh не позволяет это сделать ?


 
ЮЮ ©   (2006-12-28 04:22) [6]

В TDBGrid-е все строки по определению дожны быть одной высоты, в отличии от TDraw(String)Grid, потому что у него не столько строк, сколько записей в отображаемом наборе данных, а столько, сколько можно увидеть на экране за один раз. Ведь при скроллировании DataSet-а в одной и той же строке может оказаться то запись, для которой нужна высота в 1 строку, то та, для которой нужна 2. Можно в OnDrawCell вычислить необходимую высоту строки и изменить protected у TDBGrid RowHeights, только осторожно, чбы в Stack Overflow не влететь :).


 
delphim   (2006-12-28 10:03) [7]

ЮЮ !
Вы имеете ввиду TCustomGrid(...).RowHeights[Index] ? Спасибо, попробую.
В help написано:
"Set RowWidths at runtime to change the height of an individual row."



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

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

Наверх




Память: 0.48 MB
Время: 0.044 c
2-1167218022
term1t
2006-12-27 14:13
2007.01.21
ADO + MS VFP


1-1164451128
umbra
2006-11-25 13:38
2007.01.21
насколько приемлем такой конструктор?


2-1167283740
Sw
2006-12-28 08:29
2007.01.21
поле типа AsDateTime


2-1167362436
Adios
2006-12-29 06:20
2007.01.21
TRichEdit


2-1166628936
Adios
2006-12-20 18:35
2007.01.21
TWebBrowser