|
|
|
Странности с MDI формами
|
|||
|---|---|---|---|
|
#18+
1. Создал главную форму (fsMDIForm) Код: 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. 2. Создал базовую дочернюю форму (fsMDIChild) Код: 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. 3. От базовой отнаследовал три дочерних формы Код: 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. Все три дочерние формы идентичны, отличаются только названием переменных для самих форм (Form1? Form2? Form3), ну и названиями методов для их создания/отображения. Через какое-то время после запуска приложения, одна из форм перестает выводится на экран. Например, создаю Форму1, потом Форму2, потм Форму3, закрываю Форму1, закрываю Форму2, пытаюсь создать заново Форму1 или Форму2, и одна из них перестает отображаться. В отладчике выяснилось, что каким-то образом, Form1, например, хотя и уничтожена, ссылается на существующую Форму3. Как это получается - ума не приложу. Прошу помощи зала в решении этой загадки:) p.s.: может сумбурно и непонятно описал проблему... на всякий случай прикладываю тестовый проект ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2020, 16:30 |
|
||
|
Странности с MDI формами
|
|||
|---|---|---|---|
|
#18+
04.09.2020 16:30, client6aac пишет: > procedure TfrmCustomMDI.FormClose(Sender: TObject; var Action: TCloseAction); > begin > Action := caFree; > end; этого недостаточно. нужно ещё и указатель выставить в nil. сам собой он не обнулится. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2020, 16:41 |
|
||
|
Странности с MDI формами
|
|||
|---|---|---|---|
|
#18+
client6aac Все три дочерние формы идентичны, отличаются только названием переменных для самих форм Удалите эти переменные и привыкните бить себя по рукам за каждую попытку их использовать. Это плохой стиль вообще, а для MDI-приложений так и вовсе перманентный источник проблем. В том числе той мелочи, на которую Вы напоролись. client6aac В отладчике выяснилось, что каким-то образом, Form1, например, хотя и уничтожена, ссылается на существующую Форму3. Как это получается - ума не приложу. Как-как... Вы заполняете указатель при создании формы, а кто будет его чистить при уничтожении? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2020, 19:14 |
|
||
|
Странности с MDI формами
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий, softwarer да, затупил. хотя все равно не понятно как один указатель становится равным другому:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2020, 08:32 |
|
||
|
Странности с MDI формами
|
|||
|---|---|---|---|
|
#18+
client6aac хотя все равно не понятно как один указатель становится равным другому:) Случайно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2020, 10:00 |
|
||
|
|

start [/forum/topic.php?fid=58&tid=2038017]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
133ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 247ms |
| total: | 454ms |

| 0 / 0 |
