Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

использование ehlib в режиме TreeView [D7, 2000]


delphim ©   (2006-12-26 06:58:00) 

Здравствуйте !
Пытаюсь использовать 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-28 10:03:00) [1]

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


ЮЮ   (2006-12-28 04:22:00) [2]

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


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

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

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-26 11:32:00) [4]


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


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


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

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


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


> 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 07:00:00) [7]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо