Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PowerBuilder Новый топик    Ответить
 Изменение текста в меню...  [new]
andy753
Member

Откуда: Moscow
Сообщений: 368
При изменении названий пунктов меню из скрипта (в рантайм) - пропадают шоткаты :((( Кто знает, как с этим зверем бороться? Ну чтоб не пропадали.

С Уважением...
16 сен 03, 10:34    [340082]     Ответить | Цитировать Сообщить модератору
 Re: Изменение текста в меню...  [new]
Sergey Schwarz
Member

Откуда: Germany, Hamburg (Russland, St.Petersburg)
Сообщений: 51
извини за офтоп, но как ето вообше делается->добавить или изменить пункт в меню в реалтаим.

Можно пример4ик посмотреть?
16 сен 03, 16:05    [340987]     Ответить | Цитировать Сообщить модератору
 Re: Изменение текста в меню...  [new]
Moiseeff
Member

Откуда: Москва
Сообщений: 108
Creating Dynamic Menus
16 сен 03, 16:09    [340996]     Ответить | Цитировать Сообщить модератору
 Re: Изменение текста в меню...  [new]
PL99
Member

Откуда: Moscow
Сообщений: 1367
Судя вот по этому кусочку из файла экспорта
...

on m_add.create
call super::create
this.text = "Добавить~tIns"
this.shortcut = 45
this.toolbaritemname = "Insert5!"
this.toolbaritemtext = "Добавить "
end on
...

шорткат присутствует в тексте пункта меню...
16 сен 03, 16:28    [341047]     Ответить | Цитировать Сообщить модератору
 Re: Изменение текста в меню...  [new]
Филипп
Member

Откуда: Boston, MA, USA (c 1989 ) б. Москва
Сообщений: 1880
Посмотри вот тут
http://www.pbinfo.be/index.php?file=tips&seq=11

Он на меня не ссылается, но списал с моего поста в powersoft.public.powerbuilder.general :-))
17 сен 03, 00:58    [341643]     Ответить | Цитировать Сообщить модератору
 Re: Изменение текста в меню...  [new]
andy753
Member

Откуда: Moscow
Сообщений: 368
Вот кусок описания Menu Object
Shortcut Integer Specifies the shortcut key for the Menu object. This property should only be set in the Menu painter. It cannot be set at runtime.

Посему Филипп, спасибо, но енто не подходит :((.
17 сен 03, 09:54    [341810]     Ответить | Цитировать Сообщить модератору
 Re: Изменение текста в меню...  [new]
DenisVK
Member

Откуда:
Сообщений: 98
Что-то не ясно, если ты создаешь меню динамически, то можешь назначить сам shortcut. А вообще напиши кусок своего скрипта, чтоб людям было ясно в чем все-таки проблема...
17 сен 03, 10:19    [341853]     Ответить | Цитировать Сообщить модератору
 Re: Изменение текста в меню...  [new]
andy753
Member

Откуда: Moscow
Сообщений: 368
Меню динамически не генерю, а изменяю, вещи разные. Насколько знаю, штатными средствами PB - его динамически создавать нельзя без извращений... Да мне и не требуется пока. Вот ф-ия, которая с меню работает... Почему нельзя шоткаты менять - смотри на мессадж выше :))

global function integer show_menu (menu m, string as_name, string as_title);int i, sh
string item_id
for i = lowerBound(m.Item) to upperBound(m.Item)
item_id = m.Item.classname()
if item_id = as_name then
// sh = m.item.ShortCut
m.item.Visible = true
m.item.Enabled = true
m.item.Text = as_title
m.item.ToolbarItemVisible = true
m.item.ToolbarItemText = as_title
// m.item.ShortCut = sh
return 1
end if
if show_menu(m.Item, as_name, as_title) = 1 then return 1
next
return 0
end function
17 сен 03, 10:51    [341933]     Ответить | Цитировать Сообщить модератору
 Re: Изменение текста в меню...  [new]
DenisVK
Member

Откуда:
Сообщений: 98
Ну во-первых скриптик не совсем корректный (в части обращения к элементам меню), во-вторых судя по скрипту shortcut никуда не пропадает...
А если ты хочешь, чтобы они отображались в названии пункта меню, тогда смотри, что написал PL99
this.text = "Добавить~tIns"
17 сен 03, 11:35    [342048]     Ответить | Цитировать Сообщить модератору
 Re: Изменение текста в меню...  [new]
andy753
Member

Откуда: Moscow
Сообщений: 368
Вот окончательный вариант, кому интересно... все работает, особое спасибо PL99 & Филиппу.

global function integer show_menu (menu m, string as_name, string as_title);int i, sh
string item_id, ls_sh
boolean lb_shift, lb_alt, lb_ctrl
for i = lowerBound(m.Item) to upperBound(m.Item)
item_id = m.Item.classname()
if item_id = as_name then
// define ShortCut
sh = m.item.ShortCut
if null2long(sh) > 0 then
ls_sh = "~t"
if sh >= 1024 then
ls_sh += "Shift+"
sh -= 1024
end if
if sh >= 512 then
ls_sh += "Alt+"
sh -= 512
end if
if sh >= 256 then
ls_sh += "Ctrl+"
sh -= 256
end if
ls_sh += String(Char(sh))
else
ls_sh = ""
end if
// change status & text
m.item.Visible = true
m.item.Enabled = true
m.item.Text = as_title + ls_sh
m.item.ToolbarItemVisible = true
m.item.ToolbarItemText = as_title
Print(as_title + ls_sh)
// m.item.ShortCut = sh
return 1
end if
if show_menu(m.Item, as_name, as_title) = 1 then return 1
next
return 0
end function
17 сен 03, 11:39    [342058]     Ответить | Цитировать Сообщить модератору
Все форумы / PowerBuilder Ответить