любой из Item CaptionText выбранного скопировался в буфер.
Но дело в том, что если у Item есть SubItem, то событие OnClick срабатывает СРАЗУ как только навел на пункт меню, я так понимаю, чтобы открыть следующий SubItem.
Подскажите как этого избежать?
procedure TForm1.CreatePopupMenu;
var
PopupMenu: TPopupMenu;
MainItem, SubItem1, SubItem2: TMenuItem;
begin
// Создаем TPopupMenu
PopupMenu := TPopupMenu.Create(Self);
// Создаем главный пункт меню
MainItem := TMenuItem.Create(PopupMenu);
MainItem.Caption := 'Главный пункт';
MainItem.OnClick := MenuItemClick;
PopupMenu.Items.Add(MainItem);
// Создаем подпункты
SubItem1 := TMenuItem.Create(PopupMenu);
SubItem1.Caption := 'Подпункт 1';
SubItem1.OnClick := MenuItemClick;
MainItem.Add(SubItem1);
SubItem2 := TMenuItem.Create(PopupMenu);
SubItem2.Caption := 'Подпункт 2';
SubItem2.OnClick := MenuItemClick;
MainItem.Add(SubItem2);
// Привязываем PopupMenu к компоненту (например, к форме)
Self.PopupMenu := PopupMenu;
end;
procedure TForm1.MenuItemClick(Sender: TObject);
var
MenuItem: TMenuItem;
CaptionText: string;
begin
if Sender is TMenuItem then
begin
MenuItem := TMenuItem(Sender);
// Удаляем символы '&' из Caption
CaptionText := StringReplace(MenuItem.Caption, '&', '', [rfReplaceAll]);
// Копируем текст в буфер обмена
//Clipboard.AsText := CaptionText;
ShowMessage(CaptionText);
end;
end;
Не проверял, так ли это, но если так, то проверяй наличие subitems, если они есть, то не копируй
Если элемент имеет дочерние - пропускать?
И как тогда скопировать caption головного Item?
Он становится не кликабельным, как бы
Обсуждают сегодня