Ver Mensaje Individual
  #4  
Antiguo 05-05-2016
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Reputación: 22
gatosoft Va camino a la fama
De cualquier forma el no instanciar una variable generaría un Access Violation #000000... no un "A control cannot have itself as its parent"

Yo creo (no tengo compilador a la mano) que el problema está en la utilizacion del With (Ya nuestro amigo Al Gonzalez en algún hilo habló de su uso y abuso)

Asumo que al hacer el Create(nil); quieres asignarlo a tu btn... pues no funciona asi.

Código Delphi [-]
with TButton (btn) do
    begin
       Create(nil);
       Caption   := txtboton;
       Width     := 87;
       Name      := 'Button' + IntToStr(i);
       BoundsRect:= Grid.CellRect(Columna, i);
       ControlStyle := [csClickEvents];
       onclick    := evento;
       Tag       :=  i;
       parent:= grid;
    end;

La linea create dentro del with equivale a hacer:

Código Delphi [-]
TButton (btn).Create(nil);

instancia un objeto pero no lo asigna a la variable btn.

Lo que está ocurriendo es que dentro del with está asignando las variables a otro objeto, y segun parece, se está haciendo al StringGrid, de forma que en la linea parent:= grid, genera el error que te está enviando


Creo que deberias hacer algo como:

Código Delphi [-]
btn:= TButton.Create(nil);
with TButton (btn) do
    begin
       Caption   := txtboton;
       Width     := 87;
       Name      := 'Button' + IntToStr(i);
       BoundsRect:= Grid.CellRect(Columna, i);
       ControlStyle := [csClickEvents];
       onclick    := evento;
       Tag       :=  i;
       parent:= grid;
    end;

Saludo,
Responder Con Cita