От Delphi 4 к Delphi 5 часть 42

От Delphi 4 к Delphi 5
Палитра компонентов

Страница FASTNET.


Компоненты этой страницы (рисунок 1) предоставляют программисту возможность использования различных протоколов для передачи деловых сообщений и данных по локальным или глобальным сетям, в том числе и по Internet. В Delphi 4 они размещались на странице Internet.


Назначение компонентов, входящих в FastNet рассмотрено на занятии 10 (КГ №17(309) от 8 мая 2001).


Управление процессом отладки приложения, временные контрольные точки.


Команды раздела Run меню Delphi управляют процессом отладки. Чтобы запустить приложение под присмотром отладчика, вы выбирали команду Run или клавишу F9, в результате чего приложение начинало выполняться.

Для прерывания приложения и перехода в режим отладки используется команда Program Pause. В итоге вы получаете возможность использовать любые средства отладчика. Чтобы продолжить выполнение программы, необходимо снова выбрать команду Run. Процесс отладки можно прервать с помощью команды Program Reset или комбинации клавиш Ctrl + F2.


Если вы сразу хотите вызвать отладчик на определенной строке программы, вам не надо устанавливать контрольную точку. Для этого необходимо поместить курсор на необходимую строку программы и нажать клавишу F4, или можно открыть меню Run и выбрать команду Run to Cursor (рисунок 2). Произойдет запуск программы на компиляцию и выполнение ее до указанной курсором строки.

Эта команда очень удобна, когда выполняются циклы. Если вы попали в цикл программы, то чтобы не выполнять все его итерации по шагам, поместите курсор на следующую строку, за операторами тела цикла, и нажмите F4. Таким же образом можно пропустить ту часть отлаживаемой программы, анализ которой не нужен.

Вы можете сразу перейти в режим отладки до выполнения своей программы. Находясь в Редакторе кода, нажмите клавишу F8 или откройте меню Run и выберите команду Step Over . Среда Delphi откомпилирует вашу программу и перейдет в режим отладчика, остановившись на ключевом слове begin файла модуля вашего проекта .


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

Простейший способ заставить вашу программу работать — нажать клавишу F9 или открыть меню Run и вызвать команду Run . Ваша программа будет работать обычным образом с полной скоростью, как будто нет никаких контрольных точек. Использование других способов может привести к зависанию вашей программы и компьютера, что приведет к потере не сохраненных данных. Старайтесь чаще производить сохранение, если в этом есть необходимость.


Обеспечение пошагового выполнения программы.


Среда Delphi позволяет вам выполнять вашу программу по шагам, команда за командой. На каждой строке своей программы вы сможете следить за результатом выполнения, контролировать значения переменных и вообще видеть, что программа делает. Есть три способа пошагового выполнения программы:

нажать клавишу F7;


открыть меню Run и выбрать команду Trace Into;


щелкнуть кнопку Trace Into на инструментальной линейке панели быстрого доступа.

Вне зависимости от того, какой способ вы используете, Delphi выполняет текущую строку программы и переводит указатель вставки на строку, которая будет выполняться следующей (рисунок 3).

В том случае, если вы собираетесь по шагам пройти пару строк программы, то быстрее всего делать это, нажимая клавишу F7.


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

С помощью команды Trace Into или клавиши F7 вы можете выполнять команду по шагам, т.е. трассировать ее. Выбор данной команды позволяет выполнять одну строку исходного кода. Если в строке записан вызов подпрограммы, начинается трассировка по тексту подпрограммы (библиотечные процедуры и функции выполняются без трассировки за одно нажатие клавиши F7 ). В некоторых случаях вам не нужно и нежелательно прослеживать выполнение внутри функции. Вы уверены, что эта функция свободна от ошибок и не связана с проблемой, с которой вы столкнулись. В этом случае Delphi позволяет вам переступить через вызов функции или строку кода. У вас есть возможность перешагнуть команду тремя способами:

нажать клавишу F8;


открыть меню Run и выбрать Step Over;


нажать кнопку Step Over на инструментальной линейке панели быстрого доступа.

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

Не переступайте и не шагайте по слишком многим строкам кода. Если вы не хотите смотреть, что происходит на каждой строке, переведите курсор на ту строку кода, к которой вы хотите перейти, и нажмите клавишу F4. Среда Delphi выполнит вашу программу до строки, где установлен курсор.

При трассировке подпрограмм, для которых отладочная информация отсутствует, удобной и полезной оказывается команда Trace to Next Source Line (Shift + F7) . Пусть программа выполняет некоторое действие (например, устанавливает свойство Text компонента Edit ), в результате которого генерируется событие (для компонента Edit – это событие OnChange ). Допустим также, что в приложении определен обработчик этого события. Тогда трассировка оператора установки свойства с помощью команды Trace to Next Source Line передаст управление на метод обработки события (в данном случае OnChance), т.е. на первые операторы, для которых была обнаружена отладочная информация. Этого не позволяют сделать команды Trace Into и Step Over.

Компонент Panel.

Построение строки состояния.


Строку состояния легче построить, чем инструментальную линейку. Среда программирования Delphi содержит специальный компонент StatusBar, основанный на специальном управляющем элементе системы Windows . Хотя вы можете использовать компонент Panel, помещать его в форму, обычно выравниваемый в ее нижней части, и определять для него правильный трехмерный эффект.

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

Рассмотрим пример использования компонента Panel для построения строки состояния.

    1. Запустите Delphi.
    2. Сохраните файл модуля под именем PanBar_.pas, а файл проекта — PanBar.dpr.
    3. Поместите на форму компонент Panel. Используя свойство Align, в инспекторе объекта на странице Properties выберите для компонента Panel значение alBottom. Panel разместится в нижней части формы.
    4. Поместите на форму два компонента Button1 и Button2. Пусть в вашем приложении щелчок по данным кнопкам приводит к различным действиям. Напишите программный код, позволяющий отображать текстовую информацию на панели, используемой как строка состояния в приложении, в тот момент, когда происходит активизация данных кнопок. Для этого используйте двойной щелчок в окне справа от события OnEnter на странице Events инспектора объекта, для компонентов Button.

procedure TForm1.Button1Enter(Sender: TObject);

begin

Panel1.Font.Size:=24;

Panel1.Font.Color:=clRed;

Panel1.Caption:='Активизирован компонент Button1';

end;

procedure TForm1.Button2Enter(Sender: TObject);

begin

Panel1.Font.Size:=24;

Panel1.Font.Color:=clGreen;

Panel1.Caption:='Активизирован компонент Button2';

end;


Вы можете задать размер шрифта и цвет шрифта отображаемой информации. Рекомендуется следующее цветовое кодирование в зависимости от вида информации. Использование красного цвета (дополнительный оранжевый) применяется для запрещающей информации, которая носит аварийный характер, т.е. накладывает строгие ограничения на выполнение или запрещение тех или иных действий, указывает на неготовность к работе или неисправность. Зеленый цвет (дополнительный синий) используется для информации, которая носит командный характер, требует или разрешает выполнение строго определенных действий, указывает на готовность к выполнению тех или иных действий. Желтый цвет (дополнительный белый) используется для информации, которая носит осведомительный характер, дает рекомендации для выполнения тех или иных действий, оставляя за пользователем право выбора окончательного решения. Дополнительный цвет применяется для выделения особо важной информации (например, для информации, требующей экстренного принятия решения).

Следующий программный код позволяет отображать на панели положение курсора на форме при движении мыши по коврику:


procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

begin

Panel1. Caption:='Координата X = ' + IntToStr(X);

Panel1.Font.Size:=18;

Panel2. Caption :='Координата Y = ' + IntToStr(Y);

Panel2.Font.Size:=18;

end;


Для реализации данного примера необходимо поместить в нижней части формы (рисунок 4) два компонента Panel.


Следующий пример позволяет отображать на компоненте Panel координаты курсора (рисунок 5) на форме при нажатии левой кнопки мыши:


procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

Panel1.Caption :='(' + IntToStr(X) + ',' +IntToStr(Y) +')'; end;

end;


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


procedure TForm1.CheckBox1Click(Sender: TObject);

begin

if CheckBox1.Checked then

Panel1.Caption:='Чекбокс помечен'

else

Panel1.Caption:='Чекбокс не помечен';

end;


Вы можете также выдавать на панель текущее время, в момент необходимый для вас (рисунок 6). Программный код следующий:


procedure TForm1.Button1Click(Sender: TObject);

begin

Panel1.Caption := 'Время ' + TimeToStr(Time);

end;


Таким образом, используя компонент панель, вы можете сами создавать строку состояния на нем. Оформление ее полностью лежит на ваших плечах.

Но вы можете использовать возможности специального компонента StatusBar, который окажет вам помощь в выводе необходимых сообщений в приложении.

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

Для этого вам нужно сделать два шага. Сначала (первый шаг) ввести строку как свойство Hint каждого элемента. Затем (второй шаг) написать некоторый код для обработки события OnHint приложения. Вам нужно добавить вручную новый метод в форму и затем его присвоить свойству OnHint объекта Application (например, когда создана форма):


procedure TForm1.FormCreate(Sender: TObject);

begin

Application.OnHint := ShowHint;

end;


В интерфейсной части кода формы вы можете добавить следующее определение:


procedure ShowHint(Sender: TObject);


Эта процедура копирует текущее значение свойства Hint приложения, которое временно содержит копию всплывающей подсказки выбранного элемента, в строку состояния:


procedure TForm1.ShowHint(Sender: TObject);

begin

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

end;


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


Всплывающая подсказка в любом месте экрана.


Для формирования всплывающей подсказки в любом месте экрана, которое вы определите, используйте процедуру DoShowHint. Чтобы понять, как это сделать, поместите три компонента Button на форму. Для компонента Button3 определите подсказку в рамке с цветом фона рамки отличным от стандартного, размер рамки определите с заданными параметрами по ширине, координаты и время появления всплывающей подсказки также можете определить сами. Программный код, показанный ниже, понятен, комментарии приведены в фигурных скобках, предусмотренных для комментариев. Единственное условие, после того, как поместите кнопку на форму, задайте свойству ShowHint значение True. На рисунке 7 показан процесс отображения всплывающей подсказки в заданном месте экрана.


type

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

Button3: TButton;

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

procedure DoShowHint(var HintStr: string; var CanShow: Boolean; var HintInfo: THintInfo);

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.DoShowHint(var HintStr: string

; var CanShow: Boolean; var HintInfo: THintInfo);

begin

HintStr :='Решение интерполяционной формулы Лагранжа ';

if HintInfo.HintControl = Button3 then

begin

with HintInfo do

begin

HintColor := clAqua;{ Цвет окна подсказки }

HintMaxWidth := 120;{Окно подсказки увеличивается вниз,

если размер текста превышает 120 пикселей}

ReshowTimeout:= 100; {время в миллисекундах, через которое

появляется всплывающая подсказка}

HideTimeout:=10; {количество времени в миллисекундах, в течение

которого производится показ всплывающей подсказки}

Inc(HintPos.X, Button3.Width);{ Перемещение окна подсказки

вправо от компонента }

{HintPos.X:=55;

HintPos.Y:=55; задавая числовые значения, можете назначить любое место

экрана для появления всплывающей подсказки}

end;

end;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

Application.ShowHint := True;

Application.OnShowHint := DoShowHint;

end;

end.

Установка собственного значка приложения.


Используя диалоговое окно Project Options, а в нем страницу Application, возможно задать нужное название и значок ( Icon ) для вашего приложения. Для этого необходимо после компиляции приложения и создания файла перейти в меню Project, далее выберите команду Options, в диалоговом окне Project Options выберите страницу Application (рисунок 8) .


Используя окно редактора текста Title, запишите имя вашего приложения. Щелчок по кнопке Load Icon… позволит вам вызвать диалоговое окно для поиска изображения значка ( icon ) для внедрения его в ваше приложение. Используя окно Target file extension, введите расширение для вашего приложения.

Изменение значка приложения вы можете произвести без участия Delphi. Для этого необходимо выбрать ярлык вашего приложения, активизировать его, далее щелкнуть правой кнопкой мыши. Откроется диалоговое окно "Свойства Delphi" (рисунок 9) . Выберите вкладку Ярлык. Щелчок по кнопке "Изменить значок" откроет диалоговое окно Изменение значка . В данный момент вы можете видеть текущее значение значка. Щелчок по кнопке Обзор позволит вам отыскать новый значок. Кстати, у вас появляется возможность вставлять в качестве значка и ваши изображения с расширением bmp . В этом случае при поиске необходимо открыть опцию, позволяющую показывать все файлы, и выбрать рисунок с расширением bmp.


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

Далее запустите Image Editor, используя меню, щелкните по команде File, далее New, Bitmap File (.bmp). Откроется диалоговое окно Bitmap Properties, в котором вы можете установить размеры нового изображения и цветовую гамму. Для цветных фотографий установите SuperVGA (256 colors). Щелкните по кнопке Ok . После этого откроется диалоговое окно Bitmap1. bmp. Используя команду меню Edit, выберете в раскрывшемся списке команду Paste. В прямоугольной области появится ваша фотография, которую можно редактировать. Используя редактор Image Editor, можно добиться более четкого изображения. Так, используя инструмент Eye Dropper палитры инструментов и палитру цветов, можно убрать блики с изображения или изменить цвет отдельных элементов изображения. После завершения редактирования запомните ваше новое изображение и используйте его как значок для ваших приложений. Теперь ваше приложение уже никто не спутает с другим приложением (рисунок 10).


Собственный значок для формы.


Когда вы разрабатываете приложение, следует позаботиться о том, чтобы форма имела в своем левом верхнем углу выразительный значок, соответствующий главной мысли вашего приложения. Как вы уже знаете, для разработки значков в Delphi существует специальный инструмент Редактор изображений ( Image Editor ). После изготовления значка его нужно установить в свойстве формы Icon.


Для этого сделайте двойной щелчок мыши в окне Инспектора объектов справа от значения свойства Icon на кнопке с тремя точками. Среда Delphi откроет диалоговое окно Picture Editor. Выберите какой-нибудь файл значка из своей папки или из папки Delphi, например такой путь: Program Files\Borland\Delphi4\Objrepos. После этого закройте диалоговое окно с помощью кнопки Ok.

Delphi
поставит выбранный значок в левый верхний угол формы (рисунок 11).




Литература:

    1. Марко Канту. Delphi 2 для Windows 95/NT. Москва. ООО "Малип". 1997 г.
    2. Джон Матчо. Дэвид Р. Фолкнер. Delphi. Москва. БИНОМ. 1995 г.
    3. Эндрю Возневич. Delphi. Освой самостоятельно. Москва. Восточная книжная компания. 1996 г.
    4. В.В.Фаронов. Delphi 5. Учебный курс. Москва. Издательство Нолидж. 2000 г.
    5. А. Я. Архангельский. Программирование в Delphi 5. Москва. ЗАО "Издательство Бином". 2000 г.

Владимир Скуратов

(c) компьютерная газета


Компьютерная газета. Статья была опубликована в номере 31 за 2001 год в рубрике программирование :: delphi

©1997-2024 Компьютерная газета