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


Пример: фокус на нужном поле
- Runenkov
- Интересующийся
- Сообщения: 109
- Зарегистрирован: 21 сен 2016, 21:15
- Благодарил (а): 11 раз
- Поблагодарили: 8 раз
Re: Пример: фокус на нужном поле
Приветствую
Отличная идея! Очень помогла! Но: столкнулся со странностью.
Пишу программу с двуязычным интерфейсом. Применяю к таблице, на английском работает (у меня названия полей изначально на английском, а русские подставляются в Main). На русском - не работает!
Пытаюсь разобраться, насильно подпихиваю оригинальные имена полей на агнлийском -- не работает.
Позже понимаю что в конструкции:
Self.EditWindow.OnShow:=@ControlFocus; не вызывается! Не могу понять, почему!
Помогите разобраться, я делаю что-то не так или это глюк программы? Версия 10.01.2019
Отличная идея! Очень помогла! Но: столкнулся со странностью.
Пишу программу с двуязычным интерфейсом. Применяю к таблице, на английском работает (у меня названия полей изначально на английском, а русские подставляются в 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 КБ) 107 скачиваний
- admin
- Разработчик
- Сообщения: 5399
- Зарегистрирован: 14 мар 2016, 11:32
- Откуда: Ленинградская
- Благодарил (а): 45 раз
- Поблагодарили: 393 раза
Re: Пример: фокус на нужном поле
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
- Интересующийся
- Сообщения: 109
- Зарегистрирован: 21 сен 2016, 21:15
- Благодарил (а): 11 раз
- Поблагодарили: 8 раз
Re: Пример: фокус на нужном поле
admin писал(а):Вам надо сохранять обработчик события и вызывать его в новом.
Увы, я пока ещё совсем ламер чтобы понять, как это делается. Спасибо, я постараюсь "подтянуть" теорию и вернусь к этому позже
-
- Эксперт
- Сообщения: 2729
- Зарегистрирован: 30 сен 2016, 09:42
- Откуда: Майкоп
- Благодарил (а): 3 раза
- Поблагодарили: 32 раза
Re: Пример: фокус на нужном поле
Обработчик событий - это сложно для начала. Начните с чего-нибудь попроще.
Destiny is a very convenient word for those who never take decisions.