|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Как исключить из подсчета FixedCols
Подскажите новичку, есть два массива, которые вводятся вручную StringGrid1 и обрабатываются данные с переносом в другой StringGrid2. Загвоздка в том что при подсчете получается что в расчет берутся также значения из FixedCols, а это мне не надо.
вот код Код:
unit metrologiya; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Button1: TButton; StringGrid1: TStringGrid; StringGrid2: TStringGrid; Label2: TLabel; procedure Button1Click(Sender: TObject); procedure StringGrid1KeyPress(Sender: TObject; var Key: Char); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var Form1: TForm1; SG1 : Array[1..6,1..6] Of real; SG2 : Array[1..5] Of real; i, j: integer; s:real; begin For i:=1 To 6 Do For j:=1 To 6 Do If (StringGrid1.Cells[j-1,i-1]='') Then SG1[i,j] := 0 Else SG1[i,j] := StrToFloat(StringGrid1.Cells[j-1,i-1]); For i:=1 To 6 Do Begin S:=0; for j:=1 to 6 do begin S:=s+SG1[i,j]; end; SG2[i]:=S/5; End; For i:=1 To 5 Do StringGrid2.Cells[0,i-1] := FloatToStr(SG2[i]) end; procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char); begin case Key of #8,'0'..'9' : ; #13: if StringGrid1.Col < StringGrid1.ColCount - 1 then StringGrid1.Col := StringGrid1.Col + 1; '.',',': begin if Key <> DecimalSeparator then Key := DecimalSeparator; if Pos(StringGrid1.Cells[StringGrid1.Col,0],DecimalSeparator) <> 0 then Key := Chr(0); end; '-': if Length(StringGrid1.Cells[StringGrid1.Col,0]) <> 0 then Key := Chr(0); else key := Chr(0); end; end; procedure TForm1.FormCreate(Sender: TObject); //тут описываются строки, вот эти значения 125,625,1250,1875,2375 и плюсуются к вводимым значениям begin with StringGrid1 do begin FixedCols:=1;FixedRows:=0; //ColCount:=5; Cells[0,0]:='125'; Cells[0,1]:='625'; Cells[0,2]:='1250'; Cells[0,3]:='1875'; Cells[0,4]:='2375'; end; end; end. Последний раз редактировалось Admin, 13.06.2013 в 18:07. |
#2
|
|||
|
|||
Код:
StringGrid1.Cells[j-1+StringGrid1.FixedRows,i-1+StringGrid1.FixedCols] |
#3
|
|||
|
|||
и куда вставить?
|
#4
|
|||
|
|||
тьфу , понял
|
#5
|
|||
|
|||
эээ. чето не получилось, все таки подскажите в какое местов в коде надо поставить эту запись?
|
#6
|
|||
|
|||
Код:
procedure TForm1.Button1Click(Sender: TObject); var Form1: TForm1; SG1 : Array[1..6,1..6] Of real; SG2 : Array[1..5] Of real; i, j: integer; s:real; begin For i:=1 To 6 Do For j:=1 To 6 Do If (StringGrid1.Cells[j-1,i-1]='') Then SG1[i,j] := 0 Else SG1[i,j] := StrToFloat(StringGrid1.Cells[j-1,i-1]); вот сюда я вставил For i:=1 To 6 Do Begin S:=0; for j:=1 to 6 do begin S:=s+SG1[i,j]; end; SG2[i]:=S/5; End; в таком варианте мне выдало ошибку что то на счет float я так понимаю fixedcols может быть только типа integer Последний раз редактировалось Admin, 13.06.2013 в 18:07. |