Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 155

/ вопрос открыт /

Приветствую, уважаемые эксперты!
Как програмно узнать *Caption* выбранного пункта меню и вывести в ShowMessage .

Например : Выбрал пункт *New file* или *Save*

P.S. Pабота только с одним меню мною созданным.

mikael Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: mikael (статус: Посетитель)
Вопрос отправлен: 5 сентября 2009, 10:24
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: hx - Саня

Здравствуйте, mikael!
При моделировании меню щелкните на необходимый пункт и посмотрите его имя в инспекторе объектов (свойство Name).
После этого вы можете сделать это так:
ShowMessage(имя.Caption);

Ответ отправил: hx - Саня (статус: 1-ый класс)
Время отправки: 5 сентября 2009, 13:37
Оценка за ответ: -1


Мини-форум вопроса

Всего сообщений: 12; последнее сообщение — 6 сентября 2009, 10:48; участников в обсуждении: 3.

5 сентября 2009, 10:53: Вопрос перемещён из тематического раздела Delphi » Работа с файловой системой в раздел Delphi » Работа с компонентами и библиотеками модератором Ерёмин А.А.

Вадим К

Вадим К (статус: Академик), 5 сентября 2009, 11:39 [#1]:

Это надо узнать когда и где?
в обработчике клика по этому меню?
Галочка "подтверждения прочтения" - вселенское зло.
mikael

mikael (статус: Посетитель), 5 сентября 2009, 11:58 [#2]:

Добрый день.
За звездочки я не знал или забыл простите
Опишу вопрос более детально:
1)--------------------------------
Я создаю пункт меню в ходе работы программы динамически

Код: ( procedure TForm1.N6Click(Sender: TObject);
var x,y:string;
NewItem: TMenuItem;
begin
x:=RzShellList1.Folder.PathName;
NewItem:=TMenuItem.Create(self);
NewItem.Action:=Action1;
NewItem.Caption := x; // в caption записываю адрес открытой страницы
bookmark.Items.Add(NewItem);
end; ) конец кода.

2)----------------------------------
Теперь мне надо воспользываться меню чтобы перейти на сохраненную страницу (закладку)
Код: ( procedure TForm1.Action1Execute(Sender: TObject);
var x:string;
begin
.......................
end; ) конец кода.
Вадим К

Вадим К (статус: Академик), 5 сентября 2009, 12:11 [#3]:

TMenuItem(Sender).Caption
Галочка "подтверждения прочтения" - вселенское зло.
DNK

DNK (статус: Студент), 5 сентября 2009, 12:15 [#4]:

Надо немного по другому создавать меню.
 procedure TForm1.N6Click(Sender: TObject);
var x:string;
NewItem: TMenuItem;
NewAction: TAction;
begin
x:=RzShellList1.Folder.PathName;
NewItem:=TMenuItem.Create(self);
NewAction := TAction.Create(self);
NewAction.Caption := x; // в caption записываю адрес открытой страницы
NewAction.OnExecute := Action1Execute;
NewItem.Action:=NewAction;
bookmark.Items.Add(NewItem);
end;
Обрабатываем клик по менюшке.
procedure TForm1.Action1Execute(Sender: TObject);
var x:string;
begin
x := TAction(Sender).Caption;
.......................
end;
"Digital Networked Knight"
mikael

mikael (статус: Посетитель), 5 сентября 2009, 12:29 [#5]:

Еще вопрос по теме
Как воспроизвести сам переход?
Можете описать в коде?
Вадим К

Вадим К (статус: Академик), 5 сентября 2009, 12:31 [#6]:

переход по ссылке?
Галочка "подтверждения прочтения" - вселенское зло.
mikael

mikael (статус: Посетитель), 5 сентября 2009, 12:40 [#7]:

Да переход по ссылке
Вадим К

Вадим К (статус: Академик), 5 сентября 2009, 13:08 [#8]:

вот где то так
если s:string и содержит адрес
ShellExecute(self.WindowHandle,'open',Pchar(s),nil,nil, SW_SHOWNORMAL);
правда наверно надо добавить будет ShellApi в список uses.
Галочка "подтверждения прочтения" - вселенское зло.
mikael

mikael (статус: Посетитель), 5 сентября 2009, 13:45 [#9]:

Благодарю за ответ, но видать я не правильно задал вопрос
Мне нужно открыть по ссылке страницу в RzShellList1.
Функцию я нашел :
var x:string;
.....
RzShellTree1.SelectedFolder:=x;

Но при использывании выбивает ошибку:
[Ошибка] Unit1.pas(150): Incompatible types: 'TRzShellLocator' and 'String'

Как я понял мне надо переменную x привести к нужному типу.
Функцию пока не нашел.
Вадим К

Вадим К (статус: Академик), 5 сентября 2009, 17:04 [#10]:

думаю тут привести не получиться. Но к сожалению я не знаю, что это за компонент RzShellList и никогда с ним не работал...
Галочка "подтверждения прочтения" - вселенское зло.
mikael

mikael (статус: Посетитель), 5 сентября 2009, 22:41 [#11]:

Добрый вечер.
Это компонент Raize.
Я пытался и со стандартными компонентами
Признаюсь у меня не получилось.
mikael

mikael (статус: Посетитель), 6 сентября 2009, 10:48 [#12]:

Спасибо всем кто откликнулся на призыв
решение нашлось
код:
procedure TForm1.N6Click(Sender: TObject);
var x:string;
NewItem: TMenuItem;
NewAction: TAction;
begin
x:=RzShellList1.Folder.PathName;
NewItem:=TMenuItem.Create(self);
NewAction := TAction.Create(self);
NewAction.Caption := x; // в caption записываю адрес открытой страницы
NewAction.OnExecute := Action1Execute;
NewItem.Action:=NewAction;
bookmark.Items.Add(NewItem);
end;
procedure TForm1.Action1Execute(Sender: TObject);
var x:string;
begin
x := TAction(Sender).Caption;
RzShelltree1.SelectedFolder.PathName:=x;
end;

конец кода.

и на стандартных компонентах
код:
procedure TForm1.N2Click(Sender: TObject);
var x:string;
NewItem: TMenuItem;
NewAction: TAction;
begin
x:=ShellTreeView1.Path;
NewItem:=TMenuItem.Create(self);
NewAction := TAction.Create(self);
NewAction.Caption := x; // в caption записываю адрес открытой страницы
NewAction.OnExecute := Action1Execute;
NewItem.Action:=NewAction;
MainMenu1.Items[0].Add(NewItem);
end;

procedure TForm1.Action1Execute(Sender: TObject);
var x:string;
begin
x := TAction(Sender).Caption;
ShellTreeView1.Path:=x;
end;

конец кода.

P.S. Я рад что разобрался и главное понял ( как бы )

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:38
Выполнено за 0.03 сек.