Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
44 / 2 / 0
Регистрация: 12.11.2009
Сообщений: 40

Объясните по PopupMenu + StringGrid...

16.04.2011, 21:47. Показов 2431. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь впервые разобраться с попап, и что-то мозг сломал тут... короче - (у меня Builder 10-й, если что) есть StringGrid2 и есть PopupMenu1. В свойствах стринггрида попапменю1 стоит как попапменю, всё норм. Сейчас, грубо говоря, мне нужно, что бы щелкая по стринггриду правой кнопкой, и в выпадающем меню тыкая одну кнопку (сделанную в PopupMenu1 - в свойствах через Items с названием kick), выводилось ShowMessage с индексом строки под курсором StringGrid1. Лазия по инету видел много разных вариантов, но так и не разобрался.
Короче есть вариант номер раз (повешан на событие стринггрида):
C++
1
2
3
4
5
6
7
8
9
 void __fastcall TForm3::StringGrid2ContextPopup(TObject *Sender, TPoint &MousePos,
          bool &Handled)
{
   int Col,Row;
 
   ((TStringGrid *)Sender)->MouseToCell(MousePos.x,MousePos.y,Col,Row);
 
   ShowMessage(((TStringGrid *)Sender)->Row);
}
Определяет строку на ура, но не тогда, когда надо - тупо при нажатии правой кнопки мыши по ячейке стринггрида. Это уже потом вылазит сама кнопка kick контекстного меню, и, соответственно, ничего не делает при нажатии на неё.
Вариант номер два:
собственно варианта как такового нету, но есть вопрос - как вытащить Row из предыдущей функции в функцию
C++
1
2
3
4
void __fastcall TForm3::kick1Click(TObject *Sender)
{
   ShowMessage(((TStringGrid *)Sender)->Row); //что бы тут выдался индекс строки...
}
Или я вообще не туда копаю? Целый день с прогой возился, и уже ночью дошло дело до попап, думал, всё легко, быстренько сделаю, однако оказалось не хватило под это ни интернета, ни литературы под руками. Помогите кто-нибудь, а?:-)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.04.2011, 21:47
Ответы с готовыми решениями:

StringGrid и PopupMenu
Добрый день. На форме есть Memo1, StringGrid1 и есть PopupMenu1, в котором есть 2 пункта Line1, Line2. Требуется при нажатии...

Stringgrid and popupmenu
Добрый вечер! Имеется stringgrid и привязанный к нему PopupMenu. Задача в следующем: Как сделать так, чтобы определенный пункт...

Пользовательское PopupMenu в StringGrid
Всем доброго времени суток.Столкнулся с такой проблемой:Необходимо вызывать пользовательское всплывающее меню только при определенных...

3
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
17.04.2011, 03:39
Определяет строку на ура, но не тогда, когда надо
- а надо когда ?
0
44 / 2 / 0
Регистрация: 12.11.2009
Сообщений: 40
17.04.2011, 08:16  [ТС]
если ShowMessage в функции StringGrid2ContextPopup, то сообщение показывается при клике правой кнопки мыши на ячейке ДО выпадения контекстного меню. А надо, что бы выпало контекстное меню, и сообщение показалось при клике мыши на кнопку уже этого меню.

p.s. Вчера мозг уже не варил под вечер, сейчас новые идеи с этим появились. Попробую сделать, может, получится.

Добавлено через 38 минут
Всё, я разобрался через POINT и GetCursorPos
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
17.04.2011, 14:45
C++
1
2
3
4
5
6
if (PopUpMemu->PopUp) {
  if (КнопкаИзПопАпМеню->Click) { // а где там кнопка ?
                                  // может - просто пункт этого меню
    ВашеСообщение;  
  }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.04.2011, 14:45
Помогаю со студенческими работами здесь

Связать StringGrid c PopupMenu
Здравствуйте) Нужна маленькая помощь. Дана задача: найти обратную матрицу. размерность матрицы задается с помощью компонента PopupMenu....

Объясните принцип работы программы, считающей сумму элементов в stringgrid
SetLength(a,n); for i:=1 to n do a:=StrToFloat(stringgrid.cells); for i:=0 to n-1 do sum:=sum+a;

Delphi 7 Stringgrid Нужно сделать цикл для заполнения Stringgrid данными из другого Stringgrid
Нужно чтобы из Stringgrid1 данные переносились в Stringgrid2 Но ТОЛЬКО ПО УСЛОВИЮ Таблицы Stringgrid2 На рис всё показано. За работающий...

popupmenu
на форме есть ListBox (Name=LB) у него есть PopupMenu (можно увидеть на картинке) вот LB->ContextPopup void __fastcall...

Popupmenu
Здравствуйте! Я новичок, поэтому мало чего пока понимаю. Вот у меня вопрос: %pop-up меню brown = ; popcol=uicontrol(gcf,'Style',...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru