- •12.Списки
- •Interface
- •Implementation
- •13.Модули
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Interface
- •Implementation
- •14.Таблицы
- •Interface
- •Implementation
- •15.Графика, отображение графиков функций
- •Interface
- •Implementation
- •Initialization
- •16.Графика, примитивы
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Initialization
- •17.Графика, растровые изображения и анимация
- •Interface
- •Implementation
- •Initialization
- •Interface
- •Implementation
- •18.Тестирование и отладка
- •19.Квадратное уравнение
- •Interface
- •20.Класс tThread
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Interface
- •Implementation
- •21.Класс tStream
- •Interface
- •Implementation
- •Initialization
- •Interface
- •Implementation
- •Initialization
- •22.Создание в Delphi кроссплатформенного приложения
Interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
EdCell: TEdit;
EdSum: TEdit;
SellAgree: TButton;
SummAgree: TButton;
Exit: TButton;
DecCol: TButton;
IncCol: TButton;
DecRow: TButton;
IncRow: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
procedure FormCreate(Sender: TObject);
procedure DecColClick(Sender: TObject);
procedure IncColClick(Sender: TObject);
procedure DecRowClick(Sender: TObject);
procedure IncRowClick(Sender: TObject);
procedure ExitClick(Sender: TObject);
procedure SellAgreeClick(Sender: TObject);
procedure StringGrid1DblClick(Sender: TObject);
procedure SummAgreeClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.ColCount:=6;
StringGrid1.RowCount:=4;
StringGrid1.Cells[0,0]:='Валюта';
StringGrid1.Cells[1,0]:='Курс рубля;
StringGrid1.DefaultColWidth:=78;
StringGrid1.Cells[2,0]:='Сумма выдачи';
StringGrid1.Cells[3,0]:='Комиссия, %';
StringGrid1.Cells[4,0]:='Комиссионные';
StringGrid1.Cells[5,0]:='Взнос, руб.';
StringGrid1.Cells[0,1]:='USA';
StringGrid1.Cells[0,2]:='FST';
StringGrid1.Cells[0,3]:='EUR';
StringGrid1.cells[1,1]:='31,5';
StringGrid1.cells[1,2]:='45';
StringGrid1.cells[1,3]:='32,1';
StringGrid1.cells[3,1]:='2';
StringGrid1.cells[3,2]:='2';
StringGrid1.cells[3,3]:='2';
Label4.Caption:='По состоянию на '+DateToStr(Date);
end;
procedure TForm1.DecColClick(Sender: TObject);
begin
if StringGrid1.ColCount>2 then StringGrid1.ColCount:=StringGrid1.ColCount-1;
end;
procedure TForm1.IncColClick(Sender: TObject);
begin
StringGrid1.ColCount:=StringGrid1.ColCount+1;
end;
procedure TForm1.DecRowClick(Sender: TObject);
begin
if StringGrid1.RowCount>2 then StringGrid1.RowCount:=StringGrid1.RowCount-1;
end;
procedure TForm1.IncRowClick(Sender: TObject);
begin
StringGrid1.RowCount:=StringGrid1.RowCount+1;
end;
procedure TForm1.ExitClick(Sender: TObject);
begin
Close;
end;
procedure TForm1.SellAgreeClick(Sender: TObject);
begin
StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row]:=EdCell.Text;
end;
procedure TForm1.StringGrid1DblClick(Sender: TObject);
begin
if (StringGrid1.Col=1) and (StringGrid1.Row>0)
then EdCell.Text:=StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row];
end;
procedure TForm1.SummAgreeClick(Sender: TObject);
var
ResVal, Komis:real;
i:byte;
S:string;
begin
with form1 do
for i:=1 to StringGrid1.RowCount-1 do
if (StrToFloat(StringGrid1.Cells[1,i])<>0) then
begin
Komis:=StrToFloat(EdSum.Text)/100*StrToFloat(StringGrid1.Cells[3,i]);
ResVal:=(StrToFloat(EdSum.Text)-Komis)/ StrToFloat(StringGrid1.Cells[1,i]);
str(Komis:0:2,s);
StringGrid1.Cells[4,i]:=s;
str(ResVal:0:2,s);
StringGrid1.Cells[2,i]:=s;
str(StrToFloat(EdSum.Text):0:2,s);
StringGrid1.Cells[5,i]:=s;
end;
end;
end.
В программе применены следующие методы:
FormCreate. Он при создании формы заносит начальные данные в таблицу по координатам ячеек ACol (номер столбца) и ARow (номер строки). Одельным ячейкам компонента StringGrid1 через свойство StringGrid.Cell [ACol, ARow] присваиваются текстовые значения, а свойству Caption метки Label4 значение текущего времени.
CellAgreeClick. Он данные из текстового "Редактора ячеек" EdCell при нажатии на кнопку SellAgree (ОК) заносит в таблицу по текущим координатам выделенной ячейки таблицы. Учтите, что данные заносятся, как текстовая информация.
StringGrid1DblClick. Он позволяет двойным щелчком мыши по ячейкам таблицы переносить данные из таблицы в окно "Редактора ячеек" EdCell для их дальнейшего быстрого редактирования. Например, при изменении курса или процента комиссионных. Доступ к координатам текущей ячейки обеспечивается с помощью свойств Col и Row компонента StringGrid1. Редактировать надо только курсы валют.
SumAgreeClick. С его помощью данные из текстового редактора "Сумма для конвертации" EdSum при нажатии на кнопку SumAgree (Принято) заносятся в таблицу по текущим координатам. Учтите, что данные воспринимаются редактором, как текстовая информация, а вычисления необходимо производить с числами.
Для изменения размеров таблицы используются свойства ColCount и RowCount. Следующие 4 метода увеличивают или уменьшают числа столбцов и строк в процессе выполнения программы щелчками (вызывают событие onClick) по кнопкам размеров таблицы:
Уменьшение числа столбцов TForm1.DecColClick.
Увеличение числа столбцов TForm1.IncColClick.
Уменьшение числа строк TForm1.DecRowClick.
Увеличение числа строк TForm1.IncRowClick.
Для завершения работы с программой использован метод ExitClick, при осуществлении которого закрывается основная форма. Дублируется кнопка закрытия окна Windows.
Запустить проект на выполнение и опробовать действие всех кнопок. Внести в EdSum сумму для конвертации и проконтролировать результат расчетов в соответствующих ячейках. Изменить курс валюты и проконтролировать, как это повлияет на результаты расчетов. Форма при исполнении имеет вид рис. 14 .7.
рис. 14.7. Интерфейс проекта в режиме выполнения
Выводы
Для создания таблиц используется компонент StringGrid (таблица строк).
Для управления используются компоненты Button (кнопка) и их обработчики событий.
Для пояснений используются компоненты Label (метка).
Для ввода данных используются компоненты Edit (однострочный редактор).
Кнопка “Выход” дублирует стандартную кнопку завершения приложения Windows.