Использование в Delphi подсказок
В операционной системе Windows при наведении указателя мыши на каком-либо значке всплывает подсказка. Наличие подсказки помогает конечному пользователю разобраться с функционалом приложения. Разместим на форме компонент Edit и в свойстве Hint напишем "Это наш компонент, мы сюда можем все написать". Свойство ShowHint устанавливаем в TRUE. Запустим проект клавишей F9. Задержим на мгновение мышь над компонентом Edit и увидим нашу подсказку на фоне желтого цвета, как на рисунке. А как сделать фон подсказок другой, Расположим Компоненты следующим образом, как на рисунке. Свойству формы ShowHint присвоим TRUE. Проследим, чтобы у всех компонентов свойство ParentShowHint было бы TRUE. Теперь для каждого компонента напишем подсказку типа "Это компонент Edit" (для каждого компонента подсказка должна быть своей). Двойным щелчком на форме зайдем в обработчик формы Create и внесем туда следующие строки: procedure TForm1.FormCreate (Sender: TObject); begin Button1.Hint:= 'Первая строка' + #13 + 'Вторая строка' + #13 + 'Третья строка'; Application.HintColor:= clGrayText; Application.HintPause:= 250; Application.HintHidePause:= 5000; end; Первая строка задает кнопке Button1 новую подсказку, если до этого была задана подсказка в Инспекторе Объектов, то она игнорируется. Символ #13 разбивает строку подсказки на несколько "этажей". Свойство HintColor задает фон подсказок. Свойство HintPause - время до показа подсказки в миллисекундах (где 1000 - одна секунда), а свойство HintHidePause время показа подсказки.
Лекция № 20. Создание заставки, информационных окон.
Создание заставки. Перед появлением главного окна во всех серьёзных приложениях сначала появляется заставка. Заставка обычно несет в себе информацию о названии продукта, авторе, версии.
Рассмотрим простой способ создания окна-заставки. Для начала необходимо подготовить само изображение, которое Вы хотите видеть в качестве заставки. В качестве примера возьмем изображение из Borland Delphi 5. Итак, порядок действий следующий: 1. Создаем новую форму File > New > Form – Delphi for Win322. 2. Для удобства назовем ее IntroForm и зададим свойству BorderStyle значение bsNone (Исчезнут заголовок и рамка формы), свойству Position значение poDesktopCenter (окно будет появляться по центру рабочего стола). 3. Поместим на форму компонент TImage (вкладка Additional) и загрузим наше изображение с помощью свойства Picture. 4. Поместим на форму компонент TTimer (вкладка System), установим его свойству Interval значение равное 3000 (3 секунды), а в обработчике событий OnTimer запишем: Timer1.Enabled:= false; 5. Далее открываем файл проекта: Project > View Source и вносим изменения согласно примера ниже:
program Project1; uses Forms, {$R *.res} begin while IntroForm.Timer1.Enabled do Application.CreateForm(TForm1, Form1); 2. Информационное окно в Delphi приложении В большинстве приложений есть информационное окно,.т.е форма, в которой отображается краткая информация о приложении. Как правило, это сведения о названии программного продукта, номере версии, об авторах, дате выпуска, какой нибудь рисунок (логотип) и еще какие-либо данные. Информационное окно обычно имеет пункт меню "О программе" или по английски - About. В помощь программисту имеется шаблон в Delphi или же такое окно можно создать самостоятельно. Для того чтобы воспользоваться шаблоном, нужно выбрать в Хранилище объектов (File -> New -> Other) на странице Forms шаблон формы About box. В итоге к приложению будет добавлена форма с заголовком About и с именем AboutBox. На форме будут расположены панель (компонент Panel) и кнопка с заголовком OK для закрытия окна. Для кнопки обработчик события не требуется, так как свойство ModalResult кнопки установлено равным mrOK и поэтому при ее нажатии информационное окно будет закрыто.
Панель (компонент Panel) содержит в себе четыре компонента Label для показа сведений о программном продукте и его разработчиках. Компонент Image предназначен для отображения какого-либо рисунка, например логотип производителя программы. Заголовок самой формы About при необходимости также можно изменить. Если на форме необходимы будут еще какие-нибудь элементы, то их всегда можно добавить или, при необходимости, ненужные удалить. При работе с программой информационное окно обычно выводиться с помощью главного меню в модальном режиме. Для продолжения работы с программой информационное окно должно быть закрыто. Пример вызова информационного окна из меню будет таким: procedure TForm1.N1Click(Sender: TObject); begin AboutBox.ShowModal; end;
Лекция № 21. Понятие и назначение DLL-библиотек. Создание DLL-библиотек. Использование DLL-библиотек.
1. Понятие и назначение DLL-библиотек. Динамически загружаемая библиотека (от англ. dynamically loadable library) — это библиотека подпрограмм, которая загружается в оперативную память и подключается к использующей программе во время ее работы (а не во время компиляции и сборки). Файлы динамически загружаемых библиотек в среде Windows обычно имеют расширение .dll (от англ. Dynamic-Link Library). Несколько разных программ могут использовать в работе общую динамически загружаемую библиотеку. При этом операционная система в действительности загружает в оперативную память лишь одну копию библиотеки и обеспечивает совместный доступ к ней со стороны всех программ. Кроме того, такие библиотеки могут динамически загружаться и выгружаться из оперативной памяти по ходу работы программы, освобождая ресурсы системы для других задач. Одно из важнейших назначений динамически загружаемых библиотек — это взаимодействие подпрограмм, написанных на разных языках программирования. Например, вы можете свободно использовать в среде Delphi динамически загружаемые библиотеки, разработанные в других системах программирования с помощью языков C и C++. Справедливо и обратное утверждение — динамически загружаемые библиотеки, созданные в среде Delphi, можно подключать к программам на других языках программирования.
2. Создание DLL-библиотек. По структуре исходный текст библиотеки похож на исходный текст программы, за исключением того, что текст библиотеки начинается с ключевого слова library, а не слова program. Например:
После заголовка следуют секции подключения модулей, описания констант, типов данных, переменных, а также описания процедур и функций. Процедуры и функции — это главное, что должно быть в динамически загружаемой библиотеке, поскольку лишь они могут быть экспортированы. Если в теле библиотеки объявлены некоторые процедуры,
Перечисленные в секции exports процедуры и функции отделяются запятой, а в конце всей секции ставится точка с запятой. Секций exports может быть несколько, и они могут располагаться в программе произвольным образом. Ниже приведен пример исходного текста простейшей динамически загружаемой библиотеки SortLib. Она содержит единственную процедуру BubleSort, сортирующую массив целых чисел методом «пузырька»:
Исходный текст динамически загружаемой библиотеки заканчивается операторным блоком begin...end, в который можно вставить любые операторы для подготовки библиотеки к работе. Эти операторы выполняются во время загрузки библиотеки основной программой. Наша простейшая библиотека SortLib не требует никакой подготовки к работе, поэтому ее операторный блок пустой. 3. Использование DLL-библиотек. Для того чтобы в прикладной программе воспользоваться процедурами и функциями библиотеки, необходимо выполнить так называемый импорт. Импорт обеспечивает загрузку библиотеки в оперативную память и привязку записанных в программе команд вызова к адресам соответствующих процедур и функций библиотеки.
Существуют два способа импорта, отличающихся по удобству и гибкости программирования: § статический импорт (обеспечивается директивой компилятора external); § динамический импорт (обеспечивается функциями LoadLibrary и GetProcAddress). Статический импорт является более удобным, а динамический — более гибким.
При статическом импорте все действия по загрузке и подключению библиотеки выполняются автоматически операционной системой во время запуска главной программы. Чтобы задействовать статический импорт, достаточно просто объявить в программе процедуры и функции библиотеки как внешние. Это делается с помощью директивы external, например:
После ключевого слова external записывается имя двоичного файла библиотеки в виде константной строки или константного строкового выражения. Вместе с директивой external может использоваться уже известная вам директива name, которая служит для явного указания экспортного имени процедуры в библиотеке. С ее помощью объявления процедур можно переписать по-другому:
Поместив в программу приведенные выше объявления, можно вызывать процедуры BubleSort и QuickSort, как будто они являются частью самой программы. Этот способ называется статическим импортом. Расширение файла, содержащего DLL, может не указываться - по умолчанию подразумеваются файлы *.DLL и *.EXE. Если файл имеет другое расширение (например, как COMPLIB.DCL в Delphi), или если требуется динамическое определение DLL и импортируемых функций (например, Ваша программа работает с различными графическими форматами, и для каждого из них существует отдельная DLL.), то для решения такого рода проблем можно обратиться напрямую к API Windows, используя, так называемый, динамический импорт:
uses WinTypes, WinProcs,...; type TMyProc = procedure; var Handle: THandle; MyImportProc: TMyProc; begin Handle:=LoadLibrary('MYDLL'); if Handle>=32 then { if <=32 - error! } begin @MyImportProc:=GetProcAddress(Handle,'MYEXPORTPROC'); if MyImportProc<>nil then ...... {using imported procedure} end;
FreeLibrary(Handle); end;
Лекция № 22. Понятие исключительной ситуации. Обработка исключений.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|