Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.07.2014, 15:56   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
Сообщение Получить Caption выбранного пункта MainMenu

Доброго времени суток!
В MainMenu есть меню Файлы. Меню Файлы заполняется в цикле
Код:
  for i := 0 to Length(ExtensionsArray) - 1 do
  begin
    Item := TMenuItem.Create(Self);
    Item.Caption := ExtensionsArray[i].Description;
    Item.OnClick := MyClick;
    N2.Add(Item);
  end;

procedure TFormMain.MyClick(Sender: TObject);
begin
  ShowMessage('');
end;
Встала задача, при клике по созданному меню, вывести Caption выбранного пункта. Как это сделать?
Shouldercannon вне форума Ответить с цитированием
Старый 23.07.2014, 15:58   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
ShowMessage((Sender as TMenuItem).Caption);
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.07.2014, 16:29   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
По умолчанию

Работает, но есть побочный эффект. Цифры и латиница имеют перед собой символ &. В ShowMessage это смотрится так: Пункт Test, в Evaluate так: Пункт &Test.
Критично, так как нужно будет сравнивать Caption с массивом, хотя можно использовать StringReplace. Может ещё какие варианты есть?

Последний раз редактировалось Shouldercannon; 23.07.2014 в 16:32.
Shouldercannon вне форума Ответить с цитированием
Старый 23.07.2014, 16:37   #4
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Код:
Item.AutoHotKeys:=maManual;
northener вне форума Ответить с цитированием
Старый 24.07.2014, 08:55   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
Код:
Item.AutoHotKeys:=maManual;
угу. Поможет. Но и "горячие" клавиши (в виде подчёркнутых буковок и циферок) в меню перестанут работать.

Shouldercannon, чем Вас StringReplace обидел так, что Вы им пользоваться не хотите?!! Прямо в строке получения наименования и вызывайте эту функцию!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.07.2014, 02:12   #6
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
угу. Поможет. Но и "горячие" клавиши (в виде подчёркнутых буковок и циферок) в меню перестанут работать.
Хм.
А кому они нужны, если это меню хрен знает в каком приложении? Тем более поставленные автоматом. Ведь в этом случае нужно сначала щёлкнуть мышкой по меню, потом увидеть (а это весьма сложная задача для большинства т.н. простых пользователей) горячую клавишу для нужного пункта, потом бросить мышку и взять в руки клавиатуру вместо того чтобы просто щелкнуть мышкой по пункту меню.

Вот честно. Не знаю ни одной горячей клавиши ни для какой программы у себя на компьютере кроме F1 и Ctrl+F. И вроде живу как нормальный человек. Ни на что не жалуюсь.
Более того. Моя дщерь (ей сейчас почти 24) тоже не знает никаких горячих клавиш. И тоже живёт нормально, без проблем ни на своём компьютере, ни на своём нетбуке, ни на своём планшете, ни на своём смартфоне.

Последний раз редактировалось northener; 25.07.2014 в 02:20.
northener вне форума Ответить с цитированием
Старый 25.07.2014, 08:23   #7
Toxa
Форумчанин Подтвердите свой е-майл
 
Аватар для Toxa
 
Регистрация: 01.12.2006
Сообщений: 516
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
Хм.
А кому они нужны, если это меню хрен знает в каком приложении? Тем более поставленные автоматом. Ведь в этом случае нужно сначала щёлкнуть мышкой по меню, потом увидеть (а это весьма сложная задача для большинства т.н. простых пользователей) горячую клавишу для нужного пункта, потом бросить мышку и взять в руки клавиатуру вместо того чтобы просто щелкнуть мышкой по пункту меню.

Вот честно. Не знаю ни одной горячей клавиши ни для какой программы у себя на компьютере кроме F1 и Ctrl+F. И вроде живу как нормальный человек. Ни на что не жалуюсь.
Более того. Моя дщерь (ей сейчас почти 24) тоже не знает никаких горячих клавиш. И тоже живёт нормально, без проблем ни на своём компьютере, ни на своём нетбуке, ни на своём планшете, ни на своём смартфоне.
горячие клавиши не знают, а узнают, постепенно работая с программой. Вам проще нажать мышкой - хорошо, но есть люди кому удобнее все делать клавиатурой, и тут помогают горячие клавиши
Пишу на Delphi за еду
Toxa вне форума Ответить с цитированием
Старый 25.07.2014, 08:57   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Вот честно. Не знаю ни одной горячей клавиши ни для какой программы у себя на компьютере кроме F1 и Ctrl+F.
Я даже не знаю, порадоваться за Вас (Вы счастливы в своём неведении) или посочувствовать Вам!
и что, даже про ALT-TAB никогда не слышали? Или про Alt-F4 ?!

Рекомендую, (хотя бы) освоить клавиши ALT-F4 (закрытие приложения), Ctrl-S (сохранить документ), Ctrl-O - открыть документ, Ctrl-N - создать новый документ, win+D - свернуть все окна, Ctrl-ESC - открыть меню "пуск", win-R - вызвать окно запуска программы, Ctrl-TAB, ALT-TAB, Ctrl-F6 - переключение между окнами/задачами
Это как бы общевиндозовский" минимум.
А ещё внутри программ есть огромное множество полезных сочетаний клавиш.
Вы даже не представляете, насколько порою быстрее нажать клавишу, чем лезть в дебри меню в поисках нужного действия.


Цитата:
Сообщение от Toxa
горячие клавиши не знают, а узнают, постепенно работая с программой. Вам проще нажать мышкой - хорошо, но есть люди кому удобнее все делать клавиатурой, и тут помогают горячие клавиши
Toxa, именно так. Никто же у мышатников мышку не отбирает. Да и полно случаев, когда без неё не обойтись. Но уж если что-то можно сделать нажатием клавиш, то это однозначно быстрее и удобнее (хотя, кому как, конечно говорят, есть люди, которые даже текст мышкой на виртуальной клавиатуре набирают ) Я, например, фанат клавиатуры. Даже наиболее часто использумые программы запускаю по сочетанию клавиш. Да и в программах изучаю/знаю, как можно быстро вызвать нужное мне действие.
А так - хозяин, конечно, барин!


p.s. возвращаясь к теме.
я же не против того, чтобы автор темы отключил у себя в программе автоматическую раздачу горячих клавиш. Я просто предупредил его о последствиях. Вполне допускаю, что ему (его пользователям) в его программе горячие клавиши "и даром не надь, и за деньги не надь!"
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.07.2014, 10:37   #9
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Цитата:
Сообщение от Toxa
горячие клавиши не знают, а узнают, постепенно работая с программой
Тогда эти горячие клавиши надо назначать обдуманно чтобы их действительно легко было запомнить тому, кому это нужно. Т.е. назначать их своей годовой и своими руками, а не отдавать это дело дурному автомату. Что я и предложил.

Цитата:
Сообщение от Serge_Bliznykov
Я даже не знаю, порадоваться за Вас
А что тут знать? Конечно порадоваться. Меньше ненужных знаний - меньше головной боли!

Ну и наконец. Название свойства AutoHotKeys ввело всех в заблуждение из-за чего разгорелся спор о горячих клавишах (ключах). А ведь в данном случае это всего лишь Accelerator keys. И нужны они только в случае отсутствия мышки, а полезны при этом только при длинном списке подпунктов одного уровня в каком-то пункте меню.

Последний раз редактировалось northener; 25.07.2014 в 11:27.
northener вне форума Ответить с цитированием
Старый 25.07.2014, 13:43   #10
Toxa
Форумчанин Подтвердите свой е-майл
 
Аватар для Toxa
 
Регистрация: 01.12.2006
Сообщений: 516
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
И нужны они только в случае отсутствия мышки, а полезны при этом только при длинном списке подпунктов одного уровня в каком-то пункте меню.
и тут я не соглашусь, они так же полезны для фанатов клавиатуры, вместо нескольких нажатий мышки и движений, проще и быстрее нажать несколько кнопок на клавиатуре
например в той же делфе,
run->attach to process успешно заменяется на ALT-R-O
или же TOOLS-OPTIONS = ALT-T-O
Пишу на Delphi за еду
Toxa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить Caption выбранного итема в ListView fezilk25 Общие вопросы Delphi 2 05.02.2011 22:59
Вывод второго selecta в зависимости от выбранного пункта в первом pavelslap PHP 5 20.01.2011 16:28
Добавление пункта меню Claster Win Api 1 17.05.2010 18:28
ColorDialog | получить шестандцатеричный код выбранного цвета T-dayne Помощь студентам 9 14.03.2010 19:10
Получить список файлов выбранного каталога в MFC DPRO Visual C++ 2 17.08.2008 22:34