|
Как задать место появления меню?
|
|||
---|---|---|---|
#18+
При клике по гриду появляется контекстное (всплывающее) меню. Но оно появляется в том мечте где кликнули мышкой и просто плохо заметно, я хочу чтоб оно появлялось например за пределами формы, можно ли задать место появления меню и как это сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2007, 15:18 |
|
Как задать место появления меню?
|
|||
---|---|---|---|
#18+
F1 DEFINE POPUP command ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2007, 16:13 |
|
Как задать место появления меню?
|
|||
---|---|---|---|
#18+
Посмотрел ничего не понял потомучто не владею англиским, может можно както в двух словах объяснить. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2007, 09:13 |
|
Как задать место появления меню?
|
|||
---|---|---|---|
#18+
Синтаксис 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 "Конструирование меню" Руководства разработчика. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2007, 09:15 |
|
Как задать место появления меню?
|
|||
---|---|---|---|
#18+
для не владеющих английским русский хелп хотя язык надо учить . программист который даже не может прочитать хелп это ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2007, 10:16 |
|
Как задать место появления меню?
|
|||
---|---|---|---|
#18+
Спасибо всем за помощь. Да язык надо учить это факт :), вот еслиб небыло русского хелпа наверное выучил бы. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2007, 12:10 |
|
Как задать место появления меню?
|
|||
---|---|---|---|
#18+
А колесико мыши этот SCroll не крутит почему? В Гридах крутит? .. там, сям крутит.. А вот в Define Popup не крутит? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 09:25 |
|
Как задать место появления меню?
|
|||
---|---|---|---|
#18+
MaestroEv, А что, в каком-то из интефейсов других оболочек, или в WIN - колёсико крутит указатель в вертикальных меню ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2012, 08:32 |
|
Как задать место появления меню?
|
|||
---|---|---|---|
#18+
Если в меню по правой кнопке напихали столько что надо крутить колесиком, то наверно надо задуматься над уменьшением меню. Например сгруппировать связанные пункты в отдельное подменю. Смысл правой кнопки чтоб там было самое нужное, а не все на свете. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2012, 09:14 |
|
|
start [/forum/topic.php?fid=41&msg=38061504&tid=1583291]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
51ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 320ms |
total: | 467ms |
0 / 0 |