Подскажите, в DBGridEh при добавлении строки можно задать значения по-умолчанию для некоторых колонок? Пробовал через событие DataSet.AfterInsert, смотрел отладчиком, это событие не отрабатывает.
» Вопросы по Ehlib
vpilot
а можно код в студию,
все там срабатывает
а можно код в студию,
все там срабатывает
DataSet.AfterInsert - происходит чуть ли не после POST записи,
смотреть надо:
TDataSet.BeforeInsert - это должно быть когда тебе и требуется,
еще можно посмотреть в сторону
TField.DefaultExpression
смотреть надо:
TDataSet.BeforeInsert - это должно быть когда тебе и требуется,
еще можно посмотреть в сторону
TField.DefaultExpression
XPerformer
В событии AfterInsert кода как такового нет, я поставил операцию присваивания (var i: integer, i:=5) и точку остановки, при добавлении новой строки чере DBGridEh (XE6, v6.3) отладчик туда не попадает => событие не отрабатывает. Думал может можно через свойства самого DBGridEh (или свойства колонок) это провернуть.
Добавлено:
maxsv2
TField.DefaultExpression - пробовал, не помогло. А вот BeforInsert не догадался, попробую. Но следуя вашей логике, тоже должно отработать где-то перед POST, а мне нужно, чтобы при добавлении новой строки пользователь видел визуально значения по-умолчанию еще до записи в БД.
Добавлено:
XPerformer
maxsv2
Спасибо, вопрос снимается. Засиделся за ПК, жал кнопку запуска без отладки. Все события отрабатывают, и befor и after.
В событии AfterInsert кода как такового нет, я поставил операцию присваивания (var i: integer, i:=5) и точку остановки, при добавлении новой строки чере DBGridEh (XE6, v6.3) отладчик туда не попадает => событие не отрабатывает. Думал может можно через свойства самого DBGridEh (или свойства колонок) это провернуть.
Добавлено:
maxsv2
TField.DefaultExpression - пробовал, не помогло. А вот BeforInsert не догадался, попробую. Но следуя вашей логике, тоже должно отработать где-то перед POST, а мне нужно, чтобы при добавлении новой строки пользователь видел визуально значения по-умолчанию еще до записи в БД.
Добавлено:
XPerformer
maxsv2
Спасибо, вопрос снимается. Засиделся за ПК, жал кнопку запуска без отладки. Все события отрабатывают, и befor и after.
vpilot пользуй BeforePost и будет счастье. Только это никак не связано с DbGridEh и вообще с гридами. Это уровень датасета.
waik я уже понял. В VS эти параметры я задавал через Grid и тут туда же потянуло.
vpilot понятно. Только я тебя всё равно обманул. Не.. можно использовать и BeforePost ничего страшного. Просто нужно будет помнить что это событие будет вызываться и при редактировании. Самый правильный способ OnNewRecord у датасета.
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]
Код: [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]
Я разобрался уже. Дело было в датасете. В XE3 появился метод
Код: procedure GetBookmarkData(Buffer: TRecordBuffer; Data: TBookmark); overload; virtual;
Код: procedure GetBookmarkData(Buffer: TRecordBuffer; Data: TBookmark); overload; virtual;
xpin2013
Это лучше на форум ЕхЛиб запостить. пусть у себя исправят .
Это лучше на форум ЕхЛиб запостить. пусть у себя исправят .
Привет всем
Подскажите как распечать два грида в одном листе?
Есть на форме Мастер - Детайл дбгрид со всеми футерами группами итд хотел его не экспортровать ексел а просто распечатать на принтер
Заранее благодарен
Подскажите как распечать два грида в одном листе?
Есть на форме Мастер - Детайл дбгрид со всеми футерами группами итд хотел его не экспортровать ексел а просто распечатать на принтер
Заранее благодарен
Всем привет. Как сделать так, чтобы значения полей из некоторых строк не входили в сумму(footer.vartype = fvtSum) по этой колонке? Grouping не пойдет - другой датасет.
суммировать вручную и выводить в футере
XPerformer
Цитата:
Что реально никаких других возможностей? Я не нашел, но может кто-то...
Цитата:
суммировать вручную и выводить в футере
Что реально никаких других возможностей? Я не нашел, но может кто-то...
Samotek
Цитата:
Одна моя подруга захотела жаренную Луну. Я ей почему то сразу отказал - чтобы не мучалась. Примерно следующее стоит понять. Сумматоры EhLib не поддерживают скрипты - где Вы можете указать - считать или не считать. Остаётся только хвалить Господа, что Вам больше работы.
Цитата:
Что реально никаких других возможностей?
Одна моя подруга захотела жаренную Луну. Я ей почему то сразу отказал - чтобы не мучалась. Примерно следующее стоит понять. Сумматоры EhLib не поддерживают скрипты - где Вы можете указать - считать или не считать. Остаётся только хвалить Господа, что Вам больше работы.
xpin2013
Не дотягиваю до размаха твоего ума и опыта. Не понял твою мощную мысль. Наверно и никогда не пойму.
Не дотягиваю до размаха твоего ума и опыта. Не понял твою мощную мысль. Наверно и никогда не пойму.
Samotek
Цитата:
Больше работы - больше получи. Меньше работы - скрой от директора - ври.
Цитата:
Не дотягиваю до размаха твоего ума и опыта.
Больше работы - больше получи. Меньше работы - скрой от директора - ври.
Samotek
Не совсем понятна необходимость данного извращения,
т.к. потом будет вопрос юзера, что прога криво считает.
Но хозяин - барин.
однако сразу готового - не будет...
Как вариант 1:
- формируете нужный набор для сумматора и он считает что нужно
- вешаетесь на отображение ячейки и выводите что угодно
вариант 2:
- рисуете свой сумматор и считаете в меру своих фантазий, хоть интегралы.
вариант 3:
- вешаете 2 грида, второй без строк но с суммой, цепляете на желаемые наборы
- руками пишите синхронизацию размеров столбцов и остального необходимого.
Не совсем понятна необходимость данного извращения,
т.к. потом будет вопрос юзера, что прога криво считает.
Но хозяин - барин.
однако сразу готового - не будет...
Как вариант 1:
- формируете нужный набор для сумматора и он считает что нужно
- вешаетесь на отображение ячейки и выводите что угодно
вариант 2:
- рисуете свой сумматор и считаете в меру своих фантазий, хоть интегралы.
вариант 3:
- вешаете 2 грида, второй без строк но с суммой, цепляете на желаемые наборы
- руками пишите синхронизацию размеров столбцов и остального необходимого.
maxsv2
Цитата:
Ну не понял, бывает. ) А извращаются, к стати, извращенцы, к каковым себя не отношу. А необходимость обосновывается необходимостью исключить в футере дублирование сумм, если в гриде есть еще и группировочных записи, а родная мемтабле не используется.Ребята! Спасибо, конечно, но я не просил придумывать мне технологию - я спросил про стандартные средства. Искал, может кто-то по-грамотней раскопал что-то внутри сумлист. Но на нет и суда нет. Всем спасибо, вопрос закрыт.
Цитата:
Не совсем понятна необходимость данного извращения,
Ну не понял, бывает. ) А извращаются, к стати, извращенцы, к каковым себя не отношу. А необходимость обосновывается необходимостью исключить в футере дублирование сумм, если в гриде есть еще и группировочных записи, а родная мемтабле не используется.Ребята! Спасибо, конечно, но я не просил придумывать мне технологию - я спросил про стандартные средства. Искал, может кто-то по-грамотней раскопал что-то внутри сумлист. Но на нет и суда нет. Всем спасибо, вопрос закрыт.
Слишком рукопашные варианты.
Бросаем на форму DBSumList, настраиваем что считать суммы, количества, среднее и т.д. по полям. В событие ОнРекалк вешаем фильтр на датасет, который оставляет только нужные записи. В AfterRecalc снимаем. Результат записываем в футер или куда нужно.
Добавлено:
Упс.. не увидел предыдущего сообщения. Но смысла не меняет. В гриде ставим External Recalc - true и фильтровать не надо, если только группировки исключить.
Хотя всё равно опоздал... Вопрос то закрыт.
Бросаем на форму DBSumList, настраиваем что считать суммы, количества, среднее и т.д. по полям. В событие ОнРекалк вешаем фильтр на датасет, который оставляет только нужные записи. В AfterRecalc снимаем. Результат записываем в футер или куда нужно.
Добавлено:
Упс.. не увидел предыдущего сообщения. Но смысла не меняет. В гриде ставим External Recalc - true и фильтровать не надо, если только группировки исключить.
Хотя всё равно опоздал... Вопрос то закрыт.
Цитата:
Хуже то, что он не всегда находит записи. У него очень удобный встроенный поиск, но я уже давно замечал, что русские слова находит не всегда. А тест показал, что и числа, увы тоже. Это гораздо хуже, на мой взгляд, критическая ошибка
XPerformer, в текущих седьмых версиях не смотрел, случайно - проблема с поиском решилась?
landy
пока не ставлю, думаю, сырая еще 7
пока не ставлю, думаю, сырая еще 7
Господа
Я хотел себе добавить панельку с поиском - есть сейчас такое свойство. Но проблема в том что таблица моя не знает сколько там будет колонок. Если я предопределю колонки, то EhLib Engine всё сделает корректно. Но если я в дизайн тайме не определял колонок, то валится ошибка, что List колонок пуст. Я смотрел эту Engine, проще луну пожарить чем переписать. У меня тулза для просмотра моих баз данных. Я заранее не знаю какие поля есть в открываемой таблице. Но поиск слишком уж хочется - красивый он. Очень бы хотелось решения. Спасибо Господа.
Я хотел себе добавить панельку с поиском - есть сейчас такое свойство. Но проблема в том что таблица моя не знает сколько там будет колонок. Если я предопределю колонки, то EhLib Engine всё сделает корректно. Но если я в дизайн тайме не определял колонок, то валится ошибка, что List колонок пуст. Я смотрел эту Engine, проще луну пожарить чем переписать. У меня тулза для просмотра моих баз данных. Я заранее не знаю какие поля есть в открываемой таблице. Но поиск слишком уж хочется - красивый он. Очень бы хотелось решения. Спасибо Господа.
Цитата:
пока не ставлю, думаю, сырая еще 7
Судя по списку изменений её правильнее было бы назвать 6.3.186
Хотя, я полагаю, что смена мажорной версии связана с началом поддержки Lazarus.
Цитата:
Я хотел себе добавить панельку с поиском - есть сейчас такое свойство. Но проблема в том что таблица моя не знает сколько там будет колонок. Если я предопределю колонки, то EhLib Engine всё сделает корректно. Но если я в дизайн тайме не определял колонок, то валится ошибка, что List колонок пуст. Я смотрел эту Engine, проще луну пожарить чем переписать. У меня тулза для просмотра моих баз данных. Я заранее не знаю какие поля есть в открываемой таблице. Но поиск слишком уж хочется - красивый он. Очень бы хотелось решения. Спасибо Господа.
В рантайме колонки же тоже можно определить, не так ли?
rrromano
Цитата:
Ну да, пока это выход. Но может оказаться так, что с обновлением EhLib придётся оборачивать код директивами, а как цепляться к версиям EhLib, мне ещё не известно.
Цитата:
В рантайме колонки же тоже можно определить, не так ли?
Ну да, пока это выход. Но может оказаться так, что с обновлением EhLib придётся оборачивать код директивами, а как цепляться к версиям EhLib, мне ещё не известно.
Цитата:
а как цепляться к версиям EhLib, мне ещё не известно.
Переменные вида EH_LIB_x выставляются в EhLib.inc
landy
Цитата:
Цитата:
Похоже Вы недопоняли вопроса. Вот выдержка из EhLib.inc
Код: [no]{$IFDEF VER140} { Borland Delphi 6.0 or CPP Builder 6.0}
{$DEFINE EH_LIB_5}
{$DEFINE EH_LIB_6}
{$ENDIF}[/no]
Цитата:
а как цепляться к версиям 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]
Цитата:
Похоже Вы недопоняли вопроса. Вот выдержка из EhLib.inc
Я вполне понял вопрос, однако, я логично полагал, что содержимое этого файла меняется в разных версиях EhLib, при этом для совместимости выставляются переменные и для прежних версий. Теперь при внимательном рассмотрении оказалось, что оно действительно дублирует версию компилятора. Непонятно только - в чем смысл такого решения?
Страницы: 1234567891011121314151617181920212223
Предыдущая тема: Конвертация char в ASCII код; c
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.