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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2012, 19:16   #1
Manhunt714
Пользователь
 
Регистрация: 30.05.2011
Сообщений: 21
Печаль Делфи (симплекс)

есть StringGrid 8х5 заполненный значениями, нужно по нажатию кнопки решать каждую ячейку по формуле, и перезаписывать снова в этот же StringGrid.
формула такая: Новое значение:= старое значение - ((значение ключевого столба)*(значение ключевой строки))/разрешающий элемент.
разрешающий элемент=это перекрестие ключевого столба и строки.
Здесь у меня находит ключевую строку, столбец.
знаю что всё в кашу, и в 1 процедуре.. но по другому не получается, помогите с выше сказанным.

procedure TForm2.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var X,v,a1,aa1,aaa1,a2,aa2,aaa2,a3,aa3, aaa3,min: Real;
i:integer;
begin
a:=1;
min:=65000;

for i:=1 to 7 do
begin
v:=StrToFloat(stringgrid1.Cells[i, 4]);
if a<abs(v) then begin
a:=v;
a1:=strtofloat(stringgrid1.Cells[1,1]);
aa1:=strtofloat(stringgrid1.Cells[i,1]);
aaa1:=a1/aa1;
a2:=strtofloat(stringgrid1.Cells[1,2]);
aa2:=strtofloat(stringgrid1.Cells[i,2]);
aaa2:=a2/aa2;
a3:=strtofloat(stringgrid1.Cells[1,3]);
aa3:=strtofloat(stringgrid1.Cells[i,3]);
aaa3:=a3/aa3;

if aaa1<aaa2 then min:=aaa1
else min:=aaa2;
if min>aaa3 then min:=aaa3;
end;
end;
if min=aaa1 then
begin
if ((acol=1)and (arow=1))or((acol=2)and(arow=1))or( (acol=3)and(arow=1))or ((acol=4)and(arow=1))or((acol=5)and (arow=1))or((acol=6)and(arow=1))or( (acol=7)and(arow=1)) then
StringGrid1.Canvas.Brush.Color := cllime;
end
else
if min=aaa2 then begin
if ((acol=1)and (arow=2))or((acol=2)and(arow=2))or( (acol=3)and(arow=2))or ((acol=4)and(arow=2))or((acol=5)and (arow=2))or((acol=6)and(arow=2))or( (acol=7)and(arow=2)) then
StringGrid1.Canvas.Brush.Color := cllime;
end
else
if min=aaa3 then begin
if ((acol=1)and (arow=3))or((acol=2)and(arow=3))or( (acol=3)and(arow=3))or ((acol=4)and(arow=3))or((acol=5)and (arow=3))or((acol=6)and(arow=3))or( (acol=7)and(arow=3)) then
StringGrid1.Canvas.Brush.Color := cllime;
end;

for i:=1 to 7 do
with StringGrid1 do
begin
try
X:=StrToFloat(Cells[i, 4]);
if x=abs(a) then begin
if ((acol=i)and (arow=4))or((acol=i)and(arow=3))or( (acol=i)and(arow=2))or ((acol=i)and(arow=1)) then
StringGrid1.Canvas.Brush.Color := cllime;
StringGrid1.Canvas.Font.Color := clred;
end;
except
end;
Canvas.FillRect(Rect);
Canvas.TextOut(Rect.Left+2, Rect.Top+2, Cells[ACol, ARow]);
end;
end;

я так думаю надо значения в отедельный двумерный массив записывать изначально, но как это сделать, не соображу
Manhunt714 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Симплекс-метод на делфи NoTimeToCry Помощь студентам 3 02.06.2013 21:22
Симплекс L3zh1Y Помощь студентам 0 12.02.2012 19:45
Симплекс-метод (с++) $ereg@ Помощь студентам 0 02.01.2012 21:57
Симплекс метод kobe8241 Помощь студентам 0 01.12.2011 15:14
симплекс-метод zajigalka Помощь студентам 1 03.05.2010 20:58