PDA

Ver la Versión Completa : Quiero crear objetos en tiempo de ejecución con IntraWeb en Delphi 7


atirado
11-03-2004, 20:15:11
Hola a todos! Un saludo desde México :D
Mi problema es el siguiente:
Estoy trabajando con IntraWeb para Delphi 7 y queremos que al correrse la aplicación para Web, nos muestre un grid que sea seleccionable y borrable.
Estuve checando los Demos de IntraWeb y el Features me mostró algunos, sin embargo, ninguno se adecúa a lo que necesito.
Esto es, que se creen en tiempo de ejecución controles de tipo CheckBox, pero que permanezcan y se puedan borrar con un botón aquellas filas que lo tengan checado.
Creo el control de la siguiente manera:


procedure TformCeldaClickeable.IWAppFormCreate(Sender: TObject);
Var
//con esto controlo la posición dentro de la tabla
ColActual, FilaActual: Integer;
//declaro el objeto para poderlo crear
chkBorrar: TIWCheckBox;
begin
//inicializo un arreglo para controlar la fila actual
//se inicializa en '2' porque si es '1', indica que el CheckBox está checado
//si es '0', no está checado.
for ColActual := 0 to 100 do
intIndexBorrado[ColActual] := 2;
with grdGrid1 do
begin
For FilaActual := 0 to RowCount-1 do
For ColActual := 0 to ColumnCount-1 do
begin
//sólo pone las coordenadas en texto
Cell[FilaActual,ColActual].Text := '('+IntToStr(FilaActual)+','+IntToStr(ColActual)+')';
Cell[FilaActual,ColActual].Alignment := taCenter;
//la columna 3 es donde se insertará el CheckBox
if(ColActual = 3) then
begin
//se crea el checkbox en tiempo de ejecución
ChkBorrar := TIWCheckBox.Create(Self);
Cell[FilaActual,ColActual].Control := ChkBorrar;
chkBorrar.Caption := '';
//e intento que si está checado, le asigne un '1', si no un '0'
if chkBorrar.Checked then
intIndexBorrado[ColActual] := 1
else
intIndexBorrado[ColActual] := 0;
end;
end;
end;
end;

Sin embargo, a pesar de que el arreglo intIndexBorrado es global, cuando presiono el botón y trato de borrar la fila actual, no lo hace:


procedure TformCeldaClickeable.IWButton1Click(Sender: TObject);
Var
ColActual, FilaActual: Integer;
begin
with grdGrid1 do
begin
//empiezo celda por celda
for FilaActual := 0 to RowCount-1 do
for ColActual := 0 to ColumnCount-1 do
begin
//si estoy en la columna donde está el CheckBox
//pregunto si en el índice del arreglo está marcado como
//para borrado y borro esa fila
If(ColActual = 3) then
begin
if(IntIndexBorrado[ColActual] = 1) then
DeleteRow(FilaActual);
end;
end;
end;
end;


¿Por qué involucro el índice? simplemente porque la instancia del checkbox se crea dentro del método FormCrate, pero se destruye ahí mismo, no puedo referenciarla porque no tiene un nombre ni nada.
Lo que pretendo es que dicha instancia del objeto pueda asignársele un nombre y que permanezca "viva" de manera de referenciarla globalmente con el clic del botón.
Espero me puedan ayudar. Muchas gracias de antemano y reciban un saludo enorme :p

Alejandro

jachguate
11-03-2004, 21:19:04
Hola. En primer lugar, bienvenido a los foros. He intentado leer el código, pero se hace muy dificil sin formato. Te recomiendo que edites tu mensaje, agregando la etiqueta \[code\] para que sea mas legible, y quizas asi alguien mas (o yo mismo) podamos ayudarte.

También te recomiendo la lectura de la guia de estilo de los foros. (ambos vínculos están al pie de este mensaje.).

Hasta luego.

;)

atirado
11-03-2004, 22:35:36
Hola, muchas gracias por el tip! lo tendré en cuenta :p

jachguate
11-03-2004, 23:06:31
Te recomiendo que edites tu mensaje

Esto lo podes hacer con el botón "Editar" que aparece en la parte inferior derecha de tu primer mensaje...