Recent

Author Topic: Problemas con el Stringgrid  (Read 2183 times)

e_nigma

  • New member
  • *
  • Posts: 8
Problemas con el Stringgrid
« on: December 28, 2024, 12:34:31 pm »
Hola, estoy rellenando un stringgrid con los datos de un array bidimensional de enteros y hasta tres cuartas partes lo hace bien. Luego me lo rellena con unos valores raros. He comprobado los valores originales en el array y son correctos. Es en la conversión. Debo estar haciendo algo mal pero no lo encuentro, ¿podéis echarme una mano? El código de la unidad es el siguiente:
unit Unit2;

{$mode ObjFPC}{$H+}

interface

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

type
    ciclos = array [1..20 , 1..25] of integer;

    { TForm2 }

  TForm2 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Label1: TLabel;
    StringGrid1: TStringGrid;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure aleatorio(var ciclo: ciclos);
    procedure presenta(var ciclo: ciclos);
    procedure StringGrid1Click(Sender: TObject);
  end;

var

Form2: TForm2;
ciclo: ciclos;
Grid: TStringGrid;

implementation

{$R *.lfm}
{ TForm2 }



procedure TForm2.Button1Click(Sender: TObject);
begin
  Label1.Caption:='General';
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
  Label1.Caption:='Cambio clave';
end;

procedure TForm2.Button3Click(Sender: TObject);
begin
    Label1.Caption:='Emergencia 1';
end;

procedure TForm2.Button4Click(Sender: TObject);
begin
  Label1.Caption:='Emergencia 2';
end;

procedure TForm2.Button5Click(Sender: TObject);
begin
  Label1.Caption:='Emergencia 3';
end;
procedure TForm2.Button6Click(Sender: TObject);
begin
  Label1.Caption:='Generacion aleatoria';
  aleatorio(ciclo);
  presenta(ciclo);
end;

procedure TForm2.Button7Click(Sender: TObject);
begin
          Label1.Caption:='Edicion';
end;
procedure TForm2.Button8Click(Sender: TObject);
begin
          Label1.Caption:='Graba';
end;

procedure TForm2.FormCreate(Sender: TObject);
begin

end;
procedure Tform2.aleatorio(var ciclo: ciclos );

var
   i, j, z: integer;
begin
  Randomize;
  for i:=1 to 20 do
      begin
      for j:= 1 to 25 do
          begin
             ciclo[i,j]:= random(520);
          end
      end;
end;
procedure Tform2.presenta(var ciclo:ciclos);
var
   i, j: integer;
   z: longint;
begin
  with Grid do
  begin
       for i:=1 to 25 do
           begin
           for j:=1 to 20 do
               begin
                    z:= ciclo[i,j];
                    StringGrid1.Cells[j, i] :=Inttostr(z);
               end;
           end;
  end;
end;

end.
         
Gracias de antemano.     

Edson

  • Hero Member
  • *****
  • Posts: 1319
Re: Problemas con el Stringgrid
« Reply #1 on: December 30, 2024, 04:52:05 pm »
Hola.

Veo que estás accediendo mal a tu arreglo ciclos[] en  Tform2.presenta(). Fíjate bien el rango que le pones para "i" y para "j". Esos rangos no coinciden con las dimensiones que le has dado a "ciclos".
Lazarus 2.2.6 - FPC 3.2.2 - x86_64-win64 on Windows 10

e_nigma

  • New member
  • *
  • Posts: 8
Re: Problemas con el Stringgrid
« Reply #2 on: January 07, 2025, 11:42:46 am »
Hola, en primer lugar agradecer tu respuesta y pedirte disculpas por el retraso en contestar. He estado unos días fuera. Le cambié el formato de los índices porque leí que el Stringgrid greadaba como primer iíndice la columna y como segundo la fila. Probaré lo que me dices.
Gracias otra vez y un saludo,
JR

 

TinyPortal © 2005-2018