Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663

TMenuItem - размеры, цвет и шрифт

15.09.2015, 17:21. Показов 1845. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Друзья, доброго дня. Подскажите по TMenuItem
Я крашу и увеличиваю шрифт и фон в одном пункте меню
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm26::N2DrawItem(TObject *Sender, TCanvas *ACanvas, TRect &ARect,
          bool Selected)
{
        ACanvas->Font->Size = ACanvas->Font->Size+2;
        ACanvas->Brush->Color = 0x8B008B;
        ACanvas->Font->Color = clCream;
        ACanvas->FillRect(ARect);
        ACanvas->TextOut(ARect.Left, ARect.Top, ((TMenuItem *)Sender)->Caption);
}
Все работает, но изза увеличения шрифта вся надпись не влезает. Есть ли возможность подстраивать под TextWidth?
И если есть, как подстроить с запасом и выравнять по ширине и высоте(по центру)? Спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.09.2015, 17:21
Ответы с готовыми решениями:

Построение n прямоугольников, размеры, цвет и место расположения которых выбираются случайно
Составить программу построения n прямоугольников, размеры, цвет и место расположения которых выбираются случайным образом. Не знаю в чем...

Проблема с TMenuItem
ку всем проблема с TMenuItem, вообщем вместо строки при выборе получаю крокозябру... пример допустим попменю содержит такие строки ...

Добавить поле в класс TMenuItem
В класс, TMenuItem добавил параметр "SelectIndex"....для того что бы нумеровать динамически пополняемый TPopupMenu. for(int i =0;...

6
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
15.09.2015, 17:29
В OnMeasureItem измерять ширину текста написанного нужным шрифтом, и возвращать ее через параметр Width
1
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
15.09.2015, 17:38  [ТС]
если можно - примерчик маленький...
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
15.09.2015, 17:41
C++
1
2
3
4
5
6
void __fastcall TForm26::N2MeasureItem(TObject *Sender, TCanvas *ACanvas, int &Width,
          int &Height)
{
    ACanvas->Font->Size = ACanvas->Font->Size+2; // показываешь, каким размером это будет выводиться
    Width = ACanvas->TextWidth(((TMenuItem *)Sender)->Caption); // и вычисляешь ширину текста
}
1
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
15.09.2015, 19:21  [ТС]
Млин..спасибо.

Добавлено через 1 час 36 минут
А не подскажите - пишу в N2MeasureItem
C++
1
Width = ACanvas->TextWidth(((TMenuItem *)Sender)->Caption)+100;
как выравнять по горизонтали и вертикали (по центру)? Чего то пробую по аналогии с гридом - не совсем получается..
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
15.09.2015, 19:25
Выравнивание - это уже в OnDrawItem, при выводе строки:
C++
1
2
3
4
    ACanvas->TextOut(
        ARect.Left + (ARect.Right - ARect.Left - ACanvas->TextWidth(((TMenuItem *)Sender)->Caption)) / 2,
        ARect.Top, // можно сделать то же самое, если в OnMeasureItem изменялась высота
        ((TMenuItem *)Sender)->Caption);
1
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
15.09.2015, 19:40  [ТС]
Да, все работает. Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.09.2015, 19:40
Помогаю со студенческими работами здесь

Как узнать что выбран пункт меню TMenuItem в С++ Builder 2010?
Здравствуйте! Нужно узнать что пользователь нажал на определенный пункт меню. На форме есть компонент MainMenu. В нем есть подпункты...

Цвет фона, цвет текста в определённом EDIT и шрифт
Сначала опишу чего добиваюсь: Для всех(кроме 1го, заблокированного от ввода) сделать текст текста серым. У заблокированного EDIT'а...

Шрифт подстраивающийся под размеры блока
Подскажите как сделать шрифт относительным по отношению к блоку? Блок будет относительным по отношению к монитору и будет уменьшаться или...

Excel, шрифт, цвет шрифта, цвет фона ячейки и прочие свойства ячейки
Доброго времени суток. Пишу программу для редактирования .xlsx файла на visual c++. Благодаря примерам кода от vxg на этом форуме...

Как поменять шрифт и его размеры в Windows XP?
Как поменять шрифт и его размеры в Виндовс? Когда открываеш Мазиллу, или Ворд, или вообще, когода идут служебные уведомления Винды, они...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru