Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Ehlib

Автор: Demonuka
Дата сообщения: 29.02.2012 23:22
exteris Спасибо тебе огромное! Вот так

Код:
for i:=0 to DBGrid5.Columns.Count-1 do
DBGrid5.Columns[i].Title.SortMarker:=smNoneEh;
DBGrid5.DefaultApplySorting;
Автор: salexn1
Дата сообщения: 01.03.2012 10:35
Demonuka
И все равно, примите как правило: у каждого грида должен быть свой датасет и свой датасорс.
Потребление памяти - минимально, но читабельность и логика программы куда лучше

P.S.
не понял, почему слово "программа" стало линкой
Автор: TuMOXA123
Дата сообщения: 03.03.2012 12:42
Почему EhGrid так отвратно выглядит под Windows 7 ? Может поддержку тем надо где-то включить или что-то ещё ?
Автор: druff
Дата сообщения: 05.03.2012 04:34
TuMOXA123
по сравнению с чем? скриншоты е?
Автор: gorenski
Дата сообщения: 05.03.2012 10:02
Подскажите, как сделать чтобы в гриде можно было выбирать из выпадающего списка несколько вариантов. Эти варианты находятся в другой таблице и связаны с основной по id. DataSource под них заведен. В редакторе колонок грида для этого поля в DropDownBox выбираю в реквизите ListSource этот DataSource а что дальше не могу сообразить. Где-то надо имя поля видимо выбрать.
Автор: idiMAN
Дата сообщения: 05.03.2012 11:14
gorenski
Тебе нужно в твоём DataSet создать lookup поле (Fields Editor -> New Field) и задать у него соответствующие атрибуты в секции Lookup Definitions (Key Fields, DataSet, Lookup Keys, Result Field).
Автор: salexn1
Дата сообщения: 05.03.2012 11:46
gorenski


Цитата:
из выпадающего списка несколько вариантов


т.е. результатом выбора может быть не только одна сущность, а любое количество?

Multiselect другими словами?
Автор: gorenski
Дата сообщения: 05.03.2012 13:01
idiMAN
Огромное спасибо, всё получилось.

salexn1
Нет, мультивыбор не нужен, только 1 значение.
Автор: Grande
Дата сообщения: 23.03.2012 14:10
Уважаемые знатоки, может, кто сталкивался.
Имеется код:

Код:
procedure TForm1.grdReportTitleBtnClick(Sender: TObject; ACol: Integer; Column: TColumnEh);
begin
case Column.Title.SortMarker of
smNoneEh: Column.Title.SortMarker := smUpEh;
smUpEh: Column.Title.SortMarker := smDownEh;
smDownEh: Column.Title.SortMarker := smUpEh;
end; //case
end;
Автор: Vladkyr
Дата сообщения: 23.03.2012 14:14
Grande
А зачем нужен этот код? Grid сам переключает сортировку колонок при нажатии на названия колонок.
Автор: Grande
Дата сообщения: 23.03.2012 14:24
Vladkyr
Переключает только значки, а сортировку-то ручками надо делать
У меня PostgreSQL, сортировка с помощью SQL.
Автор: Vladkyr
Дата сообщения: 23.03.2012 14:33
Grande
А почему не делать этого по событию грида SortMarkingChanged?
Автор: Samotek
Дата сообщения: 23.03.2012 14:35
Grande

Цитата:
Переключает только значки, а сортировку-то ручками надо делать
У меня PostgreSQL, сортировка с помощью SQL.


Ну есть событие OnSortMarkingChanged. А для универсальности посмотри организацию сортировки в модулях EhLib\DataService\Others\
Автор: Grande
Дата сообщения: 24.03.2012 09:23

Цитата:
Ну есть событие OnSortMarkingChanged.

Так ведь в том то и дело, что changed не происходит при попытке нагло присвоить
Код: Column.Title.SortMarker := smUpEh;
Автор: PowerChute
Дата сообщения: 24.03.2012 10:11
В чем проблема?
На событие OnSortMarkingChanged делаем:
r_Truck := SQL2Record_Truck (Q_Truck, oper_Select);
loc_Truck := r_Truck.Key; // запоминаем Key строки, чтобы маркер поставить туда-же после сортировки
pr_ReadSort; // строим строку ORDER BY в зависимости от нажатых заголовков
pr_AddSQL; // заново вызываем запрос
pr_ShowStatusBar; // обновляем статусбар

Всё.
-------------------------
procedure TForm_Truck.pr_ReadSort;
var i : Integer;
begin
sort_Truck := gc_NoChar;
for i := 0 to DBGrid.SortMarkedColumns.Count - 1 do
if DBGrid.SortMarkedColumns[i].Title.SortMarker = smUpEh then
sort_Truck := sort_Truck + DBGrid.SortMarkedColumns[i].FieldName + ' DESC , '
else
sort_Truck := sort_Truck + DBGrid.SortMarkedColumns[i].FieldName + ', ';
if sort_Truck <> gc_NoChar then sort_Truck := ' ORDER BY ' + Copy (sort_Truck, 1, Length (sort_Truck) - 2);
sort_Truck := fn_DeleteStrSort (sort_Truck, '1');
end;
Автор: Grande
Дата сообщения: 24.03.2012 10:23
PowerChute
Хм... Что-то не подумал я про такую возможность... Сейчас попробую.
И все-таки, почему не срабатывает Column.Title.SortMarker := smUpEh;? Глюк?
Автор: PowerChute
Дата сообщения: 24.03.2012 13:26
Grande
Я сильно не разбирался в сорцах EhLib, но при смене версий мой текст работает уже лет пять-шесть. Как сделал, так и работает.
Автор: Grande
Дата сообщения: 24.03.2012 14:23
PowerChute
Самое смешное то, что у меня в проекте ДВА грида DBGridEh, один ведет себя по-человечески, а второй ни в какую. Я уже голову сломал - не пойму, в чем дело.
Автор: Grande
Дата сообщения: 29.03.2012 09:16
Заметил интересную особенность.
Ежели написать так:

Код:
procedure TfrmManager.grdReportTitleBtnClick(Sender: TObject; ACol: Integer; Column: TColumnEh);
begin
grdReport.Columns.Items[Column.Index].Title.SortMarker := smUpEh;

exit;

grdReportOrder := #13#10 + 'order by ' + grdReport.Columns.Items[Column.Index].Title.Caption;
(grdReport.DataSource.DataSet as TUniQuery).SQL.Text := SQL_Temp + grdReportOrder;
(grdReport.DataSource.DataSet as TUniQuery).Open;
end;
Автор: PowerChute
Дата сообщения: 29.03.2012 10:43
Вообще-то строку сортировки собирают на событие OnSortMarkingChanged.
В примерах всё есть.
Автор: delover
Дата сообщения: 11.04.2012 18:00
А есть тут кто нибудь из EhLib-ов русский?
Мне надо, я думаю что может лучше не писать сдесь по какой причине. Был бы очень рад в ПМ. Раньше контакты были, даже багофиксил чтото, но не помню. Мне совет нужен а не обсуждение.
Автор: Vladkyr
Дата сообщения: 12.04.2012 10:33
Добрый день. Кто работал с группировкой грида?
Как с этим работать?
Есть группировка, выделяется название какой-либо группы. Как дальше можно пробежать по всем строчкам этой группы? Как получить данные из dataset'a, связанного с этим гридом по элементам группы?
В примерах ничего такого нет. В документации очень скупо описана работа с группировкой.
Автор: delover
Дата сообщения: 13.04.2012 23:17
Спасибо контакт есть!
Автор: SevereK20
Дата сообщения: 07.05.2012 09:57
Vladkyr
так попробуйте напрямую в саппорт написать.
http://ehlib.com/RUS/registration.htm
Автор: TuMOXA123
Дата сообщения: 03.06.2012 19:03
Доброе время суток!

Есть ли какой-нибудь способ локализации (перевода на другие языки) диалога DBGridEhSimpleFilterDlg (Это когда фильтр по пользовательскому условию) во время выполнения программы ?
Автор: miwa
Дата сообщения: 10.06.2012 20:37
TuMOXA123
Судя по тому, что ресурсы из папки LangResources подключаются на этапе установки и чтобы изменить язык диалогов, приходится перекомпилировать EhLib - штатного способа нет. Разве что в лоб - менять Caption-ы всех контролов при необходимости. Ну и заодно строковые константы из EhLibConsts.pas
Автор: XPerformer
Дата сообщения: 10.06.2012 21:48
TuMOXA123
Вопрос интересный. Поскольку очень многие компоненты локализованы по такому же принципу и требуют перекомпиляции, чтобы изменить язык - тоже интересует как бы это решить в рантайме, общая схема, так сказать.
Может, все таки есть способ подключить все языковые ресурсы к проекту и переключаться по мере необходимости, пусть даже это потребует конвертации этих ресурсов в какой-то единый формат?
Автор: exteris
Дата сообщения: 13.06.2012 07:44
Для этого есть сторонние компоненты.
Автор: Sergey1970
Дата сообщения: 14.06.2012 21:43
Есть XE2, EhLib 5.6, InterbaseExpress.

Данные: TIBQuery - TDataSetDriverEh - TMemTableEh - TDataSource.
STFilter: Local := true, InstantApply := true;

В ниспадающем списке значений фильтра есть пустой элемент, при его выборе программа зависает намертво, что приходится насильно снимать задачу.

Никто решения не знает? Спасибо.

Автор: SevereK20
Дата сообщения: 14.06.2012 21:57
Sergey1970
через try except отследите и покажите хотя б что пишет

Страницы: 1234567891011121314151617181920212223

Предыдущая тема: Конвертация char в ASCII код; c


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.