powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Процедура для созданного программным путем объекта
9 сообщений из 9, страница 1 из 1
Процедура для созданного программным путем объекта
    #33626863
Eset
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В гриде программно создаю объект editbox,
а теперь мне нужно создать обработку нажатия клавиши мыши,
и здесь проблемы ,как это сделать(создать например процедуру RightClick для Editbox)??? Если не трудно то дайте пример, пожалста!!!
...
Рейтинг: 0 / 0
Процедура для созданного программным путем объекта
    #33626878
m.a.v
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
frmMyForm = CREATEOBJECT('Form')  && Create a Form
frmMyForm.Closable = .F.  && Disable the Control menu box 

frmMyForm.AddObject('shpLine','Line')  && Add a Line control to the form
frmMyForm.AddObject('cmdCmndBtn1','cmdMyCmndBtn1')  && Up Cmnd button
frmMyForm.AddObject('cmdCmndBtn2','cmdMyCmndBtn2')  && Down Cmnd button
frmMyForm.AddObject('cmdCmndBtn3','cmdMyCmndBtn3')  && Quit Cmnd button

frmMyForm.shpLine.Visible = .T.  && Make Line control visible
frmMyForm.shpLine.Top =  20   && Specify Line control row
frmMyForm.shpLine.Left =  125   && Specify Line control column

frmMyForm.cmdCmndBtn1.Visible =.T.  && Up Command button visible
frmMyForm.cmdCmndBtn2.Visible =.T.  && Down" Command button visible
frmMyForm.cmdCmndBtn3.Visible =.T.  && Quit Command button visible

frmMyForm.SHOW  && Display the form
READ EVENTS  && Start event processing

DEFINE CLASS cmdMyCmndBtn1 AS COMMANDBUTTON  && Create Command button
   Caption = 'Slant \<Up'  && Caption on the Command button
   Left =  50   && Command button column
   Top =  100   && Command button row
   Height =  25   && Command button height
   
   PROCEDURE Click
      ThisForm.shpLine.Visible = .F.  && Hide the Line control
      ThisForm.shpLine.LineSlant ='/'  && Slant up
      ThisForm.shpLine.Visible = .T.  && Show the Line control
ENDDEFINE

DEFINE CLASS cmdMyCmndBtn2 AS CommandButton  && Create Command button
   Caption = 'Slant \<Down'  && Caption on the Command button
   Left =  200   && Command button column
   Top =  100   && Command button row
   Height =  25   && Command button height

   PROCEDURE Click
      ThisForm.shpLine.Visible = .F.  && Hide the Line control
      ThisForm.shpLine.LineSlant ='\'  && Slant down
      ThisForm.shpLine.Visible = .T.  && Show the Line control
ENDDEFINE

DEFINE CLASS cmdMyCmndBtn3 AS CommandButton  && Create Command button
   Caption = '\<Quit'  && Caption on the Command button
   Cancel = .T.  && Default Cancel Command button (Esc)
   Left =  125   && Command button column
   Top =  150   && Command button row
   Height =  25   && Command button height

   PROCEDURE Click
      CLEAR EVENTS  && Stop event processing, close Form
ENDDEFINE
...
Рейтинг: 0 / 0
Процедура для созданного программным путем объекта
    #33627032
Eset
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 m.a.v

при использовании данного метода происходит ошибка:
"Methods and events cannot contain nested procedures or class definition"
...
Рейтинг: 0 / 0
Процедура для созданного программным путем объекта
    #33627059
m.a.v
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код можешь показать
...
Рейтинг: 0 / 0
Процедура для созданного программным путем объекта
    #33627431
Eset
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
код создания едита в гриде:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 WITH thisform.grid1
    .RecordSourceType =  0 
    .RecordSource = "testbaza"
    .Column1.AddObject("edits1", "EditBox") 
    .Column1.CurrentControl = "edits1"
    .column1.edits1.visible = .t.
    .column1.sparse = .f.	 
    .Refresh
 ENDWITH  

грид создается и работает нормально,
а если дальше писать код

Код: plaintext
1.
2.
3.
DEFINE CLASS edits1 AS editbox
     PROCEDURE RightClick
       ........................
ENDDEFINE

происходит вышеописанная ошибка,
мне нужно создать процедуру по щелчку левой
кнопки мышки на едите.
...
Рейтинг: 0 / 0
Процедура для созданного программным путем объекта
    #33628031
pijon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Заводиш метод в форме. в нем пишеш че нада при, например InteractiveChange, делать и вешаеш на свой обьект:
BINDEVENT(thisform.PF.Page1.Grid1.column2.Check1,"InteractiveChange",thisform,"ChecksChange")
...
Рейтинг: 0 / 0
Процедура для созданного программным путем объекта
    #33628595
m.a.v
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
 .Column1.AddObject("edits1", "EditBox") 
Вот Здесь и ошибка
Object.AddObject(cName, cClass [, cOLEClass] [, aInit1, aInit2 ...])
cName-Имя обьекта
cClass-Класс объекта
У тебя класс называется edits1
Должно быть так

Код: plaintext
1.
 .Column1.AddObject("NameEdits1", "edits1") 
Все дожно работать
...
Рейтинг: 0 / 0
Процедура для созданного программным путем объекта
    #33631588
Eset
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Вам обоим, работает!!!!!!
...
Рейтинг: 0 / 0
Процедура для созданного программным путем объекта
    #33633905
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Eset!

"Динамически" обработчики событий создать нельзя (напрямую) - т.е. сам код
должен быть прописан заранее - либо в методе формы (с последующей привязкой
через bindevents), либо непосредственно при описании класса того контрола,
который добавляется. Вообще добавлять контрол БАЗОВОГО класса - это в 90%
случаев самое неверное решение из всех возможных. Надо добавлять экземпляры
своих классов - с прописанной там заранее логикой.
Единственный обходной манёвр (но тоже весьма и весьма спорный) - это
динамически построить prg файл с полным описанием класса (т.е. тот самый
DEFINE CLASS), скомпилировать его (COMPILE доступен в рантайме) - и уже
потом использовать так, как будто класс существовал всегда. Но повторюсь -
это весьма нетривиальная вещь (есть много разных неприятных мелочей), и
кроме того это практически никогда и не нужно, т.к. задача обычно решается
другими способами (не требующими динамического "написания кода").

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Процедура для созданного программным путем объекта
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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