Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.09.2019, 21:09   #1
nirasik
Новичок
Джуниор
 
Регистрация: 17.09.2019
Сообщений: 1
По умолчанию помогоите с задачей (с StringGrid) Delphi

Представить в виде таблицы итоги деятельности четырех агентов фирмы по сбыту n-й продукции. Исходной информацией считать фамилии агентов и объем продаж по кварталам. Рассчитать объем продаж каждого агента за год и вывести фамилию агента, имеющего наилучший результат.

я начал делать,но не могу понять как вычислить максимальное значение и вывести фамилию
Код:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Grids, Buttons;

type
TForm1 = class(TForm)
Panel1: TPanel;
StringGrid1: TStringGrid;
lbl1: TLabel;
btn3: TBitBtn;
btn1: TBitBtn;
Edit1: TEdit;
Edit2: TEdit;
procedure btn1Click(Sender: TObject);
procedure FormActivate(Sender: TObject);

procedure StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer;
const Value: String);



private
{ Private declarations }
public
{ Public declarations }
end;
Const nn=20; mm=5;

var
Form1: TForm1;
n: integer;
f: array [1..nn] of string [30];
a: array [1..nn, 1..mm] of real;
ss: array [1..nn] of real;


implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
begin
n:= n+1;
f[n]:= Edit1.Text;

StringGrid1.Cells[0,n]:=f[n];
Edit1.SetFocus;
Edit1.Clear;

end;


procedure TForm1.FormActivate(Sender: TObject);
begin
n:=0;
Edit1.SetFocus;
With StringGrid1 do
Begin
Cells[0,0]:= 'Агент';
Cells[1,0]:= 'I квартал';
Cells[2,0]:= 'II квартал';
Cells[3,0]:= 'III квартал';
Cells[4,0]:= 'IV квартал';
Cells[5,0]:= 'объем продаж за год ';
End;
end;





procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
ARow: Integer; const Value: String);

var
b: real; j:byte;
i: Integer ;

begin

With StringGrid1 do

Begin
If Value = ' ' then Exit;
Try b:=StrToFloat(Value)
Except ShowMessage('Не верный символ! '); b:=0;
end;



Cells[ACol,ARow]:= Value;
a[ARow,ACol]:=b;

ss[ARow]:=0;
for j:=1 to 4 do ss[ARow]:=ss[ARow] + a[ARow,j];
ss[ARow]:= ss[ARow]+a[ARow,j];

Cells[5,ARow]:= FormatFloat('#0.##', ss[ARow]);

End;

end;

end.
nirasik вне форума Ответить с цитированием
Старый 18.09.2019, 01:50   #2
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Первое и самое главное замечание к коду.
Не делайте никаких вычислений в обработчике OnSetEditText! Он не для того предназначен.
Можете в нём проверять валидность введённого значения, но не более. Все вычисления/расчёты делайте по нажатию кнопки "Рассчитать/Вычислить" после введения всех необходимых данных для этих вычислений.
northener вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПОМОГОИТЕ ЧТО ЗА ОШИБКИ???? rAMEO Общие вопросы Delphi 2 21.12.2014 12:41
Непонятки с задачей (Delphi) geranton Помощь студентам 13 24.03.2012 20:27
Помогоите пожалуйста с портом strange Помощь студентам 1 25.04.2009 02:09
помогите с задачей на Delphi Soilwork Помощь студентам 7 23.04.2008 19:07
помогоите с паскалем Geniuss Помощь студентам 4 26.01.2008 21:23