Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   dephi 10 lite grid (https://www.clubdelphi.com/foros/showthread.php?t=71126)

juaarias 01-12-2010 22:37:50

dephi 10 lite grid
 
hola gente soy novato nose si es el sitio indicado,pero no me doy cuenta como controlar si todos los campos de un grid estan vacios o no. lo que hago es pedir datos para que el usuario ingrese en un grid y quiero saber si estos han sidos cargados sino pedir que los cargue.saludos espero pueda ayudarme

Casimiro Noteví 01-12-2010 22:50:15

Hola, juaarias, bienvenido a clubdelphi, por favor, lee nuestra guía de estilo para que conozcas nuestras normas, muchas gracias.
Como ves, cada pregunta distinta debe ir en un nuevo tema, no los mezcles. Ya he movido yo este a "varios", debes fijarte en qué foro pones cada pregunta, dependiendo de la temática del mismo.

juaarias 01-12-2010 22:55:29

gracias
 
hola gracias disculpas

ecfisa 01-12-2010 23:08:57

Hola juaarias y bienvenido.

A ver si estos ejemplos te sirven...

Para controlar si todas las celdas del StringGrid (creo que a ese componente te referís) podés hacer:
Código Delphi [-]
function TForm1.FaltanDatos: Boolean;
var
  c,f: Integer;
begin
  Result:= False;
  for c:= StringGrid1.FixedCols to StringGrid1.ColCount -1 do
    for f:= StringGrid1.FixedRows to StringGrid1.RowCount -1 do
      if StringGrid1.Cells[c, f] = '' then
        Result:= True;
end;

Ejemplo de llamada:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  if FaltanDatos then
    ShowMessage('Faltan ingresar valores');
end;

Para avisar en cada celda si se sale de editar sin un valor podés usar el evento OnSetEditText del TStringGrid:
Código Delphi [-]
procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer; const Value: String);
begin
  if Value = '' then
  ShowMessage('Ingrese un valor');
end;

Un saludo. :)

juaarias 01-12-2010 23:26:58

holaa
 
como veras soy muy novato en delphi, se me habia ocurrido algo asi pero completaba las celdas e igual me slataba el showmessage.
//CONTROLO QUE ESTEN LOS DATOS EN EL GRID//
b:=false;
for i := 1 to stgDatos.rowCount do
if (stgDatos.Cells[1,i]='')or((stgDatos.Cells[2,i]='')or ((stgDatos.Cells[3,i]=''))) then
b:=true;
if b=true then
showmessage('FALTAN IGRESAR DATOS');

rgstuamigo 01-12-2010 23:43:23

Solo agregar que si estas trabajando con campos obtenidos de una base de datos pues lo más apropiado para visualizarlos es usar un componente TDBGrid que te lo hace todo.;)
Saludos...:)

Casimiro Noteví 01-12-2010 23:47:08

Cita:

Empezado por juaarias (Mensaje 383782)
hola gracias disculpas

No hay problema, si no conoces nuestras normas es normal que no lo hagas bien al principio.
Por cierto, además de nuestra guía de estilo, también puedes ver las etiquetas para formatear código.

Con las etiquetas tu código lo verás así:

Código Delphi [-]
//CONTROLO QUE ESTEN LOS DATOS EN EL GRID//
b:=false;
for i := 1 to stgDatos.rowCount do
  if (stgDatos.Cells[1,i]='')or((stgDatos.Cells[2,i]='')or ((stgDatos.Cells[3,i]=''))) then
  b:=true;
if b=true then
showmessage('FALTAN IGRESAR DATOS');[/quote]

ecfisa 02-12-2010 00:13:19

Cita:

Empezado por juaarias (Mensaje 383786)
como veras soy muy novato en delphi, se me habia ocurrido algo asi pero completaba las celdas e igual me slataba el showmessage.
//CONTROLO QUE ESTEN LOS DATOS EN EL GRID//
b:=false;
for i := 1 to stgDatos.rowCount do
if (stgDatos.Cells[1,i]='')or((stgDatos.Cells[2,i]='')or ((stgDatos.Cells[3,i]=''))) then
b:=true;
if b=true then
showmessage('FALTAN IGRESAR DATOS');

Hola de nuevo.

Si sólo tenés 3 columnas tu código es lógicamente correcto, y es más eficiente que recorrer todas las celdas ya que verificas 3 columnas por ciclo.

El mensaje te sigue apareciendo por que en el for haces:
Código Delphi [-]
for i := 1 to stgDatos.rowCount do

y debería ser:
Código Delphi [-]
 for i := 1 to stgDatos.rowCount -1 do

Al estar verificando una fila de más que no tiene ningún dato, 'b' toma el valor True y muestra el mensaje.

Saludos. :)

juaarias 02-12-2010 00:46:35

graciasss
 
muchas gracias gente, la verdad es un gran acierto ser parte de esto espero algun dia yo poder ayudar como uds a mi.por el momento vuelvo a molestar estoy intentando hacer que en determinada cela solo se pueda ingresar uno de tres numero (22,26,28),alguna recomendacion?

Casimiro Noteví 02-12-2010 01:03:00

Cita:

Empezado por juaarias (Mensaje 383791)
muchas gracias gente, la verdad es un gran acierto ser parte de esto espero algun dia yo poder ayudar como uds a mi.por el momento vuelvo a molestar estoy intentando hacer que en determinada cela solo se pueda ingresar uno de tres numero (22,26,28),alguna recomendacion?

Recuerda leer nuestra guía de estilo, juaarias, una de las normas es: "Pregunta distinta... en hilo nuevo". No mezcles cosas distintos en un mismo hilo/tema ya que así luego es imposible hacer consultas coherentes y recuerda poner títulos descriptivos a las preguntas.
Saludos.


La franja horaria es GMT +2. Ahora son las 16:08:45.

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