У вас вопросы?
У нас ответы:) SamZan.net

Информационные системы и технологии в геологии и нефтегазодобыче с основами разработки приложений для Wind

Работа добавлена на сайт samzan.net: 2016-03-05

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 3.2.2025

Назначение указаний

Данные методические указания предназначены для ознакомления студентов специальности «Информационные системы и технологии (в геологии и нефтегазодобыче)» с основами разработки приложений для Windows с помощью системы программирования Delphi.

Методические указания рассчитаны на студентов, уже прослушавших курсы «Информатика» и «Технология программирования».

1. Знакомство с формой

  1.  Запустите Delphi. Создайте новый проект типа Приложение Windows (File  New  Application).
  2.  Посмотрите, какие элементы системы программирования Delphi Вы видите на экране:
    •  сверху – главное окно с заголовком Delphi Project и панелью инструментов;
    •  слева – инспектор объектов (Object Inspector);
    •  в середине – создаваемую форму (Form1) и окно для ввода кода (Unit1.pas). Нажмите F12 для переключения между формой и окном для ввода кода.
  3.  Сохраните созданный проект в отдельную папку (File  Save All, сперва указываете имя модуля (*.pas), а затем – имя проекта (*.dpr) ).
  4.  Посмотрите, что из себя представляет на самом деле форма – класс TForm1 в разделе type секции Interface. Ниже, в разделе var описана сама переменная Form1.
  5.  Нажмите клавишу F9 для запуска приложения. Убедитесь, что Вы можете изменять размеры и местоположение окна. Закройте его.
  6.  Найдите инспектор объектов (Object Inspector). На странице свойств (Properties) найдите основные свойства формы:
    •  Caption – заголовок формы;
    •  Color – цвет формы;
    •  Cursor – тип курсора, посмотрите его возможные значения;
    •  Name – имя формы, по которому можно будет обращаться к ней;
    •  Position – расположение формы на экране при запуске: poDesigned – как при разработке, poScreenCenter – в центре экрана, и т.д.;
    •  Left, Top – отступ формы от левого и верхнего края экрана;
    •  Height, Width – высота и ширина формы.
  7.  Установите для формы заголовок «Моя форма».
  8.  Установите для формы позицию (свойство Position) в центре экрана.
  9.  Установите для формы размеры 640x480 пикселей.
  10.  Запустите форму (F9), посмотрите, как она изменилась.
  11.  Установим для формы подсказку:
    •  в свойство Hint формы запишите текст подсказки: «Это форма»;
    •  в свойство ShowHint (определяет, нужно ли показывать подсказку) установите значение True.
    •  Запустите форму, убедитесь, что подсказка появилась.
  12.  В инспекторе объектов (Object Inspector) на странице событий (Events) найдите основные события формы:
    •  OnClick – срабатывает при щелчке на форме левой кнопкой мыши;
    •  OnDblClick – срабатывает при двойном щелчке на форме;
    •  OnKeyPress – нажимают и отпускают символьную клавишу;
    •  OnKeyDown – нажимают клавишу (еще не отпустили);
    •  OnKeyUp – отпускают клавишу;
    •  OnMouseDownнажимают кнопку мыши;
    •  OnMouseMoveдвигают указатель мыши;
    •  OnShow – форма появилась на экране (например, при запуске);
    •  OnClose – форма закрылась;
    •  OnCloseQuery – форма собирается закрыться;
    •  OnResize – изменяются размеры формы.
  13.  Заставим форму при щелчке по ней становиться красной, а при двойном щелчке – принимать исходный цвет:
    •  посмотрите, какой цвет имеет форма по умолчанию (свойство Color);
    •  найдите событие OnClick и дважды щелкните по свободному полю справа от его названия (белое поле на рисунке );
    •  после двойного щелчка для события OnClick будет создан обработчик с именем FormClick (само имя обработчика помещается в поле, по которому Вы только что щелкнули ), а в окне для ввода кода будет создан «шаблон» для обработчика события:

Примечание: если для события обработчик уже был создан ранее, то двойной щелчок просто откроет Вам этот существующий обработчик.

  •  при щелчке по форме ее цвет должен стать красным. Для этого в только что созданном обработчике запишем: свойству Color (цвет) присвоить значение clRed (красный):

  •  Теперь, заставим форму при двойном щелчке (событие OnDblClick) принимать свой исходный цвет (clBtnFace). Выполните самостоятельно по аналогии с предыдущими пунктами;
    •  запустите приложение, проверьте – правильно ли все работает.
  1.  Пусть при нажатии на клавишу «+» форма становится на 10 пикселей шире, а при нажатии на «–»: на 10 пикселей уже:
    •  найдите событие OnKeyPress и создайте его обработчик;
    •  найдите в заголовке обработчика параметр var Key: Char. Это – вводимый пользователем символ. Учитывая, что ширина формы – это свойство Width, а менять его значение, по заданию, нужно при нажатии на клавиши «+» и «–», запишем в обработчик следующее:

  •  запустите приложение, проверьте – правильно ли все работает.
  1.  Пусть при нажатии на пробел форма перемещается на 10 пикселей вправо, а при нажатии на пробел в сочетании с клавишей Shift – на 10 пикселей влево:
    •  найдите событие OnKeyDown и создайте его обработчик;
    •  найдите в заголовке обработчика параметр var Key: Word. Это – код нажатой пользователем клавиши. Обратите внимание – она, в отличие от параметра предыдущего обработчика, целого типа;
    •  найдите в заголовке обработчика параметр Shift: TShiftState. Это множество клавиш, удерживаемых пользователем. Установите курсор в середину слова TShiftState и нажмите F1. В открывшейся справке посмотрите, какие значения возможны для этого параметра;
    •  учитывая, что отступ от левого края рабочего стола – это свойство Left, запишите код обработчика событий. Обратите внимание, какой код имеет клавиша пробела (VK_SPACE) и как записывается проверка, нажата ли клавиша Shift (ssCtrl – клавиша Ctrl, ssAlt – клавиша Alt).

  •  Запустите приложение, проверьте – правильно ли все работает.
  1.  Далее, пусть при нажатии на левую кнопку мыши на панели задач напечатаются координаты мыши (т.е. кнопка приложения примет вид ), а при нажатии на правую – ширина формы:
    •  найдите событие OnMouseDown и создайте его обработчик;
    •  найдите в заголовке обработчика параметр Button: TMouseButton. Это – код нажатой пользователем кнопки мыши;
    •  найдите в заголовке обработчика параметр X, Y: Integer. Это – координаты указателя мыши;
    •  запишите код обработчика. Обратите внимание, каким образом проверяется, какая именно кнопка мыши была нажата (первое подчеркивание), как записывается текст на кнопку приложения на панели задач (второе), и как переводится целое число в текст.

  •  Запустите приложение, проверьте – правильно ли все работает.
  1.  При изменении размеров формы в её заголовок будем помещать новые значения ширины и высоты:
    •  найдите событие OnResize и создайте его обработчик;
    •  запишите код обработчика.

  •  запустите приложение, проверьте – правильно ли все работает.
  1.  Теперь, пусть форма приветствует пользователя при своем запуске и прощается с ним при закрытии:
    •  найдите событие OnShow и создайте его обработчик;
  •  запишите код обработчика. Обратите внимание, с помощью какой процедуры выдается сообщение пользователю:

  •  найдите событие OnClose и создайте его обработчик;
    •  по аналогии запишите самостоятельно код обработчика – сообщение пользователю «Пока!».
    •  Запустите приложение, проверьте – правильно ли все работает.
  1.  Запустите утилиту Image Editor (Tools  Image Editor), создайте в нем иконку для своей формы (File  New  Icon File).
  2.  Установите для своей формы только что созданную иконку – щелкните по кнопочке напротив свойства Icon (), для загрузки иконки в открывшемся окошке используйте кнопку Load.
  3.  Установим для приложения название «Моё приложение» и созданную ранее иконку:
    •  выберите команду меню Project Options;
    •  перейдите на закладку Application;
    •  в поле Title введите название приложения «Моё приложение»;
    •  с помощью кнопки Load Icon загрузите иконку;
    •  нажмите кнопку OK.
  4.  Установим для приложения сведения о версии:
    •  выберите команду меню Project Options;
    •  перейдите на закладку Version Info;
    •  установите галочку Include version information in project;
    •  установите номер версии 1.0.0.1;
    •  в свойстве Company name укажите «ТюмГНГУ»;
    •  нажмите кнопку OK.

2. Основные компоненты

  1.  Создайте новый проект, сохраните его в отдельную папку.
  2.  Для формы установите заголовок «Лабораторная работа №2», загрузите для неё свою иконку.
  3.  Для формы установите размеры 600x400, позиция – в центре экрана.
  4.  Форма должна закрываться при нажатии сочетания клавиш Alt+X, смещаться в стороны на 5 пикселей при нажатии на клавиши со стрелками, увеличиваться и уменьшаться на 10 пикселей при нажатии на клавиши + и –.
  5.  Двойной щелчок должен закрывать форму.
  6.  В свойство KeyPreview установите значение True – форма будет реагировать на нажатия клавиш даже тогда, когда фокус будет находится на других элементах, таких как кнопки, переключатели и т.д.
  7.  Далее расположим на форме кнопку Button, которая будет закрывать её:
    •  на панели инструментов найдите компонент Button (страница Standart), щелкните по ней один раз, затем – один раз по форме;
    •  перетащите кнопку в наилучшее для неё, на Ваш взгляд, место;
    •  выделите кнопку и убедитесь, что под заголовком инспектора объектов появилась надпись «Button1: TButton». Это означает, что в инспекторе сейчас отображаются свойства и события вашей кнопки;
    •  найдите свойство Name, посмотрите какое установлено значение. По этому имени Вы будете обращаться к кнопке в программе;
    •  найдите свойство Caption, установите в неё текст «Закрыть»;
    •  найдите событие кнопки OnClick и создайте для него обработчик;
    •  

запишите код обработчика. Обратите внимание, каким методом закрывается форма.

  •  Запустите форму, проверьте – все правильно работает или нет.
  1.  Расположите на форме новую кнопку, которая будет менять цвет формы на зеленый, если пожелает пользователь:
    •  расположите на форме кнопку, дайте её заголовок «Зеленая»;
    •  найдите событие кнопки OnClick и создайте его обработчик;
    •  запишите код обработчика. Обратите внимание, как организован запрос с помощью функции MessageDlg: первый параметр – текст сообщения; второй – тип окна сообщения (у нас – запрос); третий – множество кнопок в окне сообщения; последний – номер раздела справки или 0. Результат функции – код кнопки в окне запроса, которую нажал пользователь.

  •  Запустите приложение, проверьте – правильно ли все работает.
  1.  Самостоятельно добавьте кнопку «Серая», которая, при желании пользователя, будет устанавливать для формы исходный цвет clBtnFace.
  2.  Добавим выпадающий список ComboBox, который будет менять тип курсора на форме:
    •  найдите на панели инструментов компонент ComboBox (страница Standart) и расположите его на форме;
    •  найдите свойство Name, посмотрите какое установлено значение. По этому имени Вы будете обращаться к списку из программы;
    •  найдите свойство Style, установите в него значение csDropDownList (т.е. только выбор из списка, ввод вручную запрещен);
    •  найдите свойство Items, нажмите на кнопочку с тремя точками, откроется редактор строк;
    •  в редактор строк введите в разные строчки: crDefault, crHandPoint, crAppStart, crHourGlass;
    •  найдите свойство ItemIndex – это индекс текущей записи. Установите в свойство значение 0 и посмотрите на компонент – текущей стала первая запись из списка; установите 1 – вторая. Установите значение –1, т.е. текущей записи нет;
    •  установите для выпадающего списка подсказку «Выберите курсор»;
    •  найдите событие OnChange – возникает при смене текущей записи в выпадающем списке. Создайте его обработчик;
    •  

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

  •  Запустите приложение, проверьте – правильно ли все работает.
  1.  Добавим на форму «Галочку» CheckBox, которая будет запрещать или разрешать закрытие формы:
    •  найдите на панели инструментов компонент CheckBox (страница Standart) и расположите его на форме;
    •  найдите свойство Caption, установите в него текст «Закрывать нельзя». Растяните компонент таким образом, чтобы заголовок вошел в него полностью;
    •  найдите логическое свойство Checked – если оно содержит True, то галочка установлена. Установите в него значение False;
    •  теперь создайте обработчик события формы OnCloseQuery. Не забудьте предварительно щелкнуть по форме, чтобы в Инспекторе объектов открылся список свойств и событий формы, или в выпадающем списке, расположенном под строкой заголовка Инспектора объектов, выберите Form1: TForm1;
    •  среди параметров обработчика обратите внимание на параметр CanClose: если внутри обработчика присвоить ему значение False, то форма не закроется;
    •  запишите код обработчика: если в поле «закрывать нельзя» стоит галочка, то форму закрывать не будем:

  •  Запустите приложение, проверьте – правильно ли все работает.
  1.  Теперь добавим «Галочку», которая сделает невидимой кнопку «Закрыть»:
    •  расположите на форме новый компонент CheckBox;
    •  установите ей заголовок «Невидимая кнопка», проверьте, влезла ли надпись на компоненту;
    •  посмотрите имя новой «галочки»;
    •  установите в свойство Checked значение False;
    •  найдите событие OnClick, создайте его обработчик;
    •  

вспомнив, что имя кнопки «Закрыть» – Button1, а видимость объекта – это свойство Visible, запишите код его обработчика.

  •  Запустите приложение, проверьте – правильно ли все работает.
  1.  Теперь добавим «Галочку», которая сделает неактивной выпадающий список Тип курсора:
    •  расположите на форме новый компонент CheckBox;
    •  установите ей заголовок «Неактивная кнопка», проверьте, влезла ли надпись на компоненту;
    •  посмотрите имя новой «галочки»;
    •  установите в свойство Checked значение False;
    •  найдите событие OnClick, создайте его обработчик;
    •  

вспомнив, что имя выпадающего списка – ComboBox1, а активность объекта – это свойство Enabled, запишите код его обработчика.

  •  Запустите форму, проверьте – все правильно работает или нет.
  1.  Самостоятельно добавьте на форму выпадающий список ComboBox, который позволит выбирать свой собственный цвет – белый, красный, зеленый или синий.
  2.  Самостоятельно добавьте на форму галочку CheckBox: если галочка установлена (по умолчанию), то свойство формы BorderStyle принимает значение bsSizeable, иначе – bsNone.
  3.  На кнопки можно нажимать либо с помощью мыши, либо с помощью клавиши «пробел», предварительно установив на них фокус. Фокус можно перемещать с помощью клавиши Tab. У каждого компонента есть два свойства:
    •  TabStop – определяет, будет ли данный компонент получать фокус;
    •  TabOrder – определяет, каким по счету этот компонент получит фокус (нумерация с нуля).
    •  Установите наиболее правильный, на Ваш взгляд, порядок перемещения фокуса по компонентам. При этом выпадающие списки фокус получать не должны.
  4.  Установите подсказки для всех компонентов.

3. Калькулятор

Разработаем простой калькулятор, который умеет выполнять четыре основные арифметические операции.

  1.  Запустите Delphi, создайте новое приложение, сохраните его.
  2.  

Для формы установите заголовок «Калькулятор». В свойство Position установите poScreenCenter.

  1.  Расположите на форме компоненты Edit и Button, установите в них заголовки так, чтобы все выглядело как на рис. (справа)
  2.  Edit будет служить для ввода чисел и вывода результата лишь с помощью кнопок Button. Установите в его свойство ReadOnly значение True (т.е. запретим вводить значения в это поле вручную с клавиатуры).
  3.  При нажатии на кнопки с цифрами в Edit1 в конец должна добавляться соответствующая цифра. Если в поле ввода был 0, то он заменяется новой цифрой (т.е., при нажатии на

«3» мы видим не «03», а просто «3»). В этом случае, обработчик события OnClick для кнопки «7» будет выглядеть следующим образом.

  1.  Реализуйте по аналогии обработчики события OnClick для всех кнопок от «0» до «9». Запустите приложение, проверьте кнопки «0»–«9».
  2.  При нажатии на « , » должна появиться десятичная точка, при условии что её еще не было. Запишем обработчик: если в записи числа еще нет символа десятичной точки, то добавляем её в конец.

  1.  При нажатии «+/–» должен смениться знак числа: вставляем на первое место символ «–», или наоборот – удаляем его, если он там уже есть.

  1.  

Теперь определим клавишу BackSpace. При её нажатии в поле ввода должна удаляться последняя цифра. Задействуем событие формы OnKeyDown, предварительно установив в свойство формы KeyPreview значение «истина». Обратите внимание на обработчик, записанный ниже: если мы удаляем последнюю цифру, то поле для ввода числа не может остаться пустым или лишь с одним знаком числа: в этом случае мы помещаем туда цифру 0. Здесь появляется функция StrToFloat – перевод строки в вещественное число.

  1.  

Теперь перейдем собственно к операциям. Обратим внимание на порядок действий: пользователь вводит первое число, затем знак операции, и далее второе число. Следовательно, на момент вычисления в поле ввода Edit1 будет находиться лишь второе число, а первое и код операции нужно где-то хранить. Опишем для этого в разделе Private класса TForm1 поля Value1 и Oper, где будем хранить код операции.

  1.  

Установим стартовые значения в описанные поля. Задействуем для этого событие формы
OnShow.

  1.  

Пусть сложение имеет код операции 1, вычитание – 2, произведение – 3 и деление – 4. Тогда, учитывая, что первое число находится в поле Value1, а второе – в Edit1, запишем обработчик события OnClick кнопки « = ». Здесь появляется функция FloatToStr – перевод вещественного числа в строку.

  1.  

При нажатии на кнопку «+» нужно, выполнить предыдущую операцию, если она была (т.е. инициировать нажатие клавиши «=»), запомнить код операции (1), запомнить текущее число как первое и обнулить Edit1. (Другими словами, если пользователь нажимает 1, +, 2, +, 3 и =, то на экране должно появиться значение 6, а не 5).

  1.  По аналогии запишите обработчики для кнопок «–», «*» и «/».
  2.  

Калькулятор почти готов. Осталось определить клавишу Esc: при нажатии на неё будет происходить сброс числа в 0, а также последней операции. В событие формы OnKeyDown допишем команду так, чтобы обработчик выглядел следующим образом:

  1.  Запустите калькулятор, проверьте его.
  2.  Теперь, научим наш калькулятор вычислять значения нескольких квадратных функций. Растяните форму по вертикали.
  3.  Под кнопку « = » добавьте переключатель – компонент RadioGroup.
    •  Найдите его свойство Caption и запишите в него «Функция».
    •  Затем найдите свойство Items, нажмите на кнопочку «…» напротив него – откроется редактор возможных значений. В первую строку запишите «x^2 + 3x + 1», во вторую – «4x^3 - 6x - 1». Нажмите OK.
    •  Теперь найдите свойство ItemIndex – это номер позиции, напротив которой установлен переключатель (флажок). Установите в это свойство значение 0, т.е. – 1-ая позиция.
  4.  

Под компонентом RadioGroup1 разместите контейнер GroupBox. Очистите его свойство Caption.

  1.  На контейнере GroupBox1 разместите кнопку. В качестве ее заголовка запишите «Вычислить функцию». В итоге Ваша форма будет дополнена следующим образом (рис. справа).
  2.  При нажатии на кнопку «Вычислить функцию» будет вычислено значение выбранной функции. Текущую позицию в RadioGroup можно узнать с помощью его свойства ItemIndex. Запишем его обработчик:

  1.  В самом низу формы разместите метку – компонент Label. В его свойство Caption запишите: «Лаб. работу выполнил: Ф.И.О.»
  2.  Теперь калькулятор полностью готов! Запускайте, проверяйте.

4. Списки

Разработаем программу, в которой будет несколько встроенных списков.

  1.  Запустите Delphi, создайте новое приложение, сохраните его.
  2.  Для формы установите заголовок «Списки».
  3.  Установите размеры формы 640x480. Загрузите свою иконку.
  4.  Разместите на форме выпадающий список ComboBox, который позволит менять цвет формы.
    •  В свойство Style установите значение DropDownList – т.е. вводить вручную нельзя, можно только выбирать из выпадающего списка.
    •  Найдите свойство Items, с помощью кнопочки «…» откройте редактор строк и введите в него значения «Стандартная», «Красная», «Зеленая» и «Синяя».
    •  

В свойство ItemIndex присвойте значение 0.

  •  Создайте обработчик события OnChange выпадающего списка ComboBox1 – при смене текущей записи меняем цвет формы на другой:
    •  Над выпадающим списком ComboBox1 поместите метку Label, запишите в ней: «Цвет формы».
  1.  Разместите на форме еще один выпадающий список ComboBox. При выборе новой записи из выпадающего списка перед пользователем будет выскакивать сообщение с выбранной позицией.
    •  В свойство Style установите значение DropDownList.
    •  

Создайте обработчик события OnChange выпадающего списка
ComboBox2 – при смене текущей записи выводим ее в виде сообщения на экран:

  •  Рядом с выпадающим списком ComboBox2 поместите метку Label, запишите в ней: «Список 1».
  1.  Разместите на форме список ListBox. При двойном щелчке по какой-либо записи в списке перед пользователем будет выскакивать сообщение с текстом выбранной позиции.
    •  Создайте обработчик OnDblClick для ListBox1 – при двойном щелчке в виде сообщения на экран выводим текст текущей записи:

  •  Рядом с ListBox1 поместите метку Label с текстом «Список 2».
  1.  Разместите на форме список Edit.
    •  Найдите свойство Text. Запишите в него «Слово».
    •  Рядом с полем Edit1 поместите метку Label с текстом «Новое слово».
  2.  Теперь добавим на форму кнопку Button. При нажатии на нее слово из поля Edit1 будет перемещаться в выпадающий список ComboBox2.
    •  Дайте кнопке заголовок «В ComboBox».
    •  

При нажатии на кнопку содержимое поля ввода Edit1 должно попасть в выпадающий список ComboBox2. Запишите в обработчике события OnClick кнопки Button1:

  1.  Добавим на форму еще одну кнопку Button. При нажатии на нее слово из поля Edit1 будет перемещаться в список ListBox1.
    •  Дайте кнопке заголовок «В ListBox».
    •  

При нажатии на кнопку содержимое поля ввода Edit1 должно попасть в список ListBox1. По аналогии с шагом 8, запишите в обработчике события OnClick кнопки Button2:

  1.  Запустите приложение. Добавьте с помощью реализованных кнопок в список 1 названия нескольких месяцев (январь, февраль и т.д.), а в список 2 – названия дней недели (понедельник, вторник и т.д.).
  2.  Разместим на форме еще одну кнопку Button рядом со списком 2. При нажатии на неё из списка ListBox1 будет удалена текущая запись.
    •  Установите на кнопке заголовок «Удалить».
    •  Запишите в обработчике события OnClick: если есть выделенная запись, то удаляем из списка всех строк Items выделенную строку (мы можем узнать ее номер из свойства ItemIndex).

  1.  Разместим около компонента ListBox1 две кнопки. Для первой задайте заголовок «Вверх», для второй – «Вниз». Эти кнопки будут перемещать вниз и вверх выделение в списке 2 (ListBox1).
    •  

Создайте обработчик события OnClick для кнопки «Вверх» – если выделена не первая запись, т.е. номер текущей записи больше нуля, то уменьшаем номер текущей записи на 1.

  •  

Создайте обработчик события OnClick для кнопки «Вниз» – если выделена не последняя запись, т.е. номер текущей записи меньше значения «количество записей – 1» (ListBox1.Items.Count-1), то увеличиваем номер текущей записи на 1.

  1.  Добавьте на форму еще одну кнопку. Она будет перемещать текущее значение из ComboBox2 в начало списка ListBox1.
    •  Установите для кнопки заголовок «Из Combo в List».
    •  Создайте обработчик события OnClick кнопки – добавляем содержимое ComboBox2 на позицию 0 с помощью процедуры Insert:

  1.  Добавьте на форму еще одну кнопку. Она будет перемещать текущее значение из ListBox1 в начало выпадающего списка ComboBox2.
    •  Установите для кнопки заголовок «Из List в Combo».
    •  Создайте обработчик события OnClick кнопки – добавляем выделенную запись ListBox1 (номер выделенной записи определяем с помощью функции ItemIndex) на позицию 0 выпадающего списка с помощью процедуры Insert:

  1.  Добавьте на форму кнопку с заголовком «Очистить список 1», которая будет удалять все значения из списка 1 (ComboBox2). Запишите обработчик события OnClick кнопки, используя метод Clear.

  1.  Добавьте на форму кнопку с заголовком «Очистить список 2», которая будет удалять все значения из списка 2 (ListBox1). По аналогии с предыдущим шагом, запишите обработчик события OnClick кнопки.
  2.  Разместите на форме компонент Memo – многострочное поле ввода. Компонент Memo похож на компонент Edit, но в отличие от него позволяет редактировать сразу же несколько строк текста.
    •  Найдите свойство Lines, с помощью кнопочки откройте редактор строк и удалите все имеющиеся в нем по умолчанию значения.
    •  Рядом с многострочным полем ввода Memo1 поместите метку Label, запишите в ней: «Редактор строк».
  3.  Рядом с полем ввода Memo1 разместите кнопку Button. Пусть, при нажатии на неё, все содержимое Memo1 копируется в список 1 (ComboBox2).
    •  Установите для кнопки заголовок «В ComboBox».
    •  Создайте обработчик события OnClick используя метод Assign – копирование строк.

  1.  Рядом с полем ввода Memo1 разместите еще одну кнопку Button. Пусть при нажатии на неё, все содержимое Memo1 копируется в список 2 (ListBox1).
    •  Установите для кнопки заголовок «В ListBox».
    •  По аналогии с предыдущим шагом, создайте обработчик события OnClick.
  2.  Установите подсказки для всех компонентов, установите порядок перемещения фокуса по кнопкам.

5. Компоненты Win32

Рассмотрим пример программки, использующей компоненты Win32.

  1.  Запустите Delphi, создайте новое приложение, сохраните его.
  2.  Для формы установите заголовок «Участники соревнований».
  3.  Расположите на форме многостраничный блокнот PageControl со страницы Win32. Установите в его свойство Align значение alClient.
  4.  Щелкните по PageControl1 правой кнопкой мыши и выберите пункт NewPage. Вы создали новую (первую) страницу Вашего блокнота. Обратите внимание – страница представляет собой объект класса
    TTabSheet и имеет свои события и свойства.
  5.  Установите в свойство Caption страницы значение «Участники».
  6.  Расположите на странице панель (компонент Panel). Установите в его свойства следующие значения:
    •  заголовок (Caption) – ничего (удалите из него текст по умолчанию);
    •  тип рамки (BevelInner и BevelOuter) – нет (bvNone);
    •  выравнивание (Align) – по правому краю (alRight);
    •  ширина (Width) – 350.
  7.  Расположите на странице, рядом с панелью Panel1, компонент TreeView. Установите для него выравнивание (Align) – alClient.
  8.  Дважды щелкните по TreeView1 – откроется мастер для заполнения дерева. Нажмите кнопку NewItem, затем в поле Text введите «Юноши». Нажмите NewItem еще раз и в Text введите «Девушки». Обратите внимание – в мастере сразу же отображается структура будущего дерева.
  9.  Выделите в мастере узел «Юноши» и нажмите кнопку NewSubitem – будет создан подузел для узла «Юноши». Введите в поле Text значение «Иванов». Нажмите кнопку NewItem – будет создан новый узел на том же уровне, что и выделенный (т.е. «Иванов»), введите «Петров». Таким же образом создайте узел «Сидоров».
  10.  По аналогии с предыдущим пунктом, создайте для вершины «Девушки» три подпункта – «Иванова», «Петрова» и «Сидорова». Затем закройте мастера нажав на кнопку «OK».
  11.  Расположите на форме поле ввода Edit. В свойство Text запишите «Имя». В это поле будем записывать имя добавляемого в дерево юноши или девушки.
  12.  

Расположите на форме кнопку. В свойство Caption введите «Добавить юношу». Запишем обработчик события OnClick кнопки. Узел «Юноши» является самым верхним в дереве, т.е. имеет индекс 0. Таким образом, в обработчик запишем следующее (см. рис.).

  1.  Расположите на форме еще одну кнопку. В свойство Caption введите «Добавить девушку». Запишем обработчик события OnClick кнопки. Узел «Девушки» является вторым в дереве, находящимся на уровне 0.

  1.  Добавим новую кнопку – «Удалить». Удалить можно любой узел (выделенный), кроме узлов самого верхнего нулевого уровня («Юноши» и «Девушки»). Запишем в обработчик события OnClick кнопки следующее.

  1.  Первая часть работы готова – запустите, проверьте.
  2.  Далее создадим новую страницу блокнота – щелкните правой кнопкой мыши по закладке и выберите New Page. Для новой страницы в свойство Caption установите «Призеры».
  3.  На новой странице расположите TabControl. Этот компонент похож на PageControl, но в отличие от него имеет лишь одну реальную страницу. В свойство Align установите значение alClient. В свойство Tabs, с помощью мастера, введите в две строчки «Юноши» и «Девушки». В свойство Style установите значение tsFlatButtons.
  4.  

В рабочей области TabControl1 расположите друг над другом три Label. Установите для них размер шрифта равный 10 (Font). Введите в их свойства Caption значения «1-ое место», «2-ое место» и «3-ее место».

  1.  Напротив меток расположите три Edit. Удалите все, что написано в их свойствах Text. Должно получиться следующее (рис. справа):
  2.  

Далее создадим тип, который будет позволять хранить призеров-юношей и призеров-девушек. В разделе Interface модуля Unit1, в секцию type (перед описанием класса формы) вставим следующее (справа):

  1.  Опишем в классе TForm1, в секции Private, два поля – для хранения призеров-юношей и призеров-девушек (см. ниже):

  1.  В качестве стартовых значений в M и V вставим пустые строки. Задействуем для этого событие формы OnShow (см. справа):
  2.  Компонент TabControl представляет собой «ненастоящий» блокнот. Т.е., на самом деле у него страницы не переключаются, а лишь генерируется событие – «пользователь поменял закладку» (OnChange). Мы же создадим обработчик события, в котором будем выполнять следующее:
    •  если пользователь открыл страницу «Юноши» (TabIndex=0), то сохраним текущие значения из полей ввода (Edit1 и т.д.) как информацию о призерах-девушках (V), и загрузим в эти поля ввода информацию о призерах-юношах (M);
    •  

если пользователь открыл страницу «Девушки» (TabIndex=1), то сохраним текущие значения из полей ввода (Edit1 и т.д.) как информацию о призерах-юношах (M), и загрузим в них информацию о призерах-девушках (V):

  1.  На форме, у PageControl1 сделайте активной первую страницу (щелкните по соответствующей закладке).
  2.  Приложение готово – запускайте, проверяйте.

6. Дочерние формы

Создадим приложение, состоящее сразу из несколько форм.

  1.  Запустите Delphi, создайте новый проект, сохраните его.
  2.  Установите новый заголовок для формы – «Главная форма», установите размеры на свой выбор.
  3.  Сейчас у Вас создано пустое приложение, которое имеет одну (главную) форму. Большинство приложений требуют наличия дополнительных (дочерних) форм (например, для установки раздичных параметров).
  4.  Добавим к нашему проекту еще одну форму. Выберите в меню FileNewForm. На новой форме (Form2) расположите несколько меток Label, в которых укажите свои Ф.И.О., университет, специальность, курс, группу и т.п.
  5.  Установите для новой формы следующие свойства:
    •  заголовок – «Об авторе программы»;
    •  стиль границ BorderStyle – диалоговое окно bsDialog.
  6.  Сохраним еще раз приложение – FileSave All. Обратите внимание: т.к. у нас появилась новая форма, которая сохраняется в отдельном файле, то перед Вами откроется диалоговое окно с просьбой указать имя для нового модуля. Укажите «Unit2» (предлагается по умолчанию).
  7.  Теперь необходимо добавить на главную форму Form1 кнопку, которая будет запускать нашу дочернюю форму. Переключитесь к вашей первой форме, которая реализована в модуле Unit1. При разработке приложений, содержащих несколько форм, переключаться между ними можно следующим образом: ViewUnits, выберите нужный модуль (в нашем случае Unit1) и нажмите OK. Чтобы увидеть саму форму нажмите F12.
  8.  Добавьте на главную форму Form1 кнопку Button, установите для нее заголовок «Модальная форма».
  9.  При нажатии на кнопку Button1 «Модальная форма» будет запускаться наша вторая форма. Однако, эти две формы описаны в разных модулях (в разных файлах) и пока не видят друг друга. Чтобы мы могли из Unit1 обратиться ко второй форме Form2, которая реализована в Unit2, нужно подключить этот модуль: FileUse Unit, выберите Unit2 и нажмите OK.
  10.  

Теперь реализуем обработчик события OnClick кнопки Button1. При ее нажатии будет запускаться форма Form2 в модальном режиме, т.е. пользователь не сможет переключиться к другим формам, пока не закроет запущенную.

  1.  Добавим в проект еще одну форму. Выберите FileNewForm. Для формы установите заголовок «Дочерняя форма». Сохраните проект.
  2.  На новой форме Form3 расположите два поля ввода Edit и кнопку
    Button. В качестве текста по умолчанию в Edit1 и Edit2 установите значения «400» и «400». Напротив них установите метки с подписями «Ширина» и «Высота» соответственно. В качестве заголовка кнопки – «Установить».
  3.  

Реализуем обработчик события OnClick кнопки Button1 новой формы – при нажатии на кнопку будут задаваться размеры новой формы Form3 в соответствии со значениями, указанными в Edit1 и Edit2. Не забывайте перевести текстовое значение из поля ввода в числовой формат.

  1.  Рядом с кнопкой «Установить» расположите еще одну кнопку, с заголовком «Установить для главной формы». Так же как и соседняя кнопка, она будет устанавливать указанные размеры, но для главной формы – Form1.
  2.  Т.к. из формы кнопка «Установить для главной формы» предполагает обращение к другой форме, а именно – к Form1, то предварительно необходимо подключить этот модуль. По аналогии с шагом 9 подключите Unit1.
  3.  

Теперь запишите обработчик события OnClick указанной кнопки
Button2. Обратите внимание: т.к. мы обращаемся к свойствам другой формы, реализованной в другом модуле, то мы должны указать сначала имя формы, и лишь затем имя свойства.

  1.  Вернемся к первой (главной) форме Form1. Добавьте на неё кнопку Button с заголовком «Параллельная форма». Кнопка будет запускать форму Form3  в параллельном режиме, т.е. пользователь сможет переключаться между ней и главной формой.
    •  С помощью команды FileUse Unit подключите модуль Unit3.
    •  

Напишите обработчик события OnClick кнопки Button2. Обратите внимание: запуск формы в параллельном режиме происходит с помощью другого метода.

  1.  Запустите приложение. Откройте модальное и параллельные окна. Попробуйте переключиться от них к главной форме. Найдите, в чем отличие этих окон.
  2.  Посмотрите опции проекта: ProjectOptions.
    •  На странице Forms указаны все формы, доступные в проекте. Все они расположены в левом списке, т.е. создаются автоматически. В качестве главной формы, т.е. запускаемой приложением первой, выбрана Form1.
    •  Далее откройте страницу Application. Укажите заголовок приложения в Title. Он будет отображаться на панели задач после запуска приложения. Можете загрузить иконку для Вашего приложения.
    •  Откройте страницу Version Info. Установите галочку Include и укажите сведения о Вашем проекте. Эти сведения будут доступны в свойствах Вашего exe-файла.
  3.  На главной форме расположите метку Label, поле ввода Edit и еще две кнопки Button. В метку и поле ввода запишите «Заголовок формы». В качестве заголовков кнопок установите «Заголовок для Form2» и «Заголовок для Form3».
    •  

Запишите обработчик первой кнопки. Обратите внимание: модули Unit2 и Unit3 Вы уже подключили раньше. Второй раз их подключать не нужно.

  •  Запишите обработчик второй кнопки.

  1.  Готово. Запускайте, проверяйте.

7. Разработка меню

Создадим небольшое приложение, содержащее главное и контекстное (всплывающее) меню.

  1.  Запустите Delphi, создайте новый проект, сохраните его.
  2.  Установите новый заголовок для формы – «Пример использования меню», установите размеры на свой выбор.
  3.  Расположите на форме компонент ProgressBar. Установите следующие значения в его свойства: Min = 0; Max = 100; Position = 50.
  4.  Расположите на форме компонент MainMenu (главное меню).
  5.  Двойным щелчком вызовите Мастер главного меню. В открывшемся Мастере имеется лишь один пункт, выделенный синим цветом. Введите в его свойство Caption значение «&Прогресс» и нажмите Enter. Вы создали первый раздел Вашего меню. Обратите внимание – главное меню появилось и на форме. Символ & в названии команды заменяется подчеркиванием следующей буквы, т.е. команду можно выполнить сочетанием клавиш Alt + подчеркнутый символ.
  6.  Заполним созданный раздел меню командами. Выделите в Мастере пункт, находящийся ниже, и в его свойство Caption введите «У&величить». Нажмите Enter, в следующий пункт введите «У&меньшить».
  7.  

В Мастере главного меню выделите пункт «У&величить». Обратите внимание, какое он имеет имя – N2 (свойство Name). Создайте для него обработчик события OnClick.

  1.  

Создадим аналогичный обработчик события OnClick для пункта меню «У&меньшить». Обратите внимание и на его имя.

  1.  Запустите приложение, проверьте.
  2.  Установим для пунктов меню «горячие» клавиши – «Ctrl+I» и «Ctrl+D». Откройте Мастер главного меню, выделите пункт «Увеличить», найдите у него свойство ShortCut и введите в него «Ctrl+I». Аналогичным образом задайте горячие клавиши и для пункта «Уменьшить».
  3.  Далее создадим для ProgressBar1 контекстное (всплывающее) меню. Расположите на форме PopupMenu, откройте его двойным щелчком, создайте здесь два пункта с заголовками «У&величить» и «У&меньшить».
  4.  Далее нужно создать обработчики для событий OnClick пунктов контекстного меню. Но, они должны выполнять те же самые действия, что и при нажатии пунктов главного меню «У&величить» (N2) и «У&меньшить» (N3). Поэтому, вместо того, чтобы создавать новые обработчики событий OnClick, просто откройте список существующих обработчиков событий с помощью кнопки , и выберите соответственно N2Click и N3Click.
  5.  Выделите ProgressBar1 и в его свойстве PopupMenu укажите PopupMenu1. Запускайте, проверяйте.
  6.  В главном меню, в разделе «Прогресс», под пунктами «Увеличить» и «Уменьшить», создайте еще два пункта. В качестве заголовка первого из них укажите символ «-» и нажмите Enter. В качестве заголовка второго пункта укажите «&Курсор».
  7.  Щелкните правой кнопкой мыши на пункт меню «Курсор» и выберите Create SubMenu – Вы создали подменю. В подменю создайте три пункта: «&Default», «&HourGlass» и «Hand&Point». Для всех трех пунктов установите значение True в свойства RadioItem и AutoCheck. В пункте «&Default» установите значение True в свойство Checked.
  8.  

Создайте обработчики события OnClick для пунктов меню «&Default», «&HourGlass» и «Hand&Point» (по аналогии с приведенным справа примером).

  1.  Далее добавим в приложение еще одну форму. Выберите в меню FileNewForm. На новой форме расположите несколько меток, в которых укажите свои Ф.И.О., университет, специальность, курс, группу и т.п.
  2.  Добавим в приложение еще одну форму. Выберите FileNewForm. На новой форме расположите поле ввода Edit и кнопку Button. В качестве текста по умолчанию в Edit1 установите «0». В качестве заголовка кнопки – «Установить».
  3.  

Реализуем обработчик события кнопки OnClick – при нажатии на кнопку будет изменяться значение бегунка ProgressBar1 на главной формы. Сначала нужно сделать «видимой» из данного модуля главную форму, которая находится в Unit1. Выберите в меню команду FileUse Unit, выделите Unit1 и нажмите OK. Далее реализуем обработчик события кнопки OnClick.

  1.  Переключитесь к первой форме. Посмотрите опции проекта:
    ProjectOptions.
    •  На странице Forms указаны все формы, доступные в проекте. Все они расположены в левом списке, т.е. создаются автоматически. В качестве главной формы, т.е. запускаемой приложением первой, выбрана Form1.
    •  Далее откройте страницу Application. Укажите заголовок приложения в Title. Он будет отображаться на панели задач после запуска приложения. Можете загрузить иконку для Вашего приложения.
    •  Откройте страницу Version Info. Установите галочку Include и укажите сведения о Вашем проекте. Эти сведения будут доступны в свойствах Вашего exe-файла.
  2.  В главное меню добавьте новый раздел – «&Формы». В новый раздел добавьте два пункта: «&Параллельная» и «&Модальная».
  3.  

Прежде чем записать обработчики событий OnClick новых пунктов меню, выполните команду FileUse Unit, выделите Unit2 и Unit3 и нажмите OK.

  1.  Теперь запишем обработчик события OnClick пункта меню «&Параллельная».
  2.  Наконец, запишем обработчик события OnClick пункта меню «&Модальная».

  1.  Для пунктов меню «&Параллельная» и «&Модальная» задайте горячие клавиши – соответственно «Ctrl+S» и «Ctrl+M».
  2.  В главном меню, в разделе «Формы», под пунктами «Параллельная» и «Модальная», создайте еще два пункта. В качестве заголовка первого из них укажите символ «-» и нажмите Enter. В качестве заголовка второго пункта укажите «&Запрос при закрытии». Установите для него следующие свойства:
    •  AutoCheckTrue (т.е. этот пункт меню будет с галочкой, которая будет автоматически устанавливаться и сниматься при щелке по пункту меню мышью);
    •  RadioItemFalse (т.е. этот пункт у нас сам по себе, он не будет входить ни в какую группу);
    •  CheckedTrue (т.е. по умолчанию галочка будет установлена);
    •  обработчиков событий для пункта меню создавать никаких не будем – его основное назначение – наличие или отсутствие галочки.
  3.  

Теперь у формы создадим обработчик события OnCloseQuery: при наличии галочки в рассмотренном выше пункте меню, форма будет выдавать запрос на закрытие. Убедившись, что рассмотренный пункт меню имеет имя N12, запишите обработчик события.

  1.  Готово. Запускайте, проверяйте.

8. Панели инструментов

Создадим небольшое приложение, содержащее главное и контекстное (всплывающее) меню, а также панель инструментов.

  1.  Запустите Delphi, создайте новый проект, сохраните его.
  2.  Установите новый заголовок для формы – «Пример использования панели инструментов», установите размеры на свой выбор.
  3.  Расположите на форме компонент ProgressBar. Установите следующие значения в его свойства: Min = 0; Max = 100; Position = 50.
  4.  Расположите на форме компонент MainMenu (главное меню).
  5.  Создайте в главном меню раздел «&Прогресс».
  6.  Заполните созданный раздел меню командами «У&величить» и «У&меньшить». Пусть при выборе указанных команд изменяется значение свойства Progress у компонента ProgressBar1.
  7.  Установим для пунктов меню «У&величить» и «У&меньшить» «горячие» клавиши – «Ctrl+I» и «Ctrl+D».
  8.  Создайте для ProgressBar1 контекстное (всплывающее) меню с командами «У&величить» и «У&меньшить».
  9.  В главном меню, в разделе «Прогресс», под пунктами «Увеличить» и «Уменьшить», создайте еще два пункта. В качестве заголовка первого из них укажите символ «-» и нажмите Enter. В качестве заголовка второго пункта укажите «&Курсор».
  10.  Для пункта меню «Курсор» создайте подменю с тремя командами «&Default», «&HourGlass» и «Hand&Point». Для всех трех пунктов установите значение True в свойства RadioItem и AutoCheck. В пункте «&Default» установите значение True и в свойство Checked.
  11.  Создайте обработчики события OnClick для пунктов меню «&Default», «&HourGlass» и «Hand&Point».
  12.  Создадим панель инструментов, на которую вынесем основные команды нашего меню. Расположите на форме компонент ToolBar. Установите следующие значения в его свойства:
    •  EdgeInner = esNone;
    •  EdgeOuter = esNone;
    •  Flat = True.
  13.  Нажмите правой кнопкой мыши по панели инструментов и выберите пункт New Button. Добавьте еще одну кнопку. Эти две кнопки будут соответствовать командам меню «Увеличить» и «Уменьшить». В качестве обработчиков события OnClick этих двух кнопок укажите обработчики N2Click и N3Click соответственно.
  14.  Нажмите правой кнопкой мыши по панели инструментов и выберите пункт New Separator – Вы добавили разделитель между группами кнопок.
  15.  Добавьте на панель инструментов еще три кнопки (тип курсора).
    •  У всех кнопок в свойство Grouped установите значение True (т.е. все три кнопки являются одной группой логически связанных команд).
    •  У всех кнопок в свойство Style установите значение tbsCheck (т.е. одна из кнопок группы будет всегда в нажатом состоянии).
    •  Для первой кнопки в свойство Down установите True (т.е. она по умолчанию будет нажатой).
  16.  Посмотрите, как называются обработчики события OnClick у пунктов главного меню «&Default», «&HourGlass» и «Hand&Point». Установите эти же обработчики для событий OnClick последних трех кнопок на панели инструментов.
  17.  Расположите на форме ImageList. Откройте его двойным щелчком, загрузите пять наиболее подходящих для кнопок панели инструментов картинок (из папки c:\ program files \ common files \ borland shared \ images \ buttons).
  18.  В свойстве Images панели инструментов укажите только что созданную коллекцию рисунков – ImageList1. С помощью свойств ImageIndex кнопок панели инструментов, разместите на них правильные рисунки.
  19.  Добавьте в приложение еще одну форму. На новой форме расположите несколько меток, в которых укажите свои Ф.И.О., университет, специальность, курс, группу и т.п.
  20.  Добавьте в приложение еще одну форму. На новой форме расположите поле ввода Edit и кнопку Button. В качестве текста по умолчанию в Edit1 установите «0». В качестве заголовка кнопки – «Установить».
  21.  Реализуйте обработчик события кнопки OnClick – при нажатии на кнопку должно изменяться значение бегунка ProgressBar1 на главной форме.
  22.  В главное меню добавьте новый раздел – «&Формы». В новый раздел добавьте два пункта: «&Параллельная» и «&Модальная». Реализуйте запуск созданных форм с помощью данных пунктов меню.
  23.  Для пунктов меню «&Параллельная» и «&Модальная» задайте горячие клавиши – соответственно «Ctrl+S» и «Ctrl+M».
  24.  Добавьте на панель инструментов новый разделитель, а за ним – еще две кнопки, которые будут дублировать команды меню «&Параллельная» и «&Модальная». Установите для кнопок подходящие иконки, задайте обработчик события OnClick.
  25.  В главном меню, в разделе «Формы», под пунктами «Параллельная» и «Модальная», создайте еще два пункта. В качестве заголовка первого из них укажите символ «-» и нажмите Enter. В качестве заголовка второго пункта укажите «&Запрос при закрытии». Установите для него следующие свойства:
    •  AutoCheckTrue (т.е. этот пункт меню будет с галочкой, которая будет автоматически устанавливаться и сниматься при щелке по пункту меню мышью);
    •  RadioItemFalse (т.е. этот пункт у нас сам по себе, он не будет входить ни в какую группу);
    •  CheckedTrue (т.е. по умолчанию галочка будет установлена);
    •  обработчиков событий для пункта меню создавать никаких не будем – его основное назначение – наличие или отсутствие галочки.
  26.  Создайте для формы обработчик события OnCloseQuery: при наличии галочки в рассмотренном выше пункте меню, форма должна выдавать запрос на закрытие.
  27.  Готово. Запускайте, проверяйте.

9. Графика и диалоги

Разработаем небольшое приложение, состоящее из двух страниц: на первой – поле для редактирования текста, на второй – поле для рисования.

  1.  Запустите Delphi. Создайте новое приложение. Сохраните его.
  2.  Присвойте форме заголовок «Графика и диалоги».
  3.  Расположите на форме компонент PageControl. В его свойство Align установите значение alClient.
  4.  Добавьте в PageControl1 новую страницу. Присвойте её заголовок «Текст».
  5.  

Расположите на странице «Текст» компонент Memo. В его свойство Align установите значение alClient. Удалите из Memo1 текст по умолчанию (свойство Lines).

  1.  Расположите на форме компонент MainMenu (главное меню).
  2.  В главном меню создайте раздел «Текст», добавьте в него пункты «Сохранить», «Загрузить» и «Шрифт».
  3.  Расположите на форме компонент FontDialog. Будем запускать этот диалог при выборе команды «Шрифт» из меню. В обработчике события OnClick пункта меню «Шрифт» запишем следующее.

  1.  Расположите на форме компонент SaveDialog. Установите следующие значения в свойства:
    •  Title – «Сохранить текст в файл»;
    •  DefaultExt«txt»;
    •  Options – установить True в пункты ofOverritePromt, ofNoReadOnlyReturn;
    •  Filter – с помощью мастера введите два фильтра: «Текстовые файлы» с фильтром «*.txt» и «Все файлы» с фильтром «*.*».
  2.  Будем запускать диалог «Сохранить файл» при выборе команды «Сохранить…» из меню. В обработчике события OnClick пункта меню «Сохранить…» запишем следующее.

  1.  Расположите на форме компонент OpenDialog. Установите следующие значения в свойства:
    •  Title – «Загрузить текст из файла»;
    •  DefaultExt – «txt»;
    •  Filter – с помощью мастера введите два фильтра: «Текстовые файлы» с фильтром «*.txt» и «Все файлы» с фильтром «*.*».
  2.  Будем запускать диалог «Открыть файл» при выборе команды «Загрузить…» из меню. В обработчике события OnClick пункта меню «Загрузить…» запишем следующее.

  1.  Добавьте в PageControl1 новую страницу. Присвойте её заголовок «Графика».
  2.  

На странице «Графика» расположите компонент PaintBox. В его свойство Align установите значение alClient.

  1.  В главном меню создайте раздел «Графика», добавьте в него пункты «Эллипс», «Прямоугольник», пункт-разделитель и «Цвет».
  2.  Для пунктов меню «Эллипс» и «Прямоугольник» установите в свойства GroupIndex значения 1, а в свойства RadioItem и AutoCheckTrue.
  3.  Для пункта «Эллипс» установите в свойство Checked значение True.
  4.  При щелчке левой кнопкой мыши по PaintBox1 в ней будет рисоваться текущий объект из меню (эллипс или прямоугольник) с размерами 50x100. В обработчике события OnMouseUp области для рисования PaintBox1 запишем.

  1.  Расположите на форме компонент ColorDailog.
  2.  Пункт меню «Цвет…» из раздела главного меню «Графика» будет позволять пользователю выбрать цвет пера. В обработчике его события OnClick запишем следующее.

  1.  Готово. Запускайте, проверяйте.

Обратите внимание, что графика, при переключении на страницу «Текст», или при перекрытии Вашей формы другим окном, исчезает и более не появляется. Для корректного отображения графики, рисунок нужно заново перерисовывать в событии OnPaint у PaintBox1.

10. Технология Drag&Drop

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

  1.  Запустите Delphi, создайте новое приложение, сохраните его.
  2.  Для формы установите заголовок «Drag And Drop». В свойство Position установите poScreenCenter.
  3.  Установите размеры формы 640x480. Загрузите свою иконку.
  4.  Расположите на форме список ListBox. Заполните его значениями «Понедельник», «Вторник», …, «Воскресенье».
  5.  Расположите на форме панель Panel. В качестве его заголовка установите значение «Приемник».
  6.  Запустите приложение и убедитесь, что название дней недели нельзя перетащить мышкой из списка ListBox1 на панель Panel1.
  7.  Объектом-источником определим ListBox1 (т.е. из этого элемента управления можно будет перетаскивать данные – названия дней недели). Найдите его свойство DragMode и установите в него значение dmAutomatic (перетаскивание начинается автоматически, если пользователь нажимает левую кнопку мыши над элементом).
  8.  Запустите приложение и убедитесь, что названия дней недели все еще нельзя перетащить мышкой из списка ListBox1 на панель Panel1, но указатель уже реагирует на данный процесс.
  9.  Объектом-приемником определим Panel1 (т.е. этот элемент управления может принять перетаскиваемые данные). По умолчанию данные не примет ни один элемент управления (см. на указатель мыши). Создадим для панели обработчик события OnDragOver (см. следующую страницу)
  10.  Запустите приложение и убедитесь, что названия дней недели все еще нельзя перетащить мышкой из списка ListBox1 на панель Panel1, хотя указатель мыши и показывает, что перетаскивание данных возможно.

  1.  Данные не будут перетаскиваться из одного компонента в другой автоматически – Вы сами должны реализовать данный механизм. Найдите обработчик события OnDragDrop у объекта-приемника (т.е. у Panel1) – он срабатывает, когда пользователь завершает перетаскивание данных над этим объектом, т.е. отпускает левую кнопку мыши. Реализуйте его обработчик.

  1.  Теперь найдите событие OnEndDrag у объекта-источника (ListBox1). Оно срабатывает, когда пользователь завершает перетаскивание данных из этого объекта. Реализуйте его обработчик: удаляем запись, которую перетащили в другой объект.

  1.  Запустите приложение и убедитесь, что названия дней недели теперь можно перетащить мышкой из списка ListBox1 на панель Panel1.
  2.  Поместите на форму поле ввода Edit. Запишите в него «День недели».
  3.  Пусть пользователь сможет скопировать (не переместить!) значение из поля ввода Edit1 в список ListBox1. Найдите у Edit1 свойство DragMode и установите в него значение dmAutomatic.
  4.  У списка ListBox1 реализуйте обработчик события OnDragOver:

  1.  Найдите у списка ListBox1 событие OnDragDrop и реализуйте его обработчик:

  1.  Создавать обработчик события OnEndDrag у объекта-источника (ListBox1) не нужно, т.к. у нас на этот раз будет копирование, а не перетаскивание.
  2.  Запустите приложение и убедитесь, что текст из Edit1 можно перетащить текст в список ListBox1.
  3.  Теперь попробуйте просто установить курсор в поле ввода Edit1. Обратите внимание: при щелчке мыши сразу же начинается процесс перетаскивания данных и курсор в Edit1 не устанавливается. Чтобы исправить это, вновь найдите у Edit1 свойство DragMode и установите в него значение dmManual (перетаскивание генерируется программистом).
  4.  Теперь, т.к. мы выбрали режим dmManual, то необходимо самостоятельно указать, когда будет происходить генерация процесса Drag&Drop. Будем генерировать его, если пользователь двигает мышь над объектом с нажатой кнопкой мыши. Найдите у Edit1 событие OnMouseMove и запишите в его обработчике следующее.

  1.  Теперь готово. Запускайте, проверяйте.

PAGE  32


EMBED PBrush  

EMBED PBrush  

EMBED PBrush  

EMBED PBrush  

EMBED PBrush  

EMBED PBrush  

EMBED PBrush  

EMBED PBrush  

EMBED PBrush  

EMBED PBrush  

EMBED PBrush  

EMBED PBrush  

EMBED PBrush  

EMBED PBrush  

EMBED PBrush  

EMBED PBrush  

EMBED PBrush  

EMBED PBrush  

EMBED PBrush  

EMBED PBrush  

EMBED PBrush  

EMBED PBrush  




1. Як вплине зниження температури зовнішнього повітря на рух потяга 2
2. Видеопамять3 1
3. Право лесопользования
4.  Белый- сочетается со всем
5. РЕФЕРАТ дисертації на здобуття наукового ступенякандидата економічних наук Київ ~ 1999
6. Антигистаминные препараты- блокаторы H1рецепторов- Phencrolum 0025 по 1 таб.html
7. Основные направления повышения эффективности PR-мероприятий на предприятии на примере ООО Фуд-Мастер
8. Сецессион Брюссель
9. 205 БНХК Нуренова Аниса 2012 год
10. Курсовая работа- Учет расчетов со смежными организациями