powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как поменять цвет TMainMenu
9 сообщений из 9, страница 1 из 1
Как поменять цвет TMainMenu
    #32536299
'FaTsO'
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну вообщем вот и весь вопрос Как поменять цвет TMainMenu
...
Рейтинг: 0 / 0
Как поменять цвет TMainMenu
    #32537603
SnowMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень просто:
1. У TMainMenu свойство OwnerDraw выставляешь true.
2. На каждый элемент меню, на событие OnDrawItim вешаещь функцию типа:
Код: plaintext
1.
2.
3.
4.
5.
if (Selected)
      ACanvas->Brush->Color = clBlue;
 else
      ACanvas->Brush->Color = clRed;
 ACanvas->FillRect(ARect);
 ACanvas->TextOut(ARect.Left, ARect.Top, ((TMenuItem *)Sender)->Caption);

Будет тебе красное меню
...
Рейтинг: 0 / 0
Как поменять цвет TMainMenu
    #32538090
SymboL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прикольная фишка, а как сделать чтоб не терялась иконка рядом с надписью и надпись горячей клавиши?
...
Рейтинг: 0 / 0
Как поменять цвет TMainMenu
    #32538155
SymboL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще по этому поводу вопросы есть:)
1. При описанной раскраске крастяся толко "кнопки" меню, а остальная чать нет.?
2. Как раскрасить PageControl ?
...
Рейтинг: 0 / 0
Как поменять цвет TMainMenu
    #32538438
SnowMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторКак сделать чтоб не терялась иконка рядом с надписью и надпись горячей клавиши?

Все рисование ручное. В приведенном примере осуществляется строкой:
Код: plaintext
ACanvas->TextOut(ARect.Left, ARect.Top, ((TMenuItem *)Sender)->Caption);

Вместо нее надо что-то типа:
Код: plaintext
1.
2.
TMenuItem *mi;
mi = (TMenuItem *)Sender;
//На основании mi рисуем все, что хотим

авторПри описанной раскраске крастяся толко "кнопки" меню, а остальная чать нет.?

С остальной частью сложнее. Тут средствами Buildera вряд ли получится, нужно применять WinAPI. общая схема может быть такой:
В обработчике OnPaint формы делаем:
1. Определим контекст отображения окна GetWindowDC, он позволяет рисовать в любой части окна.
2. Определим расположение и размеры меню
3. Рисуем на этом месте красный прямоугольник.
4. Освобождаем контекст.

авторКак раскрасить PageControl ?
Никогда не красил. Там есть событие OnDrawTab видимо надо использовать его. Если не получится, то WinAPI. Вечером могу попробовать, а сейчас работа, начальник и т.д.
...
Рейтинг: 0 / 0
Как поменять цвет TMainMenu
    #32538830
SymboL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за информацию.
...
Рейтинг: 0 / 0
Как поменять цвет TMainMenu
    #32541053
'FaTsO'
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
void __fastcall TForm1::FormPaint(TObject *Sender)
{
HWND hwnd;
HDC dc;
dc = GetWindowDC(hwnd);
Rectangle(dc,a,b,c,d);
}
только я не понял как узнать размер TMainMenu
...
Рейтинг: 0 / 0
Как поменять цвет TMainMenu
    #32541056
'FaTsO'
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это чтобы остальная часть TMainMenu закрашивается
...
Рейтинг: 0 / 0
Как поменять цвет TMainMenu
    #32541658
SnowMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
void __fastcall TForm1::FormPaint(TObject *Sender)
{
 RECT     r1, r2, r3, r4;
 GetWindowRect(Handle, &r1);
 ::GetClientRect(Handle, &r2);
 GetMenuItemRect(Handle, MainMenu1->Handle,  0 , &r3);
 GetMenuItemRect(Handle, MainMenu1->Handle, GetMenuItemCount(MainMenu1->Handle)- 1 , &r4);
 int a, b, c, d;
 a = r4.right - r1.left;
 b = r4.top - r1.top;
 c = r3.left - r1.left + r2.right;
 d = r4.bottom - r1.top;
 HDC hdc;
 HBRUSH hb;
 hb = CreateSolidBrush(RGB( 255 ,  0 ,  0 ));
 hdc = GetWindowDC(Handle);
 SelectObject(hdc, hb);
 Rectangle(hdc,a,b,c,d);
 ReleaseDC(Handle, hdc);
 DeleteObject(hb);
}
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как поменять цвет TMainMenu
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]