МИНИСТЕРСТВО ТРУДА И СОЦИАЛЬНОГО РАЗВИТИЯ РФ Российский Государственный Социальный Университет филиал в г. Сочи Кафедра экономики и АСУ Курсовая работа Панель компонентов Win32 по дисциплине: «Объектно-ориентированное программирование» Выполнил: Студент 4-го курса гр. 07АСУ Проверила: к. т.н., доцент Салова Т.Л. г. Сочи 2011 ОГЛАВЛЕНИЕ Введение 3 Глава 1. Компоненты панели Win32 9 1.1. Компонент переключаемые страницы (TTabControl) 9 1.2. Компонент Набор страниц (TPageControl) 10 1.3. Компонент Список изображений (TImageList) 12 1.4. Компонент Текстовый редактор (TRichEdit) 20 1.5. Компонент Движок (TTrackBar) 22 1.6. Компонент Индикатор (TProgressBar) 24 1.7. Компонент Счетчик (TUpDown) 25 1.8. Компонент Горячая клавиша (THotKey) 27 1.9. Компонент Анимация AVI (TAnimate) 29 1.10. Компонент Поле ввода даты/времени (TDateTimePicker) 31 1.11. Компонент Календарь (TMonthCalendar) 33 1.12. Компонент Дерево (TTreeView) 36 1.13. Компонент Список элементов (TListView) 40 1.14. Компонент Панель заголовков (THeaderControl) 46 1.15. Компонент Панель заголовков (THeaderControl) 49 1.16. Компонент Панель инструментов (TToolBar) 51 1.17. Компонент Расширенная панель управления (TCoolBar) 57 Глава 2. Структура и состав электронного учебника 61 2.1. Описание электронного учебника 61 2.2. Сборник задач 62 Список использованной литературы 64 Заключение 65 Приложение 66 Введение Delphi — это греческий горд, где жил дельфийский оракул. И этим именем был назван новый программный продукт с феноменальными характеристиками. Delphi — это комбинация нескольких важнейших технологий: 1. Высокопроизводительный компилятор в машинный код 2. Объектно — ориентированная модель компонент 3. Визуальное (а, следовательно, и скоростное) построение приложений из программных прототипов 4. Масштабируемые средства для построения баз данных 5. Компилятор, встроенный в Delphi, обеспечивает высокую производительность, необходимую для для построения приложений в архитектуре «клиент — сервер». Этот компилятор является самым быстрым в на стоящее время в мире, его скорость компиляции составляет свыше ста двадцати тысяч строк в минуту на компьютере 486 DX33. Он предлагает легкость разработки и быстрое время проверки готового программного блока, характерного для языков четвертого поколения (4GL) и в тоже время обеспечивает качество кода, характерного для компилятора 3GL. Кроме того, Delphi обеспечивает быструю разработку без необходимости писать вставки на Си или ручного написания кода (хотя это возможно). В процессе построения приложения разработчик выбирает их палитры компонент, делающие крупные мазки кистью. Еще до компиляции он видит результаты свой работы — после подключения к источнику данных их можно видеть отображенными на форме, можно перемещаться по данным, представлять их в том или ином виде. В этом смысле проектирование в Delphi мало чем отличается от проектирования в проектирующей среде, однако после выполнения компиляции мы получим код, который исполняется в десять — двадцать раз быстрее, чем то же самое сделанное при помощи интерпретатора. В Delphi компиляция производится непосредственно в родной машинный код, в то время как существуют компиляторы, превращающие программу в так называемый р — код, который затем интерпретируется виртуальной р — машиной. Это не может не сказаться на фактическом быстродействии готового приложения. Первая версия появилась в мае 1995 года, когда еще не существовала Windows 95. Эта единственная версия, работающая от управления 16-разрядной Windows 3.1. В ней впервые была опробована новая модель объектов, заимствованная из различных объектно-ориентированных языков, и главным образом из языка С++. Эта модель оказалась настолько революционной, что существовавшая в то время в поздних Turbo Pascal объекты стали не нужные (их возможности полностью проглотила новая модель), а сама новая модель получила название класса. Класса активно используют динамическую память в связи, с чем несколько изменилась нотация языка, а сам язык был назван Object Pascal. По сравнению с Turbo Pascal в него были внесены, существенны дополнения и изменения, в том числе здесь и далее перечисляются лишь наиболее важные, с моей точки зрения, изменения: 1. Введены открытые массивы и конструкторы для передачи массивов переменной длины; 2. Введена внутренняя для функций переменная RESOLT и разрешено игнорировать разрешения функции результат; 3. Сняты ограничения на тип возвращаемого функции результатов (этот тип может быть любым, за исключение объектов старого типа); 4. Введен механизм обработки исключительности ситуации. Библиотека компонентов первой версии самого начала показала основную направленность вновь разработанной системы: программирование баз данных. С этой целью первая из все последующую Delphi снабжаются специальным инструментом доступа к данным BDE (Borland Database Engine — машина баз данных корпорации Borland), а также сервером баз данных Inter Base (этот сервер производится филиалом Borland — компании Inter Base Soft were Corporation) и соответствующими средствами конфигурации сервера, его контроля и связи с ним. Палитра компонента состоит из 9 страниц и содержит 79 компонентов. В качестве дополнительных утилит поставлялись система генерации отчетов ReportSmiteh v.2.5. и входящая в её состав автономно запускаемая утилита ReportSmiteh Run Timer Viewer, утилита доступа к данным Database Desktop v.5.1. и утилита конфигурации BDE — Database Engine Configuration v.2.5. Кроме того, утилита WinSighte и Win Specter предназначались для упрощения отладки разрабатываемых программ среди 16-разрядных OC Windows3.x. Среда Delphi — это сложный механизм, обеспечивающий высокоэффективную работу программиста. Визуально она реализуется несколькими одновременно открытыми окнами на экране. Окна могут перемещаться по экрану, частично или полностью перекрывая друг друга, что обычно вызывает у пользователя, привыкшего к относительной «строгости» среды текстового процессора Word или табличного процессора Excel, ощущение пройдет, и вы научитесь быстро отыскивать нужное окно, чтобы изменить те или иные функциональные свойства создаваемой вами программы, ибо каждое окно несет в себе некоторую функциональность предназначенную для решения задач. При запуске программы вы увидите шесть окон: главное окно, окно дерево объектов, окно инспекторов объекта, окно браузера, окно формы, окно кода программы. Чтобы упорядочить окна вам придется в ручную изменить их положение и размеры, обычно окно кода программы перекрыто окном формы. Чтобы найти окно кода нужно нажать клавишу F12, повторное нажатие F12вновь активизирует окно формы — эта клавиша работает как двоичный переключатель, попеременно показывая окно формы или окно кода программы. При запуске Delphi поверх всех окон появится окно, с помощью этого окна вы сможете получить доступ к Web — страницам корпорации Inprise для просмотра самой свежей информации о корпорации и ее программных продуктах. Главное окно осуществляет основные функции управления проектом создаваемой программы. Это окно всегда присутствует на экране и занимает его самую верхнюю часть, даже в максимальном состоянии его размеры и положения не отличаются от обычных. Оно содержит все необходимые средства для управления проектом, все опции главного меню представляют собой заголовки, открывающие доступ к выпадающим меню второго уровня. Все компоненты главного окна располагаются на специальных панельках, в левой части которых имеются кнопки управления, позволяющие с помощь мыши перетаскивать панельки с помещенными на них элементами. Любую панельку кроме главного меню можно убрать из окна сделать ее невидимой или «пустить плавать» по экрану в отдельном окне. Для этого нужно лишь «стащить» панельку с помощью мыши за кнопку из пределов главного окна. Для изменения состава показываемых на панели кнопок нужно предварительно щелкнуть по ней правой кнопкой мыши. В появившемся после этого окне вспомогательного меню перечислены названия всех панелей и указан их статус (отмеченные флажками панельки видны в главном окне; ели отметку убрать панелька исчезнет). После выбора Customize (настройка) появится окно настройки. Теперь можно «стаскиваться» с панелек ненужные кнопки, выбирать из списка в окне Commands (закладка) нужные кнопки и перетаскивать их на экран. Пиктографические кнопки. Пиктографические кнопки открывают быстрый доступ к наиболее важным опциям главного меню. По функциональному признаку они разделены на семь групп. Каждая группа занимает отдельную панельку. В следующей таблице описаны команды, реализуемые стандартным набором пиктографических кнопок. Начиная с версии 5, главное окно обогатилось тремя новыми интерфейсными элементами, указанными в группе Desktops предыдущей таблицы. С помощью этих инструментов программист может подготовить несколько вариантов расположения остальных окон Delphi и сохранить их в настроенном файле. Обычно выбираются две или три основные конфигурации окон: для режима разработки форм, для кодирования и для отладки. При разработке формы на экране должна быть видна сама форма, Дерево объектов и Инспектор объектов. Настроив соответствующие размеры и положение этих окон, такую настройку можно сохранить под именем, например Design Desk. Для режима кодирования обычно нужно только максимально распахнутое на экран окно кода с браузером Code Explorer и пристыкованное к нему окно Дерева объектов. Настроив соответствующие размеры и положения этих окон, такую настройку можно сохранить под именем, например, DesignDesck. Для режима кодирования обычно нужно только максимально распахнутое на экране окно кода с браузером Code Explorer и пристыкованное к нему окно Дерева объектов. Такую конфигурацию можно сохранить под именем Code — Decks. Наконец, в отладочном режиме е окну кода желательно «прицепить» некоторые отладочные окна, как Watches (окно наблюдения за переменными / выражениями) и Breakpoints (окно создания / настройки точек контрольного останова). Такую конфигурацию можно сохранить под именем DebugDesk, например. Теперь при переходе к тому или иному режиму достаточно раскрыть список и выбрать из него нужную настойку. Если предварительно указать с помощью кнопки настойку для отладочного режима, эта настройка появиться автоматически, как только среда перейдет в режим отладки. Палитра компонентов — это главное богатство программы. Она занимает правую часть главного окна и имеет закладки, обеспечивающее быстрый поиск нужного компонента. Под компонентом понимается некий функциональный элемент, содержащий определённые свойства и размещаемый программистом в окне формы. С помощью компонентов создаётся каркас программы, во всяком случае — её видимые на экране внешние проявления: окна, кнопки, списки выбора. Как и панель компонентов может настаиваться. Для этого используется специальный редактор, окно которого появляется на экране после щелчка правой кнопки мыши на любой пиктограмме в палитре компонентов и выбора опции Properties (свойства). Нет смысла удалять какой — то из компонентов, а создавать новые пока еще не умеем. В стандартном наборе страниц палитры компонентов есть страница Samples, содержащая довольно часто используемые компоненты. В то же время ее закладка в палитре закрыта двумя небольшими кнопками «прокрутки» закладок палитры. Имеет смысл поменять ее местами с менее используемой страницей, например, со страницей ADO. Можно «перетащить» строку Samples станет доступна в любой момент. Ели к тому же использовать в своих проектах технологию ADO для доступа к базам данных, перетащите строку ADO в самый конец списка. Глава 1. Компоненты панели Win32 1.1. Компонент переключаемые страницы (TTabControl) Данный компонент, как и компонент TPageControl, является наследником класса TCustomTabControL Он имеет общие черты с набором страниц, однако главное его отличие в том, что, несмотря на наличие нескольких корешков, реально доступна только одна страница и только одна клиентская область. То есть, пользователь может переключать только корешки, а не страницы. При переключении корешков содержимое единственной страницы, естественно, не изменяется автоматически. Данный компонент используется, когда надо реализовать особо сложную логику работы такого элемента управления. Контролировать содержимое каждой «виртуальной» страницы приходится программно, то есть динамически создавать и уничтожать или делать невидимыми различные группы элементов и графические изображения в моменты переключения между корешками. В программе-самоучителе в примере использования данного компонента использованы 4 вкладки для демонстрации его свойств. 1.2. Компонент Набор страниц (TPageControl) Компонент представляет собой набор страниц, наложенных одна на другую. Доступ к каждой странице, содержащей свой набор элементов управления, осуществляется через так называемые корешки — небольшие выступы над страницей, содержащие короткое название. Большинство настроечных диалоговых окон в различных программах для Windows сегодня созданы именно по такому принципу. Это и окно Параметры в редакторе Word, и окно Свойства обозревателя в браузере Internet Explorer, и всевозможные средства настройки системы Delphi 7 и прочее. Данный элемент управления хорош в первую очередь тем, что позволяет эффективно экономить экранное пространство, фактически неограниченно увеличивая его «глубину». Первоначально компонент, помещенный на форму, будет пустым — не содержащим ни одной страницы. Новая страница добавляется командой New Page (Создать страницу) из контекстного меню. При этом в списке объектов в Инспекторе объектов (и в описании класса TForml) появляется описывающий ее новый объект TabSheetl. Добавим таким образом две страницы. На этапе проектирования между ними можно переключаться простым щелчком мыши на корешке. В клиентской области каждой страницы можно размещать любые компоненты Delphi 7. Названия, указанные на закладках, меняются так. Сначала выбирается нужная страница (но не объект PageControll!) при помощи щелчка на ее клиентской части или выбором в списке Инспектора объектов. Затем нужное название вводится в свойство Caption (Заголовок), например Лист 1 и Лист 2. В программе-самоучителе в примере использования данного компонента использованы 3 вкладки для демонстрации его свойств. 1.3. Компонент Список изображений (TImageList) Этот компонент незаменим при создании приложений, в которых производится работа с графическими изображениями. Он позволяет хранить наборы картинок фиксированного размера, обращаться к ним по номерам и осуществлять вывод изображений на экран различными способами. В частности, при реализации различных анимационных эффектов может использоваться «прозрачный» цвет. Перед загрузкой изображений в данный компонент (он невизуальный) надо настроить ряд его основных свойств При работе со списком изображений прежде всего требуется определить, как его элементы отображаются на холсте: просто копируются или рисуются с учетом маски, определяемой цветом маскируемой области. Все точки, попавшие в эту область, либо вообще не выводятся, либо отображаются одним и тем же цветом. ____________________________________________________________________________________________________ Свойство Назначение ____________________________________________________________________________________________________ АИосВу Число новых элементов, добавляемых, если при добавлении очередного изображения требуется расширение списка. Например, если значение свойства AllocBy равно 4 и список содержит четыре'картинки, то при добавлении пятой длина списка увеличится до 8 элементов (на 4). С помощью данного свойства можно регулировать распределение памяти, если планируется активная работа программы с большим числом изображений BkColor Фоновый цвет рисунка. При выводе этим цветом заполняется маскируемая область BlendColor Цвет переднего плана. Используется, когда изображение рисуется как выделенное (например, имеющее фокус) Count Число картинок в списке DrawingStyle Способ вывода изображения на экран. Возможные значения — dsFocused (цвет картинки смешивается с цветом BlendColor на 25%), dsSelected (цвет картинки смешивается с цветом BlendColor на 50%), dsNormal (в качестве фонового цвета используется цвет BkColor). Если значение свойства равно clNone (цвет не задан), то изображение рисуется с использованием прозрачного цвета и маски. Значение dsTransparent указывает, что изображение рисуется прозрачным независимо от значения свойства BkColor ImageType Тип изображения. Возможные значения — itlmage (картинка), itMask (маска) Masked Имеет значение True, если при выводе изображения используется маска. Маскируемая часть изображения либо выводится как прозрачная, либо заполняется цветом, указанным в свойстве BkColor Sharelmages Имеет значение False, если область памяти, выделенная для списка картинок, освобождается после завершения работы программы. Значение True имеет смысл устанавливать, только если доступ к списку картинок выполняется нестандартным путем, например обращением к ресурсам другой программы ____________________________________________________________________________________________________ В свойствах Width и Height указываются ширина и высота одного изображения в пикселах. Все изображения в списке должны иметь одинаковые размеры. Изображения удобнее всего загружать в список с помощью встроенного редактора. Он вызывается двойным щелчком на объекте ImageList Новые картинки добавляются с помощью кнопки Add (Добавить). Пока редактор не закрыт, добавленные изображения можно редактировать. Раскрывающийся список Transparent Color (Прозрачный цвет) позволяет выбрать цвет, который будет счи¬таться прозрачным. Пикселы этого цвета не выводятся на холст. Если прозрачность не нужна, следует выбрать значение clNone. На панели Options (Параметры) задается способ позиционирования картинки. >> Вариант Crop (Обрезка) означает, что изображение вкладывается в элемент списка, начиная от его верхнего левого угла. >> Вариант Stretch (Растяжение) указывает, что изображение сжимается или рас-тягивается, чтобы соответствовать параметрам ширины и высоты элемента списка. >> Вариант Center (По центру) позиционирует изображение по центру допусти¬мого прямоугольника. Если оно в нем не помещается, то выступающие части обрезаются. ___________________________________________________________________________________________________ Метод Назначение ____________________________________________________________________________________________________ function Add( Image, Mask: TBitmap): Integer; Добавление в список изображения него маски (черно-белого точечного изображения, где белый цвет обозначает прозрачную область). Возвращаемое значение — номер изображения в списке. Нумерация начинается с нуля function AddIcon( Image: TIcon): Integer; Добавление значка. Значки всегда рисуются прозрачными procedure Addlmages( Value: TCustomlmageList); Копирование всех изображений из другого объекта ImageList function AddMasked(Image: TBitmap; MaskColor: TColor): Integer; Аналогично методу Add, но вместо дополнительной картинки-маски задается цвет изображения, который считается прозрачным, подобно работе с редактором списка procedure Clear; Удаление всех изображений из списка procedure Draw(Canvas: TCanvas; X, Y, Index: Integer; Enabled: Boolean-True); Основная процедура вывода изображения с номером Index на холст Canvas в позицию (X, Y). Способ отображения определяется значением свойства DrawingStyle. Если значение свойства Enabled равно False, то изображение будет рисоваться в сером «выключенном» стиле function FileLoad(ResType: TResType; Name: string; MaskColor: TColor): Boolean; Загрузка изображения из файла ресурсов с именем Name. В параметре ResType указывается тип ресурса, в параметре MaskColor задается прозрачный цвет procedure GetBitmap(Index: Integer; Image: TBitmap); Получение элемента изображения с номером Index как объекта класса TBitmap. Результат возвращается во втором параметре, который должен быть переменной procedure GetIcon(Index: Integer; Image: TIcon); Получение элемента изображения (или его части) с номером Index как объекта класса TIcon procedure Getlmages(lndex: Integer; Image, Mask: TBitmap); Разделение изображения с номером Index на две части: цветное точечное изображение и монохромную маску. Эти изображения возвращаются во втором и третьем параметрах procedure Insert(Index: Integer; Image, Mask: TBitmap); Добавление изображения и маски в конкретную позицию списка procedure InsertIcon(Index: Integer; Image: TIcon); Добавление изображения с маскируемым цветом в конкретную позицию списка procedure InsertMasked(Index: Integer; Image: TBitmap; MaskColor: TColor); Добавление изображения с маскируемым цветом в конкретную позицию списка procedure Move( Curlndex, Newlndex: Integer); Curlndex в позицию Newlndex Перестановка изображения в списке из позиции procedure Replace(Index: Integer; Image, Mask: TBitmap); Замена элемента списка на новое изображение (с маской) procedure ReplaceIcon(Index: Integer; Image: TIcon); Замена элемента списка (значка) на новое изображение procedure ReplaceMasked(Index: Integer; Newlmage: TBitmap; MaskColor: TColor); Замена элемента списка на новое изображение (с маскируемым цветом) function ResourceLoad(ResType: TResType; Name: string; MaskColor: TColor): Boolean; Загрузка изображения из ресурса программы под названием Name. В параметре ResType указывается тип ресурса, в параметре MaskColor — прозрачный цвет ____________________________________________________________________________________________________ Из-за ошибки в библиотеке Windows Comctl32.dll на компьютерах, где установлены системы Windows с разными версиями этой библиотеки, в случае формирования списка на этапе проектирования данный компонент может работать некорректно. Поэтому лучше загружать изображения в список динамически. Это можно сделать следующим образом. var В: TBitmap;... В := TBitmap.Create; В.LoadFromFile('tmp.bmp'); Imagelist1.AddMasked(В, clwnite); Данный компонент удобен, во-первых, тем, что позволяет с помощью метода Draw выводить на экран изображения с прозрачными областями, которые легко формируются или задаются, а во-вторых, элементы списка изображений активно применяются во многих других компонентах Delphi 7, например при создании списков элементов, деревьев и т. п. 1.4. Компонент Текстовый редактор (TRichEdit) Текстовый редактор представляет собой стандартный элемент управления [цп Windows Rich text edit control (Область форматирования текста), выполненный в виде компонента Delphi 7 (как и большинство других элементов управления Windows). По сравнению с компонентом ТМето он обладает расширенными возможностями, такими как форматирование отдельных абзацев текста, поддержка формата RTF и другими. После размещения на форме данный компонент готов к работе. В свойстве Lines (тип TStrings) можно указать начальное содержимое панели редактора. Основная особенность данного компонента — это возможность форматирования отдельных абзацев. Такое форматирование выполняется на основе двух свойств компонента: Paragraph, определяющего характеристики текущего абзаца текста, и SeLAttributes, определяющего характеристики выделенного текста. Свойство Paragraph имеет тип TParaAttributes. Свойство SeLAttributes имеет тип TTextAttributes, состоящий, в свою очередь, из свойств, характерных для класса TFont: CharSet (набор символов), Color (цвет), Height (высота), Name (имя), Pitch (фиксированная/переменная ширина), Size (размер), Style (стиль). Дополнительное подсвойство Protected, имеющее тип Boolean, позволяет сделать выделенный текст недоступным для редактирования. Получить позицию курсора поможет метод GetCaretPos, скопировать выделенный текст в переменную — метод GetSelText. Компонент TRich Edit наследует также большинство методов, связанных с выделением текста и работой с буфером данных, от класса TCustomEdit, на основе которого создан и ранее рассмотренный компонент ТМето. Возможности данного компонента продемонстрируем на следующем примере. На форме имеется панель редактора и две кнопки. По щелчку на первой выделенный текст выравнивается по центру и оформляется как список (с маркером в начале строки). По щелчку на второй кнопке выделенный текст становится полужирным, увеличивается в размере, оформляется шрифтом Courier и красным цветом. В программе-самоучителе в примере использования данного компонента в него загружается файл RTF из папки программы. 1.5. Компонент Движок (TTrackBar) Движок обычно применяется там, где надо в визуальном режиме выставить с помощью мыши какое либо приближенное значение, что выполняется перетаскиванием движка по шкале. В старых версиях Windows для этого использовались компоненты типа полос прокрутки. Движок стал стандартным элементом управления в 32-разрядных версиях Windows. Внешний вид движка настраивается с помощью следующих свойств Свойства компонента TTrackBar Свойство Назначение Frequency Частота засечек Min Мах Минимальная и максимальная допустимые границы Orientation Ориентация: горизонтальная (значение trHorizontal) или вертикальная (значение trVertical) SelStart SelEnd Начало и конец «оптимального» диапазона в рамках границ Min/Max по аналогии с приборами управления. Область оптимального диапазона выделяется дополнительными засечками и другим цветом SliderVisible Видимость движка ThumbLength Толщина полосы движка в пикселах TickMarks Положение засечек. Возможные значения: tmBottomRight (снизу); tmTopLeft (сверху); tmBoth (с обеих сторон) TickStyle Способ отображения засечек на движке. Возможные значения: В программе-самоучителе в примере использования данного компонента при перемещении движка его позиция отображается на надписи сверху. 1.6. Компонент Индикатор (TProgressBar) Индикаторы активно применяются во многих программах для отображения сведений о ходе длительного процесса (например, процесса инсталляции). Свойства Min, Max, Position, Orientation аналогичны свойствам компонента TTrackBar. Необходимо также отметить свойство Smooth. Если оно имеет значение True, то в полосе заполнения (отсчет в ней ведется слева направо) отображается сплошная линия, в противном случае — сегментированная. В программе-самоучителе в примере использования данного компонента при нажатии на кнопку происходит плавное заполнение движка, количество процентов отображается сверху. 1.7. Компонент Счетчик (TUpDown) Данный элемент управления используется, как правило, в связке с другими элементами. Он дает возможность изменять числовые величины (например, в текстовом поле) с помощью кнопок со стрелками и курсорных клавиш. При этом можно задать допустимые границы этих величин. Текущее значение счетчика хранится в свойстве Position, а допустимые границы — в свойствах Min и Мах. Свойство ArrowKeys разрешает или запрещает трактовать нажа¬тия курсорных клавиш как команды изменения значения. Свойство Increment определяет шаг изменения значения свойства Position. Если свойство Thousands имеет значение True, то каждые три цифры в элементе управления, связанном с данным объектом, отделяются запятой. Допускается циклическое изменение значения свойства Position. Если значение свойства Wrap равно true, то после превышения свойством Position максимального предела Мах оно получает значение Min и наоборот. Чаще всего данный компонент используют совместно с компонентом TEdit. Для этого на форме размещают компонент TEdit и в раскрывающемся списке его свойства Associate (Ассоциировать) выбирают объект UpDownl, который в результате автоматически присоединяется к полю. После этого программу можно откомпилировать и запустить. Теперь при щелчках на стрелках объекта UpDownl или при нажатии курсорных клавиш, когда фокус ввода установлен на текстовом поле Editl, содержимое последнего будет меняться, отображая значение, хранящееся в свойстве Position. В программе-самоучителе в примере использования данного компонента при нажатии на кнопку вверх значение числа над ним увеличивается. 1.8. Компонент Горячая клавиша (THotKey) Данный весьма полезный компонент позволяет запросить у пользователя определенную «горячую» комбинацию клавиш, которая в дальнейшем будет использована для вызова часто выполняемого действия. При создании экземпляра данного компонента предварительно надо определить «запрещенные» клавиши, нажатие которых одновременно с «горячей» комбинацией не учитывается. Допустим, что разработчика интересуют только комбинации двух клавиш: обычной алфавитно-цифровой и управляющей CTRL. Тогда с помощью Инспектора объектов надо в свойстве InvalidKeys установить значения всех под-свойств, за исключением hcCtrl, равным True. Значения подсвойств, указанных ниже, используются и в других свойствах данного компонента. Значение Назначение hcNone Нажатие обычных клавиш без использования управляющих не допускается hcShift Клавиша SHIFT hcCtrl Клавиша CTRL hcAlt Клавиша ALT hcShiftCtrl Клавиши SHIFT+CTRL hcShiftAlt Клавиши SHIFT+ALT hcCtrlAlt Клавиши CTRL+ALT hcShiftCtrlAlt Клавиши SHIFT+CTRL+ALT hkExt Клавиша EXTRA В свойстве Modifiers задаются допустимые управляющие клавиши. Когда программа с настроенным компонентом THotKey запущена, при установке курсора в поле этого компонента и нажатии допустимой комбинации клавиш выводится описание этой комбинации. 1.9. Компонент Анимация AVI (TAnimate) Данный компонент позволяет организовать на форме небольшую анимацию — воспроизвести клип в формате А VI (Audio Video Interleaved, расширение файла .AVI) без воспроизведения звука. В зависимости от цели применения компонент TAnimate можно настроить заранее, на этапе проектирования, или динамически, во время работы программы. Загрузить клип можно, обратившись к свойству FileName, в котором указывается имя файла .AVI, либо указав в свойстве CommonAVI один из следующих стандартных клипов Windows. Имя клипа Содержание aviNone Клип указан в свойстве FileName aviFindFolder -Поиск папки aviFindFile Поиск файла aviFindComputer Поиск компьютера aviCopyFiles Копирование файлов aviCopyFile Копирование файла aviRecycleFile Перемещение файла в корзину aviEmptyRecycle Очистка корзины aviDeleteFile Удаление файла __________________________________________________ Стандартные клипы Windows имеют различный размер, поэтому для свойства AutoSize надо задать значение True. Свойство Transparent определяет, будет ли клип прозрачным или используется фоновый цвет. Перед запуском клипа его надо открыть, для чего в свойство Open записывается значение True. При этом выполняется загрузка клипа в память и подготовка его к воспроизведению. В программе-самоучителе в примере использования данного компонента при нажатии на кнопку проигрывается анимация. 1.10. Компонент Поле ввода даты/времени (TDateTimePicker) Компонент представляет собой раскрывающийся список и используется для ввода даты и времени с клавиатуры (по формату в соответствии с локальными настройками Windows). При раскрытии списка открывается календарь (компонент TMonthCalendar). На этапе проектирования настраиваются следующие свойства компонента. Свойства класса TDateTimePicker Свойство Назначение DateFormat Представление даты в коротком (dfShort) или длинном (dfLong) формате DateMode Выбор способа работы компонента. Он может использоваться как раскрывающийся список (dmComboBox) или иметь счетчик для изменения даты (dmUpDown) Kind Если значение свойства равно dtkDate, компонент используется для ввода даты, в противном случае (значение dtkTime) — для ввода времени ShowCheckbox Имеет значение True, если рядом с полем отображается флажок (его состояние можно проверить, обратившись к свойству Checked) ____________________________________________________________________________________________________ Когда дата или время в поле изменяются, генерируется сообщение onchange. При раскрытии списка, содержащего календарь, объект получит сообщение OnDropDown, при закрытии — сообщение OnCloseLlp. В программе-самоучителе в примере использования данного компонента возможно изменить дату. 1.11. Компонент Календарь (TMonthCalendar) С помощью календаря можно быстро и легко выбрать нужную дату с помощью мыши. В красном кружке выделена текущая дата (она же более развернуто указана в нижней части календаря), синим подсвечена дата, выбранная при помощи мыши. Слева показаны номера недель в году (свойство WeekNumbers). С помощью кнопок в верхней части календаря можно перемещаться по месяцам. Чтобы вернуться к месяцу с текущей датой, достаточно щелкнуть на ней в нижней части календаря. Календарь имеет следующие свойства. Свойства класса TMonthCalendar ____________________________________________________________________________________________________ Свойство Назначение ____________________________________________________________________________________________________ CalColors Цвета элементов календаря MaxDate Максимальная дата, до которой календарь может быть прокручен помесячно. Тип свойства — TDate (см. ниже) MinDate Минимально допустимая для просмотра дата MultiSelect Имеет значение True, если разрешается выбирать диапазон дат ShowToday Имеет значение True, если текущая дата дополнительно отображается в нижней части календаря ShowTodayCircle Имеет значение True, если текущая дата выделяется красным кружком ____________________________________________________________________________________________________ Форматы даты и времени Работа с календарем происходит на основе типа TDate (или его аналога TDateTime). Текущая выбранная дата записывается в свойство Date этого типа. Само значение хранится в запакованном формате в поле типа Double. Кроме типа TDateTime можно применять также системный формат TSystemTime, который содержит полное описание текущих даты и времени: type TSystemTime = record wYear: Word; wMonth: Word; wDayOfWeek: Word; wDay: Word; wHour: Word; wMinute: Word; wSecond: Word; wMilliseconds: Word; end; Можно использовать и формат TTimeStamp. type TTimeStamp = record Time: Integer; Date: Integer; end; В поле Time хранится число миллисекунд, прошедшее с полуночи, в поле Date — число дней от 1 января 0001 года плюс 1. Для работы с этими форматами в системе Delphi 7 имеется набор стандартных под-программ. Кроме того, в приложениях, где требуется выполнять задачи, жестко привязанные к временным промежуткам, можно воспользоваться функцией GetTickCount, бозвращающей число миллисекунд, прошедших с начала суток (с полуночи) до данного момента, хотя лучше в подобных ситуациях применять компонент TTimer. 1.12. Компонент Дерево (TTreeView) Сложные структуры данных в Windows обычно представляются двумя способами: в виде только что рассмотренного списка и в виде дерева. Так, например, отображается структура каталогов в Проводнике: слева иерархическая структура диска в виде раскрывающихся значков с обозначениями «-» (развернут) и «+» (свернут), а справа — содержимое выбранного каталога в виде списка. Для создания подобных деревьев, отображающих иерархические структуры дан¬ных, в системе Delphi 7 реализован компонент TTreeView. Процесс создания дерева достаточно прост. Его начальную структуру можно сформи-ровать в редакторе, аналогичном редактору компонента TListView, только уровень вложенности элементов в таком списке не ограничен. У компонента TListView под-держивался только один уровень вложенности по схеме «объект — набор свойств». Каждому узлу дерева может соответствовать своя картинка. Ее номер указывается в поле редактора Image Index (Номер картинки), а сам список картинок задается в свойстве Images. Дополнительно, для каждого узла можно указать номер картинки, отражающей его выделенное состояние (свойство Selected Index), и номер картинки, отражающей его дополнительное состояние (свойство State Index). Имена узлов можно редактировать, как обычные названия объектов Windows. Многие свойства дерева совпадают со свойствами объекта TListView, но есть и небольшие отличия, вызванные необходимостью отображать неограниченные иерархии объектов и только одним режимом работы. Основные свойства компонента TTreeView. Сами узлы хранятся в свойстве Items (класс TTreeNodes) и имеют тип TTreeNode. Класс TTreeNodes содержит свойство Item — массив объектов типа TTreeNode. Основные свойства класса TTreeNode приведены Основные свойства компонента TTreeView ____________________________________________________________________________________________________ Свойство Назначение ____________________________________________________________________________________________________ AutoExpand Имеет значение True, если узлы дерева будут автоматически разворачиваться и сворачиваться при перемещении фокуса ChangeDelay Пауза в миллисекундах между выделением узла дерева и генерацией сообщения onchange. Обработка этого сообщения позволяет, например, отобразить содержимое данного узла в другой части формы. Для Проводника Windows эта пауза равна 50 мс HideSelection Имеет значение True, если с элемента, теряющего фокус, снимается выделение Indent Расстояние в пикселах между узлами дерева RightClickSelect Имеет значение True, если разрешается выделять узлы дерева с помощью правой кнопки мыши ShowButtons Имеет значение True, если слева от узлов отображаются кнопки с символами + и — ShowLines Имеет значение True, если отображаются линии, соединяющие узлы ShowRoot Имеет значение True, если отображаются линии, соединяющие узлы верхнего уровня Statelmages Список картинок для отображения дополнительного состояния узлов ToolTips Имеет значение True, если разрешена всплывающая подсказка для каждого узла дерева. Показывать такую подсказку надо в обработчике события OnHint В программе-самоучителе в примере использования данного компонента реализовано многоуровневое дерево. 1.13. Компонент Список элементов (TListView) В отличие от ранее рассмотренного компонента TListBox, представляющего собой стандартный список строк, существующий еще с первых версий Windows, список элементов содержит значительно больше возможностей представления информации Первоначально, сразу после создания, в списке не содержится ни одного элемента. Режим его будущей работы определяется значением свойства ViewStyle. Возможны следующие значения. Значения свойства ViewStyle ____________________________________________________________________________________________________ Значение Режим работы ________________________________________________________________________