Последняя версия DataExpress 3 beta от 15 июня 2019 года.
Изображение Скачать | Изображение Что нового?
См. также: Энциклопедия DX | Форум на develop-soft | Песочница

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

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

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

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

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

Аватара пользователя
Runenkov
Интересующийся
Сообщения: 76
Зарегистрирован: Ср сен 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
(58.34 КБ) 17 скачиваний

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

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
Интересующийся
Сообщения: 76
Зарегистрирован: Ср сен 21, 2016 9:15 pm

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

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

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


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

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

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

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

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