ВІКІСТОРІНКА
Навигация:
Інформатика
Історія
Автоматизація
Адміністрування
Антропологія
Архітектура
Біологія
Будівництво
Бухгалтерія
Військова наука
Виробництво
Географія
Геологія
Господарство
Демографія
Екологія
Економіка
Електроніка
Енергетика
Журналістика
Кінематографія
Комп'ютеризація
Креслення
Кулінарія
Культура
Культура
Лінгвістика
Література
Лексикологія
Логіка
Маркетинг
Математика
Медицина
Менеджмент
Металургія
Метрологія
Мистецтво
Музика
Наукознавство
Освіта
Охорона Праці
Підприємництво
Педагогіка
Поліграфія
Право
Приладобудування
Програмування
Психологія
Радіозв'язок
Релігія
Риторика
Соціологія
Спорт
Стандартизація
Статистика
Технології
Торгівля
Транспорт
Фізіологія
Фізика
Філософія
Фінанси
Фармакологія


StatusBar (Строка состояния).

Компонент Delphi StatusBar (вкладка Win32) при размещении на форме автоматически располагается в нижней части формы. Высота компонента StatusBar задается с помощью свойства Height, либо во время проектирования мышью. Если необходима одна большая панель, то в свойстве SimplePanelнеобходимо выставить значение TRUE, а текст, который должен выводиться, задать свойством SimpleText.

В правом нижнем углу компонента отражается маленький треугольник, за это отвечает свойство SizeGrip. Он визуально показывает, что с помощью мыши, в этом месте, можно форму изменять в горизонтальном и вертикальном направлении.

СвойствоFont задает шрифт и его характеристику.

Если строка состояния содержит более одной панели, то для работы необходимо вызвать редактор панелей. Его можно вызвать тремя способами: двойным щелчком на компоненте StatusBar, из Инспектора Объектов кнопкой с многоточием рядом свойства Panels, или из контекстного меню выбрав команду Panels Editor . С помощью редактора мы можем перемещаться по панелям, уничтожать существующие или добавлять новые. Главные свойства панелей:

§ Свойство Text - Надпись на панели.

§ Свойство Width- Ширина панели в пикселах .

§ Свойство Bevel - Вид панели.

§ Свойство Alignment - Выравнивание надписи на данной панели.

Расположим на форме компоненты StatusBar, Edit, Memo, Timer, ApplicationEvents, как на рисунке. Напишем свойство Hint для Edit и Memo, допустим Фамилия и общие сведения. Для компонента StatusBar создадим три панели.

Для первой панели, где у нас будет отображаться дата, ширину установим равную 60. Компоненту ApplicationEvents событию onHint создадим такой обработчик:

procedure TForm1.ApplicationEvents1Hint(Sender: TObject);

begin

StatusBar1.Panels[2].Text := Application.Hint;

end;

Он будет выводить подсказки элементов формы в третьей панели. Для события onTimer (для того чтобы время и дата выводились в первой и второй панели соответственно) компонента Timer -

procedure TForm1.Timer1Timer(Sender: TObject);

begin

StatusBar1.Panels[0].text:=DateToStr(now);

StatusBar1.Panels[1].text:=TimeToStr(now);

end;

 

Использование в 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,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {IntroForm};

{$R *.res}

begin
Application.Initialize;
IntroForm := TIntroForm.Create(Application);
IntroForm.Show;
IntroForm.Update;

while IntroForm.Timer1.Enabled do
Application.ProcessMessages;

Application.CreateForm(TForm1, Form1);
IntroForm.Hide;
IntroForm.Free;
Application.Run;
end.

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. Например:

library SortLib;

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

Если в теле библиотеки объявлены некоторые процедуры,

procedure BubleSort(var Arr: array of Integer); procedure QuickSort(var Arr: array of Integer);
то это еще не значит, что они автоматически станут доступны для вызова извне. Для того чтобы это разрешить, нужно поместить имена процедур в специальную секцию exports, например: exports BubleSort, QuickSort;

Перечисленные в секции exports процедуры и функции отделяются запятой, а в конце всей секции ставится точка с запятой. Секций exports может быть несколько, и они могут располагаться в программе произвольным образом.

Ниже приведен пример исходного текста простейшей динамически загружаемой библиотеки SortLib. Она содержит единственную процедуру BubleSort, сортирующую массив целых чисел методом «пузырька»:

library SortLib; procedure BubleSort(var Arr: array of Integer); var I, J, T: Integer; begin for I := Low(Arr) to High(Arr) - 1 do for J := I + 1 to High(Arr) do if Arr[I] > Arr[J] then begin T := Arr[I]; Arr[I] := Arr[J]; Arr[J] := T; end; end;   exports BubleSort; begin end.

Исходный текст динамически загружаемой библиотеки заканчивается операторным блоком begin...end, в который можно вставить любые операторы для подготовки библиотеки к работе. Эти операторы выполняются во время загрузки библиотеки основной программой. Наша простейшая библиотека SortLib не требует никакой подготовки к работе, поэтому ее операторный блок пустой.

3. Использование DLL-библиотек.

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

Существуют два способа импорта, отличающихся по удобству и гибкости программирования:

§ статический импорт (обеспечивается директивой компилятора external);

§ динамический импорт (обеспечивается функциями LoadLibrary и GetProcAddress).

Статический импорт является более удобным, а динамический — более гибким.

 

При статическом импорте все действия по загрузке и подключению библиотеки выполняются автоматически операционной системой во время запуска главной программы. Чтобы задействовать статический импорт, достаточно просто объявить в программе процедуры и функции библиотеки как внешние. Это делается с помощью директивы external, например:

procedure BubleSortIntegers(var Arr: array of Integer); stdcall; external 'SortLib.dll';procedure QuickSortIntegers(var Arr: array of Integer); stdcall; external 'SortLib.dll';

После ключевого слова external записывается имя двоичного файла библиотеки в виде константной строки или константного строкового выражения. Вместе с директивой external может использоваться уже известная вам директива name, которая служит для явного указания экспортного имени процедуры в библиотеке. С ее помощью объявления процедур можно переписать по-другому:

procedure BubleSort(var Arr: array of Integer); stdcall; external 'SortLib.dll' name 'BubleSortIntegers'; procedure QuickSort(var Arr: array of Integer); stdcall; external 'SortLib.dll' name 'QuickSortIntegers';

Поместив в программу приведенные выше объявления, можно вызывать процедуры 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. Понятие исключительной ситуации. Обработка исключений.

 

© 2013 wikipage.com.ua - Дякуємо за посилання на wikipage.com.ua | Контакти