Hey amigo Nebli... No, a mi no me incomoda el hecho que hagas tu aplicacion asi..... Yo solo comentaba que ya muchos hemos pasado por ahi y hemos tenido el mismo dilema....
Bueno por otro lado, si me da un tick en el ojo cuando veo que prefieres hacer el trabajo en tiempo de diseño.... Es cierto que te toca escrbir un poco mas de codigo, pero no es tanto y compensa a la hora de hacer el mantenimiento a tu codigo.... como tu mismo observas... si quieres hacer una matriz de 500 x 500 vas a tener probelmas mas adelante....
Te envio un codigo de base para que lo revises ... a lo mejor te sirve...
1) Abre un proyecto nuevo
2) pon un Boton en el formulario
3) has dobleclick sobre el boton (Se crea el evento onclick pero no hagas nada con eso)
4) sobre-escribe todo este codigo en tu Unit1...
Espero que te sirva
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
Procedure MyOnClick(Sender: TObject);
procedure ConstruirPaneles(objContenedor_p:TWinControl; intFilas_p, intColumnas_p:Integer);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ConstruirPaneles(objContenedor_p:TWinControl; intFilas_p, intColumnas_p:Integer);
Var ElPanel:TPanel;
i,j,
intContador,
intAncho,
intAlto,
intSeparacionFilas,
intSeparacionColumnas,
intMargenFilas,
intMargenColumnas:Integer;
Begin
intAncho:=40;
intAlto:=40;
intSeparacionFilas:=5;
intSeparacionColumnas:=5;
intMargenFilas:=50;
intMargenColumnas:=50;
intContador:=0;
For i:=1 to intFilas_p do
For j:=1 to intColumnas_p do
Begin
inc(intContador);
ElPanel:=TPanel.Create(objContenedor_p);
ElPanel.Name:='MyPanel_'+IntTostr(intContador);
ElPanel.Tag:=intContador;
ElPanel.Caption:=IntToStr(intContador);
ElPanel.OnClick:= MyOnClick;
ElPanel.Width:=intAncho;
ElPanel.Height:=intAlto;
ElPanel.Top:=(i-1) * (intAlto+intSeparacionFilas) + intMargenFilas;
ElPanel.Left:=(j-1) * (intAncho+intSeparacionColumnas) + intMargenColumnas;
ElPanel.Parent:=objContenedor_p;
end;end;
Procedure TForm1.MyOnClick(Sender: TObject);
Begin
ShowMessage('Clickeaste en el panel: '+(Sender as TPanel).Caption);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ConstruirPaneles(Self,10,12);
end;
end.
Bye