Главная страница
    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.04 c
2-1168031918
Riply
2007-01-06 00:18
2007.01.21
GetMem or New ? That is a question ! :))


4-1157122684
Teenager
2006-09-01 18:58
2007.01.21
поместить чужое окно(приложение) в свое окно(window, panel, etc.)


15-1167295202
root
2006-12-28 11:40
2007.01.21
Kylix


5-1147098886
Dstr
2006-05-08 18:34
2007.01.21
RichWiev


15-1167323894
oldman
2006-12-28 19:38
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский