Witajcie,
Problem jaki mnie bardzo frasuje dotyczy wczytywania macierzy z pola Edit do tablicy dwuwymiarowej i pokazywania na liscie StringGrid. W jaki sposob mozna to zrobic w petli, tzn.
- wczytuje do pola Edit1 rzad macierzy n
- kontrola przechodzi na okienko Edit2
- przez caly czas Editem wczytuje wartosc poszczegolnych komorek macierzy
W konsoli mozna to rozwiazac znakomicie, przy uzyciu funkcji Read, natomiast w trybie graficznym sprawia mi to problem.
Myslalem, ze mozna to zrobic w petli, niestety nie wyszlo:
for i:=1 to n+1 do
for j:=1 to n+1 do
begin
macierz[i][j]:=wartosc;
end;
Ogolnie rzecz biorac moj program na razie wyglada tak:
var
Form1: TForm1;
n,i,j: integer;
macierz: array of array of Extended;
wartosc: extended;
implementation
{$R *.dfm}
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var wartosc: Extended;
kod,c,b: integer;
begin
if Key=vk_return
then
begin
val(Edit1.Text,n,kod);
if kod<>0
then begin
if Edit1.Text='' then ShowMessage('Costam')
else ShowMessage('Blad duzo wieksz!');
Edit1.SetFocus;
Edit1.SelectAll;
end
else
begin
StaticText1.Caption:='rzad = ' + IntToStr(n);
Edit1.Enabled:=False;
SetLength(macierz,n+1,n+1); ShowMessage('tablica utworzna');
StringGrid1.ColCount:=n+1;
StringGrid1.RowCount:=n+1;
for c:=1 to n+1 do
for b:=1 to n+1 do
StringGrid1.Cells[c,b]:='0';
Edit2.Enabled:=True;
Edit2.SetFocus;
end;
end;
end;
procedure TForm1.Edit2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var kod: integer;
begin
if Key = vk_return
then
val(Edit2.Text,wartosc,kod);
if kod<>0
then
begin
if Edit2.Text=''
then ShowMessage('Pusciutko')
else ShowMessage('Liczba nie jest liczba :)');
Edit2.Clear;
Edit2.SetFocus;
end
else
begin
for i:=1 to n+1 do
for j:=1 to n+1 do
begin
macierz[i][j]:=wartosc;
Edit2.SelectAll;
Edit2.SetFocus;
end;
end;
end;
Gdyby ktos znal jakies lekartswo prosze o pomoc! Z gory dzieki!!! :)