FoxPro Club Главная

Конференция Решения Фотоальбом Сайт М.Дроздова Статьи Файловый архив Книга Visual FoxPro 9.0 Русский Help для Visual FoxPro
Пользователей: 9146
Вход
Функция MsgCmn() - рассширенный вариант MessageBox()

Процедура предназначена для организации интерфейса с пользователем. Может выводить окошко с сообщением и небольшим изображением слева. Может быть выведено с разным количеством кнопок. При этом дальнейшее выполнение программы приостанавливается пока пользователь не сделает какого-нибудь выбора. В этом случае возвращается номер нажатой кнопки (счёт слева - направо ). Текст может быть отображён различными цветами.


 
Прислал: grufos   Категория: Интерфейс


Процедура предназначена для организации интерфейса с пользователем.
Может выводить окошко с сообщением и небольшим изображением слева.
Может быть выведено с разным количеством кнопок. При этом дальнейшее выполнение програм-мы приостанавливается пока пользователь не сделает какого-нибудь выбора. В этом случае возвращается номер нажатой кнопки (счёт слева - направо ). Текст может быть отображён различными цветами.В тексте допускаются символы ,, CHR(7).
Функция использует в своей работе массивы _gaMsgWnd[*,2], в котором сохраняется уникальное имя окна [*,1] и ссылка типа "объект" на окно [*,2]. _gaMsgButton[*] хранит стандартные наименования для кнопок в ваших сообщениях. _gaMsgDefault[11] - хранит параметры используемые данной функцией по умолчанию.
Все параметры по умолчанию опредяются фунцией MsgPrmDefaultCmn().
шрифт сообщения - _gaMsgDefault[1]="Arial Cyr"
размер шрифта сообщения - _gaMsgDefault[2]=8
стиль шрифта сообщения - _gaMsgDefault[3]="N"
икона для простого сообщения - _gaMsgDefault[4]=MSG_ICONCLOCK
икона для сообщения с кнопками - _gaMsgDefault[5]=MSG_ICONQUESTION
табуляции в пикселах - _gaMsgDefault[6]="30,60,90,....."
шрифт сообщения кнопок - _gaMsgDefault[7]="Arial Cyr"
размер шрифта сообщения кнопок - _gaMsgDefault[8]=8
стиль шрифта сообщения кнопок - _gaMsgDefault[9]="N"
сделать кнопки одинаковой ширины в N пиксел. Значение ноль указывает на выравнивание ширин кнопок по длине текста. - _gaMsgDefault[10]=90
центрировать кнопки по отношению к ширине окна - _gaMsgDefault[11]=.T.

Параметры......:
_lcString - строка текста. Непосредственно в строке можно указывать
каким цветом необходимо выводить далее текст.
Это делается вставкой в строку следующего текста:
'@B/G ' - начинается символом '@' и заканчивается
пробелом, все между этими символами рассматривается как
указание на цвет - до символа '/' цвет пера,после него
- цвет фона. Если цвет пера и/или цвет фона равно '-1',
то это указание на возврат к цветам по умолчанию.Цвет
пера или фона может быть опущен - '@/W' '@R+/' '@R+'.
Также цвет может быть указан в виде
RGB(Rf,Gf,Bf, Rb,Gb,Bb), где первая тройка
чисел это указание на цвет пера, а следующая тройка чисел
указание на цвет фона.В тексте допускаются символы
табуляции и возврата каретки.
_lcButton - указание для кнопок, номера из набора или текст если
заданы кнопки то функция переходит в режим ожидания и ждет
реакции пользователя. Возвращает номер нажатой кнопки,
счет слева-направо.Окно после работы закрывается. Текст
каждой кнопки отделяется ';'
Примерный вид : 'Ok!;1;Отменить;' Кнопка может быть
заблокирована если ее первым символом поставить "\" Далее
могут идти следующие символы в любом порядке "@" - собака,
"~" - тильда,символ @ делает кнопку активной,символ ~ делает
кнопку срабатывающей по клавише ESC

" " - пробел позволяет если нужно напечатать в наименовании
кнопки цифру.Если Вам нужно воспользоваться этой возможностью,
то учтите,что этот символ должен либо предварять служебные
(@ ~), дибо находится после них.
То есть, возможны следующие варианты:
на первом месте если нужно должен стоять символ "\"
далее могут идти в любом порядке служебные символы
"@" - собака, "~" - тильда после них может стоять " " пробел,
указывающий на необходимость отображения цифры в наименовании
кнопки

_lcIcon - имя иконы с расширением '.bmp,*.ico'
_lcCaption - если задан, то этот текст выводится в заголовке и при этом
сообщение может быть перемещено по экрану
_lnXCoord - координата вывода по оси X
_lnYCoord - координата вывода по оси Y
_lcFontName, _lnFontSize, _lcFontStyle - Имя шрифта, размер, стиль(в обход параметров по умолчанию)

Возвращает.....: Numeric
Возможны три варианта поведения процедуры в зависимости от переданных параметров:
1.Параметры заданы, кроме текста кнопок.
Функция возвращает индекс в массиве _gaMsgWnd[*,2] на описание окна.
Самое последнее окно имеет самый большой индекс.
2.Есть текст для кнопок.
Функция возвращает номер нажатой кнопки.
Счёт кнопок слева - направо.
3.Нет никаких параметров. Функция возвращает число ноль.
(закрытие окна сообщений)

В 12 элементе массива _gaMsgDefault хранится заранее вычисленная характеристика
- расстояние между линиями в пикселах (зависит от используемого шрифта)
Поэтому если Вы будете менять характеристики шрифта в этом массиве, то не забудьте также вычислить
и новое значение этой константы:
* расcчитываем константу: расстояние между линиями в пикселах
_gaMsgDefault[12] = FONTMETRIC(6, _gaMsgDefault[1], _gaMsgDefault[2], _gaMsgDefault[3])

Авторы: Гринько Сергей (grufos@mail.ru, идея и первая реализация)
Ганорский Дмитрий (Функция переведена на вывод текста посредством Label вместо устаревшего SAY,
в связи с не поддержкой последним тем XP. Убрано все связанное с кнопкой "..."
Введена поддержка форм AS-TOP-LEVEL.
Переведен вывод окон с строк на пикселы экрана.)

Разработана и тестирована на версиях 8.0 и 9.0
На более младших версиях не проверялась.

 
Сделайте оценку этого решения Плохо Удовлетворительно Так себе Хорошо Отлично Текущая оценка: (3.636) Вложение [94.74]kb
Дополнения пользователей
Функция MsgCmn() - рассширенный вариант MessageBox()
[+][?]
[Дополнить]



© 2000-2017 Fox Club 
При размещении любых материалов с сайта на других ресурсах- прямая ссылка на www.foxclub.ru обязательна
Яндекс.Метрика