Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Ehlib

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37

Открыть новую тему     Написать ответ в эту тему

snike555



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Раньше использовал версию Ehlib 5.0.13 и у меня отлично работал следующий код (для TOracleDataSet):

Код:
procedure TFrmOperJurnal.DBGridEhOperJurnalApplyFilter(Sender: TObject);
var
  i : Byte;
  s : String;
begin
  s := '';
  with DBGridEhOperJurnal do
      begin
        for i := 0 to Columns.Count - 1 do
          with Columns[i].STFilter do
            if ExpressionStr  <> '' then
              if ExpressionStr = '=Null' then
                s := s + ' and ' + DataField + ' is null '
              else if ExpressionStr = '<>Null' then
                s := s + ' and ' + DataField + ' is not null '
              else
                s := s + ' and ' + DataField + ' = ' + if_then(IsIntNumber(VarToStr(GetOperand1)), VarToStr(GetOperand1), ''''+VarToStr(GetOperand1)+'''');
      end;
    O_OperJurnal.SetVariable('qFilter', s);
    O_OperJurnal.Refresh;
end;

 
Кто переписывал данное событие для Ehlib 5.1 - 5.2? Просьба поделиться переделанной процедурой!

Всего записей: 380 | Зарегистр. 02-10-2009 | Отправлено: 11:33 26-03-2010 | Исправлено: snike555, 11:34 26-03-2010
EugeneBoss3



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
snike555

Цитата:
O_OperJurnal.SetVariable('qFilter', s);

Код понятен, но O_OperJurnal - это что?

Всего записей: 247 | Зарегистр. 15-09-2009 | Отправлено: 04:57 28-03-2010 | Исправлено: EugeneBoss3, 05:05 28-03-2010
snike555



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
EugeneBoss3
O_OperJurnal - это TOracleDataSet

Всего записей: 380 | Зарегистр. 02-10-2009 | Отправлено: 22:58 28-03-2010
zakov



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, подскажите! Не открываются source файл в delphi 7 по щелчку мыши и нажатой CTRL на именах классов EhLib... Что у меня не так установлено... (EhLib 5.0 FS). Причем ставил одинаково, но на одной машине открываются, а на другой них...

Всего записей: 163 | Зарегистр. 24-01-2008 | Отправлено: 17:12 02-04-2010 | Исправлено: zakov, 17:13 02-04-2010
volser

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zakov
Не прописан путь к исходникам.

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 17:35 02-04-2010
zakov



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
zakov  
Не прописан путь к исходникам.

 
Прописан Tools\Enviroment Options\Library
и в Library path и в Browsing path
 
где еще их надо прописть (в прописанной папке содержатся соответствующие файлы *.pas)

Всего записей: 163 | Зарегистр. 24-01-2008 | Отправлено: 17:41 02-04-2010
volser

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zakov
Попробуйте сделать build проекта.

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 20:12 02-04-2010
zakov



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
zakov  
Попробуйте сделать build проекта.

 
Создаю новый проект, бросаю на форму компоненты EhLib, компиляю - ничего не меняется
 
Добавлено:
После долгих танцев с бубном, проблема решилась переустановкой Delphi и компонентов... (так и не понял почему???)
 
Подскажите, как в TDBGridEh изменить цвет фона выделения???
 
Добавлено:
Снимаю вопрос...
 
procedure TformSotrs.gridExSotrsDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumnEh;
  State: TGridDrawState);
begin
  inherited;
  with TDBGridEh(Sender) do begin
    if gdSelected in State then
      Canvas.Brush.Color := clRed;  
    DefaultDrawColumnCell(Rect,DataCol,Column,State);
  end;
end;

Всего записей: 163 | Зарегистр. 24-01-2008 | Отправлено: 22:05 02-04-2010
Odysseos



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zakov
 
Подскажите, как в TDBGridEh изменить цвет фона выделения???
 
Повторюсь (слегка видоизменив под ситуацию):
 
1. объявляем свой класс-наследник от TDBGridEhStyle (например, TMyDBGridEhStyle);
2. наследуем его метод HighlightDataCellColor;
3. в нем вызываем родительский метод, а потом проверяем состояние ячейки (также можно проверить и свойство InMultiSelect - если нужно как-то особо подсвечивать множественное выделение, а не только текщую строку) и в зависимости от этого выставляем цвет по желанию (естественно, поменять можно не только цвет - что угодно), и:
 

Код:
 
begin
  Result := inherited HighlightDataCellColor(AGrid,
    ACol, ARow, DataCol, DataRow,
    Value, AState, InMultiSelect,
    AColor, AFont
  );
 
  if Result and ([gdFocused] * AState = [gdFocused]) then
    AColor := <желаемый цвет строки>;
end;
 

 
4. создаём экземляр этого класса в модуле главной формы:
 

Код:
 
var
  MyStyle: TDBGridEhStyle;
 
...
 
initialization begin
  MyStyle := TMyDBGridEhStyle.Create();
end;
 
finalization begin
  FreeAndNil(MyStyle);
end;
 
end.
 

 
5. для нужных сеток в FormCreate соответствующих форм задаём созданный экземпляр этого класса как стиль сетки:
 

Код:
 
...FormCreate;
begin
  DBGridEh1.Style := MyStyle;
end;
 

 
5а. либо задаём созданный экземпляр этого класса как "стиль по умолчанию" для всех сеток (в том же модуле, что и в п. 4, добавляем строчку в секцию initialization):
 

Код:
 
initialization begin
  MyStyle := TMyDBGridEhStyle.Create();
 
  SetDBGridEhDefaultStyle(MyStyle);
end;
 

Всего записей: 186 | Зарегистр. 02-01-2006 | Отправлено: 00:20 03-04-2010 | Исправлено: Odysseos, 00:23 03-04-2010
zakov



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
To Odysseos
 
Спасибо, очень доходчиво...
+1000

Всего записей: 163 | Зарегистр. 24-01-2008 | Отправлено: 00:52 03-04-2010
snike555



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Если кого интересует с вопросом по обработке события фильтра мне помогли тут http://www.sql.ru/forum/actualthread.aspx?tid=747537&hl=cheese

Всего записей: 380 | Зарегистр. 02-10-2009 | Отправлено: 13:33 08-04-2010
EugeneBoss3



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Коллеги, помогите разрулить ошибки в хранимых процедурах. Пытаюсь поюзать Вариант использования КЛАДР Андрея Дмитриева, но при созании базы выдает ошибку.
код.

Всего записей: 247 | Зарегистр. 15-09-2009 | Отправлено: 06:29 20-04-2010 | Исправлено: EugeneBoss3, 06:32 20-04-2010
Odysseos



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
EugeneBoss3
 
В коде создания этих процедур (который наверняка вот такой: create procedure ... as begin end;) между begin и end вставьте suspend;.
 
 
...Для вопросов по Interbase/Firebird предусмотрена отдельная тема.

Всего записей: 186 | Зарегистр. 02-01-2006 | Отправлено: 10:26 20-04-2010 | Исправлено: Odysseos, 11:33 20-04-2010
andrey1406

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте! Подскажите пожалуйста по SpecRow у DBLookupComboboxEh.
EhLib 3.6, в ListSource  использую dataset ADOQuery, плюс есть SpecRow. Проблема в том, что в списке, двигаясь курсором вверх, перед SpecRow происходит одно лишнее нажатие на кнопку. Т.е. стоим на последней записи dataset-а, жмем ‘вверх’ – ничего, жмем еще раз – попали на  SpecRow. Как от этого избавится?
Или – как программно встать курсором на SpecRow?

Всего записей: 1 | Зарегистр. 22-04-2010 | Отправлено: 20:04 22-04-2010
snike555



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как для CheckBox в DBGridEh установить значения 2 и 1, а не 1 и 0?
Пробовал в KeyList прописывать
2
1
но не работает версия 5.2.89

Всего записей: 380 | Зарегистр. 02-10-2009 | Отправлено: 07:21 05-05-2010
Vladkyr

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Под версией 4.5 этот вариант работает нормально. Т.е. если в KeyList прописать 2 и 1, то 2 - будут выделены, а 1 - нет.

Всего записей: 26 | Зарегистр. 28-12-2006 | Отправлено: 09:23 05-05-2010
HM47



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет. Можно ли использовать нумерацию страниц при печати через компонент PrintDBGridEh, записей много нужна нумерация листов. В описании к EhLib написано что можно использовать макросы, которые позволят добавить номер текущей страницы. Но как этот макрос выглядит? и куда его вписывать? или еще как то можно включить нумерацию?

Всего записей: 1 | Зарегистр. 27-05-2010 | Отправлено: 09:31 27-05-2010
Vladkyr

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день.
Никто не сталкивался с такой проблемой? При использовании TMemTableEh и удалении из DbGridEh строчек методом grdid.SelectedRows.Delete
удаляются почему-то сразу 2 строки: 1 и последняя.
Алгоритм такой:  
1) Имеем DbGridEh, TMemTableEh и DataSource связывающий их.
2) В TMemTableEh создаем одно поле (не важно какое)
3) В гриде выставляем свойства dgRowSelect и dgMultiSelect в True  
4) Далее добавляем в TMemTableEh несколько строк. В моем случае так:
  with MemTableEh do begin
    AppendRecord(['1']);
    AppendRecord(['2']);
    AppendRecord(['3']);
    AppendRecord(['4']);
  end;
5) кидаем кнопку на форму и пишем реакцию на нажатие:
    DbGridEh.SelectedRows.Delete;  
6) Запускаем, обязательно встаем на первую строку грида и нажимаем кнопку удаления.
7) У меня после этого убираются сразу 1 и последняя строки.
Если выделить любую другую строку (не 1-ю) - то все нормально, удаляется только выделенная.
Такое поведение у меня и на версии EhLib 5.2.84 и на 4.5.62.
У всех такое же поведение?

Всего записей: 26 | Зарегистр. 28-12-2006 | Отправлено: 14:14 31-05-2010
Ruslang



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Использую DbGridEh и два PopupMenu.
Хочу чтобы при щелчке правой кнопкой мыши на заголовке таблицы выпадал первый Popup, а при щелчке правой кнопкой в самой таблице выпадал второй PopupMenu.
В самом компоненте присвоил DbGridEh.PopupMenu:=PopupMenu1;
В заголовке Columns[0] присвоил PopupMenu2.
 
Теперь при щелчке правой кнопкой мыши (что в заголовке, что в внутри таблицы) всегда появляется меню PopupMenu1.
Что я делаю не так?
 
PS. Ehlib 5.0, BDS 2006

Всего записей: 545 | Зарегистр. 14-04-2006 | Отправлено: 12:06 11-06-2010
AlexMoor

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
deleted

Всего записей: 21 | Зарегистр. 09-01-2007 | Отправлено: 17:23 15-06-2010 | Исправлено: AlexMoor, 11:19 16-06-2010
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Ehlib


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru