Страница 1 из 1

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

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

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

Добавлено: 12 янв 2019, 02:08
Runenkov
Приветствую

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

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

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


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

Помогите разобраться, я делаю что-то не так или это глюк программы? Версия 10.01.2019

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

Добавлено: 12 янв 2019, 11:54
admin
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;
  ...


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

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

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


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

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

Добавлено: 12 янв 2019, 23:16
jurist23rus
Обработчик событий - это сложно для начала. Начните с чего-нибудь попроще.