Проблема с CommonDialog. - при нажатии "Отмена" программа вылетает - VB

Узнай цену своей работы

Формулировка задачи:

Вообщем я ради тренировки моих скромных способностей решил написать простеёший текстовый редактор, и вот в процессе тестирования у меня возникла проблемка : если в окне редактора чё-нить написать и попробовать его закрыть (предворительно НЕ сохраняя) то он спрашивает "Текст изменён. Сохранить изменения?" Если нажать "Да", то в этом случае откроется окно "Сохранить как..." и если нажать "Отмена", то тогда появляется какая-то ошибка и редактор вылетает. Помогите пожалуйста! Вот весь его код:
Листинг программы
  1. Option Explicit
  2. Dim fName As String
  3. Dim fChanged As Boolean
  4. Private Sub Form_Terminate()
  5. Dim r As Integer
  6. Dim fn As Integer
  7. If fChanged = True Then
  8. r = MsgBox("Текст изменён. Сохранить изменения?", vbInformation + vbYesNo, "MEdit")
  9. If r = vbYes Then
  10. If fName = "" Then
  11. CommonDialog1.FileName = ""
  12. CommonDialog1.DefaultExt = "txt"
  13. CommonDialog1.Filter = "*.txt"
  14. CommonDialog1.ShowSave
  15. MsgBox CommonDialog1.FileName
  16. fName = CommonDialog1.FileName
  17. End If
  18. fn = FreeFile
  19. fName = CommonDialog1.FileName
  20. Open fName For Output As fn
  21. Print #fn, Text1.Text
  22. Close #fn
  23. End If
  24. End If
  25. Unload Form1
  26. End Sub
  27. Private Sub mnuAbout_Click()
  28. Form2.Show vbModal
  29. End Sub
  30. Private Sub mnuExit_Click()
  31. Dim r As Integer
  32. Dim fn As Integer
  33. If fChanged = True Then
  34. r = MsgBox("Текст изменён. Сохранить изменения?", vbInformation + vbYesNo, "MEdit")
  35. If r = vbYes Then
  36. If fName = "" Then
  37. CommonDialog1.FileName = ""
  38. CommonDialog1.DefaultExt = "txt"
  39. CommonDialog1.Filter = "*.txt"
  40. CommonDialog1.ShowSave
  41. MsgBox CommonDialog1.FileName
  42. fName = CommonDialog1.FileName
  43. End If
  44. fn = FreeFile
  45. fName = CommonDialog1.FileName
  46. Open fName For Output As fn
  47. Print #fn, Text1.Text
  48. Close #fn
  49. End If
  50. End If
  51. Unload Form1
  52. End Sub
  53. Private Sub mnuOpen_Click()
  54. If fChanged = True Then
  55. Dim r As Integer
  56. Dim fn As Integer
  57. r = MsgBox("Текст изменён. Сохранить изменения?", vbInformation + vbYesNo, "MEdit")
  58. If r = vbYes Then
  59. If fName = "" Then
  60. CommonDialog1.FileName = ""
  61. CommonDialog1.DefaultExt = "txt"
  62. CommonDialog1.Filter = "*.txt"
  63. CommonDialog1.ShowSave
  64. p; If CommonDialog1.FileName <> "" Then
  65. fName = CommonDialog1.FileName
  66. Else
  67. Exit Sub
  68. End If
  69. fn = FreeFile
  70. Open fName For Output As #fn
  71. Print #fn, Text1.Text
  72. Form1.Caption = "MEdit - " & fName
  73. Close #fn
  74. fChanged = False
  75. End If
  76. End If
  77. End Sub
  78. Private Sub Text1_Change()
  79. fChanged = True
  80. End Sub
И ещё если сможете подскажите все возможности CommonDialog типа: CommonDialog1.ShowOpen CommonDialog1.ShowSave CommonDialog1.FileName и чего все они значат(выполняют) плиззз!

Решение задачи: «Проблема с CommonDialog. - при нажатии "Отмена" программа вылетает»

textual
Листинг программы
  1.      If fName = "" Then
  2.          CommonDialog1.FileName = ""
  3.          CommonDialog1.DefaultExt = "txt"
  4.          CommonDialog1.Filter = "*.txt"
  5.          CommonDialog1.ShowSave
  6.          MsgBox CommonDialog1.FileName
  7.          fName = CommonDialog1.FileName
  8.        Else
  9.          CommonDialog1.FileName = ""
  10.          CommonDialog1.DefaultExt = "txt"
  11.          CommonDialog1.Filter = "*.txt"
  12.          CommonDialog1.ShowSave
  13.          MsgBox CommonDialog1.FileName
  14.          fName = CommonDialog1.FileName
  15.        End If

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы