Разработка приложений в Delphi. Понятие событий.
Разработка приложений в Delphi состоит из двух этапов:
-создание интерфейса приложения;
- определение функциональности приложения.
Интерфейс приложения определяет способ взаимодействия пользователя и приложения, т.е. внешний вид формы при выполнении приложения и то, каким образом пользователь управляет приложением.
Функциональность приложения определяется процедурами, которые выполняются при возникновении определенных событий.
Простейшее приложение представляет собой каркас(заготовку), обеспечивающее все необходимое для каждого приложения, и является равноправным приложением Windows.
· onClick- событие нажатия, возникающее при щелчке(левой) кнопкой мыши на компоненте или при других способах нажатия на управляющий элемент;
· onMouseDown – событие, возникающее при нажатии любой кнопки мыши;
· onMouseUp – событие, возникающее при отпускании кнопки мыши;
· onDblClick - событие, возникающее при двойном нажатии(левой) кнопки мыши;
· onKeyDown – событие, возникающее при нажатии клавиши на клавиатуре;
· onKeyUp – событие, возникающее при отпускании клавиши на клавиатуре;
· onCreate - событие, возникающее один раз при создании формы;
· onClose – событие, возникающее призакрытии формы.
Обработчик событий для компонента выбирается в ObjectInspector во вкладке Events или двойным щелчком левой кнопки мыши на этом компоненте.
1.2
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
lbl1: TLabel;
lbl2: TLabel;
btn1: TButton;
edt1: TEdit;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject);
varr,s:Real;
begin
r:=StrToFloat(edt1.text);
s:=pi*sqr(r);
lbl2.Caption:='Площадькругаравна'+
FloatToStrF(s,ffGeneral,7,2)
end;
end.
1.3
3.2 Линейные алгоритмы
Начало |
y |
a=1.3; b=2,4; x=5.5; k=2 |
Y=ln((x+b)/2)*sin SQRT(exp (k*ln (a))+exp(2.1*ln(b))*x |
y |
конец |
Алг Нахо-д у
Пост a=1.3; b=2,4; x=5.5; k=2
Цел y
Нач
Y:=ln((x+b)/2)*sin SQRT(exp (k*ln (a))+exp(2.1*ln(b))*x
Вывод у
Кон
8.y= – eI P tg(x+a) a=1.4 x=1.3 i=4
Начало |
a=1.4 x=1.3 p=3.14 i=4 p |
у |
y:=(ln(x)/sin x)-( exp( I *p*sin (x+a)/cos(x+a))) |
y |
конец |
Алг Нахо-д у
Пост a=1.4 x=1.3 i=4
Цел у
Нач
y:=(ln(x)/sin x)-( exp( I *p*sin (x+a)/cos(x+a)))
вывод у
кон
9.y=k sin(a+ex+b)2 k=3; a=0.3; x=2.6; b=1.5
Алгоритм
Начало |
k=3; a=0.3; x=2.6; b=1.5 |
у |
y:=k*SQR(sin(a+(exp((x+b)*ln(e)))) ) |
y |
конец |
Алг Нахо-д у
Пост k=3; a=0.3; x=2.6; b=1.5
Цел у
Нач
y:=k*SQR(sin(a+(exp((x+b)*ln(e)))) )
вывод у
кон
Работа со списками
Компоненты ListBox и ComboBox отображают списки строк. Они отличаются друг от друга прежде всего тем, что ListBox только отображает данные и позволяет пользователю выбрать из них то, что ему надо, a ComboBox позволяет также редактировать данные. Кроме того различается форма отображения списков. ListBox отображает список в раскрытом виде и автоматически добавляет в список полосы прокрутки, если все строки не помещаются в окне компонента. ComboBox позволяет отображать список как в развернутом виде, так и в виде выпадающего списка, что обычно удобнее, так как экономит площадь окна приложения .
Класс TListBox является наследником класса TWinControl и имеет собственные свойства, представленные в таблице
Основные свойства ListBox | ||
Свойство | Тип | Описание |
AutoComplete | Boolean | Определяет, должен ли список реагировать на нажатие клавиш таким образом, чтобы находить и выделить совпадающий элемент |
BorderStyle | TBorderStyle | Определяет, должна или нет быть рамка вокруг списка. Допустимые значения: bsNone, bsSingle |
Columns | Integer | Определяет количество колонок, видимых без горизонтальной прокрутки |
Count | Integer | Указывает на количество элементов списка |
ItemIndex | Integer | Определяет порядковый номер выбранного элемента, начиная с 0. Если не выбрано ни одного, то устанавливается в -1 |
Items | TStrings | Содержит строки списка |
MultiSelect | Boolean | Определяет, допустимо или нет производить множественный выбор |
SelCount | Integer | Указывает на количество выбранных элементов |
Selected | arrayofBoolean | Определяет, выбран или нет тот или иной элемент списка |
Sorted | Boolean | Определяет, должен ли список быть отсортирован |
TopIndex | Integer | Определяет порядковый номер элемента, который является самым верхним в видимой части списка |
Пример компонентов выбора из списков | |
Основное свойство обоих компонентов, содержащее список строк, — Items, имеющее рассмотренный ранее тип TStrings. Заполнить его во время проектирования можно, нажав кнопку с многоточием около этого свойства в окне Инспектора Объектов. Во время выполнения работать с этим свойством можно, пользуясь свойствами и методами класса TStrings - Clear, Add и другими.
В компоненте ListBox имеется свойство MultiSelect, разрешающее пользователю множественный выбор в списке (на рисунке это свойство установлено в true в среднем верхнем списке). ЕслиMultiSelect = false (значение по умолчанию), то пользователь может выбрать только один элемент списка. В этом случае можно узнать индекс выбранной строки из свойства ItemIndex, доступного только во время выполнения. Если ни одна строка не выбрана, то ItemIndex = -1. Начальное значение ItemIndex невозможно задать во время проектирования. По умолчаниюItemIndex = -1. Это означает, что ни один элемент списка не выбран. Если вы хотите задать этому свойству какое-то другое значение, т.е. установить выбор по умолчанию, который будет показан в момент начала работы приложения, то сделать это можно, например, в обработчике события OnCreate формы, введя в него оператор вида
ListBox1.ItemIndex:=0;Если допускается множественный выбор (MultiSelect = true), то значение ItemIndex соответствует тому элементу списка, который находится в фокусе. При множественном выборе проверить, выбран ли данный элемент, можно проверив свойство Selected[Index: Integer] типа Boolean.
На способ множественного выбора при MultiSelect = true влияет еще свойство ExtendedSelect. Если ExtendedSelect = true, то пользователь может выделить интервал элементов, выделив один из них, затем нажав клавишу Shift и переведя курсор к другому элементу. Выделить не прилегающие друг к другу элементы пользователь может, если будет удерживать во время выбора нажатой клавишу Ctrl. Если же ExtendedSelect = false, то клавиши Shift и Ctrl при выборе не работают.
Свойство Columns определяет число столбцов, в которых будет отображаться список, если он не помещается целиком в окне компонента ListBox (в среднем верхнем списке на рисунке свойство Columns равно 2).
Свойство Sorted позволяет упорядочить список по алфавиту. При Sorted = true новые строки в список добавляются не в конец, а по алфавиту.
Свойство Style, установленное в lbStandard (значение по умолчанию) соответствует списку строк. Другие значения Style позволяют отображать в списке не только текст, но и изображения.
Загрузка строк из файла.
Считывание происходит из простого текстового файла. Каждая строка - новая запись. Это может быть перечень чего либо для нашего компонента ListBox/ComboBox. Лично я накопал эту процедуру когда делал мини программу для запуска команды mstsc и конечно же обращаться к компилятору для изменения списка серверов не хотелось.
ListBox1.Items.LoadFromFile('list.txt');
или
ComboBox1.Items.LoadFromFile('list.txt');
где 1 - номер нашего компонента, а list.txt - файл загрузки. Эту процедуру удобно прописать в событие OnCreate формы, для загрузки файла сразу при запуске программы.
Сохранение строк в файл.
Похожая процедура существует и для сохранения строк в файл
ListBox1.Items.SaveFromFile('list.txt');
она может быть полезна в тандеме со следующими. Далее для ComboBox по аналогии.