Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Lazarus: некорректная отрисовка кнопок под Linux  [new]
Док
Member

Откуда: Казань
Сообщений: 5231
Столкнулся с очень интересной штукой.

Задаю размеры кнопки в runtime.
+
procedure TForm1.FormCreate(Sender: TObject);
begin
  Button1.Height:= Edit1.Height;
  Button1.Width:= Edit1.Height;

  Button2.Height:= Edit2.Height;
  Button2.Width:= Edit2.Height;

  Button3.Height:= Edit3.Height;
  Button3.Width:= Edit3.Height;

  Button4.Height:= Edit4.Height;
  Button4.Width:= Edit4.Height;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  // без этого под Linux совсем не перерисовываются кнопки
  {$IFDEF UNIX}
  Button1.Repaint;
  Button2.Repaint;
  Button3.Repaint;
  Button4.Repaint;
  {$ENDIF}
end;

Под виндой рисуется корректно
+
Картинка с другого сайта.

Если сорцы импортировать под Линь, и запустить проект, не открывая FormEditor, то все размеры кнопок рисуются некорректно. Если же все-таки открыть lfm-файл в редакторе форм (причем не все, а только часть вкладок с расположенными на них кнопками), то "правильно" отрисовываться будут только те кнопки, которые были просмотрены в FormEditor
+
Картинка с другого сайта.


Это бага?
=================
Док.

Win7 Ultim x64/Deb 9.1(GNOME, MATE; gtk2) i386:
FB 3.0.2.32703, диалект 3, SS,
Lazarus 1.9(r.56443); FPC 3.1.1 (r.37610), IBX by -Rik-; IBE 2017.4.19.2

К сообщению приложен файл (button_size.7z - 57Kb) cкачать
3 дек 17, 00:56    [21001684]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: некорректная отрисовка кнопок под Linux  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 2677
Док,

Проверил. У меня всё нормально. Ubuntu 16.04.3 LTS Unity. Но если у тебя проблема, то что тебе мешает делать привязку ко границам (верхней и нижней) едитов в рантайме?
3 дек 17, 01:47    [21001738]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: некорректная отрисовка кнопок под Linux  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 2677
Kazantsev Alexey
Проверил. У меня всё нормально.

В окружении GNOME3 воспроизводится.
3 дек 17, 02:06    [21001748]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: некорректная отрисовка кнопок под Linux  [new]
Док
Member

Откуда: Казань
Сообщений: 5231
Kazantsev Alexey,

похоже тикет писать надо?
3 дек 17, 13:50    [21002098]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: некорректная отрисовка кнопок под Linux  [new]
Док
Member

Откуда: Казань
Сообщений: 5231
Kazantsev Alexey
что тебе мешает делать привязку ко границам (верхней и нижней) едитов в рантайме?

так можно только высоту кнопки отрегулировать. Ширина все равно будет рисоваться, как редактор решит.

Я запостил проблему тут, может, кто из разрабов откликнется
3 дек 17, 14:14    [21002127]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: некорректная отрисовка кнопок под Linux  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 2677
Док
похоже тикет писать надо?

Нет, это не ошибка. Просто с AutoSize всё не совсем просто. В общем, решить проблему можно так:
 Edit4.HandleNeeded;
 Edit4.GetPreferedSize(pw, ph);
 Button4.Width := ph;
 Button4.Height := ph;
3 дек 17, 14:24    [21002147]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить