![]() |
![]() |
| 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
|
|||
|
|||
|
roman lo que pasa es que después necesito llamar a todos los Edit creados para así llenarlos con una matriz y la única forma que se me ocurría era llamarlos por el nombre.
|
|
#2
|
|||
|
|||
|
Hola,
Probaste hacer esto: Código:
for f := 1 to NEdits do
begin
Edits := TEdit.Create(Self);
Edits.Left := 21 * (c + 1);
Edits.Top := 21 * (f + 1);
Edits.Width := 20;
Edits.Height := 20;
Edits.Enabled := False;
Edits.Parent := Panel1;
Edits.name := 'Edit'+f.ToString;
Button3.Visible := True;
end;
|
|
#3
|
|||
|
|||
|
juniorSoft si claro ya lo intente
|
|
#4
|
|||
|
|||
|
Amigo muchas gracias por su ayuda ya busque y pude solucionar mi error
les dejo mi solucion y me dicen que les parece
|
|
#5
|
|||
|
|||
|
Puedes probar algo como esto para no utilizar el método FindComponent
Última edición por Casimiro Noteví fecha: 25-10-2018 a las 08:37:52. |
|
#6
|
||||
|
||||
|
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 |
|
#7
|
|||
|
|||
|
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. |
|
#8
|
||||
|
||||
|
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 |
|
#9
|
|||
|
|||
|
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, |
|
#10
|
||||
|
||||
|
El problema es que, para encontrar un control por su nombre utilizas FindComponent. Pero este método, a su vez, es un ciclo que recorre todos los componentes del formulario para encontrar una coincidencia de nombre. Entonces, si tu rejilla es, digamos, de 10x10, estarías recorriendo el formulario 100 veces.
Dado que estás creando los controles por código, fácilmente puedes declarar una matriz de Edits:
y llenarla con los controles que creas. Posteriormente será mucho más fácil utilizarlos por sus coordenadas:
// Saludos |
|
#11
|
|||
|
|||
|
Si ramon yo lo declaro así solo que es dinámico y defino la matriz a través de un TEdit y como es una matriz cuadrada no hay problema,
Declaro la matriz asi:
y defino el valor asi:
|
|
#12
|
|||
|
|||
|
Si ramon yo lo declaro así solo que es dinámico y defino la matriz a través de un TEdit y como es una matriz cuadrada no hay problema,
Declaro la matriz asi:
y defino el valor asi:
|
![]() |
| 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 |
|