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

Создание кнопок В RunTime

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

Re: Создание кнопок В RunTime

Сообщение YurAnt » Пт ноя 24, 2017 12:39 am

Добавьте строчку в Form_Create:

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

...
procedure Form_Create;
begin
   Self.EditWindow.OnShow := @Show;
   Self.OnAfterPost := @Show;
end;

KoalaBear
Интересующийся
Сообщения: 171
Зарегистрирован: Сб сен 02, 2017 5:05 pm

Re: Создание кнопок В RunTime

Сообщение KoalaBear » Пт ноя 24, 2017 6:58 am

YurAnt писал(а):Добавьте строчку в Form_Create:

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

...
procedure Form_Create;
begin
   Self.EditWindow.OnShow := @Show;
   Self.OnAfterPost := @Show;
end;

Так тоже не работает(

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

Re: Создание кнопок В RunTime

Сообщение YurAnt » Пт ноя 24, 2017 7:14 am

Вы может скриншотами нарисуете - что именно требуется..?

KoalaBear
Интересующийся
Сообщения: 171
Зарегистрирован: Сб сен 02, 2017 5:05 pm

Re: Создание кнопок В RunTime

Сообщение KoalaBear » Пт ноя 24, 2017 7:34 am

Хочется, чтобы при добавлении записи в подчиненный запрос после нажатия на "Да" кнопка "Отмена" исчезла
Screenshot1.png

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

Re: Создание кнопок В RunTime

Сообщение YurAnt » Пт ноя 24, 2017 7:54 am

Странно... Код выше должен был сработать, но почему-то не прокатывает. Это уже пожалуй admin-у вопрос...

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

Re: Создание кнопок В RunTime

Сообщение admin » Пт ноя 24, 2017 8:33 am

Это не работает, потому что программа управляет видимостью кнопок, когда форма переходит в режим просмотра или редактирования. Значит надо делать обработчик для OnAfterEdit. А чем кнопка-то помешала? Что будете делать с крестиком формы? Его тоже надо скрывать.

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

Re: Создание кнопок В RunTime

Сообщение YurAnt » Пт ноя 24, 2017 8:39 am

Запрещаем крестик, скрываем "отмену" (хотя с запретом крестика ее нет смысла скрывать...):

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

var Ed:boolean;
procedure OnClose(Sender: TObject; var Action: TCloseAction);
begin
 if (Self.EditWindow.ModalResult<>mrOk) and (Ed=true) then
 Action := caNone;
end;

procedure Show(Sender: TObject);
begin
   Ed:=true;
   if Self.State = dsEdit then
   Self.EditWindow.Buttons.CancelButton.Hide;
end;

procedure Form_Create;
begin
   Self.OnAfterEdit := @Show;
   Self.EditWindow.OnClose:=@OnClose;
end;


Вариант без скрытия "отмены"(просто - блокировка):

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

procedure OnClose(Sender: TObject; var Action: TCloseAction);
begin
 if (Self.EditWindow.ModalResult<>mrOk)
 and (Self.State = dsEdit)
 then
 Action := caNone;
end;

procedure Form_Create;
begin
   Self.EditWindow.OnClose:=@OnClose;
end; 

KoalaBear
Интересующийся
Сообщения: 171
Зарегистрирован: Сб сен 02, 2017 5:05 pm

Re: Создание кнопок В RunTime

Сообщение KoalaBear » Пт ноя 24, 2017 12:36 pm

YurAnt, admin, спасибо большое, всё заработало!
Потребность в этих странных странностях у меня возникла при переходе от двух к трём уровням вложенности.
И ещё один вопрос: форма заполняется в основном подчинённым запросом, и при создании каждой новой записи выдаётся сообщение "Сначала Вы должны сохранить запись". Таких ситуаций, когда нужно было бы ответить "Нет" в моём случае не бывает. Можно ли как-то по умолчанию сохранять новую запись без вопросов?

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

Re: Создание кнопок В RunTime

Сообщение YurAnt » Пт ноя 24, 2017 12:43 pm

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

var Ed:boolean;
procedure OnClose(Sender: TObject; var Action: TCloseAction);
begin
 if (Self.EditWindow.ModalResult<>mrOk) and (Ed=true) then
 Action := caNone;
end;

procedure Show(Sender: TObject);
begin
   Ed:=true;
   if Self.State = dsEdit then
   begin
   Self.EditWindow.Buttons.CancelButton.Hide;
   end;
end;

procedure QGridOnCreateForm(Sender: TObject; Form: TdxForm);
begin
if Self.State = dsInsert then
begin
  Self.Post;
  Self.Edit;
end;
end;

procedure NewRec(Sender: TObject);
begin
dxQueryGrid1.OnCreateForm:=@QGridOnCreateForm;
end;

procedure Form_Create;
begin
  Self.OnAfterEdit := @Show;
  Self.OnAfterInsert := @NewRec;
  Self.EditWindow.OnClose:=@OnClose;
end;

         

KoalaBear
Интересующийся
Сообщения: 171
Зарегистрирован: Сб сен 02, 2017 5:05 pm

Re: Создание кнопок В RunTime

Сообщение KoalaBear » Пт ноя 24, 2017 7:43 pm

YurAnt, спасибо, только почему-то код dxQueryGrid1.OnCreateForm:=@QGridOnCreateForm; у меня срабатывает только один раз: при выходе из дизайнера добавление первой записи при обращении (+) к подчинённому запросу происходит без предложения сохранить запись, а вторая и все последующие записи сопровождаются предложением сохранить запись. Не подскажете, в чём может быть причина? (Ваш код из предыдущего поста копипастил в чистую базу, не отягощённую другими скриптами)