:: Visual Foxpro, Foxpro for DOS
Как добавить метод к пользовательскому объекту
AdamAry
Автор

Сообщений: 843
Дата регистрации: 14.12.2015
Всем привет.

Как добавить метод к пользовательскому объекту?
Ratings: 0 negative/0 positive
Re: Как добавить метод к пользовательскому объекту
PaulWist

Сообщений: 14625
Дата регистрации: 01.04.2004
1. Либо, при открытом классе, меню: Class - NewProperty/Method

2. Либо, при открытой форме, меню: Form - NewProperty/Method

3. Либо в prg:

define class MyClass as Class/FoxBaseClass
procedure Myprocedure
endproc


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/1 positive
Re: Как добавить метод к пользовательскому объекту
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
Ой, Паш, боюсь, что сей субъект хочет в рантайме после проверки наличия метода его добавить...


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/1 positive
Re: Как добавить метод к пользовательскому объекту
AdamAry
Автор

Сообщений: 843
Дата регистрации: 14.12.2015
Не боясь!
"Ой, Паш, боюсь,
.... хочет в рантайме после проверки наличия метода его добавить..."
Именно. Но это невозможно, не так ли?



Исправлено 4 раз(а). Последнее : AdamAry, 27.04.17 11:38
Ratings: 0 negative/0 positive
Re: Как добавить метод к пользовательскому объекту
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
AdamAry
"Ой, Паш, боюсь,
.... хочет в рантайме после проверки наличия метода его добавить..."
Именно. Но это невозможно, не так ли?
А главное, что нет смысла.
Это сразу показывает, на явные упущения в проектировании.


------------------
Ratings: 0 negative/2 positive
Re: Как добавить метод к пользовательскому объекту
AdamAry
Автор

Сообщений: 843
Дата регистрации: 14.12.2015
Аспид
хочет в рантайме после проверки наличия метода его добавить..."
Именно. Но это невозможно, не так ли?
А главное, что нет смысла.
Но ведь есть смысл в oMyObj.AddProperty("Property","Privet"),
так почему нет смысла в добавлении метода?



Исправлено 1 раз(а). Последнее : AdamAry, 26.04.17 09:17
Ratings: 0 negative/0 positive
Re: Как добавить метод к пользовательскому объекту
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
В добавленный программно Property можно "положить значение". А как бы выглядело "положить код программы" в добавленный метод?
Ratings: 0 negative/1 positive
Re: Как добавить метод к пользовательскому объекту
Ydin

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
Mожно добавить св-во и ему присвоить код, кот. запускать через Execscript.
Я так делаю
Ratings: 0 negative/1 positive
Re: Как добавить метод к пользовательскому объекту
AdamAry
Автор

Сообщений: 843
Дата регистрации: 14.12.2015
Выглядело бы так:
oMyObj.AddMethod("MyMethod",[Messagebox('aaa')])


Цитата:
Mожно добавить св-во и ему присвоить код, кот. запускать через Execscript.
Я так делаю
А так нельзя?:
oMyObj.AddProperty("Property",[ExecScript("Messagebox('aaa')")] )

Или только так?:
aa.AddProperty("Property1",[Messagebox('aaa')] )
EXECSCRIPT(aa.property1)



Исправлено 6 раз(а). Последнее : AdamAry, 26.04.17 09:53
Ratings: 0 negative/0 positive
Re: Как добавить метод к пользовательскому объекту
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
AdamAry
так почему нет смысла в добавлении метода?

Возможно в каких-то случаях и есть. Что бы там ни говорили.
Но такая вставка видимо была связано с тяжелым написанием кода. Как и в случае с гридом к примеру. И они просто похерили саму такую возможность, чтобы уж не мучиться. К тому же их и было-то всего человек 13 кажется, кто разрабатывал VFP. Что говорит опять-таки - о преднамеренном уничтожении корпорацией мС самогоэтого проекта, как могущего составить ненужную конкуренцию другим, намного более выгодным для них проектам.
Впрочем, там, где все делается не для блага человека, а для блага капиталиста, это и не удивительно.
Прибыль для класса угнетателей превыше всех благ всего остального человечества. И это ненормально, и должно быть уничтожено рано или поздно. И навсегда, уже окончательно, без шанса, какой был дан им в прошлый раз. Только тогда и наступит процветание и мир во всем мире. [sm128]


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/2 positive
Re: Как добавить метод к пользовательскому объекту
AdamAry
Автор

Сообщений: 843
Дата регистрации: 14.12.2015
Crispy
так почему нет смысла в добавлении метода?
Возможно в каких-то случаях и есть. Что бы там ни говорили.
Но такая вставка видимо была связано с тяжелым написанием кода. Как и в случае с гридом к примеру. И они просто похерили саму такую возможность, чтобы уж не мучиться. К тому же их и было-то всего человек 13 кажется, кто разрабатывал VFP. Что говорит опять-таки - о преднамеренном уничтожении корпорацией мС самогоэтого проекта, как могущего составить ненужную конкуренцию другим, намного более выгодным для них проектам.
Впрочем, там, где все делается не для блага человека, а для блага капиталиста, это и не удивительно.
Прибыль для класса угнетателей превыше всех благ всего остального человечества. И это ненормально, и должно быть уничтожено рано или поздно. И навсегда, уже окончательно, без шанса, какой был дан им в прошлый раз. Только тогда и наступит процветание и мир во всем мире.

Если у объекта существуют методы, значит должна быть возможность их добавлять, но почему то некоторые считают, что это блажь.



Исправлено 1 раз(а). Последнее : AdamAry, 26.04.17 09:48
Ratings: 0 negative/0 positive
Re: Как добавить метод к пользовательскому объекту
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
AdamAry
Если у объекта существуют методы, значит должна быть возможность их добавлять, но почему то некоторые считают, что это блажь.
Очередной перл для скрижалей...
Методы, в отличие от свойств, есть исполняемый код и как раз блажью является желание некоторых неокрепших умов менять программу прямо во время выполнения этой программы. И наличие такого желания говорит о плохом знании инструмента, в котором таки есть нормальные способы обойтись без этой блажи.


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/2 positive
Re: Как добавить метод к пользовательскому объекту
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
оффтоп
Когда слезал с FPD на VFP то первое, что надо было "позарез" (и для вхождения) - это форма-календарик. Вот создал на форме поле кнопок 6 рядов по 7 шт. Далее думаю, надо разместить простейший код в Click каждой кнопки. Тоже поискал "добавить метод". Да, было бы удобно небольшой код программно добавить в ИМЕЮЩИЙСЯ метод/событие. Не нашел (вернее там что-то было похожее, AddMethod, CloneObject) но все это в рантайме не годится. Тогда поступил просто - скопировал одну кнопку с готовым кодом в Click 42 раза (класс создавать ради календарика не стал, в проекте их и так много, а без иерархии в окне проекта как-то плохо...). Можно было бы BINDEVENT использовать, но тогда не... не наткнулся на него. Кстати, этот BINDEVENT не на все (не заполненные кодом, пусть хоть комментарием) события срабатывает...
Ratings: 0 negative/1 positive
Re: Как добавить метод к пользовательскому объекту
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
На уровне кодов для разработчиков думаю практически все всегда решаемо. [sm128]
Могли бы в том числе и такую возможность добавить. Единственное, что скорее всего тут помешало - дополнительное усложнение их собственной работы для осуществления такого решения.
Тот самый конфликт, кому в итоге делать лучше: будущим пользователям фокспро или же самим разработчикам. Вопрос вполне резонно решился в пользу вторых. Элементарно меньше трудозатрат. Т.е. обычное административное решение.
Чисто же принципиально - ну не было бы абсолютно ничего такого уж страшного, если бы при загрузке класса, можно было бы довешивать ему свой метод.
Все можно правильно прописать и для всего сделать свой контроль и разруливание ситуаций.
Ведь абсолютно никаких законов вселенной добавление своего метода в класс "на лету" - не нарушает! ;)
А уж нужно-ненужно - это все опять же спорно и недоказуемо.
Зачем скажем в тех же смартфонах куча ненужных кому-то конкретному вещей? Значит кому-то другому они все-таки бывают нужны.
Все субъективно. Споры не имеют смысла.
Просто по факту - не сделали чего-то в фокспро. Да, не сделали. Так больше же - уже и не сделают!
Т.е. тут и тем более - любые споры или сожаления по любому такому поводу - и вовсе как бы бессмысленны.
Ну нет - и нет. Что ж теперь. [sm128]


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/1 positive
Re: Как добавить метод к пользовательскому объекту
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
Crispy
Ну нет - и нет. Что ж теперь. [sm128]

[attachment 27487 udif.jpg]
Ratings: 0 negative/0 positive
Re: Как добавить метод к пользовательскому объекту
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата регистрации: 05.05.2005
ssa
AdamAry
Если у объекта существуют методы, значит должна быть возможность их добавлять, но почему то некоторые считают, что это блажь.
Очередной перл для скрижалей...

Перл всех перлов и нулевые знания принципов ООП.


------------------
Совершенство - это не тогда, когда нельзя
ничего прибавить, а тогда, когда нечего убавить.
Ratings: 0 negative/1 positive
Re: Как добавить метод к пользовательскому объекту
pasha_usue

Сообщений: 3650
Откуда: Е-бург
Дата регистрации: 06.10.2006
Crispy
Чисто же принципиально - ну не было бы абсолютно ничего такого уж страшного, если бы при загрузке класса, можно было бы довешивать ему свой метод.
Вот прямо даже интересно стало. А где сделали?
Ratings: 0 negative/1 positive
Re: Как добавить метод к пользовательскому объекту
Sawradym

Сообщений: 2244
Откуда: Винница
Дата регистрации: 15.05.2007
Crispy
На уровне кодов для разработчиков думаю практически все всегда решаемо. [sm128] Могли бы в том числе и такую возможность добавить. Единственное, что скорее всего тут помешало - дополнительное усложнение их собственной работы для осуществления такого решения.
Тот самый конфликт, кому в итоге делать лучше: будущим пользователям фокспро или же самим разработчикам. Вопрос вполне резонно решился в пользу вторых. Элементарно меньше трудозатрат. Т.е. обычное административное решение.
Чисто же принципиально - ну не было бы абсолютно ничего такого уж страшного, если бы при загрузке класса, можно было бы довешивать ему свой метод.
Все можно правильно прописать и для всего сделать свой контроль и разруливание ситуаций.

Для внесения некого подобия динамики у методов придуманы параметры. Т.е. В зависимости от параметров метод выдает различный результат.
Если же так хочется добавить на лету метод, то сразу хочется спросить, а кто будет генерировать код для этого метода? Какой нибудь Method_Super_Generator(ParamList)? Так может стоит на этом остановиться? Никто же не мешает добавить в конце метода ExecScript(то_что_я_нагенерировал)
Ratings: 0 negative/1 positive
Re: Как добавить метод к пользовательскому объекту
AdamAry
Автор

Сообщений: 843
Дата регистрации: 14.12.2015
У..ище и жертва.



Исправлено 3 раз(а). Последнее : AdamAry, 27.04.17 07:14
Ratings: 0 negative/0 positive
Re: Как добавить метод к пользовательскому объекту
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
pasha_usue
А где сделали?

Главное не "где"! Главное, что "могли бы". ;)
Вот нафига например смартфоны нужны? В принципе. Ведь есть телефон. Есть компьютер. Так нет же, сделали. И теперь всем оно вдруг надо.
Или нафига сделали винду? В досе ведь и так все отлично работало. Так нет же...[и т.д.]
Так что, уверяю тебя!
Если бы вот это дело с методом было бы вдруг сделано, ты бы, думаю точно так же как и почти все тут, возможно нашел бы и куда, и зачем это можно применить. Причем, ни у кого бы(!) даже и самого вопроса не возникло бы: "А зачем, все это собственно сделано-то?"
Таковы уж свойства всего, фактически свершившегося. [sm128]

А так, заметил - почему-то всегда при этом вопросе обязательно начинают (а это ведь далеко не первая тема!) яростно доказывать, что оно дескать "и в принципе вредно". Да нисколько не вредно.
Пару раз сталкивался и убеждался в итоге, что наоборот, действительно, в чем-то не помешало бы. Код намного упростило бы. Ну не каждый день такое надо конечно. Но, если бы вдруг оно было - ну уж хуже-то от этого точно никому не стало бы.
Ну понятно, раз уж создатели чего-то не сделали - всегда в таких случаях делаются какие-то обходные маневры. Причем элементарно - от нужды. Не более.
Уверять же при этом, что подобное отсутствие самой возможности - нечто невероятно полезное - на мой взгляд все же неверно.
Не полезное оно - для программиста. Полезное только для самих создателей - меньше поработали при создании. Ну что теперь поделаешь. :al:
Доцента на них нет - доцент бы заставил.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/1 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 22 Alsim  (Гостей: 21)

© 2000-2024 Fox Club 
Яндекс.Метрика