Пример 14.1.
- Запустить ИСР.
- Создать в ней новое приложение.
- Присвоить свойству Caption компонента Form1 значение Таблица конвертации.
- Сохранить модуль под именем prg_14_1_, а проект под именем prg_14_1.
- Установить на форме компоненты: однострочные редакторы Edit1 и Edit2, метки Label1 – Label3, кнопки Button1- Button7 (со страницы Standard), таблицу строк StringGrid1 (со страницы Additional). Компоненты расположить так:
- Задать следующие свойства компонент:
Компонент |
Caption (Надпись) |
Описание функций |
StringGrid1 |
Основная таблица | |
Edit1 |
Редактирование ячейки | |
Edit2 |
Ввод суммы | |
Label1 |
Редактор ячеек |
Поясняющая надпись |
Label2 |
Сумма для конвертации |
Поясняющая надпись |
Label3 |
Дата |
Текущая дата |
Button1 |
Изменить |
Принятие изменений |
Button2 |
Принять |
Принятие суммы и расчет |
Button3 |
< |
Уменьшение числа столбцов на 1 |
Button4 |
> |
Увеличение числа столбцов на 1 |
Button5 |
^ |
Увеличение числа строк на 1 |
Button6 |
v |
Уменьшение числа строк на 1 |
После установок интерфейс проекта примет вид
- Двойным щелчком по кнопкам в форме создать шаблоны обработчиков нажатия на кнопки.
- Создать шаблон процедуры создания формы.
- Написать коды процедур обработчиков.
Листинг модуля формы
unit Prg_14_1_;
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics,
Dialogs, StdCtrls, Grids;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
StringGrid1: TStringGrid;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{ TForm1 }
procedure TForm1.Button2Click(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(Edit2.Text)/
100*StrToFloat(StringGrid1.Cells[3,i]);
ResVal:=(StrToFloat(Edit2.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(Edit2.Text):0:2,s);
StringGrid1.Cells[5,i]:=s;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row]:=Edit1.Text;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if StringGrid1.ColCount >2 then StringGrid1.ColCount:=StringGrid1.ColCount-1;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
StringGrid1.ColCount:=StringGrid1.ColCount+1;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
StringGrid1.RowCount:=StringGrid1.RowCount+1;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
if StringGrid1.RowCount >2
then StringGrid1.RowCount:=StringGrid1.RowCount-1;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.ColCount:=6;
StringGrid1.RowCount:=4;
StringGrid1.DefaultColWidth:=90;
StringGrid1.Cells[0,0]:=’Валюта’;
StringGrid1.Cells[1,0]:=’Курс рубля’;
StringGrid1.Cells[2,0]:=’Выдача, руб.’;
StringGrid1.Cells[3,0]:=’Комиссия, %’;
StringGrid1.Cells[4,0]:=’Комисcия, руб’;
StringGrid1.Cells[5,0]:=’Взнос, руб.’;
StringGrid1.Cells[0,1]:=’USA’;
StringGrid1.Cells[0,2]:=’FST’;
StringGrid1.Cells[0,3]:=’EUR’;
StringGrid1.cells[1,1]:=’23′;
StringGrid1.cells[1,2]:=’35′;
StringGrid1.cells[1,3]:=’32′;
StringGrid1.cells[3,1]:=’2′;
StringGrid1.cells[3,2]:=’2′;
StringGrid1.cells[3,3]:=’2′;
Label3.Caption:=’По состоянию на ‘+DateToStr(Date);
end;
initialization
{$I prg_14_1_.lrs}
end.
Окно формы перед завершением программы:
Выводы
- Для создания таблиц используется компонент StringGrid (таблица строк).
- Для управления используются компоненты Button (кнопка) и их обработчики событий.
- Для пояснений используются компоненты Label (метка).
- Для ввода данных используются компоненты Edit (однострочный редактор).
- Кнопка “Выход” дублирует стандартную кнопку завершения приложения Windows.