![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
juniorSoft esta muy buena esa idea pero yo quiero utilizar una matriz dinamica y como veo en tu ejemplo es estatica ya que tu le pones el valor en max, como hago para que esa variable const no sea constante si no que el usuario la defina por medio de un edit.
no se si me hice entender. gracias por vuestra ayuda. |
|
#2
|
||||
|
||||
|
No hay gran problema con eso, con que sea estática, pues tú mismo fijaste un límite máximo. Puedes declarar la matriz con las dimensionaes máximas y cuando el usuario escoja el número de celdas (que deberá ser menor que el máximo) sólo creas ese número de componentes quedando el resto de entradas en nil.
De todas formas, si quieres que sea diinámica, tampoco hay problema. Declara un tipo de datos:
y usas SetLength para definir las dimensiones según la elección del usuario. // Saludos |
|
#3
|
|||
|
|||
|
roman si eso yo lo defino como me dices solo que tengo otra duda
este es mi codigo
pero me genera dos errores que son al momento de crear los edit
lo tengo asi pero me genera error en esas dos lineas de codigo |
|
#4
|
|||
|
|||
|
Cita:
|
|
#5
|
|||
|
|||
|
JuniorSoft como asi estoy perdido.
es que no llevo mucho tiempo programando y aun hay cosas que no tengo claras si me puedes explicar te agradecería mucho. |
|
#6
|
|||
|
|||
|
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;
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. |
|
#7
|
|||
|
|||
|
Cita:
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
y mi codigo va asi:
muchas gracias. |
|
#8
|
||||
|
||||
|
Eso es porque LlenarEdits y Crear Edits están declarados como procedimientos independientes. Debes declararlos como métodos del formulario:
y al momento de implementarlos, anteponer el prefijo TfrmEjecucion. al nombre del procedimiento. // Saludos |
|
#9
|
|||
|
|||
|
Disculpas porque el código lo hice directamente en el editor del foro por no tener delphi instalado en la pc que estoy utilizando.
|
|
#10
|
|||
|
|||
|
Tranquilo por eso no hay problema
|
|
#11
|
|||
|
|||
|
Hola TavoBran,,
podrías hacer varios cambios Código:
type
TArrEdits = array of array of TEdit;
procedure CrearEdits(var Edits:TArrEdits; MaxX, MaxY:integer);
var
I, J:integer;
begin
Button1.Visible := False;
for i:=0 to MaxX-1 do
for J:=0 to MaxY-1 do
begin
Edits[I, J] := TEdit.Create(Self);
Edits[I, J] .Text := '';
Edits[I, J] .Top := 21 * (i + 1);
Edits[I, J] .Left := 21 * (j + 1);
Edits[I, J] .Width := 20;
Edits[I, J] .Height := 20;
Edits[I, J] .AutoSize := False;
Edits[I, J] .Enabled := False;
Edits[I, J] .Parent := Panel1;
Button3.Visible := True;
end;
end;
procedure llenarEdits(var Edits:TArrEdits; MaxX, MaxY:integer);
var
I, J:integer;
begin
for i:=0 to MaxX-1 do
for J:=0 to MaxY-1 do
begin
Edits[I, J].text :=IntToStr(Random(100));
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
ArrEdits:TArrEdits;
MX, MY:integer; //maximo de columnas y filas
begin
//pedir al usuario los valores de MX y MY
SetLength(ArrEdits, MX, MY); //Aquí se establece las dimenciones del array en dos dimensiones
CrearEdits(ArrEdits);
llenarEdits(ArrEdits);
end;
Un detalle que falto en el anterior ejemplo es que los parámetros debes declararlos por referencia. Otra observación: los Arrays dinámicos empiezan en cero(0). Saludos, |
|
#12
|
|||
|
|||
|
También como dice Roman puedes establecer la constante a una cantidad limite
y pedirle al usuario que introduzca la cantidad que desea que no exceda la cantidad limite de edits. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Asignar un evento a un componente creado en tiempo de ejecucion | FGarcia | OOP | 7 | 12-09-2014 23:27:35 |
| Evento en BitBtn creado en tiempo de ejecución | newtron | OOP | 2 | 10-05-2012 16:54:14 |
| eventos de PageControl creado en tiempo de ejecucion | kaozz | OOP | 5 | 17-07-2007 15:02:10 |
| Mostrar un texto creado en tiempo de ejecución | FunBit | Varios | 1 | 10-10-2005 13:23:39 |
| saber el nombre de un control creado en tiempo de ejecucion | xxxlincexxx | Varios | 10 | 10-08-2003 23:45:54 |
|