Основы Visual Basic школьникам

Сетевые уроки преподавателя МОУ "Куракинская СОШ" Шакурова З. З. 

Мой сайт

Оглавление

Программы по физике

Задания по физике и математике

Ссылки

Тема27=Способы использования MDI формы в проекте программы. Создание текстового редактора=

Рассмотрим способы использования MDI формы в проекте программы.

Примечание: При использовании в программе текстового поля Rich TextBox учтите, что, скорее всего программа хорошо пойдёт в XP Professional, в Vista - не пойдёт (в других версиях XP, не знаю).

  1. Добавление в проект MDI формы, доработка и примеры её использования.

  2. При помощи мастера приложений Application Wizard создать MDI форму, с последующей доработкой.

  3. Создание текстового редактора. Как я дорабатывал проект (коротко).

Добавление в проект MDI формы, доработка и примеры её использования.

  1. Запустить Visual Basic и создать новый стандартный проект (New – Standart EXE).

  2. Добавить новую MDI форму (Project – Add MDI Form - New - MDI Form – ОТКРЫТЬ).

  3. При этом вы получаете форму без меню и подменю, без панели инструментов, и без готовых программных кодов. Все это вам придется создавать самим.

  4. Чтобы создать и редактировать меню и подменю, нажмите комбинацию клавиш Ctrl E (лат) -  заполняйте поля Caption (надписи пункта меню), Name (имя пункта меню). Для добавления пункта меню используйте кнопку Insert, для удаления используйте кнопку Delete, для создания подменю используйте кнопку «стрелка вправо».

  5. Если хотите сделать панель инструментов, то: Project - Components - установить флажок против Microsoft Common Dialog Control 6.0 - активизировать форму - дважды щелкнуть по элементу Ms CommonDialog левой кнопкой мыши.

  6. Потом я добавлял в проект формы, в каждый проект  устанавливал Image, в который копировал текст и рисунки из Word, и составлял программу, которая закрывала одну форму и открывала другую форму, или один Image в форме менял на другой Image в этой же форме. Для большого текста в форме использовал текстовое поле Rich TextBox или обычное текстовое поле TextBox (чтобы его добавить в проект текстовое поле Rich TextBox нужно: Project - Components - установить флажок против Microsoft Rich TextBox Control 6.0). Для открытия rtf файла в это текстовое поле использовал диалоговое окно открытия файла (об этом ниже).Учтите что Rich TextBox скорее всего в Vista не пойдёт.

  7. Свойства форм: BorderStyle = 0 None; MDIChild = True.

8.  Для смены формы использовал программный код, например, следующий:

Private Sub MnuBIOS_Click()

  ActiveForm.Visible = False

  FormBios.Visible = True

End Sub

 ВВЕРХ

 

При помощи мастера приложений Application Wizard создать MDI форму, с последующей доработкой.

При этом автоматически создаются меню и подменю, и панель инструментов, и программные модули. Можете сохранить, как шаблон и использовать в других проектах, или использовать только программные коды.

Примечание: при сохранении формы как шаблон и при её дальнейшем использовании учтите следующее (об этом я в учебниках не встречал): Форма, которую хотите сохранить как шаблон, не должна иметь распространенное имя (Form1 и т.д.), при добавлении такого шаблона в проект, в котором уже есть форма с таким именем, машина начнет ругаться и не добавит форму. Чтобы избежать этого дайте оригинальное имя форме (например, Template и т.д). Я здесь говорю, ИМЕНИ ФОРМЫ, которая задается в свойстве Name, а не о ИМЕНИ ФАЙЛА, которая задается при сохранении формы. После добавления такой формы, поменяйте ее имя и сохраните.

 

 

 Процесс создания MDI (многооконный интерфейс) и SDI (однооконный интерфейс) аналогичны, только: во втором окне нужно выбрать MDI и будут некоторые изменения в программных кодах.

 

Запуск  Application Wizard.

1. В меню ФАЙЛ выбрать New Project.

2. В открывшемся диалоговом окне New Project дважды щелкнуть на значке VB Application Wizard.

Примечание: обычно  при запуске Visual Basic, окно New Project, появляется сразу. Тогда выполняете пункт 2.

 

Работа Application Wizard.

После запуска VB Application Wizard, на экране друг за другом будут появляться 8 диалоговых окон, в которых вам нужно произвести настройки будущего проекта.

 

1. В первом окне мастера расположен раскрывающийся список "From what profile do you want to load your setting? (Из какого файла настройки загрузить установки)".

Если вы запустили VB Application Wizard впервые, то такого файла, скорее всего у вас нет, или если вы сами не хотите использовать файл настройки, тогда нажмите кнопку Next.

Если хотите использовать файл настройки, например, файл настройки, который вы сохранили при создании раннего проекта при помощи VB Application Wizard, нажмите кнопку с тремя точками - выберите файл настройки - нажмите Next.

2. Во втором окне мастера, щелкнув по кружочку, нужно выбрать стиль интерфейса проекта: многодокументный (MDI) интерфейс, однодокументный (SDI) интерфейс, или стиль проводника.

3. В третьем окне создаем строку меню, ставя, галочки в левое и правое окно редактора меню.

Можете включить больше пунктов меню. Их потом можно отредактировать или удалить. Только при удалении (или при изменении) пункта меню, нужно удалить (или изменить) и процедурный код, касающийся этого пункта меню.

Чтобы изменить панель главного меню в готовом проекте, необходимо вызвать РЕДАКТОР МЕНЮ.

Вызов РЕДАКТОРА МЕНЮ - Открыть   ваш проект, созданный при помощи мастера VB Application Wizard - Активизировать главную Форму (если не переименовали, то это frmMain) - Нажать Ctrl + E.

4. В четвертом окне мастера открывается Мастер Панели Инструментов. Какие инструменты находятся в правом окне этого мастера,  они и будут расположены в вашем проекте, ниже поля МЕНЮ.

Чтобы редактировать Панель Инструментов, готового проекта:

     1. Активизируйте главную форму, содержащую панель инструментов.

     2. По Панели Инструментов правый щелчок - выбрать Properties.

     3. Нажать кнопку Buttons. Можете убирать лишние инструменты. Можете перевести текст подсказки, заменив английские на русские в поле ToolTipText.

5. В пятом окне мастера открывается окно позволяющее присоединить к вашему проекту специальный файл ресурсов, в котором хранятся настройки вашего приложения: таблицы шрифтов, таблицы строковых переменных, используемые значки и т. д. Далее - нажать Next.

6. В шестом окне мастера можно включить в приложение возможность прямого выхода в Internet. Далее - нажать Next.

7. В седьмом окне мастера можно включить в проект стандартные шаблоны.

Splash screen at application start up - диалоговое окно приглашение, появляющееся при запуске программы.

Login dialog to accept an ID and Password - диалоговое окно ввода имени пользователя и пароля.

Option dialog for custom settings - диалоговое окно режимов работы программы.

About Box - форма, содержащая информацию о программе, версии и авторе.

 

При нажатии кнопки Form Templates, можно добавить ещё шаблоны Форм.

Dialog - диалоговое окно с кнопкой ОК и Cancel.

ODBS Log In - диалоговое окно для соединения с удаленными базами данных.

Tip of the Day - окно СОВЕТ.

Web Browser - окно браузера для работы в Internet.

Эти шаблоны можно добавить и после прекращения работы мастера  Application Wizard: открыть меню PROJECT - выбрать Add Form.

8. В восьмом окне мастер предлагает спроектировать формы для работы с базами данных. ( Это вам нужно? Сами подумайте.)

9. В девятом окне мастера можно сохранить все спроектированные файлы настроек будущей программы, нажав на кнопку с тремя точками и написав имя файла.

 Я обычно сохраняю их, потом можно использовать при создании следующего проекта с помощью МАСТЕРА Application Wizard. (При запуске МАСТЕР Application Wizard в первом окне как раз запрашивает такой файл).  

 

  1. Пока не нажали Finish, можете пойти назад (Back), и изменить настройки.

  2. Для окончания работы мастера нажмите Finish.

  3. У вас будет работоспособная программа, с составленными программными кодами.

  4. Теперь в проекте нужно, сначала сохранить все Формы, Модули, и сам проект.

  5. У вас, скорее всего не все кнопки  будут работать. К ним мастер  записал пустые процедуры, но не записал код.

  6. Теперь важный этап: доработать проект самим.

 

ВВЕРХ

 

 

Создание текстового редактора. Как я дорабатывал проект (коротко).

Как я редактировал МЕНЮ.

Программные коды текстового редактора.

Пример текстового редактора (ехе 72кб). Скачать (редактор+help "как создать такой редактор) RAR 166кб) .

Данный текстовый процессор является программой с многодокументным (MDI) интерфейсом, созданной при помощи мастера приложений Application Wizard, с последующей доработкой.

О создании SDI и MDI интерфейса хорошо написано в книге№3 (Глава7). Хотя мастер создает многие программные блоки, но их нужно доработать, а для многих инструментов в панели инструментов, программу нужно написать самим.

 

У вас в главной Форме (frmMain) появится Форма Документ (имя - frmDocument), в которую программа поместила текстовое поле Rich TextBox (имя - rtfText).

 Примечание: При использовании в программе текстового поля Rich TextBox учтите, что, скорее всего программа хорошо пойдёт в XP Professional, в Vista - не пойдёт (в других версиях XP, не знаю).

Настройте свойство текстового поля Rich TextBox (имя - rtfText).

Я произвел, такие настройки.

Свойтво Locked = False

Свойство MultiLine = True

Свойство AutoVerbMenu = True - это включает контекстное меню, которая появляется при нажатии правой кнопки мыши.

Можно использовать и обычное текстовое поле TextBox, но у меня возникли трудности при организации сохранения документа, созданного при помощи данной программы.

 

Как я редактировал МЕНЮ.

Для изменения атрибутов шрифта, можно  вызвать на форму стандартное окно "Атрибуты шрифта", написав например такую программу:

 

Private Sub mnuFont_Click()

  dlgCommonDialog.Flags = cdlCFBoth + cdlCFEffects

  dlgCommonDialog.ShowFont

Далее программа присвоения атрибутам текста, выделенной части, значения, выбранные в диалоговом окне dlgCommonDialog. Смотри программный код Формы  - frmMain.

End Sub

 

Для изменения цвета заливки, можно  вызвать на форму стандартное окно "Цветовая палитра", написав например такую программу:

 

Private Sub mnuColor_Click()

    dlgCommonDialog.ShowColor

Далее программа присвоения цвету заливки текстового поля rtfText, значения выбранного в диалоговом окне dlgCommonDialog. Смотри программный код Формы  - frmMain.

End Sub

 

Здесь dlgCommonDialog имя элемента управления Common Dialog, для создания диалоговых окон. При создании SDI и MDI документа при помощи Аpplication Wizard, этот элемент управления устанавливается автоматически. Если его нет, то можно установить на форму, следующим образом: Project - Components - установить флажок против Microsoft Common Dialog Control 6.0.

 

Далее я редактировал ПАНЕЛЬ ИНСТРУМЕНТОВ,  редактировал ФОРМЫ,  редактировал программные коды форм.

 

Ниже я приведу программные коды текстового редактора.

Главная Форма "Текстовый редактор MDI - имя frmMain

Текстовое поле Rich TextBox - имя rtfText

Элемент управления Common Dialog - имя dlgCommonDialog

Форма Документ - имя frmDocument

Активный документ - имя ActiveForm

Текстовое поле активного документа - имя ActiveForm.rtfText

 

Программный код Главной Формы "Текстовый редактор MDI - имя frmMain.

 Dim a As String

Private Sub MDIForm_Load()

    Me.Left = GetSetting(App.Title, "Settings", "MainLeft", 1000)

    Me.Top = GetSetting(App.Title, "Settings", "MainTop", 1000)

    Me.Width = GetSetting(App.Title, "Settings", "MainWidth", 6500)

    Me.Height = GetSetting(App.Title, "Settings", "MainHeight", 6500)

    LoadNewDoc

End Sub

 

Private Sub LoadNewDoc()

    Static lDocumentCount As Long

    Dim frmD As frmDocument

    lDocumentCount = lDocumentCount + 1

    Set frmD = New frmDocument

    frmD.Caption = "Document " & lDocumentCount

    frmD.Show

End Sub

 

Private Sub MDIForm_Unload(Cancel As Integer)

    If Me.WindowState <> vbMinimized Then

        SaveSetting App.Title, "Settings", "MainLeft", Me.Left

        SaveSetting App.Title, "Settings", "MainTop", Me.Top

        SaveSetting App.Title, "Settings", "MainWidth", Me.Width

        SaveSetting App.Title, "Settings", "MainHeight", Me.Height

    End If

End Sub

 

Программный блок меню ВЫХОД, с запросом на сохранение файла и с сохранением его. Примечание: я не догадался создать такой же блок при деактивации формы, как это сделано в Word (желательно добавить).

 

Private Sub mnuExit_Click()

  Dim sFile As String, a As Byte

'Запрос на сохранение

 a = MsgBox("Сохранить изменения в документе?", 36, "Выход")

 If a = 6 Then

 'Сохранение документа

    If ActiveForm Is Nothing Then Exit Sub

    With dlgCommonDialog

        .DialogTitle = "Save As"

        .CancelError = False

        .Filter = "All Files (*.*)|*.*"

        .ShowSave

        If Len(.FileName) = 0 Then

            Exit Sub

        End If

        sFile = .FileName

    End With

    'Сохранение файла

    ActiveForm.Caption = sFile: ActiveForm.rtfText.SaveFile sFile

'Выход

    Unload Me

    Else

'Выход

    Unload Me

End If

End Sub

 

Программный блок меню Файл - Печать

Private Sub mnuFilePrint_Click()

    On Error Resume Next

    If ActiveForm Is Nothing Then Exit Sub

    With dlgCommonDialog

        .DialogTitle = "Print"

        .CancelError = True

        .Flags = cdlPDReturnDC + cdlPDNoPageNums

        If ActiveForm.rtfText.SelLength = 0 Then

            .Flags = .Flags + cdlPDAllPages

        Else

            .Flags = .Flags + cdlPDSelection

        End If

        .ShowPrinter

        If Err <> MSComDlg.cdlCancel Then

            ActiveForm.rtfText.SelPrint .hDC

        End If

    End With

End Sub

 

Программный блок меню Файл - Сохранить как

Private Sub mnuFileSaveAs_Click()

     Dim sFile As String

    If ActiveForm Is Nothing Then Exit Sub

    With dlgCommonDialog

        .DialogTitle = "Save As"

        .CancelError = False

         .Filter = "All Files (*.*)|*.*"

        .ShowSave

        If Len(.FileName) = 0 Then

            Exit Sub

        End If

        sFile = .FileName

    End With

    'Сохранение файла

    ActiveForm.Caption = sFile: ActiveForm.rtfText.SaveFile sFile

End Sub

 

Программный блок меню Файл - Открыть

Private Sub mnuFileOpen_Click()

  Dim sFile As String

    If ActiveForm Is Nothing Then LoadNewDoc

    With dlgCommonDialog

        .DialogTitle = "Open"

        .CancelError = False

        .Filter = "All Files (*.*)|*.*"

'далее я добавил dlgCommonDialog.Flags = cdlOFNNoReadOnlyReturn - В случае сохранения изменений в файл, открытый ТОЛЬКО ДЛЯ ЧТЕНИЯ, при сохранении выдается предупреждение о необходимости сохранения файла под другим именем (это просто примечание).

        .Flags = cdlOFNNoReadOnlyReturn

        .ShowOpen

        If Len(.FileName) = 0 Then

            Exit Sub

        End If

        sFile = .FileName

    End With

'Сохранение

    ActiveForm.rtfText.LoadFile sFile

    ActiveForm.Caption = sFile

End Sub

 

Программный блок меню Файл - Создать

Private Sub mnuFileNew_Click()

    LoadNewDoc

End Sub

 

'Программный блок выбора атрибутов шрифта, с помощью окна диалога с пользователем.

Private Sub mnuFont_Click()

  dlgCommonDialog.Flags = cdlCFBoth + cdlCFEffects

  dlgCommonDialog.ShowFont

  ActiveForm.rtfText.SelBold = dlgCommonDialog.FontBold

  ActiveForm.rtfText.SelItalic = dlgCommonDialog.FontItalic

  ActiveForm.rtfText.SelUnderline = dlgCommonDialog.FontUnderline

  ActiveForm.rtfText.SelStrikeThru = dlgCommonDialog.FontStrikethru

  ActiveForm.rtfText.SelFontName = dlgCommonDialog.FontName

  ActiveForm.rtfText.SelFontSize = dlgCommonDialog.FontSize

  ActiveForm.rtfText.SelColor = dlgCommonDialog.Color

End Sub

 

'Программный блок выбора цвета заливки фона, с помощью окна диалога с пользователем.

Private Sub mnuBackColor_Click()

  dlgCommonDialog.ShowColor

  ActiveForm.rtfText.BackColor = dlgCommonDialog.Color

End Sub

 

Программный блок Панели Инструментов

Private Sub tbToolBar_ButtonClick(ByVal Button As MSComCtlLib.Button)

    On Error Resume Next

    Select Case Button.Key

        Case "New"

            LoadNewDoc

        Case "Open"

            mnuFileOpen_Click

        Case "Save"

            mnuFileSaveAs_Click

        Case "Print"

            mnuFilePrint_Click

        Case "Cut"

            On Error Resume Next

    Clipboard.SetText ActiveForm.rtfText.SelRTF

    ActiveForm.rtfText.SelText = vbNullString

        Case "Copy"

            On Error Resume Next

    Clipboard.SetText ActiveForm.rtfText.SelRTF

        Case "Paste"

            On Error Resume Next

    ActiveForm.rtfText.SelRTF = Clipboard.GetText

        Case "Bold"

            ActiveForm.rtfText.SelBold = Not ActiveForm.rtfText.SelBold

            Button.Value = IIf(ActiveForm.rtfText.SelBold, tbrPressed, tbrUnpressed)

        Case "Italic"

            ActiveForm.rtfText.SelItalic = Not ActiveForm.rtfText.SelItalic

            Button.Value = IIf(ActiveForm.rtfText.SelItalic, tbrPressed, tbrUnpressed)

        Case "Underline"

            ActiveForm.rtfText.SelUnderline = Not ActiveForm.rtfText.SelUnderline

            Button.Value = IIf(ActiveForm.rtfText.SelUnderline, tbrPressed, tbrUnpressed)

        Case "Align Left"

            ActiveForm.rtfText.SelAlignment = rtfLeft

        Case "Center"

            ActiveForm.rtfText.SelAlignment = rtfCenter

        Case "Align Right"

            ActiveForm.rtfText.SelAlignment = rtfRight

    End Select

End Sub

 

Программный код формы Документ - frmDocument. Здесь я ничего не менял.

 

Программный код Module1

Public fMainForm As frmMain

Sub Main()

    Set fMainForm = New frmMain

    fMainForm.Show

End Sub

Примечание: теперь любой из этих программных блоков можете использовать в своих проектах.

 

Пример текстового редактора (ехе 72кб). Скачать (редактор+help "как создать такой редактор) RAR 166кб) .

 ВВЕРХ

========================

Мой сайт

Программы по физике

Задания по физике и математике

Оглавление

Ссылки

© [Шакуров Зулькафир Зулькарнаевич], 2008. Полное авторское право.

Сайт управляется системой uCoz