Losowanie liczb do tablicy.

0

Witam, moim zadaniem jest stworzenie programu który:

  • zawiera tabele 10x10
  • posiada button do automatycznego wypełnienia tej tabeli liczbami binarnymi (czyli 0 lub 1) <-- za każdym kliknięciem wypełnia od nowa w inny sposób
  • posiada wyszukiwarke ciągu liczb w pionie/poziomie/po przekątnej (maxymalnie 10), po wyszukaniu ich zamienia je w tabeli na gwiazdki albo pogrubia je, cokolwiek

Moje pytanie:

  1. W jaki sposób mogę dostać się do mojej aktualnej tabeli którą stworzyłem za pomocą "TStringGrid" ? Chciałbym po prostu w jakis sposób uruchomić ten button "Losuj Liczby". Myślałem aby każda komórka w tabeli miała swój indeks w formie tabeli Array. [0][0], [0][1] itd. Potem łatwiej będzie przeszukać taką tabele.

Proszę o wsparcie, załączam screena który obrazuje moją aplikacje i aktualny jej stan:

0

StringGrid ma właściwość Cells

0
 
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Grids,
  StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    Label2: TLabel;
    szukaj: TEdit;
    StringGrid1: TStringGrid;
    procedure Button1Click(Sender: TObject);
    procedure Label2Click(Sender: TObject);
    procedure szukajChange(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;
  tablica: array[0..9,0..9] of integer;
  i,j: integer;

implementation

{$R *.lfm}

{ TForm1 }




procedure TForm1.szukajChange(Sender: TObject);
begin

end;

procedure TForm1.Label2Click(Sender: TObject);
begin

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
      randomize;
      for i:=0 to 9 do
          for j:=0 to 9 do
          begin
            tablica[i][j]:=random(1);
            StringGrid1.Cells[i,j] := tablica[i][j];
          end;
end;





begin

end.

Błąd w załączniku, proszę o pomoc jak dokonać tej konwersji (chyba z longint na ansistring?)
Rozchodzi o się o błąd w tej linii:

 StringGrid1.Cells[i,j] := tablica[i][j];      
0

Zrobiłem:

  StringGrid1.Cells[i,j] := IntToStr(tablica[i][j]);   

Kieruje kolejne pytanie:

Jak zmienić w moim kodzie, aby po znalezieniu pogrubiał czcionke i zmieniał jej kolor na czerwony?

for i:=0 to 9 do
            for j:=0 to 9 do
            begin
              if IntToStr(tablica[i][j])=k[1] then StringGrid1.Cells[i,j].Canvas.Font.Color := clBlue;   <--- TUTAJ NIE WIEM, help!

            end;       
 

Dziękuje

0

Proszę o pomoc... Problem przy zmianie Caption Label przez procedure:

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Grids,
  StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    szukaj: TEdit;
    StringGrid1: TStringGrid;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Label2Click(Sender: TObject);
    procedure szukajChange(Sender: TObject);

    procedure brak_znakow;
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;
  tablica: array[0..9,0..9] of integer;
  i,j,spr: integer;
  k: string;

implementation

{$R *.lfm}



{ TForm1 - moj program }

procedure TForm1.szukajChange(Sender: TObject);
begin

end;

procedure TForm1.Label2Click(Sender: TObject);
begin

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
      randomize;
      for i:=0 to 9 do
          for j:=0 to 9 do
          begin
            tablica[i][j]:=random(2);
            StringGrid1.Cells[i,j] := IntToStr(tablica[i][j]);
          end;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
     k:=szukaj.Text;

     if length(k)=0 then brak_znakow;

     {if length(k)=1 then jeden_znak(); }


end;







{Funkcje glowne}

procedure brak_znakow;
begin
     Label3.Caption := 'Prosze o wpisanie odpowiednich znakow (0 lub 1)';
end;




{function jeden_znak();

         for i:=0 to 9 do
            for j:=0 to 9 do
            begin
              if IntToStr(tablica[i][j])=k[1] then StringGrid1.Canvas.Font.Color := clBlue;

                 {sprawdzenie czy poziomo_lewo
                 if tablica[i-1][j]=k[2] then poziomo_lewo(i,j);   }

            end;     }







{Funkcje wyszukiwania w roznych kierunkach}

function poziomo_lewo(a, b : integer) : Integer;
begin

end;

end.

 
2

Koniecznie poczytaj kurs z podstawami. Ponieważ bez nich nie wiesz i nie myślisz w ogóle co robisz. Procedura brak_znakow nie jest u Ciebie częścią TForm1, która zawiera Label3. Dlatego jej "nie widzi". Rozwiązanie to umieścić procedurę jako element klasy TForm1 albo odwołać się do Form1.Label3....

1 użytkowników online, w tym zalogowanych: 0, gości: 1