Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Uso del Stringgrid (https://www.clubdelphi.com/foros/showthread.php?t=81053)

rruffino 05-10-2012 14:45:51

Uso del Stringgrid
 
Hola gente, buenas a todos.
Estoy necesitando utilizar el componente Stringgrid para cierto propósito pro hay tareas que necesito hacer con este componente que no puedo estar haciendo y son:

- Al pasar el foco de una celda a otra, que la celda destino no quede seleccionada (pintada) sino que quede con el cursor parpadeando como para escribir.

- Poder añadir filas cuando salgo de una celda y dejar el foco de la misma manera que en el punto anterior en la primer columna.

- No permitir editar o escribir en una columna en particular.

Desde ya muy agradecido por su ayuda. Saludos!!!

Casimiro Noteví 05-10-2012 14:50:16

Hola rruffino, ¿has hecho una búsqueda por cada uno de los apartados?, me parece que son cosas que se han tratado anteriormente, a ver si lo encontramos... ;)

rruffino 05-10-2012 17:31:33

Respuesta
 
Hola, gracias por la respuesta. He encontrado un par de cosas y medianamente estoy logrando lo que quiero, ahora el inconveniente que tengo es que cuando le cargo la primer fila de datos (en realidad es la segunda fila, la primera la uso fija para los titulos) lo que me pasa es que no puedo editar mas la grilla, es como si quedara deshabilitada, ya revise todo el código y no encuentro nada, probe luego de ingresar los datos hacer un refresh o un repaint pero no logro ni siquiera seleccionar la fila, siempre me queda seleccionada la de titulos.
Gracias nuevamente

ecfisa 05-10-2012 18:50:19

Cita:

ahora el inconveniente que tengo es que cuando le cargo la primer fila de datos (en realidad es la segunda fila, la primera la uso fija para los titulos) lo que me pasa es que no puedo editar mas la grilla, es como si quedara deshabilitada
Hola rruffino.

¿ Podrías poner el código mediante el cuál cargas la primera fila de datos ?

Saludos :)

rruffino 06-10-2012 02:05:53

Respuesta
 
Hola ecfisa, gracias por tu respuesta.

El código en el evento form create es:
Código Delphi [-]
  StringGrid_imputacion.Cells[0,0]:='Nº Cuenta:';
  StringGrid_imputacion.Cells[1,0]:='Nombre de la Cuenta:';
  StringGrid_imputacion.Cells[2,0]:='Descripción de la Compra:';
  StringGrid_imputacion.Cells[3,0]:='Importe:';

Y el código en el evento onclick del boton que carga el dato:
Código Delphi [-]
              fila:=StringGrid_imputacion.RowCount;
              StringGrid_imputacion.Cells[0, fila]:=Edit_imp_cod.Text;
              StringGrid_imputacion.Cells[1, fila]:=Label_imp_nombre.Caption;
              StringGrid_imputacion.Cells[2, fila]:=Edit_imp_desc.Text;
              StringGrid_imputacion.Cells[3, fila]:=FormatCurr('#########0.00', sCurrencyEdit_imp_importe.Value);
              StringGrid_imputacion.RowCount:=fila +1;

Lo que he probado es programar el evento ondblclick para que cuando haga doble clik me tire un mensaje, antes de presionar el boton que carga el dato me muestra el mensaje, despues de apretar el boton no, es como si se deshabilitara la grilla.

Saludos, Román.-

Casimiro Noteví 06-10-2012 02:12:00

¿Qué problema tienes en ese código?

ecfisa 06-10-2012 04:06:29

Hola rrufino.

Proba agregando esta línea al evento OnCreate del form:
Código Delphi [-]
   StringGrid_imputacion.Options:= StringGrid_imputacion.Options + [goEditing];
Si era el problema y ya te permite escribir, esa opción también es configurable desde el Object Inspector.

Saludos.

rruffino 09-10-2012 13:10:43

Respuesta
 
Hola, gracias por sus respuestas. El problema sigue estando, antes de ejecutar el codigo del boton, puedo editar la grilla, probe con el código que me pasó en la respuesta anterior, pero no me deja editarla, es mas no me deja ni siquiera seleccionar otra fila que no sea la primera, y por lo menos lo necesito para aunque sea seleccionar y eliminar una fila, con eso me alcanzaria, pero no hay forma. He probado de poner distintos stringgrids pero nada.
Desde ya nuevamente gracias por las respuestas.

ecfisa 09-10-2012 18:51:06

1 Archivos Adjunto(s)
Hola.

Hice una prueba con el código que nos mostraste y agregando la línea que te sugerí permite editar las celdas, antes y despues de ejecutar el código del boton. A sCurrencyEdit_imp_importe lo declaré como un edit haciendo luego la correspondiente conversión para la función FormatCurr.

Si no hay otro código involucrado, no encuentro motivo del comportamiento que mencionas. Te adjunto la prueba que realizé.

Saludos. :)

rruffino 09-10-2012 19:21:39

Respuesta
 
Hola ecfisa, nuevamente gracias por tu respuesta. Viendo tu codigo y lo que tengo yo, caigo en la cuenta que el problema lo ocasiona cuando guardo los datos en la grilla y le vuelvo a dar el foco al editor para seguir cargando datos para pasarlo a la grilla. Si no le doy el foco al editor puedo editar la grilla normalmente. Ahora, como es posible? como podría hacer para seguir dandole el foco al editor y al hacer click en la grilla que se active para su manejo??
Saludos!!

ecfisa 09-10-2012 20:06:39

Hola.

Cita:

el problema lo ocasiona cuando guardo los datos en la grilla y le vuelvo a dar el foco al editor para seguir cargando datos
Intento comprender los pasos que estás siguiendo, aunque no sé si lo estoy logrando. Por que si al finalizar el código, le pasas el foco a otro componente, igualmente el StringGrid queda activo para insertar datos luego de hacer click sobre él.

Por ejemplo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  fila: Integer;
begin
  fila:=StringGrid_imputacion.RowCount;
  StringGrid_imputacion.Cells[0, fila]:=Edit_imp_cod.Text;
  StringGrid_imputacion.Cells[1, fila]:=Label_imp_nombre.Caption;
  StringGrid_imputacion.Cells[2, fila]:=Edit_imp_desc.Text;
  StringGrid_imputacion.Cells[3, fila]:=FormatCurr('#########0.00', StrToFloat(sCurrencyEdit_imp_importe.Text));
  StringGrid_imputacion.RowCount:=fila + 1;
  Edit_imp_cod.SetFocus;  // <- Pasar el foco
end;

Saludos.

rruffino 09-10-2012 20:17:05

Respuesta
 
Exacto ecfisa, asi le doy el foco al editor, y ahi es donde deja de responderme la grilla como si estuviera deshabilitada, que por mas que le haga click encima, no puedo editar ni seleccionar ninguna fila.
Saludos!

ecfisa 09-10-2012 20:46:56

Hola.

Pero entonces debe haber algún otro código interfiriendo, por que a la prueba que te adjunté le agregué la linea que te menciono en el mensaje anterior y me permite editar el StringGrid sin problemas (previo click sobre él logicamente).

Saludos.


La franja horaria es GMT +2. Ahora son las 01:09:48.

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