FoxPro Club Главная

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

Замена стандартной функции messagebox() Отличия: - собственные наборы кнопок (помимо стандартных); - собственные картинки (помимо стандартных); - выделение любых частей сообщения цветом и/или шрифтом; - выравнивание текста влево, по центру, вправо; - возможность реализации многоязычного интерфейса; - возможность приведения внешнего msgbox() к единому стилю приложения.


 
Прислал: А.Тарасов   Категория: Интерфейс


Описание см. в файлах msgbox.prg, msgbox.h
Запускать файл examples.prg

 
Сделайте оценку этого решения Плохо Удовлетворительно Так себе Хорошо Отлично Текущая оценка: (3.5) Вложение [151.84]kb
Дополнения пользователей
Msgbox с выделением подстрок цветом/шрифтом
[+][?]
CTAC-Ko
18.08.08 12:21:13

Привет!
Решение мне понравилось. Но для себя все равно сделал свое. Однако хочу отметить следующее - в
решении не хватает звукового сопровождения, ведь стандартная функция MessageBox() с агрументами
16,32,48 выдает соответствующие звуки текущей темы. Как определить какой звук в текущей теме (ХР)
соответствует текущему событию я не знаю. Зато знаю как проиграть звук - для этого можно
использовать описанный здесь в решениях способ через SET BELL TO/CHR(7), но я использую WinAPI
решение:

FUNCTION PlayWav
   LPARAMETERS tcWavFile
   tcWavFile = UPPER(ALLTRIM(m.tcWavFile))
   IF RIGHT(m.tcWavFile,4) # ".WAV"
      tcWavFile = m.tcWavFile + ".WAV"
   ENDIF
   IF !FILE(m.tcWavFile)
      RETURN
   ENDIF

	  *#DEFINE SND_SYNC 0
	  *#DEFINE SND_ASYNC 1
	  *#DEFINE SND_NODEFAULT 2
	  *#DEFINE SND_MEMORY 4
	  *#DEFINE SND_LOOP 8
	  *#DEFINE SND_NOSTOP 16

	  DECLARE INTEGER sndPlaySound IN winmm STRING lpszSound, INTEGER fuSound
	  
	  sndPlaySound(tcWavFile,1+4)
	  
	  CLEAR DLLS 'sndPlaySound'

ENDFUNC

Вот. И еще не хватает, раз уж это кастомный msgbox такого чекбокса, типа "Больше не показывать это
сообщение". Оно, безусловно, напрямую связано с созданием и работой с соотв. бд, но все же.

И еще такой прикол. Когда для вывода сообщения используешь Label, то размер его в пикселях можно
узнать задав ему Autosize, у себя я так и сделал. И тогда не нада мучаться с определением размера
шрифтов и все такое.

XAndy
15.09.08 13:00:03

Привет! Как появится момент, добавлю и звук и чекбокс "больше не показывать", спасибо за идею.
Label.Autosize, кстати, и используется ;)

VictorK
15.09.08 19:49:10

Очень интересное решение. Но у меня возникла проблема при компиляции в арр. MSGBOX не появляется
на экране. В чем может быть проблема так и не понял, а так очень хорошая замена родного messagebox.
[Дополнить]



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