Форум: "Базы";
Текущий архив: 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