Последняя версия DataExpress 3 beta от 27 мая 2018 года. Скачать. Энциклопедия DX. Форум на Develop-Soft

Редактирование записи в режиме отличном от "только таблица"

Предложения по новому функционалу и развитию существующего.
Аватара пользователя
YurAnt
Эксперт
Сообщения: 3375
Зарегистрирован: Чт апр 13, 2017 8:57 am
Контактная информация:

Редактирование записи в режиме отличном от "только таблица"

Сообщение YurAnt » Пн янв 29, 2018 12:35 am

Сначала это было "полуавтоматически". Т.е. ввод в любом поле переводил запись в режим редактирования и карандашик, если надо отредактировать подчиненную таблицу. Было не совсем удобно и чревато случайным изменением записи.
Компромисс вроде как был найден и теперь случайное изменение записи исключено, но некоторое неудобство все же осталось, а именно потягушки к карандашику или к таблице с последующим даблкликом.
При этом до сих пор вид формы никак себя не выдает и лишь скромный вид верхней панели даёт знать, в каком из состояний находится запись.
Насчёт вида формы - возможно стоит как-то задействовать цветовое состояние? Например, если запись не редактируется - компоненты слегка серого цвета...
Ну а перевод в режим редактирования представляется (как вариант): отлавливать любую попытку пользователя, похожую на редактирование и выстреливать диалог: "Редактировать запись?", "Да","Нет", где "Да" - кнопка по-умолчанию. Думаю таким образом лёгким ударом по Enter-у переход к редактированию будет происходить несколько оперативнее, чем хватание мыши, наведение и клик/даблклик.

Аватара пользователя
YurAnt
Эксперт
Сообщения: 3375
Зарегистрирован: Чт апр 13, 2017 8:57 am
Контактная информация:

Re: Редактирование записи в режиме отличном от "только таблица"

Сообщение YurAnt » Пн янв 29, 2018 10:57 am

Довольно удобно получается:

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

procedure OKD(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if Self.State in [dsEdit,dsInsert] then exit;
  if MessageDlg(Self.FormCaption,
  'Редактировать запись?',
   mtConfirmation,
  [mbYes,mbNo])=6 then
  Self.Edit;
end;

procedure Form_Create;
begin
 dxEdit1.OnKeyDown:=@OKD;
end;

Особенность фишки в этой скудной процедуре в том, что устанавливая курсор в поле редактирования и при этом заведомо зная, что запись не в режиме редактирования - активировать режим редактирования можно по двойному нажатию Enter.

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

Re: Редактирование записи в режиме отличном от "только таблица"

Сообщение jurist23rus » Пн янв 29, 2018 12:37 pm

Действительно удобно.

Я сам часто сталкивался с неудобством перевода формы в режим редактирования. Ставишь курсор в поле формы и уже что-то пишешь, а потом поднимаешь взгляд на монитор, а форма в режиме просмотра. Матюкнулся про себя и потянулся за мышкой искать карандашик на панели инструментов. :)

Механизм, предложенный YurAnt, перевода формы в режим редактирования, действительно интересен и удобен гадёныш такой ;)
Destiny is a very convenient word for those who never take decisions.

Аватара пользователя
YurAnt
Эксперт
Сообщения: 3375
Зарегистрирован: Чт апр 13, 2017 8:57 am
Контактная информация:

Re: Редактирование записи в режиме отличном от "только таблица"

Сообщение YurAnt » Пн янв 29, 2018 1:18 pm

А с dx(Lookup)Combobox-м тупняк. Текущая логика ничего не дает сделать и свойств OnChange нет. Аналогично с запросами/подч.таблицами - кнопки и нужные пункты меню неактивные.


Вернуться в «Предложения по развитию проекта.»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя