Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LR_Delphi_2.doc
Скачиваний:
9
Добавлен:
18.09.2019
Размер:
1.91 Mб
Скачать

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.

В программе применены следующие методы:

  1. FormCreate. Он при создании формы заносит начальные данные в таблицу по координатам ячеек ACol (номер столбца) и ARow (номер строки). Одельным ячейкам компонента StringGrid1 через свойство StringGrid.Cell [ACol, ARow] присваиваются текстовые значения, а свойству Caption метки Label4 значение текущего времени.

  2. CellAgreeClick. Он данные из текстового "Редактора ячеек" EdCell при нажатии на кнопку SellAgree (ОК) заносит в таблицу по текущим координатам выделенной ячейки таблицы. Учтите, что данные заносятся, как текстовая информация.

  3. StringGrid1DblClick. Он позволяет двойным щелчком мыши по ячейкам таблицы переносить данные из таблицы в окно "Редактора ячеек" EdCell для их дальнейшего быстрого редактирования. Например, при изменении курса или процента комиссионных. Доступ к координатам текущей ячейки обеспечивается с помощью свойств Col и Row компонента StringGrid1. Редактировать надо только курсы валют.

  1. SumAgreeClick. С его помощью данные из текстового редактора "Сумма для конвертации" EdSum при нажатии на кнопку SumAgree (Принято) заносятся в таблицу по текущим координатам. Учтите, что данные воспринимаются редактором, как текстовая информация, а вычисления необходимо производить с числами.

  2. Для изменения размеров таблицы используются свойства ColCount и RowCount. Следующие 4 метода увеличивают или уменьшают числа столбцов и строк в процессе выполнения программы щелчками (вызывают событие onClick) по кнопкам размеров таблицы:

  • Уменьшение числа столбцов TForm1.DecColClick.

  • Увеличение числа столбцов TForm1.IncColClick.

  • Уменьшение числа строк TForm1.DecRowClick.

  • Увеличение числа строк TForm1.IncRowClick.

  1. Для завершения работы с программой использован метод ExitClick, при осуществлении которого закрывается основная форма. Дублируется кнопка закрытия окна Windows.

Запустить проект на выполнение и опробовать действие всех кнопок. Внести в EdSum сумму для конвертации и проконтролировать результат расчетов в соответствующих ячейках. Изменить курс валюты и проконтролировать, как это повлияет на результаты расчетов. Форма при исполнении имеет вид рис. 14 .7.

рис. 14.7. Интерфейс проекта в режиме выполнения

Выводы

  1. Для создания таблиц используется компонент StringGrid (таблица строк).

  2. Для управления используются компоненты Button (кнопка) и их обработчики событий.

  3. Для пояснений используются компоненты Label (метка).

  4. Для ввода данных используются компоненты Edit (однострочный редактор).

  5. Кнопка “Выход” дублирует стандартную кнопку завершения приложения Windows.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]