powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Обработчик событий для формы в DLL
4 сообщений из 4, страница 1 из 1
Обработчик событий для формы в DLL
    #32695922
Олег Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создал DLL с формой ввода (объявил OLE public, откомпилировал COM server (dll) ).
В EXE-нике создаю объект Form, но не могу запустить обработчик событий,
ни по READ EVANTS, ни по Show()

oForms=CREATEOBJECT("fileDll.Form1")
IF TYPE("oForms")='O'
oForms.visible=.T.

* READ EVENTS // игнорируется
* oForms.Show(1) // а это, выдает сообщение:
// Операция пользовательского интерфейса невозможна
ENDIF

Помогите, пожайлуста!
...
Рейтинг: 0 / 0
Обработчик событий для формы в DLL
    #32696781
Дмитрий Петров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А визуальные штучки в ДЛЛ не поддерживаются.. Так что увы никак.
...
Рейтинг: 0 / 0
Обработчик событий для формы в DLL
    #32696944
Олег Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СПАСИБО !!!
...
Рейтинг: 0 / 0
Обработчик событий для формы в DLL
    #32698353
Новоселов Олег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делается это так:

1) Создаете на лисе New Project -> New file -> выбираете каталог и имя проекта, пусть будет proj_dll

1.1) На закладке Classes, жмем кнопку New, вводим:
my_CForm - имя Вашего класса
Form (или FormSet) - базовый класс
my_vcx - имя Вашего файла

1.2) Открываем форму на редактирование кнопкой Modify -> теперь у Вас появилась закладка Class в меню -> выбираем пункт меню Class Info -> (ВАЖНО !!!) ставим галочку у OLE Public (иначе ничего не получится) -> кнопка OK

1.3) ВАЖНО !!! Меняем свойство формы WindowType=1 (Modal -модальное).
Если не поменять, то программа после Show не остановится и не будет ждать завершения окна диалога, а быстренько добежит до RETURN (при выходе из процедуры, локальная переменная со ссылкой на объект будет удалена)


1.4) Визуальными средствами, накидываете на форму разные контролы (поля ввода, кнопки и т.д.). Правите их свойства и методы, как на обычной форме.

1.5) Пункты 1.1-1.4 повторяем для всех классов (если форм в DLL несколько)

1.6) Компилируете EXE, что Вы будете вызывать в основной программе.
Размер всех трех файлов (EXE, Single DLL, или Multiple DLL), будет одинаков, зато с EXE у Вас не будет проблем.

После 1-го построения EXE (или DLL), можно через проект изменить режимы работы OLE сервера, из меню Project -> Project Info -> закладка Servers -> в списке Instancing выберите Single Use или Multi Use.
Только не ставьте Not Createble - это запретит создание OLE-сервера !!!

-----------------------------------------------
2) Создаете рабочий проект, из которого будете вызывать EXE (или DLL)

2.1) Создаете процедуру

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
PROCEDURE my_proc

oObj=NEWOBJECT("my_CForm","my_vcx.vcx","C:\FOX\test\proj_dll.EXE")
IF TYPE("oObj")='O'
	oObj.Visible=.T.
	oObj.Show( 1 )   && модальное
ELSE
	MESSAGEBOX("DLL not loaded")	
ENDIF 
RETURN 
2.2) Компилируете и наслаждаетесь.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Обработчик событий для формы в DLL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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