Посчитать ширину MainMenu

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Аватара пользователя
GAMER
энтузиаст
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина
Контактная информация:

Посчитать ширину MainMenu

Сообщение GAMER »

Можно как-то посчитать ширину MainMenu?
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Сообщение Nik »

В теории, ширина MainMenu равна ClientWidht формы (минус пара пикселей).

Или нужно узнать суммарную ширину пунктов меню?
Аватара пользователя
GAMER
энтузиаст
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина
Контактная информация:

Сообщение GAMER »

Суммарную ширину.

Объясню зачем. Возможно есть другой метод.
При разных настройках экрана, бывает ситуация, что меню располагается в два ряда (не помещается все в одном). Вот хотелось бы рассчитать ширину главной формы, чтобы меню помешалось в одну строку или уж если ширина главной формы будет больше ширины экрана, то тогда уже пусть будет в 2 строки.
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Сообщение Nik »

Хм... Единственное, что приходит в голову - можно посчитать суммарную ширину всех названий пунктов меню и добавить на глазок ширину отступов.

Что-то типа:

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

const
 correct = 6;
var
 wdh: integer;
...
wdh:=0;

for i:=0 to MainMenu1.Items.Count-1 do
 begin
  wdh:=wdh+Canvas.GetTextWidth(MainMenu1.Items[0].Caption)+correct;
 end;

// на выходе wdh будет содержать примерную ширину меню
Аватара пользователя
GAMER
энтузиаст
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина
Контактная информация:

Сообщение GAMER »

Спасибо, у меня тоже была такая идея, но думал, что есть варианты попроще.
Ответить