Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
75 / 66 / 12
Регистрация: 09.02.2016
Сообщений: 906
Записей в блоге: 16

Как поместить форму на верху экрана развернув по горизонтали полностью ?

16.03.2016, 19:42. Показов 3141. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Решил после дельфей поставить лазарус

создаю приложение, хочу чтобы форма развернулась вверху экрана
Pascal
1
2
3
4
procedure TMainForm.FormCreate(Sender: TObject);
begin
  MainForm.Align:=alTop;
end;
при запуске никакой реакции...

что не так ?

Добавлено через 13 минут
не поверил глазам своим - запустил дельфи
ставлю Align в Top - и форма уходит как и положен в топ экрана и разворачивается по ширине...

честно говоря после такого "фокуса" уже и не знаю стоит ли пробовать что то еще... :-(

кто то может объяснить такое поведение ? может быть еще что то вызвать нужно ?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.03.2016, 19:42
Ответы с готовыми решениями:

Как бы запускать книгу, чтоб небыло ни одного меню в верху экрана?
День добрый! Как бы запускать книгу, чтоб небыло ни одного меню в верху экрана. Вообще чтоб была просто рамка и все.

Привязка элемента к верху экрана
Здраствуйте, ув.форумчане! Как можно привязать например, хедер, кверху экрана при прокрутке, как делается, например, на яндексе? Лучше...

ASUS K50IJ пищит инвертор, затемнения в верху экрана
Доброго времени суток, походу инвертор моего ASUS K50IJ приказал долго жить, пищит, затемнения в верху экрана. Что можно сделать для...

9
445 / 373 / 133
Регистрация: 09.09.2011
Сообщений: 1,343
16.03.2016, 22:16
lcl не на 100% копирует функционал vcl, кроме того, могут быть и ошибки в реализации.

Добавлено через 4 минуты
для эмуляции нужного Вам функционала, можно попробовать такой код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TfmMainTestGUIApp.btnDoClick(Sender: TObject);
Const
  VertSize = 100;
var
  curMonitor: TMonitor;
begin
  curMonitor:= Screen.MonitorFromWindow(self.Handle);
  Self.Left:= curMonitor.Left; //0
  Self.Top:=  curMonitor.Top;  //0
  Self.Width:= curMonitor.Width;
  Self.Height:= VertSize;
end;
Должно работать и на Delphi.
У меня правда форма не позициируется в край к экрану слева съезжает пикселов на 5 вправо. Может это косяк только на windows 10...

Можно поэксперементировать с отрицательными значениями...
0
75 / 66 / 12
Регистрация: 09.02.2016
Сообщений: 906
Записей в блоге: 16
17.03.2016, 05:25  [ТС]
такое ощущение что свойство align у формы вообще не работает..- зачем тогда оно введено ?
убрали бы вовсе чтобы не смущать...

и много так "костылить" приходится в лазарусе ?
0
445 / 373 / 133
Регистрация: 09.09.2011
Сообщений: 1,343
17.03.2016, 10:36
Лучший ответ Сообщение было отмечено ВитГо как решение

Решение

Ну вообще align - это выравнивание относительно компонента владельца, а у TForm owner:=nil.

Концептуально align и не должен работать, а в delphi (VCL) - хак, т.к. он подразумевает что работает только в одной оконной системе - windows. LCL же не может на это положиться.

Сомневаюсь, что в каком нибудь FMX это работает.

Добавлено через 34 минуты
Вернее не владельца, а Parent

TForm наследует align от TControl, а справке так и написано: TControl.Align - Specifies the placement of the control inside its Parent.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33187 / 21484 / 8232
Регистрация: 22.10.2011
Сообщений: 36,862
Записей в блоге: 12
17.03.2016, 14:49
Цитата Сообщение от Kitayets Посмотреть сообщение
Сомневаюсь, что в каком нибудь FMX это работает.
В FMX у формы вообще нет свойства Align. Так что поведение Лазаруса правильное, если форма не лежит на каком-то другом компоненте (не является дочерним, имеется в виду), ее нельзя выравнивать по верху/низу/ и так далее. В Дельфи поведение TForm.Align вызывает недоумение:
Determines how the control aligns within its container (parent control)
, а родитель при этом отсутствует...

Цитата Сообщение от Kitayets Посмотреть сообщение
а у TForm owner:=nil.
Нет, вот как раз Owner-то у формы и не nil, а TApplication, но выравнивается компонент именно по родителю, который для обычной формы nil.
0
75 / 66 / 12
Регистрация: 09.02.2016
Сообщений: 906
Записей в блоге: 16
17.03.2016, 18:03  [ТС]
понял.

тогда следом вопрос - как правильно (по задуманному в документации) реализовывать align для формы ?
просто вручную устанавливать координаты отрисовки и размер ?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33187 / 21484 / 8232
Регистрация: 22.10.2011
Сообщений: 36,862
Записей в блоге: 12
17.03.2016, 19:58
Цитата Сообщение от ВитГо Посмотреть сообщение
просто вручную устанавливать координаты отрисовки и размер ?
Да, именно так. Я бы написал вот такой метод:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.MySetAlign;
var
  R: TRect;
begin
  R := Screen.MonitorFromWindow(self.Handle).WorkareaRect;
  case Align of
    alTop: R.Bottom := Height;
    alBottom: R.Top := R.Bottom - Height;
    alLeft: R.Right := Width;
    alRight: R.Left := R.Right - Width;
  end;
  Self.BoundsRect := R;
end;
, и вызывал бы его после установки свойства Align.
0
75 / 66 / 12
Регистрация: 09.02.2016
Сообщений: 906
Записей в блоге: 16
11.04.2016, 19:48  [ТС]
Код указанный выше не правильно работает при align:=bottom;

нижний край формы располагается не над меню (у меня оно снизу), а прямо над кромкой экрана(то есть форма снизу перекрывается стандартной строкой меню винды)

как определить сколько пикселов, и в каких координатах находиться рабочий стол без меню ? (меню ведь может быть и слева и справа и сверху....)
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
11.04.2016, 20:31
Цитата Сообщение от ВитГо Посмотреть сообщение
форма снизу перекрывается стандартной строкой меню винды
Если "меню" - это панель задач, то на Win7 x64 (через Дельфи) WorkareaRect правильно определяется.
0
75 / 66 / 12
Регистрация: 09.02.2016
Сообщений: 906
Записей в блоге: 16
11.04.2016, 20:46  [ТС]
Win8.1 х64 Lazarus 1.6 - не определяется :-(
код в сообщении volvo Как поместить форму на верху экрана развернув по горизонтали полностью ?

Добавлено через 9 минут
гм.. значение возвращается по вертикали правильное !

но что интересно: если оформление BorderStyle:=none - то все рисуется правильно !
а вот если значение любое другое подразумевающее заголовок окна - то просходит увеличение размера окна !!
то есть получается что у формы свойства left, top, width, height - указывают не внешние а внутренние точки ! соответственно - оформление будет вне этих точек....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.04.2016, 20:46
Помогаю со студенческими работами здесь

Написать программу, где с верху и снизу экрана пробегают звездочки
Используя возможности CRT, написать программу, где с верху и снизу экрана пробегали звездочки (*), каждая следующая звезда случайным...

Бывает не верху экрана странный цветные тонкие полосы, ширина 5 см
Кажется, это только когда я вывожу его из сна. Есть ещё странность, но с ней я живу уже года 2-3. Когда комп включаешь, то он...

Как можно поместить QWidget за пределами экрана?
Хочется сделать всплывающее окно - для этого хочу отображать главный виджет и шапку второстепенного внизу экрана. Шапка второго поверх...

Как полностью закрыть форму?
Как полностью закрыть форму? То есть у меня есть Form1 и Form2 . Form1 - это меню Form2 - это игра допустим. Запускаю программу,...

как полностью удалить форму из проекта?
как полностью удалить форму из проекта?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru