|
|
|
IDE Catastrophic failure при удалении с формы своего компонента
|
|||
|---|---|---|---|
|
#18+
Добрый день! Студия 10.2 Tokyo Для эксперимента сделал тестовый компонент на базе TFrame. Создал внутри него DataModule и закинул несколько TAdoquery. Прописал property Connection для дальнейшей связи с базой. Код: pascal 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. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. Компонент кидаю на форму - проблем нет, добавляю связь с Adoconnection - OK, проверяю работу с БД - ОК. Удаляю компонент с формы в Design-Time - студия валится с ошибкой. Ранее я не создавал VCL компоненты и ,возможно по незнанию, что-то делаю не так. Не могли бы вы указать на мои ошибки или направить на примеры как необходимо делать правильно. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 09:12 |
|
||
|
IDE Catastrophic failure при удалении с формы своего компонента
|
|||
|---|---|---|---|
|
#18+
Kast2K, Что это? Код: pascal 1. DataModule2 - это глобальный экземпляр? При создании его вы указываете, что owner у DataModule2 будет ваш компонент. Т.е. при уничтожении вашего фрейма должен будет удалиться и DataModule2. И ещё, будет утечка памяти, если будет 2 фрейма, или фрейм пересоздастся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 09:21 |
|
||
|
IDE Catastrophic failure при удалении с формы своего компонента
|
|||
|---|---|---|---|
|
#18+
goldmi45Kast2K, Что это? Код: pascal 1. DataModule2 - это глобальный экземпляр Да, глобальный. Написал эту стркоу уже для теста, не в этом ли причина ошибки. Как оказалось - нет. Утечка будет из-за этой строки, так ведь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 09:35 |
|
||
|
IDE Catastrophic failure при удалении с формы своего компонента
|
|||
|---|---|---|---|
|
#18+
goldmi45Т.е. при уничтожении вашего фрейма должен будет удалиться и DataModule2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 09:42 |
|
||
|
IDE Catastrophic failure при удалении с формы своего компонента
|
|||
|---|---|---|---|
|
#18+
goldmi45, Извините, пропустил :). Но ошибку все равно не исправляет :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 09:43 |
|
||
|
IDE Catastrophic failure при удалении с формы своего компонента
|
|||
|---|---|---|---|
|
#18+
Kast2Kgoldmi45, Извините, пропустил :). Но ошибку все равно не исправляет :( Перегистрировали компонент, после того, как поправили? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 09:49 |
|
||
|
IDE Catastrophic failure при удалении с формы своего компонента
|
|||
|---|---|---|---|
|
#18+
goldmi45, Да, конечно. uninstall - Clean - Build - install - перезапустил IDe - далее все по прежнему ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 09:53 |
|
||
|
IDE Catastrophic failure при удалении с формы своего компонента
|
|||
|---|---|---|---|
|
#18+
я с момента первого использования фреймов уяснил себе, что они работать будут, только если создавать их в RunTime и с тех пор никогда не имел с ними проблем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 10:05 |
|
||
|
IDE Catastrophic failure при удалении с формы своего компонента
|
|||
|---|---|---|---|
|
#18+
Kast2K, зачем вообще создавать свой контрол на основе TFrame? Возьмите в качестве базового предка TCustomPanel, или TWinControl. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 14:12 |
|
||
|
IDE Catastrophic failure при удалении с формы своего компонента
|
|||
|---|---|---|---|
|
#18+
Kast2K, 1) Зачем внутри фрейма еще создавать DataModule? Для ADOQuery и прочего родителем может служить сам фрейм. 2) Где процедура Notification()? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 14:30 |
|
||
|
IDE Catastrophic failure при удалении с формы своего компонента
|
|||
|---|---|---|---|
|
#18+
roschinspb, Да будут ровно те же проблемы, только в профиль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 14:32 |
|
||
|
IDE Catastrophic failure при удалении с формы своего компонента
|
|||
|---|---|---|---|
|
#18+
Kast2K, Кстати не наблюдаю SetSubcomponent. Для всех созданных вручную компонентов внутри Вашего компонента должно вызываться SetSubcomponent(True)! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 15:37 |
|
||
|
IDE Catastrophic failure при удалении с формы своего компонента
|
|||
|---|---|---|---|
|
#18+
Коллеги, Видимо мне попадалась неправильная литература по созданию собственных компонентов. :( авторЗачем внутри фрейма еще создавать DataModule? Для ADOQuery и прочего родителем может служить сам фрейм. Я и не спорю, но в моем случае необходимо ещё отображать дополнительное окно по событию, которое также лезет в БД и отображает в DBLookupListbox данные. Поэтому предварительно было принято решение добавить DataModule автор Где процедура Notification()? Notification добавил, SetSubComponent(true) и IDesignerHook тоже. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Удалил динамическую форму. Ошибка пока такая же. Коллеги, посоветуйте, пожалуйста, хорошую книгу или мануал по созданию компонентов, т.к. как показывает практика, не стоит ориентироваться на сырцы студии и иных доступных компонентов без нормального понимания базы и подхода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 16:22 |
|
||
|
IDE Catastrophic failure при удалении с формы своего компонента
|
|||
|---|---|---|---|
|
#18+
Kast2K, вообще правильный подход такой, делаете минимум (пустой компонент), компилируете, устанавливаете, проверяете как работает в простейшем приложении (вариант когда кинули компонент на пустую форму и вариант когда сохранили и загрузили форму с компонентом). Если всё Ok, добавляете что-то минимальное, проверяете, если всё Ok тогда опять и т. д. пока не сломается. Когда сломалось буде по-крайней мере ясно на чем сломалось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 17:32 |
|
||
|
IDE Catastrophic failure при удалении с формы своего компонента
|
|||
|---|---|---|---|
|
#18+
roschinspbKast2K, вообще правильный подход такой, делаете минимум (пустой компонент), компилируете, устанавливаете, проверяете как работает в простейшем приложении (вариант когда кинули компонент на пустую форму и вариант когда сохранили и загрузили форму с компонентом). Если всё Ok, добавляете что-то минимальное, проверяете, если всё Ok тогда опять и т. д. пока не сломается. Когда сломалось буде по-крайней мере ясно на чем сломалось. Вы совершенно правы. Двигаясь только маленькими шагами можно получить работающий продукт. А метод "с шашкой на танки" хорош только там где точно уверен как надо делать и что может произойти. Спасибо всем откликнувшимся. Я разобрался в своем примере и получил работающий компонент (добавит\удалить\создать в дизайнере\ в рантайме и т.д.). Но в продакшен это пока не пущу. P.S. "О сколько нам открытий чудных готовят Просвещенья дух, и опыт, сын ошибок трудных..." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 07:32 |
|
||
|
IDE Catastrophic failure при удалении с формы своего компонента
|
|||
|---|---|---|---|
|
#18+
Kast2K, Так поделись с общественностью, в чем была причина? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 13:13 |
|
||
|
IDE Catastrophic failure при удалении с формы своего компонента
|
|||
|---|---|---|---|
|
#18+
DarkMaster, Изначально проблема была в моём желании назначать компоненту ADOConnection выбирая из списка. Далее методом постепенного добавления элементов было выявлено, что для адекватной работы необходимо все компоненты доступа к БД создавать в динамике. Причём, студия не валится в ошибкой если компоненты создаются с owner=nil. При указании Self студия валится. Код результата (не идеален) Код: pascal 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. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 15:59 |
|
||
|
IDE Catastrophic failure при удалении с формы своего компонента
|
|||
|---|---|---|---|
|
#18+
Kast2KDarkMaster, ...все компоненты доступа к БД создавать в динамике... Вообще это как бы намек, что не стоит в одну кучу валить графические контролы и объекты доступа к БД. Хорошей практикой является какраз наоборот разделение "бизнес логики" и "графического представления". Т. е. контрол заранее ни чего не знает о наборе данных, а набор данных ни чего не знает о контролах к которым он подключен. В приведенном примере надо было разобраться с тем, как прикрутить не AdoQuery, a TDataSource и к нему уже любой TDataSet, который может быть вовсе не ADO, и лежать в другом модуле, который еще не создали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2019, 12:22 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39796499&tid=2039600]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
161ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 484ms |

| 0 / 0 |
