|
|
|
Вопрос, который не дает мне покоя!
|
|||
|---|---|---|---|
|
#18+
Добрый день всем участникам форума! И все-таки что лучше использовать, создать форму дизайнером, накрутить все что мне надо, сохранить ее как класс и уже подобные формы в программе на лету создавать на базе этой дргугие формы, или создавать каждый раз новые формы включать их в проект и обращаться к ним через оператор DO. В первом случае, проявляется вся сила и мощь объектно-ориентированного программирования. Во втором, как-то более привычное и понятное использование, но тогда проект будет расти как снежный ком. Вот где та золотая середина, на чем остновиться?. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2005, 13:52 |
|
||
|
Вопрос, который не дает мне покоя!
|
|||
|---|---|---|---|
|
#18+
Ya dumayu chto class mojno ispolzovat na konkretnix situatsiyax .Napirimer Report-e kotoriy ti sozdaesh class-form dlya prosmotra svoix report.A druqom situatsii ya rekomendoval sozdat new form. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2005, 15:42 |
|
||
|
Вопрос, который не дает мне покоя!
|
|||
|---|---|---|---|
|
#18+
Я всегда создаю классы. Формы вообще не использую. Хорошо это или плохо - незнаю. Но мне удобно Истина где-то там... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2005, 22:17 |
|
||
|
Вопрос, который не дает мне покоя!
|
|||
|---|---|---|---|
|
#18+
Ну, вообще-то, даже если ты будешь создавать не формы, а классы, то общее количество объектов проекта от этого не измениться. Даже, скорее возрастет. Как ты раньше создавала новый файл, для новой формы, так и будешь создавать. Но теперь уже новый класс для новой формы. Ну, разве что они будут включены в общую библиотеку классов. Т.е. физически, будет меньше файлов на диске, но объектов проекта меньше не станет. Насчет "всей мощи ООП"... Хм... Вот лозунгами нас уже не проймешь Форма, ведь это тоже своеобразный класс. Т.е. он может быть создан на базе другого класса и "вся мощь ООП" никуда не девается. Только форма, это все-таки своеобразный класс. Такой, от которого не может быть создан класс наследник. Вот только в этом смысле он и ограничивает "всю мощь ООП". Ну, и насколько часто в Вашей программе возникала задача сделать класс-наследник от существующей формы? И неужели так трудно было переделать существующую форму в класс (Save As Class, затем создать новую форму на базе этого класса и довесить DataEnvironment. После чего удалить старую форму) Собственно, это и есть единственное принципиальное отличие формы от класса. А в остальном, по большому счету, разницы никакой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2005, 23:48 |
|
||
|
Вопрос, который не дает мне покоя!
|
|||
|---|---|---|---|
|
#18+
nova... Вот где та золотая середина, на чем остновиться?. Для меня это вопрос привычки или религии... Обычно создаю базовый класс для всех будущих форм (с общими свойствами и методами) и затем на его основе делаю остальный формы, но не как классы, а как формы... На мой взгляд так проще, но сколько людей - столько и мнений... Хотя идея все создавать на лету тоже мне нравится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2005, 12:40 |
|
||
|
Вопрос, который не дает мне покоя!
|
|||
|---|---|---|---|
|
#18+
Может тогда кто-нибудь мне ответит из поклонников запуска формы не через DO FORM ..., а через MyForm = NEWOBJECT(), как вернуть из модальной формы значение, возвращаемое в событии UnLoad? Для формы я делаю так: DO FORM MyModalForm WITH ..., ... TO m.llResponse IF m.llResponse ... ... ENDIF Как мне аналогичную задачу решить при создании экземпляра модальной формы из класса ? Если в классе формы я в событии UnLoad пишу RETURN MyRetFlag, то куда это попадает при запуске этой класса формы через NEWOBJECT ? С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 08:18 |
|
||
|
Вопрос, который не дает мне покоя!
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 08:39 |
|
||
|
Вопрос, который не дает мне покоя!
|
|||
|---|---|---|---|
|
#18+
Дмитрий Маликов Код: plaintext 1. 2. А это точно? В документации не нашел ничего об этом способе. С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 08:45 |
|
||
|
Вопрос, который не дает мне покоя!
|
|||
|---|---|---|---|
|
#18+
Aleksey-KА это точно? В документации не нашел ничего об этом способе. С уважением, Алексей проверь эмпирическим путем ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 08:50 |
|
||
|
Вопрос, который не дает мне покоя!
|
|||
|---|---|---|---|
|
#18+
Дмитрий Маликовпроверь эмпирическим путем ;) Так проверил, все ОК, но не понятно почему нет в документации ?! С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 08:53 |
|
||
|
Вопрос, который не дает мне покоя!
|
|||
|---|---|---|---|
|
#18+
Hi Aleksey-K! 1) При создании экземпляра передать туда ссылку на объект (так называемый шаблон Parameter Object) - т.к. объект всегда передаётся по ссылке, то в Init формы мы запоминаем его в свойство формы, и когда надо меняем его. Заодно решается и другая проблема - как вернуть из формы >1 значения (и даже более сложное - как вернуть ПРОИЗВОЛЬНОЕ число значений). 2) Вариант от Mike Korneev - переаём по ссылке переменную при CreateObject() - а в Init самой формы вызываем This.Show(1) - соответственно при скрытии/закрытии формы мы возвращаемся в тот-же Init, там можем поменять переменную (параметр полученный по ссылки - и даже не один!) и соответственно в точке вызова получим это значение. Извини, примера под рукой нету, но найти это точно можно в Google Groups, и скорее всего в форумах тут и на foxclub тоже дублировалась эта идея. Конечно она не очень "правильна" с точки зрения ООП - мы явно меняем порядок следования событий, но вполне работоспособна. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2005, 01:14 |
|
||
|
Вопрос, который не дает мне покоя!
|
|||
|---|---|---|---|
|
#18+
Hi Владимир! > Собственно, это и есть единственное принципиальное отличие формы от > класса. А в остальном, по большому счету, разницы никакой. Не совсем так. Всё-же scx форма это и "не совсем" класс. Например если в базовом классе формы описать Protected объект - то из vcx "наследника" мы сможем "достучаться" к этому объекту (по правилу Protected), а из scx-формы уже нет. Также имеет место некоторое отличие в порядке загрузки (инстанциации) собственно экземпляра объекта в память - об этом можно почитать на fox.wikis.com - например порядок считывания значений переопределённых свойств из vcx и из scx (последние считываются заметно позднее первых) может вызывать нехорошие побочные эффекты. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2005, 01:15 |
|
||
|
Вопрос, который не дает мне покоя!
|
|||
|---|---|---|---|
|
#18+
Попробовал рекомендованный способ и получаю в результате всегда .T. ? CLOSE ALL CLEAR ALL o=createOBJECT([f]) ?[ret=],o.show(1) DEFINE CLASS f as Form WindowType= 1 FUNCTION unload RETURN 55 ENDFUNC ENDDEFINE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2005, 12:45 |
|
||
|
Вопрос, который не дает мне покоя!
|
|||
|---|---|---|---|
|
#18+
Hi Edbo! Так и должно быть - не возвращается ничего из Unload - возвращается из Show (если там конечно есть код - ну а если нету, то по умолчанию .T. и возвращается). Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2005, 03:10 |
|
||
|
Вопрос, который не дает мне покоя!
|
|||
|---|---|---|---|
|
#18+
У меня получается, что show отрабатывает в начале и возвращает то, что было практически в момент инициализации, как все таки что то вычислить и вернуть, приведите пример пожалуйста, а то любопытство разбирает. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2005, 12:15 |
|
||
|
Вопрос, который не дает мне покоя!
|
|||
|---|---|---|---|
|
#18+
Hi Edbo! Читай выше - там же всё написано. И не надо зацикливаться на том что именно Show(1) должно чего-то там вернуть - вот тебе ещё вариант: В QueryUnload пишем NODEFAULT + This.Hide() - также по коду все Release() заменяем на Hide() - соответственно после "закрытия" формы она всё ещё в памяти и ссылка на неё действует - через oo.SomeProperty или oo.Text1.Value можно оттуда получить всё что надо - ну а потом конечно сделать oo.Release() Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2005, 01:19 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33402002&tid=1592892]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
207ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
| others: | 249ms |
| total: | 584ms |

| 0 / 0 |
