Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
2 / 2 / 0
Регистрация: 07.08.2015
Сообщений: 428
MS Access

Отключение Popupmenu

28.12.2017, 15:41. Показов 1646. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мир всем и привет !

Если в базе (Ассess+ADOquery) есть запись, то включит PopupMenu в DBGrid-е, а если база пуста, тогда отключит PopupMenu в DBGrid-е
как сделать такое ? я сделал так но этот ход не вариант )

Delphi
1
2
if adoquery1.Eof then \\ если пусто то
dbgrideh1.PopupMenu:=nil;\\вырубить
или так

Delphi
1
2
if adoquery1.RecordCount <> 0 then \\ если есть запись то
dbgrideh1.PopupMenu:=PopupMenu1; \\ включить
вроде бы должно работать )) или это потому, что я в ФормКрейте запихаю все это ?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.12.2017, 15:41
Ответы с готовыми решениями:

PopupMenu в DbGrid
Есть DbGrid и 2 PopupMenu. 1 PopupMenu открывается когда жмакаю правой кнопкой на записи, другой вне записи. Обрабатываю событие...

RxRichEdit и PopupMenu
Для компонента RxRichEdit из RxLib невозможно прилепить PopupMenu. В свойстве компонента RxRichEdit.PopupMenu можно указать нужный...

Не могу разобраться с PopupMenu
Всем доброго времени суток! Столкнулся с проблемой которую в одиночку мне не решить, поэтому прошу помощи у знающих людей) Вообщем суть...

10
 Аватар для drvolodko
224 / 68 / 33
Регистрация: 23.05.2014
Сообщений: 752
28.12.2017, 16:27
Firuz, на OnCreate у формы вообще не желательно что либо запихивать. Есть OnShow.
Цитата Сообщение от Firuz Посмотреть сообщение
я сделал так но этот ход не вариант )
Чем тебя не устраивает вариант:
Delphi
1
2
3
4
if adoquery1.RecordCount > 0 then //или if not adoquery1.Eof или if not adoquery1.IsEmpty
dbgrideh1.PopupMenu:=PopupMenu1
else
dbgrideh1.PopupMenu:=nil;
0
2 / 2 / 0
Регистрация: 07.08.2015
Сообщений: 428
28.12.2017, 17:08  [ТС]
сейчас попробую !

Добавлено через 6 минут
Не работает именно в этом ходе я тоже попробовал )

Добавлено через 10 минут
а ещё в этом коде что та не так ) если таблица изначально пуста то Попуп меню отключен, но если добавит запись то Попуп меню не включается ))

Добавлено через 2 минуты
возможно надо искать пустоту самого DBGrideh

Добавлено через 35 секунд
не понимаю
0
 Аватар для drvolodko
224 / 68 / 33
Регистрация: 23.05.2014
Сообщений: 752
28.12.2017, 17:30
У меня работает...
DBGrideh только отображает данные. Он тут не при делах, от слова совсем.
Этот код надо вставлять в процедуру отбора записей. После Adoquery1.Open. Тогда должно сработать.

Добавлено через 6 минут
Кстати, а в самом PopupMenu менюшки созданы? Если PopupMenu пустое - то и отображать оно ничего не будет.
0
2 / 2 / 0
Регистрация: 07.08.2015
Сообщений: 428
28.12.2017, 17:40  [ТС]
как та так
Миниатюры
Отключение Popupmenu  
0
 Аватар для drvolodko
224 / 68 / 33
Регистрация: 23.05.2014
Сообщений: 752
28.12.2017, 17:45
тогда выкладывай свою процедуру, где у тебя записи выбираются. У тебя явно что-то там не так.
0
2 / 2 / 0
Регистрация: 07.08.2015
Сообщений: 428
28.12.2017, 17:47  [ТС]
а это когда пуста )
Миниатюры
Отключение Popupmenu  
0
 Аватар для drvolodko
224 / 68 / 33
Регистрация: 23.05.2014
Сообщений: 752
28.12.2017, 18:42
Значит не пуста. Надо смотреть сам датасет, а не грид. Повторюсь - грид тут совершенно ни при чем...
0
2 / 2 / 0
Регистрация: 07.08.2015
Сообщений: 428
28.12.2017, 19:59  [ТС]
ну дела в том что я и обращаюсь в Адогуери я же написал код
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
28.12.2017, 20:03
Лучший ответ Сообщение было отмечено Firuz как решение

Решение

Когда датасет всегда открыт как это бывает у новичков, даже событие AfterOpen не поможет и тогда самое простое сделать так:
- у меню свойство AutoPopup установить в False;
- создать для грида процедуру, обрабатывающую событие OnMouseUp;
и в событии проверять на пустоту набор данных. Если не пусто, то запускать меню, иначе ничего не делать:
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.DBGridEh1MouseUp(Sender: TObject; Button: TMouseButton;
             Shift: TShiftState; X, Y: Integer);
var P : TPoint;
begin
  if not ADOQuery1.Eof then begin
    P := DBGridEh1.ClientToScreen(Point(X, Y));
    PopupMenu1.Popup(P.X, P.Y)
  end;  
end;
1
2 / 2 / 0
Регистрация: 07.08.2015
Сообщений: 428
28.12.2017, 20:20  [ТС]
Да увеличить Аллах твоё знание !
тема закрыта
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.12.2017, 20:20
Помогаю со студенческими работами здесь

PopupMenu для DbGrid
Какой надо прописать код для пунктов меню: Копировать Вставить Вырезать Удалить Буду очень благодарен за помощь.

PopupMenu - первый пункт 78 символов
Всем привет. Добавляем PopupMenu, создаём несколько пунктов. Пусть 2. И пусть оба будут содержать одинаковый текст:...

Заполнение PopupMenu из БД и переход по записям
Здравствуйте, помогите пожалуйста, очень уж сложная задача,по крайней мере для меня. На форме есть 3 кнопки(bsPushButton) к каждой из...

Delphi --> PopupMenu. Как поменять Font?
У меня в программе все Caption компонентов на анг. языке. А нужно перевести на французский(чешский)... Можно поставить Font, например,...

Как в обработчик выбора одного из элементов PopupMenu передать имя компонента по клику на котором он был вызван?
На форме есть много разных шейпов, к ним ко всем привязан один и тот же PopupMenu. как в обработчике нажатия на один из пунктов PopupMenu...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Установка 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