Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: StringGrid
Показать сообщение отдельно

Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Хорошо, пробую.
Есть форма на ней компоненты StringGrid и 2 кнопки.
При нажатии на одну кнопку в компонент StringGrid загружаются данные из таблицы excel с телефонами и суммами потраченными при разговоре с этим номером. По идее при нажатии на вторую кнопку, программа должна из всего списка номеров выбрать определенные номера телефонов и сложить их суммы переговоров и результат отобразить в label. Далее могу написать код всей программы:

unit Unit1;

interface

uses
Windows, Messages, Math, ComObj, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleServer, ExcelXP, StdCtrls, Buttons, Grids;

type
TForm1 = class(TForm)
st1: TStringGrid;
btn1: TBitBtn;
lbl1: TLabel;
btn2: TButton;
lbl2: TLabel;
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormShow(Sender: TObject);
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
Excel: Variant;

implementation

{$R *.dfm}

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
try
Excel.Quit;
Excel:=Unassigned;
except
end;
CanClose:=True;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
Excel:=CreateOleObject('Excel.Application');
Excel.Application.WorkBooks.Add('c:\Temp\1.xls');
st1.Cells [0,0]:= 'Телефон:';
st1.Cells [1,0]:= 'Сумма:';

end;

procedure TForm1.btn1Click(Sender: TObject);
var
i,RowsCount : Integer;
begin
RowsCount := excel.ActiveSheet.UsedRange.Rows.Count;
for i:= 4 to RowsCount do
begin
st1.RowCount := RowsCount+1;
st1.Cells[0,i]:= Excel.cells[i,3].Value;
st1.Cells[1,i]:= Excel.cells[i,8].Value;
end;
end;


procedure TForm1.btn2Click(Sender: TObject);
var
summ: Real;
i: Integer;
begin
for i := 4 to St1.RowCount-1 do
begin

Summ := summ + StrTofloat(St1.Cells[1, i]);
end;
summ:=RoundTo(summ,-2);
lbl2.Visible := True;
Lbl2.Caption := FloatToStr(Summ);
end;


end.

так считает сумму по всем номерам

Отправлено: 15:01, 31-05-2015 | #5

Название темы: StringGrid