Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.11;
Скачать: CL | DM;

Вниз

Как закрасить MainMenu?   Найти похожие ветки 

 
TankMan ©   (2004-03-09 21:52) [0]

Думал думал, не дадумался :(...Проблема вобщем такова, весь у меня интерфейс исполнен, в определенной цветовой гамме, а вот Mainmenu, серого цвета я себе позволить не могу - оно как бельмо на глазу... дайте примерчик, как закрасить сам mainmenu и его раскрывающийся список...


 
nexxiss ©   (2004-03-10 01:04) [1]

www.torry.net


 
TankMan ©   (2004-03-10 05:48) [2]

Краткость- сестра таланта, но всетаки?


 
RDen   (2004-03-10 07:37) [3]

В Кладовке есть чё-то вроде ItemDraw


 
Игорь Шевченко ©   (2004-03-10 10:32) [4]


> а вот Mainmenu, серого цвета я себе позволить не могу


Придется позволить.

Выпадающее меню ты можешь раскрасить стандартным способом, через OwnerDraw, а саму полосу не сможешь, попробуй найти готовое меню, если повезет.


 
Плохиш   (2004-03-10 10:35) [5]

>TankMan ©   (09.03.04 21:52)

Извращаетесь, так делайте все меню ручками


 
Игорь Шевченко ©   (2004-03-10 10:38) [6]

Плохиш   (10.03.04 10:35)


> так делайте все меню ручками


В этом случае даже ножками не поможет - полоса меню это такая же часть окна, как заголовок, и рисоваться должна аналогичными средствами, через WM_NCxxxxxxx


 
Плохиш   (2004-03-10 10:47) [7]

>Игорь Шевченко ©   (10.03.04 10:38) [6]
:-)
Если сказано все меню, то сюда полоса меню тоже входит. :-|
Берётся панелька и суются в неё всякие кнопочки и др. визуальные компонентики ;-)


 
Игорь Шевченко ©   (2004-03-10 12:20) [8]

Плохиш   (10.03.04 10:47)

Или Toolbar ;)


 
nexxiss ©   (2004-03-10 12:21) [9]

to> Игорь Шевченко:
полностью согласен, что с помощью WM_NCxxxxxx плюс перекрываем метод перерисовки компонента. Только так.
Еще можно свой компонент состряпать, что достаточно утомительно.


 
MetalFan ©   (2004-03-10 13:42) [10]

SetMenuInfo
The SetMenuInfo function sets information for a specified menu.

BOOL SetMenuInfo(
 HMENU hmenu,       // handle to menu
 LPCMENUINFO lpcmi  // menu information
);
где:
typedef struct tagMENUINFO {
 DWORD   cbSize;
 DWORD   fMask;
 DWORD   dwStyle;
 UINT    cyMax;
 HBRUSH  hbrBack;      
 DWORD   dwContextHelpID;
 ULONG_PTR  dwMenuData;
} MENUINFO, FAR *LPMENUINFO;
typedef MENUINFO CONST FAR *LPCMENUINFO;

где
hbrBack
Brush to use for the menu"s background.

Может поможет?


 
TankMan ©   (2004-03-10 22:33) [11]

Мдяя... а чуть-чуть по подробнее про WM_NCxxxxxx можно ?


 
Игорь Шевченко ©   (2004-03-10 23:01) [12]

TankMan ©   (10.03.04 22:33)

Хороший совет: поискать уже готовый компонент/набор компонент, который красит полосу меню (да и само меню тоже) в нужный цвет.
Второй хороший совет: имитировать MainMenu, например Toolbar"ом, как в среде Delphi, Toolbar покрасить гораздо легче.

Даже если сказать чуть-чуть поподробнее про сообщения, посылающиеся неклиентской области окна, это займет очень много времени и места.


 
TankMan ©   (2004-03-10 23:56) [13]

А в чем собственно проблема с сообщениями посылающимися не клиентской оболасти окна? Разве не тоже самое что и обработка обычного WM_Paint?


 
Игорь Шевченко ©   (2004-03-11 00:03) [14]

TankMan ©   (10.03.04 23:56)


> А в чем собственно проблема с сообщениями посылающимися
> не клиентской оболасти окна?


В том, что их не одно и они не настолько подробно документированы, как WM_PAINT.


 
Игорь Шевченко ©   (2004-03-11 00:55) [15]

TankMan ©   (10.03.04 23:56)

см. MetalFan ©   (10.03.04 13:42) [10]

Для Windows больше чем 98 и NT4

procedure TfMain.Button1Click(Sender: TObject);
var
 Info : TMENUINFO;
begin
 FillChar(Info, SizeOf(Info), 0);
 Info.cbSize := SizeOf(Info);
 Info.fMask := MIM_APPLYTOSUBMENUS or MIM_BACKGROUND;
 Info.hbrBack := GetStockObject(WHITE_BRUSH);
 SetMenuInfo(MainMenu.Handle, Info);
 DrawMenuBar(Handle);
end;


 
Игорь Шевченко ©   (2004-03-11 00:56) [16]

MetalFan ©   (10.03.04 13:42)

Спасибо :) Пора отвыкать от NT4


 
X9   (2004-03-11 11:58) [17]

А кто нибудь знает, как можно поменять цвет меню не только на белый, серый, чёрный, а как TColor. Например, когда в Delphi7 делаешь CLX-проект, то там у TMainMenu есть даже свойство Color типа TColor. Ведь как-то же всё-таки реализованно! Я порылся в QMenus.pas, нон так и не догнал, как это делается. Кому не в лом - посмотрите, а если нет исходников - могу выслать, в архиве немного весят - около 15Кб.


 
Игорь Шевченко ©   (2004-03-11 12:31) [18]


> А кто нибудь знает, как можно поменять цвет меню не только
> на белый, серый, чёрный, а как TColor.


Переведи вопрос для не имеющих D7 и не делающих CLX-проектов


 
X9   (2004-03-12 06:36) [19]

CLX - библиотека для создания мультиплатформенных приложений. Я как-то заглянул туда - для интереса. Но я же говорю, что могу выслать QMenus.pas - аналог Menus.pas, только для CLX. Если кто-нибудь хочет посмотреть, то давайте мыло - вышлю.


 
TankMan ©   (2004-03-12 22:47) [20]

Ну давайте мне ... TankMan@newmail.ru

... эх... закрасил я этот несчастный MainMenu...вобщем сделал, так - на обрисовке компонента потомка TMenuItem, узнаю размер окна, которому принадлежит мой потомок TMainMenu, и крашу как хочу, но проблема в том, что он дает размеры окна полностью, вместе с заголовком, а как узнать какой высоты заголовок, если он не стандартный? т.е. я переделал TMainMenu и TMenuItem, - сделал THMenu и ThMenuItem соответсвенно.... - программно создаю сам THMenu и далее к THMenu присоединяю THMenuItem и также , присоединяю другие THMenuItem к другим THMenuitem, т.е. делаю йерархию этих менюшек - все нормально, они закрашиваются и изменяют цвет как нужно вобщем все ОК, но вот сделать самостоятельный комопнент, который можно вывести на панель инструментов не получается  :((... т.е. если я даже вывожу на панельку THMenu, то мне всеравно приходится добовлять MenuItem в процессе старта программы :( а как переделать в нормальный компонент не знаю :(... может кто-нибудь посмотреть мои наброски?.. впринципе там ничего такого-то и нет, понимающему человеку хватит 5 минут чтобы разобраться...
Заранее благодарен...


 
имя   (2004-03-14 05:05) [21]

Удалено модератором



Страницы: 1 вся ветка

Текущий архив: 2004.04.11;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.028 c
3-1081847949
Rych
2004-04-13 13:19
2004.04.11
Как проверить присутствует-ли занчение в TDataSet ?


7-1076080076
Станислав
2004-02-06 18:07
2004.04.11
Рабочий стол


1-1082626363
Sergey__
2004-04-22 13:32
2004.04.11
Как сделать чтобы текст плавно передвигался по Cavans-у формы


8-1076048334
Larry
2004-02-06 09:18
2004.04.11
Регионы


1-1082890875
hgd
2004-04-25 15:01
2004.04.11
Как вставить картинку с alfa в формате png