Последняя версия DataExpress 3 beta от 18 февраля 2018 года. Скачать.

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

Вопросы о применении того или иного класса или функции.
neitri
Мастер скриптов
Сообщения: 536
Зарегистрирован: Пн фев 13, 2017 5:42 pm

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

Сообщение neitri » Пн мар 06, 2017 1:48 pm

Раз в панели кнопки создавать нельзя, будем поверх рисовать. В Form_Create не работает.

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

procedure OnShow(Sender:TObject);
var
  i:integer;
begin
  if PostButton=nil then
    begin
      i:=self.EditWindow.Buttons.OkButton.left-self.EditWindow.Buttons.CancelButton.left;
      PostButton:=TPanelBitBtn.Create(self.EditWindow.Buttons.OkButton.parent);
      PostButton.parent:=self.EditWindow;
      PostButton.Left:=self.EditWindow.Buttons.OkButton.left+i;
      PostButton.Width:=self.EditWindow.Buttons.OkButton.width;
      PostButton.Height:=self.EditWindow.Buttons.OkButton.height;
      PostButton.Top:=self.EditWindow.Buttons.top+self.EditWindow.Buttons.OkButton.Top;
      PostButton.onclick:=@Proc1;
      PostButton.caption:='Post';
      PostButton.Anchors:=[akBottom,akRight];
    end;
  if UnPostButton=nil then
    begin
      UnPostButton:=TPanelBitBtn.Create(self.EditWindow.Buttons.OkButton.parent);
      UnPostButton.parent:=self.EditWindow;
      UnPostButton.Left:=PostButton.left+i;
      UnPostButton.Width:=PostButton.width;
      UnPostButton.Height:=PostButton.height;
      UnPostButton.Top:=PostButton.Top;
      UnPostButton.onclick:=@Proc1;
      UnPostButton.caption:='UnPost';
      UnPostButton.Anchors:=[akBottom,akRight];
    end;
end;
Помогли Тебе. Помоги проекту.
Реквизиты помощи Вы можете найти в окне "О программе"

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

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

Сообщение admin » Пн мар 06, 2017 5:57 pm

Компонент TButtonPanel автоматически располагает кнопки в зависимости от операционной системы. Добавить в него кнопку можно, но расположить произвольно не получится. Нужно делать свой вариант панели. Для этого надо использовать компоненты TPanel и TBitBtn.

Аватара пользователя
kroks
Интересующийся
Сообщения: 175
Зарегистрирован: Ср мар 01, 2017 8:23 pm

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

Сообщение kroks » Пн мар 06, 2017 6:42 pm

:) почти без кода (одна строчка). Якоря рулят. Их бы до полного шика присоседить.
BUTTONS.zip
(42.57 КБ) 14 скачиваний
Отдал - возьми! Взял - отдай! Изображение

neitri
Мастер скриптов
Сообщения: 536
Зарегистрирован: Пн фев 13, 2017 5:42 pm

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

Сообщение neitri » Пн мар 06, 2017 6:56 pm

Так больше похоже будет.
Вложения
BUTTONS2.zip
(43.43 КБ) 26 скачиваний
Помогли Тебе. Помоги проекту.
Реквизиты помощи Вы можете найти в окне "О программе"

Аватара пользователя
kroks
Интересующийся
Сообщения: 175
Зарегистрирован: Ср мар 01, 2017 8:23 pm

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

Сообщение kroks » Пн мар 06, 2017 7:12 pm

Позже я так и сделал. ;)
Отдал - возьми! Взял - отдай! Изображение

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

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

Сообщение jurist23rus » Чт ноя 16, 2017 4:35 pm

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

Fm.EditWindow.Buttons.ShowButtons := [pbClose]

Вроде бы раньше такой код работал или я забыл чего!? Сегодня не могу ни убрать, ни добавить кнопки. Подскажите как убрать ненужные кнопки EditWindow?
Destiny is a very convenient word for those who never take decisions.

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

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

Сообщение YurAnt » Чт ноя 16, 2017 5:00 pm

Self.EditWindow.Buttons.OkButton.Hide;
Self.EditWindow.Buttons.CancelButton.Hide;

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

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

Сообщение KoalaBear » Чт ноя 23, 2017 9:53 pm

YurAnt писал(а):Self.EditWindow.Buttons.OkButton.Hide;
Self.EditWindow.Buttons.CancelButton.Hide;

Не смогли бы привести пример использования? Мне нужно, чтобы кнопка "Отмена" была видна только при создании записи. Пытаюсь вписать
Self.EditWindow.Buttons.CancelButton.Hide;
в процедуру "Form_Create" - компиляция проходит, но результата нет :( ...

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

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

Сообщение admin » Чт ноя 23, 2017 10:09 pm

Это надо вписать в обработчик открытия окна:

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

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

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

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

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

Сообщение KoalaBear » Чт ноя 23, 2017 11:31 pm

К сожалению, этот код для моего случая не совсем подходит. У меня на форме подчиненный запрос, и при добавлении записи в этот подчиненный запрос основная форма говорит, что "Сначала Вы должны сохранить запись". Можно ли сделать так, чтобы после этого сохранения кнопка "Отмена" сразу исчезла?


Вернуться в «Вопросы по API DataExpress.»

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

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