Последняя версия DataExpress 3 beta от 15 января 2019 года. Скачать. Энциклопедия DX.

Пример: фокус на нужном поле

Полезное от пользователей DataExpress
Аватара пользователя
Гocть
Эксперт
Сообщения: 1407
Зарегистрирован: Пн ноя 27, 2017 8:02 am

Пример: фокус на нужном поле

Сообщение Гocть » Ср авг 01, 2018 11:08 am

Иногда проходя по записям можно увидеть в таблице что то, требующее оперативной правки, но открыв запись можно долго искать глазами нужное поле. В примере показан способ быстрого перехода к полю при клике по ячейке табличной части формы.
ФОКУС НА НУЖНОМ ПОЛЕ.zip
(34.67 КБ) 40 скачиваний
Фрилансер. Разработка на заказ. Консультирование.

Аватара пользователя
Runenkov
Интересующийся
Сообщения: 64
Зарегистрирован: Ср сен 21, 2016 9:15 pm

Re: Пример: фокус на нужном поле

Сообщение Runenkov » Сб янв 12, 2019 2:08 am

Приветствую

Отличная идея! Очень помогла! Но: столкнулся со странностью.
Пишу программу с двуязычным интерфейсом. Применяю к таблице, на английском работает (у меня названия полей изначально на английском, а русские подставляются в Main). На русском - не работает!
Пытаюсь разобраться, насильно подпихиваю оригинальные имена полей на агнлийском -- не работает.
Позже понимаю что в конструкции:

Код: Выделить всё

procedure Form_Create;
begin
  Self.Grid.OnCellClick:=@GetTitleCaption;
  Self.EditWindow.OnShow:=@ControlFocus;
end;   


Self.EditWindow.OnShow:=@ControlFocus; не вызывается! Не могу понять, почему!

Помогите разобраться, я делаю что-то не так или это глюк программы? Версия 10.01.2019
Вложения
EASYCRM.zip
(59.11 КБ) 3 скачивания

Аватара пользователя
admin
Разработчик
Сообщения: 4029
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская

Re: Пример: фокус на нужном поле

Сообщение admin » Сб янв 12, 2019 11:54 am

Runenkov писал(а):Self.EditWindow.OnShow:=@ControlFocus; не вызывается! Не могу понять, почему!

В процедуре CF модуля Main подменяется обработчик события EditWindow.OnShow, назначенный в модуле формы, на другой (EWOS).

Модуль Settings:

Код: Выделить всё

...
procedure Form_Create;
begin
  Self.Grid.OnCellClick:=@GetTitleCaption;
  Self.EditWindow.OnShow:=@ControlFocus;
end;

Модуль Main:

Код: Выделить всё

...
procedure CF(Sender: TObject; Form: TdxForm);
var ic,gc,ig:integer;
begin
  Form.DisableControls;

  if Form.EditWindow<>nil then
  Form.EditWindow.OnShow:=@EWOS;
  ...


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

Аватара пользователя
Runenkov
Интересующийся
Сообщения: 64
Зарегистрирован: Ср сен 21, 2016 9:15 pm

Re: Пример: фокус на нужном поле

Сообщение Runenkov » Сб янв 12, 2019 10:20 pm

admin писал(а):Вам надо сохранять обработчик события и вызывать его в новом.


Увы, я пока ещё совсем ламер чтобы понять, как это делается. Спасибо, я постараюсь "подтянуть" теорию и вернусь к этому позже

jurist23rus
Эксперт
Сообщения: 2508
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп

Re: Пример: фокус на нужном поле

Сообщение jurist23rus » Сб янв 12, 2019 11:16 pm

Обработчик событий - это сложно для начала. Начните с чего-нибудь попроще.
Destiny is a very convenient word for those who never take decisions.