Последняя версия DataExpress 3 beta от 7 декабря 2019 года.
Изображение Скачать | Изображение Что нового?
См. также: Энциклопедия DX | Форум на develop-soft | Песочница
ИзображениеИзображениеИзображение

MainWindow resize

Все о том как сделать что-то с помощью скриптов.
Аватара пользователя
Runenkov
Интересующийся
Сообщения: 76
Зарегистрирован: Ср сен 21, 2016 9:15 pm

MainWindow resize

Сообщение Runenkov » Вт сен 18, 2018 3:37 pm

Добрый день!

Подскажите, пожалуйста, как и где можно перехватить событие изменения размера окна программы?
Хочется сделать одну страничку с "резиновым" дизайном...

Аватара пользователя
Гocть
Эксперт
Сообщения: 1586
Зарегистрирован: Пн ноя 27, 2017 8:02 am
Поблагодарили: 11 раз

Re: MainWindow resize

Сообщение Гocть » Вт сен 18, 2018 4:06 pm

"Якоря". Нет? Или нужно прямо резиновым резиновым?
Фрилансер. Разработка на заказ. Консультирование.

Аватара пользователя
Runenkov
Интересующийся
Сообщения: 76
Зарегистрирован: Ср сен 21, 2016 9:15 pm

Re: MainWindow resize

Сообщение Runenkov » Вт сен 18, 2018 6:07 pm

Якоря помогут только элементы на форме разложить, а как изменить размер формы? Нужно обработать изменение размера окна самой программы. Получить MainWindow.Width Получается, ресайз формы тоже работает, но только при перезапуске программы.

kok80
Эксперт
Сообщения: 321
Зарегистрирован: Пн июл 02, 2018 9:45 pm
Благодарил (а): 2 раза
Поблагодарили: 22 раза

Re: MainWindow resize

Сообщение kok80 » Вт сен 18, 2018 6:37 pm

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

procedure MainWindow_OnResize(Sender: TObject);
begin
  debug('resize');
end;

procedure DataBase_Open;
begin
  MainWindow.OnResize:=@MainWindow_OnResize;
end; 

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

Re: MainWindow resize

Сообщение admin » Вт сен 18, 2018 6:37 pm

Форма тоже меняет свой размер, если отключены полосы прокрутки.

Аватара пользователя
Гocть
Эксперт
Сообщения: 1586
Зарегистрирован: Пн ноя 27, 2017 8:02 am
Поблагодарили: 11 раз

Re: MainWindow resize

Сообщение Гocть » Вт сен 18, 2018 7:28 pm

Если еще нужно что то таскать вместе с окном, сохраняя относительное положение, то такое может подойти:

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

procedure MainWindow_On_Cnange_Bounds(Sender: TObject);
begin
  debug('cnange_bounds');
end;

procedure DataBase_Open;
begin
  MainWindow.OnChangeBounds:=@MainWindow_On_Cnange_Bounds;
end;     
Фрилансер. Разработка на заказ. Консультирование.

Аватара пользователя
Runenkov
Интересующийся
Сообщения: 76
Зарегистрирован: Ср сен 21, 2016 9:15 pm

Re: MainWindow resize

Сообщение Runenkov » Вт сен 18, 2018 9:21 pm

Спасибо, работает.
Про полосы прокрутки не совсем понял, завтра буду ковырять...

UPD... c OnChangeBounds прога вылетает

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

Re: MainWindow resize

Сообщение admin » Вт сен 18, 2018 9:29 pm

Свойство формы "Еще свойства->Показывать полосы прокрутки".

Аватара пользователя
Гocть
Эксперт
Сообщения: 1586
Зарегистрирован: Пн ноя 27, 2017 8:02 am
Поблагодарили: 11 раз

Re: MainWindow resize

Сообщение Гocть » Вт сен 18, 2018 10:02 pm

Runenkov писал(а):UPD... c OnChangeBounds прога вылетает

"Придорооожное кафе,
придороооожное.
Выбирать надо еду,
осторооожнее."

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

procedure MainWindow_On_Cnange_Bounds(Sender: TObject);
begin
debug('cnange_bounds');
end;

procedure DataBase_Open;
begin
MainWindow.OnChangeBounds:=@MainWindow_On_Cnange_Bounds;
end;

procedure DataBase_Close;
begin
MainWindow.OnChangeBounds:=nil;
end;           
Фрилансер. Разработка на заказ. Консультирование.