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

» Вопросы по Ehlib

Автор: vpilot
Дата сообщения: 03.10.2014 14:01
Подскажите, в DBGridEh при добавлении строки можно задать значения по-умолчанию для некоторых колонок? Пробовал через событие DataSet.AfterInsert, смотрел отладчиком, это событие не отрабатывает.
Автор: XPerformer
Дата сообщения: 03.10.2014 14:28
vpilot
а можно код в студию,
все там срабатывает
Автор: maxsv2
Дата сообщения: 03.10.2014 14:35
DataSet.AfterInsert - происходит чуть ли не после POST записи,
смотреть надо:
TDataSet.BeforeInsert - это должно быть когда тебе и требуется,
еще можно посмотреть в сторону
TField.DefaultExpression
Автор: vpilot
Дата сообщения: 03.10.2014 14:39
XPerformer
В событии AfterInsert кода как такового нет, я поставил операцию присваивания (var i: integer, i:=5) и точку остановки, при добавлении новой строки чере DBGridEh (XE6, v6.3) отладчик туда не попадает => событие не отрабатывает. Думал может можно через свойства самого DBGridEh (или свойства колонок) это провернуть.

Добавлено:
maxsv2
TField.DefaultExpression - пробовал, не помогло. А вот BeforInsert не догадался, попробую. Но следуя вашей логике, тоже должно отработать где-то перед POST, а мне нужно, чтобы при добавлении новой строки пользователь видел визуально значения по-умолчанию еще до записи в БД.

Добавлено:
XPerformer
maxsv2
Спасибо, вопрос снимается. Засиделся за ПК, жал кнопку запуска без отладки. Все события отрабатывают, и befor и after.
Автор: waik
Дата сообщения: 03.10.2014 15:12
vpilot пользуй BeforePost и будет счастье. Только это никак не связано с DbGridEh и вообще с гридами. Это уровень датасета.
Автор: vpilot
Дата сообщения: 03.10.2014 15:23
waik я уже понял. В VS эти параметры я задавал через Grid и тут туда же потянуло.
Автор: waik
Дата сообщения: 03.10.2014 15:58
vpilot понятно. Только я тебя всё равно обманул. Не.. можно использовать и BeforePost ничего страшного. Просто нужно будет помнить что это событие будет вызываться и при редактировании. Самый правильный способ OnNewRecord у датасета.
Автор: xpin2013
Дата сообщения: 25.10.2014 11:39
EhLib - ЭТО ВЕЛИКАЯ БИБЛИОТЕКА И НАДЕЖДА ИТ СООБЩЕСТВА. Сори капс. Поставил новые эхи и обнаружил паранормальное поведение. Вот код.

Код: [no]
procedure SetMultiSelectOptions(DBGridEh: TDBGridEh; IsMultiSelect: Boolean);
begin
if IsMultiSelect then
begin
DBGridEh.AllowedSelections :=
DBGridEh.AllowedSelections - [gstRectangle, gstColumns];
DBGridEh.IndicatorOptions :=
DBGridEh.IndicatorOptions + [gioShowRowselCheckboxesEh];
DBGridEh.Options :=
DBGridEh.Options + [dgAlwaysShowSelection, dgMultiSelect] - [dgEditing];
DBGridEh.OptionsEh :=
DBGridEh.OptionsEh + [dghIncSearch, dghPreferIncSearch, dghRowHighlight];
DBGridEh.RowSizingAllowed := False;
end else
begin
DBGridEh.AllowedSelections :=
DBGridEh.AllowedSelections + [gstRectangle, gstColumns];
DBGridEh.IndicatorOptions :=
DBGridEh.IndicatorOptions - [gioShowRowselCheckboxesEh];
DBGridEh.Options :=
DBGridEh.Options - [dgAlwaysShowSelection, dgMultiSelect] + [dgEditing];
DBGridEh.OptionsEh :=
DBGridEh.OptionsEh - [dghIncSearch, dghPreferIncSearch, dghRowHighlight];
DBGridEh.RowSizingAllowed := True;
end;
end;[/no]
Автор: xpin2013
Дата сообщения: 30.10.2014 11:07
Я разобрался уже. Дело было в датасете. В XE3 появился метод

Код: procedure GetBookmarkData(Buffer: TRecordBuffer; Data: TBookmark); overload; virtual;
Автор: noisy
Дата сообщения: 30.10.2014 11:22
xpin2013
Это лучше на форум ЕхЛиб запостить. пусть у себя исправят .
Автор: mrUlugbek
Дата сообщения: 05.11.2014 15:12
Привет всем
Подскажите как распечать два грида в одном листе?
Есть на форме Мастер - Детайл дбгрид со всеми футерами группами итд хотел его не экспортровать ексел а просто распечатать на принтер
Заранее благодарен
Автор: Samotek
Дата сообщения: 27.11.2014 15:57
Всем привет. Как сделать так, чтобы значения полей из некоторых строк не входили в сумму(footer.vartype = fvtSum) по этой колонке? Grouping не пойдет - другой датасет.
Автор: XPerformer
Дата сообщения: 27.11.2014 16:02
суммировать вручную и выводить в футере
Автор: Samotek
Дата сообщения: 27.11.2014 16:09
XPerformer

Цитата:
суммировать вручную и выводить в футере

Что реально никаких других возможностей? Я не нашел, но может кто-то...
Автор: xpin2013
Дата сообщения: 27.11.2014 18:08
Samotek

Цитата:
Что реально никаких других возможностей?

Одна моя подруга захотела жаренную Луну. Я ей почему то сразу отказал - чтобы не мучалась. Примерно следующее стоит понять. Сумматоры EhLib не поддерживают скрипты - где Вы можете указать - считать или не считать. Остаётся только хвалить Господа, что Вам больше работы.
Автор: Samotek
Дата сообщения: 27.11.2014 18:12
xpin2013
Не дотягиваю до размаха твоего ума и опыта. Не понял твою мощную мысль. Наверно и никогда не пойму.
Автор: xpin2013
Дата сообщения: 27.11.2014 18:48
Samotek

Цитата:
Не дотягиваю до размаха твоего ума и опыта.

Больше работы - больше получи. Меньше работы - скрой от директора - ври.
Автор: maxsv2
Дата сообщения: 28.11.2014 09:13
Samotek
Не совсем понятна необходимость данного извращения,
т.к. потом будет вопрос юзера, что прога криво считает.
Но хозяин - барин.
однако сразу готового - не будет...
Как вариант 1:
- формируете нужный набор для сумматора и он считает что нужно
- вешаетесь на отображение ячейки и выводите что угодно
вариант 2:
- рисуете свой сумматор и считаете в меру своих фантазий, хоть интегралы.
вариант 3:
- вешаете 2 грида, второй без строк но с суммой, цепляете на желаемые наборы
- руками пишите синхронизацию размеров столбцов и остального необходимого.
Автор: Samotek
Дата сообщения: 28.11.2014 09:56
maxsv2

Цитата:
Не совсем понятна необходимость данного извращения,

Ну не понял, бывает. ) А извращаются, к стати, извращенцы, к каковым себя не отношу. А необходимость обосновывается необходимостью исключить в футере дублирование сумм, если в гриде есть еще и группировочных записи, а родная мемтабле не используется.Ребята! Спасибо, конечно, но я не просил придумывать мне технологию - я спросил про стандартные средства. Искал, может кто-то по-грамотней раскопал что-то внутри сумлист. Но на нет и суда нет. Всем спасибо, вопрос закрыт.
Автор: waik
Дата сообщения: 28.11.2014 09:59
Слишком рукопашные варианты.

Бросаем на форму DBSumList, настраиваем что считать суммы, количества, среднее и т.д. по полям. В событие ОнРекалк вешаем фильтр на датасет, который оставляет только нужные записи. В AfterRecalc снимаем. Результат записываем в футер или куда нужно.

Добавлено:
Упс.. не увидел предыдущего сообщения. Но смысла не меняет. В гриде ставим External Recalc - true и фильтровать не надо, если только группировки исключить.

Хотя всё равно опоздал... Вопрос то закрыт.
Автор: landy
Дата сообщения: 03.12.2014 15:50

Цитата:
Хуже то, что он не всегда находит записи. У него очень удобный встроенный поиск, но я уже давно замечал, что русские слова находит не всегда. А тест показал, что и числа, увы тоже. Это гораздо хуже, на мой взгляд, критическая ошибка

XPerformer, в текущих седьмых версиях не смотрел, случайно - проблема с поиском решилась?

Автор: XPerformer
Дата сообщения: 03.12.2014 17:42
landy
пока не ставлю, думаю, сырая еще 7
Автор: xpin2013
Дата сообщения: 03.12.2014 18:48
Господа
Я хотел себе добавить панельку с поиском - есть сейчас такое свойство. Но проблема в том что таблица моя не знает сколько там будет колонок. Если я предопределю колонки, то EhLib Engine всё сделает корректно. Но если я в дизайн тайме не определял колонок, то валится ошибка, что List колонок пуст. Я смотрел эту Engine, проще луну пожарить чем переписать. У меня тулза для просмотра моих баз данных. Я заранее не знаю какие поля есть в открываемой таблице. Но поиск слишком уж хочется - красивый он. Очень бы хотелось решения. Спасибо Господа.
Автор: landy
Дата сообщения: 03.12.2014 20:28

Цитата:
пока не ставлю, думаю, сырая еще 7

Судя по списку изменений её правильнее было бы назвать 6.3.186
Автор: landy
Дата сообщения: 04.12.2014 11:10
Хотя, я полагаю, что смена мажорной версии связана с началом поддержки Lazarus.
Автор: rrromano
Дата сообщения: 01.01.2015 17:55

Цитата:
Я хотел себе добавить панельку с поиском - есть сейчас такое свойство. Но проблема  в том что таблица моя не знает сколько там будет колонок. Если я предопределю колонки, то EhLib Engine всё сделает корректно. Но если я в дизайн тайме не определял колонок, то валится ошибка, что List колонок пуст. Я смотрел эту Engine, проще луну пожарить чем переписать. У меня тулза для просмотра моих баз данных. Я заранее не знаю какие поля есть в открываемой таблице. Но поиск слишком уж хочется - красивый он. Очень бы хотелось решения. Спасибо Господа.

В рантайме колонки же тоже можно определить, не так ли?
Автор: xpin2013
Дата сообщения: 01.01.2015 18:49
rrromano

Цитата:
В рантайме колонки же тоже можно определить, не так ли?

Ну да, пока это выход. Но может оказаться так, что с обновлением EhLib придётся оборачивать код директивами, а как цепляться к версиям EhLib, мне ещё не известно.
Автор: landy
Дата сообщения: 01.01.2015 21:48

Цитата:
а как цепляться к версиям EhLib, мне ещё не известно.

Переменные вида EH_LIB_x выставляются в EhLib.inc
Автор: xpin2013
Дата сообщения: 03.01.2015 14:53
landy

Цитата:
а как цепляться к версиям EhLib, мне ещё не известно.


Цитата:
Переменные вида EH_LIB_x выставляются в EhLib.inc

Похоже Вы недопоняли вопроса. Вот выдержка из EhLib.inc

Код: [no]{$IFDEF VER140} { Borland Delphi 6.0 or CPP Builder 6.0}
{$DEFINE EH_LIB_5}
{$DEFINE EH_LIB_6}
{$ENDIF}[/no]
Автор: landy
Дата сообщения: 03.01.2015 16:57

Цитата:
Похоже Вы недопоняли вопроса. Вот выдержка из EhLib.inc

Я вполне понял вопрос, однако, я логично полагал, что содержимое этого файла меняется в разных версиях EhLib, при этом для совместимости выставляются переменные и для прежних версий. Теперь при внимательном рассмотрении оказалось, что оно действительно дублирует версию компилятора. Непонятно только - в чем смысл такого решения?

Страницы: 1234567891011121314151617181920212223

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


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