Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Заставить выпасть подпункт контекстного меню, Popup а дальше? 
:(
    Опции темы
StayAtHome
Дата 8.7.2005, 02:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Домосед
**


Профиль
Группа: Участник
Сообщений: 456
Регистрация: 26.1.2004
Где: Украина

Репутация: 1
Всего: 16



Возникла необходимость програмно отобразить PopupMenu, а потом раскрыть один из его подпунктов. Cначала делаю PopupMenu1.Popup(...), а что потом?
Пробовал и нажатия клавиш посылать и DispatchCommand... Видимо торможу, т. к. нифига не вышло.

Это сообщение отредактировал(а) StayAtHome - 8.7.2005, 02:36
PM MAIL WWW ICQ YIM   Вверх
_hunter
Дата 8.7.2005, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



а ничего потом smile
потому как Popup() аналогичен ShowModal() формы
или просто показывай меню или сразу показывай подменю...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
SoWa
Дата 8.7.2005, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 2
Всего: 74



А ничего типа:
Код

PopupMenu1.Подкатегория.Popup; 

нету?
Т.е. обращаться не к главной менюшке, а ниже.

Это сообщение отредактировал(а) SoWa - 8.7.2005, 18:21


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
StayAtHome
Дата 9.7.2005, 02:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Домосед
**


Профиль
Группа: Участник
Сообщений: 456
Регистрация: 26.1.2004
Где: Украина

Репутация: 1
Всего: 16



SoWa Вот-вот, похоже что нету. Недоработки у борланда, однако smile
PM MAIL WWW ICQ YIM   Вверх
StayAtHome
Дата 28.11.2005, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Домосед
**


Профиль
Группа: Участник
Сообщений: 456
Регистрация: 26.1.2004
Где: Украина

Репутация: 1
Всего: 16



Вопрос все еще актуален. Неужели никому такой изврат не требовался? smile Может как-то обойти это можна?
PM MAIL WWW ICQ YIM   Вверх
~FoX~
Дата 28.11.2005, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



Ну товарисчи.... субитнмыменю - есть Item-ы от Item-ов...... т.е. Они являются свойствами итемов верхнего уровня...
Код

PopupMenu1.items[1].Items[1].Popup
PopupMenu1.items[1].Items[1].Items[1].Popup
PopupMenu1.items[1].Items[1].Items[1].Items[1].Popup
// и т.д. в зависимости от степени вложенности итемеов




--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
sexton
Дата 28.11.2005, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sexton=Пономарь (eng)
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 5.5.2004
Где: Ульяновск

Репутация: 1
Всего: 9



Имхо никак smile
PM MAIL WWW ICQ   Вверх
StayAtHome
Дата 28.11.2005, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Домосед
**


Профиль
Группа: Участник
Сообщений: 456
Регистрация: 26.1.2004
Где: Украина

Репутация: 1
Всего: 16



~FoX~
Сам проверял? У меня такое не работало
PM MAIL WWW ICQ YIM   Вверх
Girder
Дата 28.11.2005, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 31
Всего: 155





--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
StayAtHome
Дата 30.11.2005, 03:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Домосед
**


Профиль
Группа: Участник
Сообщений: 456
Регистрация: 26.1.2004
Где: Украина

Репутация: 1
Всего: 16



Girder
Че-то не очень получается... smile Если не влом -- большая просьба кинуть в меня рабочим куском кода (не лентяй я, торможу наверное).
PM MAIL WWW ICQ YIM   Вверх
Girder
Дата 30.11.2005, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 31
Всего: 155



Если надо именно отобразить...

Код
procedure TForm1.Button1Click(Sender: TObject);
var p:TPoint;
begin
 GetCursorPos(p);
 Timer1.Enabled:=true;
 PopupMenu1.Popup(p.X,p.Y);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var p:TPoint;
    R:TRect;
    i,k:integer;
    j:DWord;
    M:HMenu;
    V:HWND;
begin
 Timer1.Enabled:=false;
 for i:=0 to GetMenuItemCount(PopupMenu1.Handle)-1 do
  begin
   j:=GetMenuItemID(PopupMenu1.Handle,i);
   if j=$FFFFFFFF then
    begin
     M:=GetSubMenu(PopupMenu1.Handle,i);
     if M<>0 then
      begin
       while (FindWindow('SysShadow',nil)=0) do;
       v:=FindWindow('#32768',nil);
       GetWindowRect(v,R);
       k:=Trunc((R.Bottom-R.Top)/GetMenuItemCount(PopupMenu1.Handle));
       p.Y:=R.Top-(k div 2)+GetMenuItemCount(PopupMenu1.Handle)*k;
       p.X:=R.Left+(R.Right-R.Left) div 2;
       SetCursorPos(p.X,p.Y);
      end;
    end;
  end;
end;


PS: Если у тебя нет тени у меню... то строчки
Код
while (FindWindow('SysShadow',nil)=0) do;
v:=FindWindow('#32768',nil);
надо заменить на
Код
//pID,tID:DWord;
tID:=0;
GetWindowThreadProcessId(Form1.Handle,@tID);
v:=0;
while (v=0) do
 begin
 v:=FindWindow('#32768',nil);
 pID:=0;
 GetWindowThreadProcessId(v,@pID);
 if tID<>pID then v:=0
 end;


PS: Хотя... лудше сдалать перечисление окон и сверять наше... не наше... smile

Это сообщение отредактировал(а) Girder - 30.11.2005, 16:45


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
StayAtHome
Дата 2.12.2005, 04:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Домосед
**


Профиль
Группа: Участник
Сообщений: 456
Регистрация: 26.1.2004
Где: Украина

Репутация: 1
Всего: 16



Спасиб! Ларчик просто открывался -- переместить курсор на родительскй пункт меню -- подменю само откроется. Работает. Напрягаю дальше: а без перемещения курсора нельзя?
smile Обьясняю, зачем понадобился такой изврат. Контекстное меню -- в DBGrid'е. В одном из его пунктов -- выпадающее меню со списком отображаемых колонок. По моему скромному мнению, такое решение было бы весьма удобным -- нажал на пункт меню -- колонка спряталась/отобразилась, а меню снова раскрылось под курсором. И не надо открывать лишнее диалоговое окно.
PM MAIL WWW ICQ YIM   Вверх
Girder
Дата 6.12.2005, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 31
Всего: 155



Хм... для одного процесса может быть отображен только одно PopUp а субменю просто даже если и удастья вывести то оно тут же погаснет(если курсора не будет в нужном месте).

PS: Но можно запустить несколько процессов, а тогда можеш отобразить и несколько Popup за раз(ну а субменю надо просто будут вызывать из другого процесса(его экземпляр)... т.е. делать имитацию... плюс придется организовывать обмен инфы между процессами.


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
StayAtHome
Дата 6.12.2005, 07:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Домосед
**


Профиль
Группа: Участник
Сообщений: 456
Регистрация: 26.1.2004
Где: Украина

Репутация: 1
Всего: 16



Girder
Не, это уже перебор. smile Второй процесс создавать я не буду smile
Спасибо за помощь!
PM MAIL WWW ICQ YIM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0881 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.