Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / обьект??? / 16 сообщений из 16, страница 1 из 1
29.09.2006, 05:41
    #34020665
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обьект???
как в форме создать обьект, например TEXT?

т.е. форма запустилась и необходимо в ней создать новый обьект по ходу работы программы, это возможно?
...
Рейтинг: 0 / 0
29.09.2006, 08:06
    #34020747
АлександрК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обьект???
Конечно возможно.
В Init формы пишем:

This.AddObject("MyText", "TextBox")
This.MyText.Left = 12
This.MyText.Top = 12
This.MyText.Visible = .T.
...
Рейтинг: 0 / 0
29.09.2006, 08:11
    #34020753
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обьект???
Конечно возможно! В любой контейнер в Run-Time можно добавить объект. Посмотрите справку по команде AddObject.
Например, для добавления в форму объекта класса textbox надо:
Код: plaintext
THISFORM.AddObject("txtMytextbox1", "textbox")
Далее, вы можете обращаться к объекту так:

Код: plaintext
1.
2.
THISFORM.txtMytextbox1.Visible = .T.
THISFORM.txtMytextbox1.Value = 'Текст'
....
С уважением, Алексей
...
Рейтинг: 0 / 0
29.09.2006, 08:14
    #34020756
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обьект???
т.е. нужно использовать не createobject а addobject,
понятно,
только где описаны параметры:
("txtMytextbox1", "textbox") или ("MyText", "TextBox") ??

если нужно будет грид вставить или комбобокс?
...
Рейтинг: 0 / 0
29.09.2006, 08:19
    #34020760
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обьект???
?т.е. нужно использовать не createobject а addobject,
понятно,
только где описаны параметры:
("txtMytextbox1", "textbox") или ("MyText", "TextBox") ??

если нужно будет грид вставить или комбобокс?
Ну почитайте вы HELP наконец!!!
Все там параметры описаны и подробно с примерами!!!
С уважением, Алексей
...
Рейтинг: 0 / 0
29.09.2006, 08:38
    #34020784
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обьект???
ок. спасибо.
...
Рейтинг: 0 / 0
03.10.2006, 04:30
    #34027418
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обьект???
И снова вопрос...

обьект создал, со свойствами работаю, а вот как в click программу затолкать, не знаю, не получается, т.е. создал кнопку и хочу по клику выполнение программы, как ее эту программу туда затолкать? не подскажете?
...
Рейтинг: 0 / 0
03.10.2006, 07:38
    #34027480
Jura.K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обьект???
смотри метод Click() этой кнопки
т.е. добавляешь код в этот метод
Если кнопка тоже создается программно то нужно создать класс кнопки
и в методе Click() этого класса прописать свой код.
Хотя лучше всего в данном методе сделать вызов другого метода, в котором и будет храниться твой код
Можно сделать и так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
DEFINE CLASS frmtest AS form
	Top =  0 
	Left =  0 
	Height =  87 
	Width =  241 
	DoCreate = .T.
	Caption = "Форма"
	Name = "frmTest"

	ADD OBJECT cmbstart AS commandbutton WITH ;
		Top =  12 , ;
		Left =  12 , ;
		Height =  27 , ;
		Width =  84 , ;
		Caption = "Запуск", ;
		Name = "cmbStart"
	PROCEDURE mycmbclick
		MESSAGEBOX('Нажали кнопку')
	ENDPROC
	PROCEDURE cmbstart.Click
		thisform.MyCmbClick()
	ENDPROC
ENDDEFINE
...
Рейтинг: 0 / 0
03.10.2006, 09:08
    #34027560
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обьект???
обязательно создавать класс??

а если обьект создан : This.AddObject("MyText", "TextBox")

то уже доступа к клику нет??
...
Рейтинг: 0 / 0
03.10.2006, 10:01
    #34027646
Jura.K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обьект???
?обязательно создавать класс??
а если обьект создан : This.AddObject("MyText", "TextBox")
то уже доступа к клику нет??

Что то я не пойму какой клик ты хочешь отлавливать ?
В текстбоксе или на кнопке?

Тут вроде бы пишешь что хочешь отловить событие нажатие на кнопку
?обьект создал, со свойствами работаю, а вот как в click программу затолкать, не знаю, не получается, т.е. создал кнопку и хочу по клику выполнение программы, как ее эту программу туда затолкать? не подскажете?
Ну тогда и ставь вызов своей программы в метод Click() самой кнопки
Можно, даже на дизайнере форм это сделать:
открываешь метод click кнопки и пишешь свой код или вызов программы
например DO myProc

А если хочешь отлавливать click() в текстбоксе который добавляется программно то надо писать класс

Код: plaintext
1.
2.
3.
4.
5.
DEFINE CLASS mytextbox AS textbox
	Name = "mytextbox"
	PROCEDURE Click
		DO myProc
	ENDPROC
ENDDEFINE

И добавлять новый Textbox на основе этого класса

Код: plaintext
This.AddObject("MyText", "myTextBox")
...
Рейтинг: 0 / 0
03.10.2006, 10:49
    #34027803
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обьект???
извиняюсь...
кнопку конечно создаю
пример не тот шлепнул...

делаю так:
This.AddObject('com1', "CommandButton")
This.com1.Left=1
This.com1.top=17*n+(n-1)*20
This.com1.height=20
This.com1.caption='Сохранить'
This.com1.visible=.t.
This.com1.specialeffect=0

это происходит в init формы..
вот хотел еще
This.com1.click="....."
но не работает..
...
Рейтинг: 0 / 0
03.10.2006, 10:51
    #34027810
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обьект???
методы только реадонли

Вам нужно начать заниматься классами
Ваша проблема решается оборачиванием классов
...
Рейтинг: 0 / 0
03.10.2006, 12:34
    #34028290
Jura.K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обьект???
Ну тогда только так
объявляем класс

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
DEFINE CLASS myCommandButton AS commandbutton
	Height =  20 
	Width =  84 
	Caption = "Сохранить"
	Name = "myCommandButton"
             SpecialEffect =  0 
	PROCEDURE Click
		MESSAGEBOX("Нажатие кнопки сохранить")
	ENDPROC
ENDDEFINE
потом добавляем кнопку на основе объявленного класса

Код: plaintext
1.
2.
3.
This.AddObject("com1", "myCommandButton")
This.com1.Left= 1 
This.com1.top= 17 *n+(n- 1 )* 20 
This.com1.visible=.t.
класс можно сформировать как визуально на конструкторе, так и в процедуре
...
Рейтинг: 0 / 0
04.10.2006, 04:12
    #34030317
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обьект???
ок. спасибо!
...
Рейтинг: 0 / 0
04.10.2006, 05:37
    #34030335
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обьект???
все бы хорошо, да вот такое сообщение появляется при попытке сохранить определение класса (в клик кнопки)
methods and events cannot contain nested procedures or class definitions

тоесть нельзя определять класс в методе...

как же его тогда определить?

смысл то идеи был таков,
нажимаем кнопку на форме и програмно генерим н.форму нужного размера, с соответствующими полями и кнопками.

н.форму создавал в дизайнере, с целью сохранения как класса. на базе которого и будут создаваться формы...

и так нельзя и эдак..

как же сделать универсальную форму под конкретную ситауцию чтобы в процессе работы она сама генерилась??
...
Рейтинг: 0 / 0
04.10.2006, 07:28
    #34030365
Jura.K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обьект???
?все бы хорошо, да вот такое сообщение появляется при попытке сохранить определение класса (в клик кнопки)
methods and events cannot contain nested procedures or class definitions
тоесть нельзя определять класс в методе...
Конечно нельзя
Класс надо определить отдельно
а потом использовать
This.AddObject("com1", "myCommandButton")
Пришли твою форму я посмотрю
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / обьект??? / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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