Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Pasar el valor de un TEdit dentro de un StringGrid a otro TEdit que está fuera (https://www.clubdelphi.com/foros/showthread.php?t=13862)

atirado 01-09-2004 23:28:00

Pasar el valor de un TEdit dentro de un StringGrid a otro TEdit que está fuera
 
Hola a tod@s! Como el título lo dice, estoy desarrollando una aplicación en la cual utilizo un StringGrid, el cual dentro de
una serie de celdas tiene un TEdit que se crea en tiempo de ejecución, de la siguiente forma:
Código:

procedure TForma1.PonerEdits;
var
  fila : integer;
  edtValValor : TIWEdit;
begin
  With grdLista do
  begin
          For fila := 1 to (RowCount-1) do
          begin
                  edtValValor          := TIWEdit.Create(Self);
                  edtValValor.Name := 'edtValorGrid'+IntToStr(fila);
                  edtValValor.Text := '';
                  edtValValor.Tag  := Fila;
                  Cell[Fila,ColumnCount-3].Text        := '';
                  Cell[Fila,ColumnCount-3].Control := edtValValor;
          end;
  end;
end;

Sin embargo, necesito guardar los valores que hay en las celdas por medio de un ciclo del tipo
Código:

For fila := 1 to grdLista.RowCount-1 do
  DataModule.tblTabla1Campo1.Value := grdLista.Cell[Fila,ColumnCount-3].Text;
  DataModule.tblTabla1Campo2.Value := grdLista.Cell[Fila,ColumnCount-2].Text;
  //etc...
  {Pero aquí es donde está lo bueno, porque en una de esas celdas, tengo un TEdit, el cual deberá mandar el valor que tiene
dentro a la tabla, algo así como: }
  DataModule.tblTabla1Campo2.Value := Valor_que_Tiene_edtValValor_En_Su_Propiedad_Text;
end;

De ahí mi problema, ya que no encuentro la manera de hacer referencia a ese TEdit que está dentro de la celda. Intenté hacerlo de la forma:
Código:

var
  edtValue : TIWEdit;
begin
  edtValue.Create(Self);
  edtValue.Visible := False;
  edtValue := Cell[Fila,ColumnCount-3].Control
  DataModule.tblTabla1Campo3.Value := edtValue.Text;
end;

Sin embargo, obtengo un error que me indica que TEdit y TControl son incompatibles.
Si notan, estoy usando IntraWeb 7.0 para Delphi 7.0., de ahí que el TEdit aparezca como TIWEdit...

Agradezco de antemano su ayuda :D
Un saludo desde México
Alejandro

jachguate 02-09-2004 00:04:23

Creo que vas por buen camino, pero no hace falta crear otra instancia de TIWEdit.

Simplemente un cast seguro.

Código Delphi [-]
Var
  edtValue : TIWEdit;

Begin
  For fila := 1 to grdLista.RowCount-1 do
    With grdLista do
      if assigned(cell[fila, ColumnCount-3].Control) Then
        DataModule.tblTabla1Campo3.Value := 
          (Cell[fila, ColumnCount - 3].Control as TIWEdit).Text;
      else
        DataModle.tblTabla1Campo3.Clear;
end;

Hasta luego.

;)

atirado 02-09-2004 00:54:32

Mi estimado jachguate, me acabas de salvar la vida :D . En efecto, tal como lo comentaste, no era necesario crear una nueva instancia de TIWEdit, solamente verificar que estuviera asignada; era justo según tu ejemplo.

Gracias de nuevo por lo pronto y acertado de tu respuesta :D

un abrazo desde México
Alejandro

jachguate 02-09-2004 23:32:14

¿Te mando la dirección donde recibo los jamones, chelas y todo tipo de regalos?

:D:D

atirado 11-09-2004 19:13:48

No me lo vas a creer, mi estimado jachguate, pero precisamente el mensaje que mandaste donde solicitas chelas y jamones, no aparece en mi PC, no se por qué :confused: , jejejeje :p:D

Saludos desde MX
Alejandro


La franja horaria es GMT +2. Ahora son las 20:16:34.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi