Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как вставить сепаратор в mainmenu? [D6, WinXP]


DontFire ©   (2007-11-09 14:10:00) 

Привет всем!

Как вставить сепаратор(линию) в mainmenu формы (не системное), например, в её первое подменю?

API функциями пытался сделать-не получается, если можно, покажите рабочий пример.

Спасибо.


Leonid Troyanovsky   (2007-11-09 17:04:00) [1]


> DontFire   (09.11.07 15:19) [6]

> Один и тот же код: в OnCreate(Form1) не работает; в onClick(Button1)
> - работает.

А как у нас, скажем, OldCreateOrder?

> n1:Tmenuitem [первое сабменю в мейнменю]

За это ли, старик Яков, ты проливал кровь в сырых казематах,
чтобы пункты в главное меню вставляли через API?

--
Regards, LVT.


DontFire   (2007-11-09 15:19:00) [2]

>>а с чего ты взял что он не срабатывал на OnCreate формы? скорее всего ты handle не тот указываешь.

Один и тот же код: в OnCreate(Form1) не работает; в onClick(Button1) - работает.

const  SC_MyMenuItem = WM_USER + 1;
...
AppendMenu(n1.handle, MF_SEPARATOR, 0, '');  
AppendMenu(n1.handle, MF_STRING,SC_MyMenuItem, 'Новый пункт в меню');


n1:Tmenuitem [первое сабменю в мейнменю]


Сергей М.   (2007-11-09 15:04:00) [3]


> Куда ж вывоз тогда поместить чтобы он выполнился 1 раз при
> запуске программы?


const
 WM_APPEND_MENU_SEPARATOR = WM_USER + 100;

type
 TMyForm = class(TForm)
..
 private
..
   procedure MsgAddMnuSeparator(var Message: TMessage); message WM_APPEND_MENU_SEPARATOR;
..
 end;

..

procedure TMyForm.MsgAddMnuSeparator;
begin
.. здесь и добавляй разделитель ..
end;

В обработчике OnCreate:

PostMessage(Handle, WM_APPEND_MENU_SEPARATOR, 0, 0);


Palladin   (2007-11-09 14:58:00) [4]

а с чего ты взял что он не срабатывал на OnCreate формы? скорее всего ты handle не тот указываешь


DontFire   (2007-11-09 14:56:00) [5]

Большое спасибо, "-" удобный вариант.

Выснил, что AppendMenu не срабатывал из OnCreate формы и из dpr-файла перед  Application.Run (причём сама функция не возвращала ошибку). Заработал в onClick кнопки. Куда ж вывоз тогда поместить чтобы он выполнился 1 раз при запуске программы?


Palladin   (2007-11-09 14:13:00) [6]

если не API функциями то просто '-' в Caption пишешь и все


Palladin   (2007-11-09 14:12:00) [7]

AppendMenu(<Handle>,MF_SEPARATOR,0,'');


Наверх

Титульная страница Поиск, карта сайта Написать письмо