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

Вниз

использование 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.042 c
2-1167314886
cvg
2006-12-28 17:08
2007.01.21
не находится хэндл у самой программы


15-1167773487
Nic
2007-01-03 00:31
2007.01.21
Нейронные сети


6-1155728885
vodvorezlaya
2006-08-16 15:48
2007.01.21
докачка файлов из сети


1-1164780901
Alex_C
2006-11-29 09:15
2007.01.21
Как во время убить мультимедиа таймер?


2-1167341279
Vladimir1984
2006-12-29 00:27
2007.01.21
Как присвоить цвету текст(цифровое значение)...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский