![]() |
|
... От Delphi 4 к Delphi 5 Палитра компонентов Страница Internet Express. ![]() ![]() HTML служит для отображения данных, а XML — для работы с ними. Этот компонент служит связующим звеном между источником данных и сервером приложений в интранет-сетях. ![]() ![]() Проверка синтаксического контроля вашей программы производится двумя способами. Первый способ предполагает выбор раздела Project меню Delphi, далее команда Syntax check Project1. Delphi компилирует каждый модуль проекта и останавливается на найденной ошибке (рисунок 2). Второй способ предполагает выбор в меню Delphi раздела Run, далее команду Run (или можно нажать Ctrl +F9 ) . Delphi производит не только компиляцию программы, но и компонует ее (рисунок 3). В том случае, когда программа не имеет синтаксических ошибок, команда Run запустит программу на выполнение. Если указанные способы обнаружили ошибки, Delphi покажет в статусной строке сообщение об ошибке и установит указатель вставки в Редакторе кода на место, явившееся причиной ошибки (рисунок 4). ![]() В качестве примера для синтаксического контроля выбрана программа Mishen (занятие 19). На рисунке 6 показан случай, когда компилятор не смог поставить указатель вставки в ту точку программы, где возникла проблема. В случае, когда невозможно определить место ошибки, можно сузить поле поиска ошибки, переводя последовательно операторы в разряд комментариев, пока ошибка не пропадет. Для комментариев используйте следующие символы: {} круглые скобки, // две наклонные черты или сочетание (* *) . Затем вы можете последовательно выводить команды из комментария, пока не обнаружите ошибку. В случае, показанном на рисунке 6, ошибка состоит в том, что пропущено ключевое слово begin. ![]() Edit1.Text := FloatToStr(X); Edit2.Text := IntToStr(X1); Если у вас проблемы с английским языком, то необходимо использовать переводчик, например Socrat, Rpomt 98 и т.д. Вам необходимо выделить сообщение в статусной строке, копировать его в буфер обмена, далее запустить переводчик и осуществить перевод сообщения, а в дальнейшем произвести поиск ошибки. Для того чтобы меньше использовать клавиатуру при вводе программного кода и при этом вносить меньше ошибок, можно воспользоваться вызовом оперативного справочника Delphi. Вы можете копировать большинство операторов прямо из справочной системы. Могут возникать ошибки выполнения, когда ваша программа синтаксически правильна и может работать, но во время выполнения возникают ошибки. Такие ошибки могут вызывать "зависание" программы. ![]() Методы–процедуры и методы-функции. ![]() Методы-функции возвращают значения и ведут себя так же, как и обычные самостоятельные функции, с той разницей, что, как и все методы, они принадлежат тому классу, в котором заданы, и должны вызываться через действительного представителя этого класса. Методы-процедуры и методы-функции объявляются как и обычные процедуры и функции, с той разницей, что это делается не в блоке объявлений языка Object Pascal, а в описании класса. Заголовок метода выглядит так же, как и заголовок самостоятельной подпрограммы. Синтаксис заголовка метода-процедуры имеет вид: type ИмяКласса = class(ИмяРодительскогоКласса) … procedure ИмяМетода (<Список параметров>); … end; ![]() type ИмяКласса = class(ИмяРодительскогоКласса) … function ИмяМетода (<Список параметров>) : Возвращаемый тип; … end; Внутри одного класса можно объявить столько методов, сколько требуется. Объявления методов-процедур могут быть перемешаны с объявлениями методов-функций и методов других видов. Объявления элементов класса могут быть сгруппированы в разделы. Единственное требование – чтобы в пределах каждого раздела в описании класса все поля появлялись до объявления методов. Каждое объявление метода-процедуры внутри определения класса начинается с зарезервированного слова procedure, после которого стоит имя метода. Каждое объявление метода-функции начинается с зарезервированного слова function, за которым следует его имя. За именем метода может следовать заключенный в скобки необязательный список параметров. Синтаксис для списка параметров подчиняется тем же правилам, что и для списка параметров обычных подпрограмм. В случае метода-функции за закрывающейся скобкой списка параметров или за названием функции, у которой нет параметров, следует двоеточие, после которого указывается тип возвращаемого функцией значения. ![]() Используя пример занятия 17, добавьте на форму компонент Label4 и четыре компонента Button, щелчок по которым приведет к изменению даты на один день и десять дней . Определим новые методы-процедуры и методы-функции. В этой версии примера имеются некоторые новые методы. Один из них — GetText — является функцией, которая возвращает строку с датой. Второй новый метод-процедура Increase, который увеличивает дату на один день. Третий метод-функция DaysInMonth, который возвращает число дней в текущем месяце. Процедура Decrease уменьшает дату на один день. Procedure Add; procedure Subtract увеличивают и уменьшают дату на 10 дней. Ниже представлен программный код, дополняющий пример YearLeap занятия 17. Показаны также операторы, в которых проведены изменения. public { Public declarations } end; Date = class Month, Day, Year: Integer; function GetText : string; function DaysInMonth: Integer; procedure Increase; procedure Decrease; procedure Add (NumberOfDays: Integer); procedure Subtract (NumberOfDays: Integer); end; var Form1: TForm1; ADay: Date; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin ADay := Date.Create (1, 1, 1900); Label4.Caption := ADay.GetText; end; function Date.GetText: string; begin {Отформатировать текст, преобразовать целые числа в строки с фиксированным числом символов} GetText := Format ('%.2d.%.2d.%4d', [Month, Day, Year.)); end; procedure TForm1.Button4Click(Sender: TObject); begin ADay.Increase; Label4.Caption := ADay.GetText; end; function Date.DaysInMonth: Integer; begin case Month of 1, 3, 5, 7, 8, 10, 12: DaysInMOnth := 31; 4, 6, 9, 11: DaysInMonth := 30; 2: if (LeapYear) then DaysInMonth := 29 else DaysInMonth := 28; else // если месяц не правильный DaysInMonth := 0; end; end; procedure Date.Increase; begin {если этот день не последний день месяца } if (Day < DaysInMonth) then Inc (Day) {increase the value by 1} else { если это не декабрь } if (Month < 12) then begin { День 1 следующего месяца } Inc (Month); Day := 1; end else begin { если это - в следующем году новый день } Inc (Year); Month := 1; Day := 1; end; end; procedure Date.Decrease; {метод увеличения } begin if (Day > 1) then Dec (Day) { уменьшите величину } else { это - начало месяца } if (Month > 1) then begin { последний день предшествующего месяца } Dec (Month); Day := DaysInMOnth; end else { начало января } begin { последний день прошлого года } Dec (Year); Month := 12; Day := DaysInMOnth; end; end; procedure TForm1.Button5Click(Sender: TObject); begin ADay.Decrease; Label4.Caption := ADay.GetText; end; procedure TForm1.Button6Click(Sender: TObject); begin ADay.Add(10); Label4.Caption := ADay.GetText; end; procedure TForm1.Button7Click(Sender: TObject); begin ADay.Subtract(10); Label4.Caption := ADay.GetText; end; procedure Date.Add (NumberOfDays: Integer); var n: Integer; begin for n:=1 to NumberOfDays do Increase; end; procedure Date.Subtract (NumberOfDays: Integer); var n: Integer; begin for n:=1 to NumberOfDays do Decrease; end; end. Результат работы измененной программы YearLeap показан на рисунке 7 . Компонент Panel, компонент SpeedButton. Компонент Panel можно использовать для визуальной группировки элементов, связанных друг с другом каким-либо обстоятельством. Панели можно придать приподнятый или опущенный вид, изменяя два ее свойства: BevelOuter и BevelInner. Выбрав для каждого из этих свойств значения bvNone, bvLowered, bvRaised, вы можете достигать различных рельефных визуальных эффектов. Регулировку визуального эффекта можно производить, задавая числовое значение для свойства BewelWidth. Основное назначение данного компонента заключается в размещении на нем других управляющих элементов . Используя свойство Align, можно определить расположение элемента на форме, не беспокоясь о расположении панели при изменении размеров формы. Во многих приложениях Windows имеется инструментальная линейка в верхней части окна и строка состояния в его нижней части. В зависимости от создателя приложения инструментальная линейка может называться по-разному, например SpeedBar или полоса управления. Инструментальная линейка, как бы ее ни называли, обычно содержит несколько маленьких кнопок, которые вы можете нажимать щелчком мыши, чтобы задавать команды или переключать опции включено и выключено. Иногда она может содержать комбинированный список, строку редактирования или некоторые другие управляющие элементы. Инструментальные линейки обычно могут быть помещены на форме в левой или правой части или использованы как комплект инструментальных средств (маленькое плавающее окно с массивом кнопок). Строка состояния обычно имеет одну или несколько областей с текстовым описанием текущего состояния программы. Вы можете использовать панель как область для отображения координат, времени, для показа выбранного шрифта или отображения всплывающих подсказок о том, что делать дальше, а также вывода сообщений об ошибках и т.д. Фактически вы определяете, что должно войти в строку состояния. Рассмотрим последовательно данные возможности. Группировка управляющих элементов с помощью панелей. Для создания инструментальной линейки или строки состояния в Delphi вы можете использовать компонент Panel, добавив в него несколько кнопок или других панелей, а можете использовать специальный компонент StatusBar . Компонент Panel можно рассматривать как инструмент для разбиения клиентской области на части и для группировки других компонентов. На панели можно размещать собственный текст, отображая, таким образом, последовательность действий пользователя. В основном панели используются для улучшения вида приложения за счет их трехмерного вида. В этом отношении Panel аналогична компоненту Bevel, хотя он имеет менее важную роль и обладает намного меньшими функциональными возможностями. Для инструментальной линейки используйте значение alTop, а для строки состояния — alBottom . Кроме других общепринятых свойств, компонент Panel может также обрабатывать всплывающие подсказки, используя свойства Hint и ShowHints . Всплывающая подсказка представляет собой короткое сообщение, отображаемое возле курсора, когда пользователь перемещает мышь над кнопкой инструментальной линейки. Они доступны не только на панелях. Каждая форма может иметь всплывающие подсказки для какого-либо компонента или для всех компонентов, которые входят в нее. Итак, после некоторой теоретической части начнем построение инструментальной линейки. Рассмотрим пример программы ToolBar, в которой кнопки, расположенные на панели, образуют инструментальную линейку. Использование кнопок позволит производить выравнивание текста в компоненте Label, а также изменять шрифт и стиль текста в данном компоненте.
Кнопка SpeedButton может иметь заголовок и значок, хотя обычно она имеет только графический элемент. Быстрые кнопки подобны командным кнопкам (т.е. компоненту Button ) и главным образом используются внутри диалоговых панелей. Они могут вести себя подобно командным кнопкам, чекбоксам или кнопкам опций (радио-кнопкам) и иметь растровые изображения для различных ситуаций. Однако существуют и важные технические различия между SpeedButton и обычными кнопками. Быстрые кнопки являются графическим элементом, они не имеют дескриптора окна (т.е., не используют ресурсы окон), не могут получать фокус, не участвуют в переборе клавишей Tab. Если вы просто выбираете компонент SpeedButton и помещаете его экземпляр на панель (инструментальную линейку), то в результате получите графическую командную кнопку. Для нее вы можете выбрать растровое изображение или ввести заголовок, хотя первое решение более распространено. Командные кнопки инструментальной линейки достаточно малы, их размер составляет 20 * 20 пикселей. Обычно, в таком ограниченном пространстве вы не сможете написать много текста. Несмотря на то, что значок маленький, он может сделать кнопку более выразительной. В нашем примере введите надписи для кнопок. На следующем занятии рассмотрим использование растровых изображений на кнопке. Программный код раздела implementation для данного примера приведен ниже. На рисунке 8 показан результат работы программы ToolBar . implementation {$R *.DFM} procedure TForm1.SpeedButton1Click(Sender: TObject); begin MessageBeep (0); end; procedure TForm1.SpeedButton2Click(Sender: TObject); begin Label1.Alignment := taLeftJustify; end; procedure TForm1.SpeedButton3Click(Sender: TObject); begin Label1.Alignment := taCenter; end; procedure TForm1.SpeedButton4Click(Sender: TObject); begin Label1.Alignment := taRightJustify; end; procedure TForm1.SpeedButtonBoldClick(Sender: TObject); begin if SpeedButtonBold.Down then Label1.Font.Style := [fsBold] else Label1.Font.Style := []; end; procedure TForm1.SpeedButtonItalicClick(Sender: TObject); begin if SpeedButtonItalic.Down then Label1.Font.Style := [fsItalic] else Label1.Font.Style := []; end; procedure TForm1.SpeedButtonUnderLineClick(Sender: TObject); begin if SpeedButtonUnderline.Down then Label1.Font.Style := [fsUnderline] else Label1.Font.Style := []; end; procedure TForm1.SpeedButtonBigClick(Sender: TObject); begin if SpeedButtonBig.Down then Label1.Font.Size := 24 else Label1.Font.Size := 12; end; end. Литература:
Владимир Скуратов (c) компьютерная газета © Компьютерная газета
|
|