| 
| 
 | Вопрос # 3 155/ вопрос открыт / | 
 |  Приветствую, уважаемые эксперты!Как програмно узнать *Caption* выбранного пункта меню и вывести в ShowMessage .
 
 Например : Выбрал пункт *New file* или *Save*
 
 P.S. Pабота  только с одним меню мною созданным.
 
|  |   Вопрос задал: 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 (статус: Посетитель), 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 (статус: Студент), 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 (статус: Посетитель), 5 сентября 2009, 12:29 [#5]:Еще вопрос по теме Как воспроизвести сам переход?
 Можете описать в коде?
 |  
|   | Вадим К (статус: Академик), 5 сентября 2009, 12:31 [#6]:переход по ссылке? Галочка "подтверждения прочтения" - вселенское зло. |  
|   | 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 (статус: Посетитель), 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 (статус: Посетитель), 5 сентября 2009, 22:41 [#11]:Добрый вечер. Это компонент Raize.
 Я пытался и со стандартными компонентами
 Признаюсь у меня не получилось.
 |  
|   | 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. Я рад что разобрался и главное понял ( как бы )
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |