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

Вниз

ehlib   Найти похожие ветки 

 
gedd   (2004-02-09 07:22) [0]

При одновремменной сортировке по нескольким столбцам в dbehlib пропадают заголовки столбцов. Автор ответил что dbehlib в случае динамических столбцов при сортировке, пересоздает label у полей/столбцов. В связи с этим вопрос где и как я могу востановить наименования столбцов?


 
Sandman25   (2004-02-09 10:48) [1]

По-моему, лучше сделать нединамические столбцы. Тогда не надо будет восстанавливать, потому что не будет исчезать.


 
gedd   (2004-02-09 11:07) [2]

Не могу разные базы, разное количество столбцов.


 
Sandman25   (2004-02-09 11:18) [3]

Тогда поподробнее насчет исчезновения. Было на русском, стало на английском?


 
gedd   (2004-02-09 13:36) [4]

Нет не так
я сам в отдельной процедуре указываю как назвать столбец и его ширину, а после сортировки по нескольким столбцам он скидывает названия на названия полей.


 
Sandman25   (2004-02-09 13:37) [5]

[4] gedd © (09.02.04 13:36)

Значит, после сортировки нужно опять вызвать "отдельную процедурку".


 
KSergey   (2004-02-09 14:04) [6]

Или все же определить статические столбцы, и играться Visible для достижения требуемого результата.


 
roottim   (2004-02-09 14:24) [7]

>я сам в отдельной процедуре указываю как назвать столбец и его ширину
а "назвать" наверно записывается в колумн ехлиба... ежели так, то выход прост.. "назвать" записывать в DisplayName филда НД


 
gedd   (2004-02-09 14:57) [8]

>опять вызвать "отдельную процедурку".
Где вызвать, вот в чем вопрос?
я вызывал на DBGridEh1TitleClick

>назвать" записывать в DisplayName
Пробовал все равно берет имена полей, повторяю в случае сортировки по нескольким столбцам они пересоздаются.


 
Sandman25   (2004-02-09 15:23) [9]

[8] gedd © (09.02.04 14:57)

Сортируется автоматически, через EhLibBde/Ado/CDS? Тогда либо напишите свой "автосортировщик" (в EhLib.HLP это описывается), либо сортируйте не автоматически, а ручками, делая в OnTitleBtnClick индексы либо изменяя order by. Тогда будет ясно, где вызывать эту процедурку.


 
roottim   (2004-02-09 15:23) [10]

>Пробовал
как? твоя процедура при каком событии отрабатывает.. или ручками запускаем


 
gedd   (2004-02-09 18:50) [11]

Значит так переименование столбцов пускаю на DBGridEh1TitleClick, но это помогает только при сортировке по одному столбцу.
Пример дословно

procedure TMainForm.DBGridEh1TitleClick(Column: TColumnEh);
var
i:integer;
begin
for i:=0 to DBGridEh1.Columns.Count-1 do
begin
DBGridEh1.Columns[i].Title.TitleButton := TRUE;
end;
DBGridEh1.OptionsEh := DBGridEh1.OptionsEh + [dghAutoSortMarking];
DBGridEh1.OptionsEh := DBGridEh1.OptionsEh + [dghMultiSortMarking]; Titles;
end;

По поводу слета наименований автор ehlib сказал следующее:
"Если колонки динамические (не созданы в дизаин тайме), то они заново пересоздаются и Caption берется из Field.DisplayLabel".


 
gedd   (2004-02-10 11:43) [12]

Люди может кто знает как вывернуться из такого положения?


 
roottim   (2004-02-10 12:11) [13]

Titles -- я так понимаю твоя процедура?...
если не ошибаюсь то MemTable еще не готов к использованию в ехлибе.. и в данном случае он должен строить запрос и соотв-но его переоткрыть...
еже-ли все так... то Titles должна отрабатывать ивент DataSet на AfterOpen и выставлять DesplayLabel филда


 
gedd   (2004-02-11 11:35) [14]

Все заработало большое спасибо roottim.


 
VLAD-MAL   (2004-02-11 12:59) [15]

Ну, что тут такого необыкновенного?

Если не хочешь "статические" столбцы, то запоминаешь в реестре (DBEhGrid это умеет!) состояние таблицы перед Close датасета, потом, после Open, восстанавливаешь состояние таблицы для этого набора данных из реестра.
Или ручками - перебирай все столбцы, фиксируй, к каким полям они относятся, и запоминай состояние (ширина/высота/пометка на сортировку и т.п.). Потом, после переотрытия набора данных, все восстанавливаешь.
Пример (рабочий):

procedure Tfrb_GridFrame.ActivateFrame;
var
i, j: Integer;
str : string;
RegIniFile : TRegIniFile;
begin
inherited;
try
...
...
if not ItWasActivated then begin // При первой активизации пишем в реестр
RegIniFile := TRegIniFile.Create("\SOFTWARE\" // конфигурацию "по умолчанию"
+ LeftStr(ExtractFileName(Application.ExeName),
Pos(".",ExtractFileName(Application.ExeName))-1)
+"\GRIDS\DEFAULT\"+SelfComplexName, KEY_WRITE); // SelfComplexName - нечто уникальное, характеризующее этот набор данных
try
dbGrid.SaveGridLayout(RegIniFile); // dbGrid : TDBGridEh
finally
RegIniFile.Free;
end;
ItWasActivated := True
end;

RegIniFile := TRegIniFile.Create("\SOFTWARE\" // При любой активизации
+ LeftStr(ExtractFileName(Application.ExeName), // загружаем сохраненную
Pos(".",ExtractFileName(Application.ExeName))-1) // ранее конфигурацию
+"\GRIDS\LAST_WORKED\"+SelfComplexName, KEY_READ);

try
dbGrid.RestoreGridLayout(RegIniFile,[grpColIndexEh, grpColWidthsEh, grpSortMarkerEh, grpColVisibleEh,
grpRowHeightEh, grpDropDownRowsEh, grpDropDownWidthEh]);
finally
RegIniFile.Free;
end;
RefreshDataSet(New_Id); // Здесь выполняем сортировку в соответствии с метками для редактирования

except
ShowMessage("Ошибка открытия справочника "" +Self.Caption +""");
exit;
end;
end;

//-----------------
Усе просто!



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

Форум: "Базы";
Текущий архив: 2004.03.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.009 c
14-25871
Плохиш
2004-02-16 12:46
2004.03.09
Никлаусу Вирту сегодня 70!


1-25737
ghg
2004-02-26 22:49
2004.03.09
Axis.Labels в TChart


14-25916
SergP
2004-02-13 04:23
2004.03.09
Как лучше сделать запрос?


4-25973
G A M E R
2004-01-02 03:19
2004.03.09
Меню в играх на WinAPI


6-25845
csr
2004-01-04 12:46
2004.03.09
Проверка IP на наличие в RBL списках





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