Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 637
1

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

15.09.2015, 17:21. Показов 1079. Ответов 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.09.2015, 17:21
Ответы с готовыми решениями:

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

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

Добавить поле в класс TMenuItem
В класс, TMenuItem добавил параметр "SelectIndex"....для того что бы нумеровать динамически...

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

6
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31465 / 20512 / 7988
Регистрация: 22.10.2011
Сообщений: 35,627
Записей в блоге: 7
15.09.2015, 17:29 2
В OnMeasureItem измерять ширину текста написанного нужным шрифтом, и возвращать ее через параметр Width
1
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 637
15.09.2015, 17:38  [ТС] 3
если можно - примерчик маленький...
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31465 / 20512 / 7988
Регистрация: 22.10.2011
Сообщений: 35,627
Записей в блоге: 7
15.09.2015, 17:41 4
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
Сообщений: 637
15.09.2015, 19:21  [ТС] 5
Млин..спасибо.

Добавлено через 1 час 36 минут
А не подскажите - пишу в N2MeasureItem
C++
1
Width = ACanvas->TextWidth(((TMenuItem *)Sender)->Caption)+100;
как выравнять по горизонтали и вертикали (по центру)? Чего то пробую по аналогии с гридом - не совсем получается..
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31465 / 20512 / 7988
Регистрация: 22.10.2011
Сообщений: 35,627
Записей в блоге: 7
15.09.2015, 19:25 6
Выравнивание - это уже в 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
Сообщений: 637
15.09.2015, 19:40  [ТС] 7
Да, все работает. Спасибо!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.09.2015, 19:40

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru