Ver Mensaje Individual
  #23  
Antiguo 25-10-2018
TavoBran TavoBran is offline
Miembro
NULL
 
Registrado: oct 2018
Posts: 13
Reputación: 0
TavoBran Va por buen camino
Cita:
Empezado por juniorSoft Ver Mensaje
Cuando tienes la declaración de un procedimiento o función en una clase a esto es que se le conoce como método

Dentro de la clase solo tienes las cabeceras de los procedimientos o las funciones(métodos) que utilices, a estas cabeceras se le llaman Prototipos e indican que luego se van a implementar, la definición es como dice Roman

solo tienes que hacer lo siguiente

En la clase del formulario

Código:
TfrmEjecucion = class(TForm)
        ..........
     ..........
   private    
      procedure CrearEdits(Edits:TMatriz; MaxX, MaxY:integer);
      procedure LlenarEdits(Edits:TMatriz; MaxX, MaxY:integer);

   public
      .......
      ......
end;
Colocas el cursor encima de los métodos y le das a las teclas Ctrl + Shift + C para que cree el esqueleto de los métodos en la sección de implementation el entorno te crear algo como sigue:

Código:
procedure TfrmEjecucion.llenarEdits(var Edits: TArrEdits; MaxX, MaxY:integer);
begin

end;

procedure TfrmEjecucion.CrearEdits(var Edits: TArrEdits; MaxX, MaxY:integer);
begin

end;

end.
ahora solo tienes que copiar el código que esta en los procedimientos sueltos en sus correspondientes métodos.

Listo ya hice todo lo sugerido ya no me sale ese error pero ahora hay otro.
lo que pasa es que me sale error cuando llamo a los dos procedimientos el de LlenarEdits y CrearEdits

Código Delphi [-]

  CrearEdits(Matriz);  //[dcc32 Error] Ejecucion.pas(63): E2035 Not enough actual parameters
  llenarEdits(Matriz);  //[dcc32 Error] Ejecucion.pas(64): E2035 Not enough actual parameters

y mi codigo va asi:

Código Delphi [-]

unit Ejecucion;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.Menus;

type
  TMatriz = array of array of TEdit;
  TfrmEjecucion = class(TForm)
    Button1: TButton;
    Edt: TEdit;
    Panel1: TPanel;
    Panel2: TPanel;
    Button2: TButton;
    Button3: TButton;
    MainMenu1: TMainMenu;
    Volver1: TMenuItem;
    Button4: TButton;
    Label1: TLabel;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    procedure CrearEdits(Edits:TMatriz; MX, MY:integer);
    procedure LlenarEdits(Edits:TMatriz; MX, MY:integer);
  public
    { Public declarations }
  end;

var
  frmEjecucion: TfrmEjecucion;

implementation

{$R *.dfm}

procedure TfrmEjecucion.Button1Click(Sender: TObject);
var
  Matriz:TMatriz;
  MX, MY:integer;
begin
  if Trim(Edt.Text) = '' then
  begin
    ShowMessage('Debe escribir un número');
    Exit;
  end;
  //Grivera Desicion para que no sea tan grande la matriz
  if StrToInt(Edt.Text) >= 11 then
  begin
    ShowMessage('El valor tiene que ser igual o menor a 10');
    Edt.Clear;
  end
  else
  begin
    //Grivera Establece el valor de la matriz y de los TEdit
    MY := StrToInt(Edt.Text);
    MX := StrToInt(Edt.Text);
    SetLength(Matriz, MX, MY);
    Button1.Visible := False;
    Edt.Visible := False;
  end;
  CrearEdits(Matriz);
  llenarEdits(Matriz);
end;

procedure TfrmEjecucion.CrearEdits(Edits: TMatriz; MX, MY: integer);
var
   i,j : integer;
begin
  for i:=0 to MX-1 do
  begin
    for J:=0 to MY-1 do
    begin
      Edits[i,i] := TEdit.Create(Self);
      Edits[i,i].Text := '';
      Edits[i,i].Top := 21 * (i + 1);
      Edits[i,i].Left := 21 * (j + 1);
      Edits[i,i].Width := 20;
      Edits[i,i].Height := 20;
      Edits[i,i].AutoSize := False;
      Edits[i,i].Enabled := False;
      Edits[i,j].Parent := Panel1;
      Button3.Visible := True;
    end;
  end;
end;

procedure TfrmEjecucion.LlenarEdits(Edits: TMatriz; MX, MY: integer);
var
  i,j:integer;
begin
  for i := 0 to MX-1 do
  begin;
    for j := 0 to MY-1 do
    begin
      Edits[i,j].Text:=IntToStr(Random(100));
    end;
  end;
end;

end.

muchas gracias.
Responder Con Cita