Главная страница
Навигация по странице:

  • Разработка приложения

  • Filter

  • ттттт. Практическая работа Работа с интерфейсом среды программирования Delphi. Создание простого проекта. Запуск программ на выполнение


    Скачать 2.63 Mb.
    НазваниеПрактическая работа Работа с интерфейсом среды программирования Delphi. Создание простого проекта. Запуск программ на выполнение
    Анкорттттт
    Дата30.01.2022
    Размер2.63 Mb.
    Формат файлаdoc
    Имя файла0018f8f0-cdfb5c43.doc
    ТипПрактическая работа
    #346059
    страница15 из 16
    1   ...   8   9   10   11   12   13   14   15   16

    Практическая работа №19.Создание дочерних окон


    Задание

    Необходимо разработать Windows-приложение ¾ многооконный просмотрщик текстовых файлов.

    Методические указания к выполнению лабораторной работы

    Необходимо

    1)     в соответствии с указаниями разместить на форме необходимые компоненты и установить их свойства;

    2)     в соответствии с предложенными подсказками создать соответствующие обработчики событий и методы;

    3)     проверить правильность работы приложения.

    Для самопроверки рекомендуется разработать полноценное приложение.

     

    Для контроля преподавателем необходимо разработать полноценное приложение и  продемонстрировать преподавателю работу приложения.

    Разработка приложения

    Замечание. Указания и подсказки относятся к работе в среде Borland Delphi 5. При работе в других версиях возможны ошибки и неточности.

                 Измените свойства для главной формы приложения FileView

    Caption                  "Просмотрщик файлов"

    Ctl3D                      False

    FormStyle                fsMDIForm            {главная форма приложения MDI}

    Name                      "MDIFileViewer"

    Position         poDefault { приложение получает свои начальные размеры  и    расположение от Windows }

    2. Создайте меню главной формы

    Панель меню приложения должно иметь два элемента: Файл и Подсказка.

    Для создания этого меню дважды щелкните на компоненте MainMenu (ГлавноеМеню), чтобы вызвать Menu Designer(Проектировщик Меню).

    В Menu Designer добавьте элементы меню

                   Меню   Заголовок   Групповой индекс Быстрый доступ

                     &Fi1е                      1

     File         &0pen                       0                       F3

     File         - (разделитель)         0

     File         E&xit                        0                    Alt+F4

                    &Help                      10

     Help        &About                    0

    Создайте процедуру события для элемента меню Файл | Выйти. Эта процедура должна закрывать окно приложения.

    procedure TMDIFileViewer.ExitlClick(Sender: TObject);

    begin

    Close;

    end;

    Сохраните свою работу, назвав модуль VIEWMAIN.PASи проект FILEVIEW.DPR.

    3.   Для выбора файла для просмотра следует использовать компонент OpenDialog.

    Разместите компонент OpenDialogна форме и измените его свойства.

    Filter                         Все файлы | *.* |

                                     Файлы картинок | *.bmр; *..iсо; *.wmf |

                                     Файлы текстов |*.txt

    Замечание. Вы можете изменить свойство Filter, набрав на клавиатуре текст или используя специальный редактор свойств Filter.

    Name                       "FileOpenDialog"

    Options.ofFileMustExist        True

    4. Создайте обработчик события для элемента меню Файл | Открыть

    procedure TMDIFileViewer.OpenlClick(Sender: TObject);

    begin

    If  FileOpenDialog.Execute

       Then

                 Begin

                  End;

    end;

    Замечание. Обработчик события ничего не делает с данными, возвращаемыми из FileOpenDialog, однако инфраструктура такой процедуры здесь есть.

    Код, который действительно открывает файлы, будет добавлен после создания просмотрщика текстовых файлов.

    5.   Снова сохраните свою работу и запустите программу на вы­полнение.

    Вы должны иметь возможность выбрать Файл | Открыть и увидеть появление окна диалога, а выбор Файл | Выйти должен осуществлять выход из программы.

    6.   Необходимо создать форму для отображения текстовых файлов

    Галерея

    Прежде, чем продолжить создание новой формы, давайте убедимся, что опции Delphi установлены таким образом, что Окно диалога Browse Gallery дает возможность выбирать форму из группы стандарт­ных типов форм, которые были определены предварительно. Это может дать огромную экономию времени при создании ряда форм, имеющих в значительной степени одина­ковую компоновку. В этом случае вы просто один раз создаете базовую форму и прибав­ляете ее к галерее. Затем, когда бы вам ни понадобилась аналогичная форма, вы просто выбираете ее из галереи и делаете все нужные изменения. Вы можете также установить Delphi таким образом, чтобы она отображала окно диалога Browse Gallery, когда вы создаете новый проект.

    Выберите Options | Environment из главного меню Delphi и на странице Preferences убедитесь, что независимая кнопка "Use on New Form" ("Использование новой формы") - внизу справа окна диалога - отмечена крестиком.

    Установка этих опций приведет к тому, что Delphi всегда отобразит окно диалога Browse Gallery, когда бы вы ни выбрали из главного меню File | New Form. Сделав эти изменения, нажмите кнопку ОК, чтобы сохранить опции.

    Выберите из главного меню File | New Form.

    Delphi отобразит окно диалога Browse Gallery (Галерея просмотра).

    Наша новая форма является очень простой, поэтому мы просто воспользуемся шаб­лоном пустой формы (Blank form). Дважды щелкните мышью на шаблоне Blank form в окне диалога Browse Gallery, и Delphi создаст новую пустую форму, с которой вы смо­жете работать.

    Выберите из меню File | Save Project (Файл | Сохранить Проект) и назовите новый модуль TEXTVIEW.PAS.

    7. Измените свойства формы 

    Caption                       "Просмотрщик текстов"

     Ctl3D                         False

     FormStyle                     fsMDIChild

      Name                        "TextViewer"

    8. Добавьте компонент, отображающий текст файла — Memo и измените его свойства

    Align                   alCIient  { Memo занимает всю клиентскую область формы }

                     {т.е. автоматически изменяет свои размеры при изменении размеров окна формы}

    BorderStyle                  bsNone

    Readonly                       True    { пользователь не должен изменять текст }

    ScrolfBars                      ssBoth

    Wordwrap                      False   { Memo автоматически не должен сворачивать текст для размещения его внутри окна. Каждая строка файла должна занимать одну строку в компоненте Memo}

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

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

    В определение класса TTextViewer добавьте переменную Filename в приватный раздел и объявление процедуры Open в общедоступ­ный раздел.

     Отредактированный класс TTextViewer должен выглядеть следующим образом

        TTextViewer = class(TForm)

                            Memol: TMemo ;

    private

    { Приватные обявления }

    Filename : String;

    public

    { Общедоступные объявления }

    Procedure Open (Const AFilename : String) ;

    end;

    10. Добавьте процедуру Open в часть implementation (реализация) исходного файла вашего модуля.

    implementation {$R *.DFM)

    Procedure TTextViewer.Open (Const AFilename : Strings);

    Begin

    Filename := AFilename;   {сохраняет имя файла, который должен быть загружен}

    Memol.Lines.LoadFromFile (Filename) ;  { загружает файл в компонент Memo}

    Caption := Filename ;         { заголовок формы отражает имя файла}

    End;

    end.

    11. Необходимо написать код, создающий и отображающий форму текстового просмотрщика.

    Щелкните мышью на закладке Viewmain в окне Unit, чтобы отобразить исходный текст главной формы.

    Найдите процедуру TMDIFileViewer.Open1Click и отредактируйте ее

    procedure TMDIFileViewer.OpenlClick(Sender: TObject);

    Var TextViewer : TTextViewer:

    begin

        If FileOpenDialog.Execute

            Then

                    Begin

    TextViewer := TTextViewer.Create (Self); {создает новую форму TextViewer}

    TextViewer.Open (FileOpenDialog.Filename) ;    { открыть файл }

    TextViewer.Visible:=True;                        {делает новую форму видимой}

    TextViewer.SetFocus;   {устанавливаем фокус клавиатуры к этому окну }

                    End;

    end;

    12. Найдите начало раздела implementationв модуле главной формы и добавьте в него оператор uses

    implementation

    uses TextView;

    {$R *.DFM}

    13. После выполнения этих изменений сохраните работу и проверьте программу.

    Первое, что вы заметите, это автоматически отобра­жаемую форму TextViewer с присутствующим в окне текстом "Memol".

    У вас должна иметься возможность выбрать из меню Файл | Открыть и выбрать для просмотра текстовый файл.

    Если в окне диалога Open нет ни одного файла с расширени­ем ТХТ, просмотрите каталог Wmdows-директории или просто выберите файл .PAS. В любом случае FileView отобразит в окне выбранный файл.

    Вы можете вывести па экран столько файлов, сколько захотите, каждый в отдельном окне. Вы можете пере­мещать, изменять размеры, минимизировать, максимизировать или закрывать отдельные окна, независимо от остальных.

    Для закрытия приложения нажмите Alt+F4.

    14. Закрытие дочерних окон

    Вы вероятно заметили, что когда делаете двойной щелчок в окне с управляющим меню дочернего окна, оно не закрывается, а минимизируется. Это поведение является определенным по умолчанию для дочерних окон MDI.

    Необходимо сделать, чтобы закры­тие действительно означало закрытие.

    Следует  добавить к форме обработчик события OnClose.

    Процедура обработки события OnClose дочернего окна

    procedure TTextViewer.FormClose(Sender: Tobject; var Action: TCloseAction);

         begin

                Action := caFree;

         end;

    15. Для того, чтобы дочернее окно не создавалось автоматически можно удалить строку кода

    Application.CreateForm(TTextViewer, TextViewer);

    из исходного файла проекта. (Выберите View |Project Source из основного меню Delphi)

    Сохраните и выполните свою программу, обратив внимание на то, что первоначаль­ное текстовое окно больше не появляется при запуске программы.

    16. МЕНЮ ДОЧЕРНЕГО ОКНА

    В FileView следует добавить три новых элемента (Закрыть, Печатать и Установка принтера) к меню Файл всегда, когда открывается текстовое окно.

    Необходимо также добавить меню Window, которое позволит располагать дочерние окна каскадом или стопкой внут­ри клиентной области приложения.

    Разместите на форме TextViewer компонент MainMenu.

    Поскольку компонент Memo занимает все пространство клиентной области формы, следует поместить ком­понент MainMenuвнутри границ компонента Memo.

    Вызовите Menu Designer и добавьте элементы меню

              Меню   Заголовок   Групповой индекс Быстрый доступ

            &Fi1е                    1

             File         &0pen                    0                      F3

             File         &Close                   0                    Alt+F3

             File         - (разделитель)      0

             File         &Print                     0

             File         p&rint Setup...         0

              File         - (разделитель)      0

           File         E&xit                      0                    A11+F4

                           &Window              5

                           Window &Tile       0

                         Window &Cascade   0

                        Window Close &all   0

    В данном случае меню Файл дочернего окна замещает меню Файл приложения, поскольку оба значения Grouplndex равны 1.

    Меню Окно дочернего окна, имеющее значение Grouplndex=5, помещается между меню Файл (Grouplndex=1) и меню Подсказка(Grouplndex=10).

    Обратите внимание, что меню дочернего окна не имеет меню Подсказка, так как окно Подсказка не должно меняться, когда отображается до­чернее окно.

    Выполнив эти изменения, запустите програм­му на выполнение.

    Затем откройте файл и обратите внимание, что меню изменилось. К меню Файл добавились три новых элемента и разделитель, а меню Окно в рамке меню располагается теперь между меню Файл и Подсказка.

    17. Вызов родительской формы

    Поскольку заменили меню Файл, ни одна из процедур событий меню главной формы не будет работать, когда открыто дочернее окно, так как события адресуются к дочернему окну, а не к главному окну приложения. Поэтому, если вы запускаете про­грамму и нажимаете F3, чтобы открыть файл, все работает так, как и ожидается. Но после этого ни один из элементов меню Файл не будет работать. Мы, очевидно, не хотим дублировать код каждой из опций меню приложения в каждой из дочерних форм, поэто­му необходим способ вызова обработчика событий из главной формы.

    Необходимо использовать модуль VIEWMAIN. Добавьте строку:

    uses ViewMain;

    в начало раздела implementation в TEXTVIEW.PAS

    18. Создайте обработчики событий

    procedure TTextViewer.OpenlClick(Sender:TObject);   {для меню - Файл |Открыть}

    begin

          MDIFileViewer.OpenlClick (Sender) ;

    end;

    procedure TTextViewer.CloselClick(Sender: TObject);   { для меню Файл | Закрыть }

    begin

               Close;

    end;

    procedure TTextViewer.ExitlClick(Sender: TObject);       { для меню Файл | Выйти }

    begin

            MDIFileViewer. ExitlClick (Sender) ;

    end; 

    procedure TTextViewer.TilelClick(Sender: TObject);          { для меню Окно | Все }

    begin

           MDIFileViewer.Tile ;

    end;

    procedure TTextViewer.CascadelClick(Sender: TObject);   { для меню Окно | Каскад }

    begin

             MDIFileViewer.Cascade ;

    end;

    procedure TTextViewer.ClosealllClick(Sender: TObject);      { для меню Окно | Закрыть все }

    begin

               MDIFileViewer.CloseAllChildren;

    end;

    19. ДобавьтепроцедуруС1оseAllChiIdren в VIEWMAIN.PAS.

         !!!    Включите объявление процедуры в раздел public класса TMDIFileViewer:

         procedure CloseAllChildren;

    procedure TMDIFileViewer.CloseAllChildren;

    Var  i : Integer;

    Begin

          For i := 0 To MDIChildCount  do

                    MDIChildren[i].Close

    End;

    20. ПЕЧАТЬ ТЕКСТА

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

    Получение готовности к печати

    Из страницы палитры компонентов Additional (Дополнительные) выберите компо­ненты PrintDialog и PrinterSetupDialog и разместите их на форме TextViewer.

    Добавьте обработчики событий элементов Файл | Печать и Файл | Установка принтера.

    procedure TTextViewer.PrintSetuplClick(Sender: TObject);

    begin

    PrinterSetupDialog1.Execute;

    end;

    procedure TTextViewer.Print1Click(Sender: TObject);

    var Line: Integer;

    PrintText: System.Text;

    begin

    if  PrintDialogI.Execute then

        begin

               AssignPrn(PrintText);  { назначить файл типа Text устройству печати }

                 Rewrite(PrintText) ;     { от­крывает назначенный файл для вывода }

                 Printer . Canvas . Font := Memol. Font;    {устанавливаем шрифт для полот­на принтера}

                 for Line := 0  to  Memol.Lines.Count   do

                          Writeln(PrintText, Memo1.Lines[Line]);   { пересылаем каждую строку вывода в файл принтера }

                 System.Close(PrintText) ; 

            end;

    end;

    21. Добавьте Printers к списку модулей в операторе uses модуля TextView.

    Он должен выглядеть следующим образом:

    uses ViewMain, Printers;

    22. Проверьте правильность работы приложения.

    1   ...   8   9   10   11   12   13   14   15   16


    написать администратору сайта