FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
juniorSoft si claro ya lo intente
|
#2
|
|||
|
|||
Amigo muchas gracias por su ayuda ya busque y pude solucionar mi error
les dejo mi solucion y me dicen que les parece
|
#3
|
|||
|
|||
Puedes probar algo como esto para no utilizar el método FindComponent
Última edición por Casimiro Notevi fecha: 25-10-2018 a las 08:37:52. |
#4
|
||||
|
||||
Tal como propone juniorSoft es lo más adecuado en mi opinión. No hay necesdad de utilizar el nombre de un componente cuando nosotros mismos lo creamos.
// Saludos |
#5
|
|||
|
|||
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. |
#6
|
||||
|
||||
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 |
#7
|
|||
|
|||
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 |
#8
|
|||
|
|||
Cita:
|
#9
|
||||
|
||||
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 |
#10
|
|||
|
|||
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, |
#11
|
|||
|
|||
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. |
|
|
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 |
|