Losowanie liczb do tablicy.

Odpowiedz Nowy wątek
2014-12-28 13:45
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:

  • 1.jpg (0,36 MB) - ściągnięć: 70

Pozostało 580 znaków

2014-12-28 13:52
0

StringGrid ma właściwość Cells


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2014-12-28 14:26
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];      
  • 2.jpg (0,03 MB) - ściągnięć: 56
edytowany 1x, ostatnio: xavi_sof, 2014-12-28 14:27

Pozostało 580 znaków

2014-12-28 14:30
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

Pozostało 580 znaków

2014-12-28 16:14
0

http://stackoverflow.com/ques[...]center-text-stringgrid-delphi


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2014-12-30 10:40
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.
 
  • blad.png (0,1 MB) - ściągnięć: 109

Pozostało 580 znaków

2014-12-30 21:41
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....


edytowany 1x, ostatnio: olesio, 2014-12-30 21:41

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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