SoloCodigo

Programación General => Delphi => Mensaje iniciado por: Perrero en Viernes 21 de Abril de 2006, 23:44

Título: Llenar Un Arreglo
Publicado por: Perrero en Viernes 21 de Abril de 2006, 23:44
Holas, weno he aqui mi duda. Tengo en un formulario 81 TMemos y me gustaria meter por teclado los datos en esos 81 TMemos, ahora cuando le de clic a un boton me gustaria que recogiera todos los datos introducidos en los TMemos. Mi pregunta es si hay una manera sencilla de hacerlo, quiero que esos datos vayan a un arreglo, pero solo conozco la manera mas inocente y tediosa de hacerlo, como esta:

Código: Text
  1.  Arreglo[i,j]:= Memo1.Text;
  2.  Arreglo[1,1]:= Memo1.Text;
  3.  Arreglo[1,2]:= Memo2.Text;
  4.  .
  5.  .
  6.  .
  7.  Arreglo[9,9]:= Memo81.Text;
  8.  

Esta es la manera mas tediosa de hacerla, hay una manera de llenar el arreglo de una manera mas sencilla con los datos del TMemo?.
Título: Re: Llenar Un Arreglo
Publicado por: Enko en Sábado 22 de Abril de 2006, 00:21
¿Probaste usar TStringList?  ;)
Citar
La propiedad "Cells"  del TStringList es una matriz.
TStringGrid.Cells[X,Y]: String;

Me parece un poco tedioso usar 81 TMemos cuando tenes el TStringGrid, y se ese no te resulta, seguramente podes adaptar al TDrawGrid que es más genérico.

Avisame, si necesitas si o si los Tmemo me fijo (es que ahora no tengo delphi a mano para revistar y no me acuerdo bien como es, es que hay varias formas....)
Título: Re: Llenar Un Arreglo
Publicado por: Perrero en Sábado 22 de Abril de 2006, 05:04
Mmmmmmmmmmmm en realidad no paso por mi cabeza usar esos componentes ya que no los conozco, pero estuve revisando el TStringGrid y no tiene una propiedad que tiene el TMemo que es la de MaxLenght, otra cosa es que en el OnKeyPress pongo el codigo para escribir solo numero y no sale, otra cosa es que no me gusta el cuadrito azul cuando seleccionas, mmmmmm bueno, lo podria usar si por lo menos supiera saber como meter solo numeros y solo una cierta cantidad de caracteres, voy a investigar a ver si se puede.
Título: Re: Llenar Un Arreglo
Publicado por: Enko en Sábado 22 de Abril de 2006, 15:35
¿Que cantidad de caracteres?
Título: Re: Llenar Un Arreglo
Publicado por: Perrero en Sábado 22 de Abril de 2006, 17:25
bueno solo quiero un caracter por celda y ademas me di cuenta que no puedo introducir datos por teclado en cada celda o esuqe acaso hay una propiedad q activa eso, pero weno con las que voy probando no pasa nada.
Título: Re: Llenar Un Arreglo
Publicado por: Enko en Sábado 22 de Abril de 2006, 17:57
Cita de: "Perrero"
bueno solo quiero un caracter por celda y ademas me di cuenta que no puedo introducir datos por teclado en cada celda o esuqe acaso hay una propiedad q activa eso, pero weno con las que voy probando no pasa nada.
en la propiedad Options del TStringGrid (fijate en la paleta de propiedades) pone la opcion "goEditing" en True;

Luego usa el evento SetEditTExt así:
Código: Text
  1.  
  2. procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
  3.   ARow: Integer; const Value: String);
  4. var
  5.    myChar: Char;
  6. begin
  7.    StringGrid1.Cells[ACol, ARow] := '';
  8.    if Length(Value) > 0 then myChar := Value[1];
  9.    if (myChar in ['0'..'9']) then
  10.     StringGrid1.Cells[ACol, ARow] := myChar;
  11. end;
  12.  
  13.  


Al final te adjunto un proyecto de Delphi 7, que al parecer hace lo que vos quieres.
Título: Re: Llenar Un Arreglo
Publicado por: Perrero en Sábado 22 de Abril de 2006, 18:39
Muchas gracias, me sirvio de mucho, pero tuve que borrar la linea

Código: Text
  1. StringGrid1.Cells[ACol, ARow] := '';
  2.  

ya que sino no me dejaba escribir naa. Gracias...
Título: Re: Llenar Un Arreglo
Publicado por: Enko en Sábado 22 de Abril de 2006, 21:51
Cita de: "Perrero"
Muchas gracias, me sirvio de mucho, pero tuve que borrar la linea

Código: Text
  1. StringGrid1.Cells[ACol, ARow] := '';
  2.  

ya que sino no me dejaba escribir naa. Gracias...
que raro. lo probé y me funcionaba.  ;)

Igualmente tambien pensé en sacar esa linea y lo hice y seguia funcionando pero la deje por si acaso.