powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как задать место появления меню?
9 сообщений из 9, страница 1 из 1
Как задать место появления меню?
    #34453222
Alex-ZZZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При клике по гриду появляется контекстное (всплывающее) меню. Но оно появляется в том мечте где кликнули мышкой и просто плохо заметно, я хочу чтоб оно появлялось например за пределами формы, можно ли задать место появления меню и как это сделать.
...
Рейтинг: 0 / 0
Как задать место появления меню?
    #34453428
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
F1
DEFINE POPUP command
...
Рейтинг: 0 / 0
Как задать место появления меню?
    #34454822
Alex-ZZZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотрел ничего не понял потомучто не владею англиским, может можно както в двух словах объяснить.
...
Рейтинг: 0 / 0
Как задать место появления меню?
    #34454826
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Синтаксис

DEFINE POPUP MenuName
[FROM nRow1, nColumn1]
[TO nRow2, nColumn2]
[IN [WINDOW] WindowName | IN SCREEN]
[FONT cFontName [, nFontSize]]
[STYLE cFontStyle]
[FOOTER cFooterText]
[KEY KeyLabel]
[MARGIN]
[MARK cMarkCharacter]
[MESSAGE cMessageText]
[MOVER]
[MULTISELECT]
[PROMPT FIELD FieldName | PROMPT FILES [LIKE FileSkeleton]
| PROMPT STRUCTURE]
[RELATIVE]
[SCROLL]
[SHADOW]
[TITLE cMenuTitleText]
[COLOR SCHEME nSchemeNumber
| COLOR ColorPairList]

Параметры

MenuName

Задает имя создаваемого меню.

FROM nRow1, nColumn1 TO nRow2, nColumn2

Указывает, где следует разместить меню. Значения nRow1, nColumn1 задают координаты левого верхнего угла меню. Если предложение FROM опущено, Visual FoxPro размещает левый верхний угол меню в первой строке и первом столбце основного окна Visual FoxPro или пользовательского окна.
Чтобы создать меню определенного размера, необходимо также задать параметр TO nRow2, nColumn2, определяющий местоположение правого нижнего угла меню. Если задать FROM nRow1, nColumn1 и опустить при этом TO nRow2, nColumn2, Visual FoxPro автоматически установит размер меню. Его ширина будет равняться ширине самого длинного элемента меню (если элементы созданы с помощью команды DEFINE BAR), а длина будет такой, какая требуется для отображения всех элементов меню. Длина меню ограничена размером содержащего его основного окна Visual FoxPro или пользовательского окна. Если размер меню недостаточен для того, чтобы вместить все его элементы, появляется полоса прокрутки, с помощью которой можно пролистать содержимое меню.

IN [WINDOW] WindowName

Помещает меню в пользовательское окно WindowName. Если это предложение опущено, меню, в случае отсутствия активных пользовательских окон, по умолчанию помещается в основное окно Visual FoxPro. Если активное пользовательское окно существует, меню помещается в это окно.

IN SCREEN

Принудительно помещает меню в основное окно Visual FoxPro.

FONT cFontName [, nFontSize]

Допустимо только в Visual FoxPro.
Задает шрифт, используемый в меню по умолчанию. Вы можете отменить принимаемый по умолчанию шрифт для отдельного элемента меню, воспользовавшись командой DEFINE BAR с предложением FONT.
cFontName задает имя шрифта, а nFontSize ѕ его размер в пунктах. Например, следующая команда создает меню с элементами, изображенными 12-пунктовым шрифтом Courier:

DEFINE MENU popMyPopup FONT 'Courier', 12


Если вы задали предложение FONT, опустив размер шрифта nFontSize, используется размер 10 пунктов. Если в Visual FoxPro заданный шрифт отсутствует, его заменяет шрифт с похожими характеристиками.

STYLE cFontStyle

Допустимо только в Visual FoxPro и в предыдущих версиях FoxPro для Windows.
Задает стиль шрифта, используемый в меню по умолчанию. Вы можете отменить принимаемый по умолчанию стиль для отдельных элементов меню командой DEFINE BAR с предложением STYLE.
Если предложение STYLE опущено, используется стиль Normal (нормальный). Если в Visual FoxPro заданный стиль шрифта отсутствует, его заменяет стиль с похожими характеристиками.
В качестве cFontStyle можно задавать следующие стили шрифтов:

Символ Стиль шрифта
B Bold (Полужирный)
I Italic (Курсив)
N Normal (Нормальный)
O Outline (Контурный)
Q Opaque (Непрозрачный)
S Shadow (Затененный)
- Strikeout (Перечеркнутый)
T Transparent (Прозрачный)
U Underline (Подчеркнутый)
Можно задать комбинацию стилей, указав сразу несколько символов. Например, следующая команда задает полужирный курсив (Bold Italic):

DEFINE MENU popMyPopup STYLE 'BI'


FOOTER cFooterText

Создает нижний колонтитул с текстом cFooterText, располагающимся в центре нижней границы меню.

KEY KeyLabel

Задает для меню клавишу доступа или комбинацию клавиш. Список доступных клавиш и комбинаций клавиш вместе с их названиями приведен в теме ON KEY LABEL. Задание предложения KEY эквивалентно выдаче следующей команды:

ON KEY LABEL KeyLabel ACTIVATE POPUP MenuName


Замечание Если для заданного названия клавиши уже определена макрокоманда клавиатуры, она имеет приоритет и вы не сможете активизировать меню с помощью указанной клавиши или комбинации клавиш.

MARGIN

Оставляет дополнительные интервалы слева и справа от каждого элемента меню. В таких интервалах отображаются символы маркировки (слева от элементов меню) и стрелки, указывающие на наличие ниспадающих подменю (справа от элементов меню). Если опустить MARGIN, символ маркировки будет отображен поверх первого символа имени элемента меню, а стрелка, обозначающая иерархические меню, будут отображаться поверх последнего символа имени.

MARK cMarkCharacter

Задает символ, который ставится слева от элемента меню. В качестве символа маркировки в FoxPro для MS-DOS по умолчанию используется ромб, а в Visual FoxPro, FoxPro для Windows и FoxPro для Macintosh ѕ галочка.
Если в Visual FoxPro и FoxPro для Macintosh данное меню интегрируется в системное меню Visual FoxPro, предложение MARK игнорируется и используется символ маркировки, принимаемый по умолчанию. Кроме того, предложение MARK игнорируется, если шрифт основного окна FoxPro или пользовательского окна, в котором размещается меню, отличен от FoxFont.
Предложение MARK позволяет заменять принятый по умолчанию символ маркировки на символ, определенный аргументом cMarkCharacter. Если cMarkCharacter содержит более одного символа, в качестве символа маркировки используется только первый из них.

Замечание Задавая символ маркировки, вы не помечаете элемент меню; используйте для этого команду SET MARK OF.

Предложение MARK устанавливает символ маркировки для всех элементов меню. Символы маркировки, заданные в команде DEFINE BAR, имеют более высокий приоритет по сравнению с символами маркировки, заданными в предложении MARK команды DEFINE POPUP. Команда SET MARK OF используется как переключатель, отображающий или убирающий символы маркировки, и позволяет задать символ маркировки для отдельного элемента меню или для всех элементов меню.

MESSAGE cMessageText

Выдает сообщение при выделении элемента меню. В FoxPro для MS-DOS сообщение cMessageText по умолчанию размещается в центре последней строки основного окна FoxPro; положение сообщения можно изменить с помощью команды SET MESSAGE.
В Visual FoxPro, FoxPro для Windows и FoxPro для Macintosh сообщение выводится в графической строке состояния. Если действует установка SET STATUS ON, включающая отображение строки состояния в символьном режиме, сообщение располагается в центре последней строки основного окна Visual FoxPro.

MOVER

Ставит слева от выделенного элемента меню в кнопке перемещения двунаправленную стрелку (). Перемещая эту стрелку мышью, вы можете переставить данный элемент на другую позицию в меню. Чтобы определить, в каком месте меню позиционируется тот или иной элемент, можно воспользоваться функцией GETBAR( ).
Нельзя переупорядочивать элементы меню, созданные с помощью предложения PROMPT.

MULTISELECT

Разрешает пользователю выделять сразу несколько элементов меню. Когда пользователь выбирает элемент меню, слева от этого элемента ставится символ маркировки.
В меню, созданном с помощью предложения PROMPT, нельзя выделять сразу по нескольку элементов.
Чтобы определить, какие элементы меню выбраны, можно воспользоваться функцией MRKBAR( ).
Если вы задали в команде DEFINE POPUP ключевое слово MULTISELECT, то с помощью опции MARGIN вы можете зарезервировать место для символа маркировки возле каждого элемента меню.
В следующем примере создается меню popFruits. Используется опция MULTISELECT, чтобы в меню можно было выбирать несколько элементов.
У каждого из четырех элементов меню свой символ маркировки. Когда пользователь выбирает в меню элементы, они помечаются и выводятся на экран специальной программой yourchoice.

CLEAR
IF NOT _DOS
MODIFY WINDOW SCREEN FONT 'foxfont', 12
ENDIF
ACTIVATE SCREEN
DEFINE POPUP popFruits FROM 5,5 ;
MULTISELECT MARGIN && Create multi-choice menu
DEFINE BAR 1 OF popFruits ;
PROMPT '\<Apples' MARK CHR(3) && First item
DEFINE BAR 2 OF popFruits ;
PROMPT '\<Bananas' MARK CHR(4) && Second item
DEFINE BAR 3 OF popFruits ;
PROMPT '\<Grapes' MARK CHR(5) && Third item
DEFINE BAR 4 OF popFruits ;
PROMPT '\<Lemons' MARK CHR(6) && Fourth item

@ 12,5 SAY 'Your choices:'
ON SELECTION POPUP popFruits DO yourchoice && Choice routine
ACTIVATE POPUP popFruits
PROCEDURE yourchoice && Executed when choice is made
@ 13,5 CLEAR
FOR gnCount = 1 TO CNTBAR('popFruits') && Loop for # of items
IF MRKBAR('popFruits', gnCount) = .T. && Option is marked,
? PRMBAR('popFruits', gnCount) AT 5 && display caption
ENDIF
NEXT


PROMPT FIELD FieldName

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

Совет Вы можете воспользоваться оптимизацией по технологии Rushmore, если установите фильтр для поля, указанного в предложении PROMPT FIELD. Подробнее об оптимизации по технологии Rushmore см. тему SET OPTIMIZE и главу 17 "Оптимизация приложений" Руководства разработчика.

В качестве FieldName можно задать несколько имен полей, соединив их знаком сложения (+). FieldName также может быть именем поля в таблице, открытой в другой рабочей области, или пользовательской функцией.
В стандартной (16-разрядной) версии FoxPro для MS-DOS максимальное количество элементов, которое можно включить в меню с помощью предложения PROMPT FIELD, равно 32767. Если в таблице больше записей, FoxPro выдаст сообщение об ошибке. В расширенной (32-разрядной) версии FoxPro для MS-DOS, а также в Visual FoxPro, FoxPro для Windows и FoxPro для Macintosh число элементов, которые можно включить в меню с помощью предложения PROMPT FIELD, не ограничено.

PROMPT FILES [LIKE FileSkeleton]

Создает меню, в котором отображаются имена файлов текущего каталога.
Аргумент LIKE FileSkeleton позволяет ограничить диапазон отображаемых в меню файлов, используя символы подстановки. Например, чтобы создать меню, в котором отображались бы имена таблиц диска и каталога, принимаемых по умолчанию, выдайте следующую команду:

PROMPT FILES LIKE *.DBF


Можно создать меню, содержащее имена файлов с других дисков и из других каталогов; для этого нужно задать спецификацию диска и/или спецификацию каталога. Например, чтобы создать меню, состоящее из файлов программ в каталоге PROGRAMS на диске C, выдайте следующую команду:

PROMPT FILES LIKE C:\PROGRAMS\*.PRG


PROMPT STRUCTURE

Отображает в меню имена полей текущей таблицы в соответствии с их структурой. При активизации меню рабочая область таблицы становится выбранной.

RELATIVE

Задает порядок размещения элементов в меню. Если меню создано без участия предложения RELATIVE, элементы в меню располагаются в соответствии с номерами их строк. Для неопределенных элементов в меню резервируется место. Например, если определить в меню первый и третий элементы, а затем активизировать его, в меню будет вставлена пустая строка, зарезервированная для второго элемента.
Если вы создаете меню с предложением RELATIVE, элементы будут появляться в этом меню в порядке их определения. Для неопределенных элементов в таких меню место не резервируется.
Если меню определено с опцией RELATIVE, это позволит воспользоваться предложениями BEFORE и AFTER в команде DEFINE BAR для позиционирования элементов в меню относительно других элементов. Если меню создано без опции RELATIVE, то включение в команду DEFINE BAR предложения BEFORE или AFTER вызовет ошибку.

Выполните следующие два примера программ и сравните порядок размещения элементов в каждом меню.

*** RELATIVE Example ***
DEFINE POPUP popRelatYes RELATIVE FROM 1,1
DEFINE BAR 4 OF popRelatYes PROMPT '4444'
DEFINE BAR 3 OF popRelatYes PROMPT '3333'
DEFINE BAR 2 OF popRelatYes PROMPT '2222'
DEFINE BAR 1 OF popRelatYes PROMPT '1111'
DEFINE BAR 6 OF popRelatYes PROMPT '6666' BEFORE 4
ACTIVATE POPUP popRelatYes
*** NON-RELATIVE Example ***
DEFINE POPUP popRelatNo FROM 1,1
DEFINE BAR 4 OF popRelatNo PROMPT '4444'
DEFINE BAR 3 OF popRelatNo PROMPT '3333'

DEFINE BAR 2 OF popRelatNo PROMPT '2222'
DEFINE BAR 1 OF popRelatNo PROMPT '1111'
DEFINE BAR 6 OF popRelatNo PROMPT '6666'
ACTIVATE POPUP popRelatNo


SCROLL

Помещает правее создаваемого меню линейку прокрутки. Она отображается только в том случае, если все элементы не смогли поместиться в меню или если само меню не в состоянии поместиться в содержащем его основном окне Visual FoxPro или пользовательском окне.

SHADOW

Допустимо только в FoxPro для MS-DOS.
Делает затенение позади меню. Чтобы отобразить или убрать затенение меню, можно использовать команду SET SHADOWS. Подробнее об этом см. тему SET SHADOWS.

TITLE cMenuTitleText

Отображает заголовок в центре верхней границы меню. cTitleText задает текст заголовка меню.

COLOR SCHEME nSchemeNumber

Задает цвета для всех элементов меню. По умолчанию цвета меню, создаваемого с помощью команды DEFINE POPUP, контролируются цветовой схемой 2.

COLOR ColorPairList

Задает цвета для всех элементов меню.
Подробнее о цветовых схемах и цветовых парах см. тему Использование цветов.

Комментарии

Чтобы задать положение группы элементов меню, используйте несколько команд DEFINE BAR. Для вставки в меню записей, файлов или полей пользуйтесь опциями PROMPT FIELD, PROMPT FILES и PROMPT STRUCTURE команды DEFINE POPUP.
Когда вы отображаете и активизируете меню с помощью команды ACTIVATE POPUP, вы можете выбрать один из его элементов. При этом, в зависимости от выбранного элемента, может быть выполнена некоторая подпрограмма или отображено и активизировано другое меню. Меню, которое отображается при выборе элемента меню, называется ниспадающим подменю. Подробнее о создании подменю см. в описании команды ON BAR.
Если вы для создания меню используете конструктор меню, вы можете вообще обойтись без этих команд. Конструктор меню автоматически генерирует команды, описывающие ваше меню. В конструкторе меню используется системное меню Visual FoxPro, которое вы можете модифицировать, добавляя свои элементы. Подробнее о создании меню см. тему Создание системы меню и главу 12 "Конструирование меню" Руководства разработчика.
...
Рейтинг: 0 / 0
Как задать место появления меню?
    #34455003
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для не владеющих английским русский хелп
хотя язык надо учить . программист который даже не может прочитать хелп это
...
Рейтинг: 0 / 0
Как задать место появления меню?
    #34455577
Alex-ZZZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем за помощь. Да язык надо учить это факт :), вот еслиб небыло русского хелпа наверное выучил бы.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как задать место появления меню?
    #38054254
Фотография MaestroEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А колесико мыши этот SCroll не крутит почему? В Гридах крутит? .. там, сям крутит..
А вот в Define Popup не крутит?
...
Рейтинг: 0 / 0
Как задать место появления меню?
    #38061504
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaestroEv,

А что, в каком-то из интефейсов других оболочек, или в WIN - колёсико крутит указатель в вертикальных меню ?
...
Рейтинг: 0 / 0
Как задать место появления меню?
    #38061509
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если в меню по правой кнопке напихали столько что надо крутить колесиком, то наверно надо задуматься над уменьшением меню. Например сгруппировать связанные пункты в отдельное подменю.
Смысл правой кнопки чтоб там было самое нужное, а не все на свете.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как задать место появления меню?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]