Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как поменять цвет TMainMenu / 9 сообщений из 9, страница 1 из 1
27.05.2004, 11:51
    #32536299
'FaTsO'
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поменять цвет TMainMenu
Ну вообщем вот и весь вопрос Как поменять цвет TMainMenu
...
Рейтинг: 0 / 0
27.05.2004, 21:43
    #32537603
SnowMan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поменять цвет TMainMenu
Очень просто:
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
28.05.2004, 10:23
    #32538090
SymboL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поменять цвет TMainMenu
Прикольная фишка, а как сделать чтоб не терялась иконка рядом с надписью и надпись горячей клавиши?
...
Рейтинг: 0 / 0
28.05.2004, 10:37
    #32538155
SymboL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поменять цвет TMainMenu
И еще по этому поводу вопросы есть:)
1. При описанной раскраске крастяся толко "кнопки" меню, а остальная чать нет.?
2. Как раскрасить PageControl ?
...
Рейтинг: 0 / 0
28.05.2004, 11:58
    #32538438
SnowMan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поменять цвет TMainMenu
авторКак сделать чтоб не терялась иконка рядом с надписью и надпись горячей клавиши?

Все рисование ручное. В приведенном примере осуществляется строкой:
Код: 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
28.05.2004, 14:00
    #32538830
SymboL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поменять цвет TMainMenu
Спасибо за информацию.
...
Рейтинг: 0 / 0
31.05.2004, 14:25
    #32541053
'FaTsO'
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поменять цвет TMainMenu
void __fastcall TForm1::FormPaint(TObject *Sender)
{
HWND hwnd;
HDC dc;
dc = GetWindowDC(hwnd);
Rectangle(dc,a,b,c,d);
}
только я не понял как узнать размер TMainMenu
...
Рейтинг: 0 / 0
31.05.2004, 14:26
    #32541056
'FaTsO'
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поменять цвет TMainMenu
Это чтобы остальная часть TMainMenu закрашивается
...
Рейтинг: 0 / 0
31.05.2004, 19:37
    #32541658
SnowMan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поменять цвет TMainMenu
Код: 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
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как поменять цвет TMainMenu / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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