|
Вопрос по form и classes
|
|||
---|---|---|---|
#18+
Всем добрый день. Я создаю в биллиотеке классов форму, на основе созданной формы делаю еще две формы в другой биллиотеке. Из стартовой prg я запуская первую форму, на ней жму кнопку, чтобы открыть второю форму, и вот тут получаю тишину. Вернее вторая форма создается и умирает тут же, куда копать не знаю. Вот код: Код: 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. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69.
код который запускает первую форму: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
В итоге первая форма есть, но при нажатии кнопки " 2 Form" вторая форма не показывается. С классами не работал в фоксе никогда. если подкинете информацию что почитать по созданию проекта на классах буду признателен. ------------------------------------------------------------------ Незнание- тоже сила. От него происходит знание. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 09:34 |
|
Вопрос по form и classes
|
|||
---|---|---|---|
#18+
Если загнать этот код в модуль program1.prg Код: 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. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71.
Запускаем так. В IDE все работает Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 11:21 |
|
Вопрос по form и classes
|
|||
---|---|---|---|
#18+
to: Dag я попробовал сделать как посоветовали, но у меня осталась таже проблемма, вторая форма умирает, может что в настройках у меня, не знаю. Файл конфиг не использую (берется по умолчанию который наверно.) VSP 9 sp2 ------------------------------------------------------------ Незнание- тоже сила. От него происходит знание. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 11:39 |
|
Вопрос по form и classes
|
|||
---|---|---|---|
#18+
f2 объяви пабликом или объект цепляй в какую-нить коллекцию Код: plaintext
ничего не найдешь особо, читай здесь опытки рассказать про ООП - затем можем пообщаться ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 12:37 |
|
Вопрос по form и classes
|
|||
---|---|---|---|
#18+
to: 12345вышелзайчикпогулять спасибо за f2 public (хотя не хочется делать так). Жаль что нету статей как сделать проект на классах (> одной формы), на форуме читаю про ООП, но очень много воды. Просьба, если кто нить видел/имеет проект из 3-6 форм на классах с простыми данными, то поделитесь линком (ODBC.zip и Nativ_second.zip я смотрел). Извините за глупые вопросы возможно, но я пытаюсь научиться. ) ------------------------------------------------------------- Незнание- тоже сила. От него происходит знание. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 13:25 |
|
Вопрос по form и classes
|
|||
---|---|---|---|
#18+
авторИзвините за глупые вопросы возможно, но я пытаюсь научиться. ) могу "на пальцах" объяснить, но нужно общение ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 13:55 |
|
Вопрос по form и classes
|
|||
---|---|---|---|
#18+
смотреть в примерах сам принцип взаим-я классов это не способ конкретной реализации ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 13:56 |
|
Вопрос по form и classes
|
|||
---|---|---|---|
#18+
Когда форма создается через команду DO FORM, то кроме переменной памяти, содержащей ссылку на создаваемую форму, ссылка на ту же форму записывается еще в специализированный массив _SCREEN.Forms и коллекцию _VFP.Forms(). Как следствие, когда переменная памяти со ссылкой на форму, созданную через DO FORM удаляется, сама форма остается, поскольку существуют еще 2 ссылки на нее. При создании любого объекта через CreateObject() или NewObject() ссылка на вновь созданный объект записывается только и исключительно в ту переменную, в которую возвращается результат работы данных функций. Ни в какие дополнительные массивы и коллекции эта ссылка не записывается. Как следствие, когда удаляется эта переменная, содержащая единственную ссылку на созданный объект, удаляется и сам объект. Для справки: Если область видимости переменной не указана явно, командами LOCAL, PUBLIC или PRIVATE, то по умолчанию, переменная получает область видимости PRIVATE. А это означает, что данная переменная будет удалена по окончании того метода или процедуры где она была создана. Следовательно, переменная, содержащая ссылку на форму, создаваемую через CreateObject() должна иметь область видимости PUBLIC. Но бесконтрольно плодить PUBLIC-переменные - это плохо. Чтобы "взять под контроль" формы следует создать свой собственный аналог системной коллекции _VFP.Forms() или массива _SCREEN.Forms(). Т.е. создать один глобальный объект или массив, который и будет содержать внутри себя ссылки на все созданные формы. Ну, а форма, соответственно, должна иметь внутри себя ссылку на элемент этого глобального объекта. Получим примерно следующее Код: plaintext 1. 2. 3. 4.
В отношении коллекций форм удобно то, что закрытие формы автоматически удаляет ссылку на форму из коллекции. С другой стороны, наличие такой коллекции - удобный инструмент администрирования всех созданных форм. Разумеется, коллекция форм создается один раз при запуске приложения. Где-то в главном стартовом файле приложения. Правда, это только общая схема. На практике все несколько сложнее... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 14:19 |
|
Вопрос по form и classes
|
|||
---|---|---|---|
#18+
to: 12345вышелзайчикпогулять я попробую сначала на пальцах посмотреть, как наберусь опыта то постараюсь перейти к общению ) спасибо за пример. to: ВладимирМ Спасибо за поучительный ликбез, стало намного понятнее. Теперь знаю как изнутри это живет и взаимодействует. ------------------------------------------------------------ Незнание- тоже сила. От него происходит знание. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 15:47 |
|
|
start [/forum/topic.php?fid=41&fpage=150&tid=1587362]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
98ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
others: | 334ms |
total: | 555ms |
0 / 0 |