Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-07-2014
Neg90 Neg90 is offline
Miembro
NULL
 
Registrado: mar 2013
Posts: 29
Poder: 0
Neg90 Va por buen camino
Cargar lista simple dentro de stringgrid

Buenas tengo que pedirles ayuda a ver si alguien se da cuenta donde esta el error, ya hace rato que trato de solucionarlo y me cerré, tengo que desde una lista de números, (ISBN, este es un numero de una tabla Libro), hago una consulta sql y traigo datos, los cuales cargo en un stringGrid, y necesito hacer un botón "refrescar" lo que hace es borrar todo el stringGrid y cargar los datos que traigo del Query . Ahora el problema en si, si hago click en "refrescar" por ejemplo teniendo 4 Libros cargados en la lista y en el stringGrid, cuando vuelve a cargarlos solo me carga los 3 últimos, debo estar usando mal algo en stringGrid ya no me doy cuenta. No estoy pidiendo que nadie me resuelva el problema , y también aclaro que no es un programa que yo este vendiendo, eso solo un trabajo que estamos haciendo para la universidad . Muchas gracias.

Código Delphi [-]
procedure TFormCatalogoLibros.SpeedButton8Click(Sender: TObject);
var
  cont1,cont,i:integer;
  aux:Lista;
begin

    Carrito.SQL.Text:='Select * From Libro where (ISBN =ato)'; //consulta de donde saco los datos
    //Borrar todo  de stringGrid
    for cont :=0 to Stringgrid1.colcount-1 do
        for cont1 :=0 to stringgrid1.rowcount-1 do
            stringgrid1.Cells[cont,cont1] := '';
        StringGrid1.Rowcount:=1;
    //Cargo nuevamente el stringGrid con datos de la lista
    Aux:=L; //L es la lista original que contiene los numeros , la paso a aux por si las dudas nada mas.
    while (Aux <> Nil) do begin
      Carrito.close;
      Carrito.Parameters.ParamByName('Dato').Value:=aux.Datos;
      Carrito.Active:=True;
      Carrito.Open;
      StringGrid1.Cells[0,StringGrid1.Row]:=Carrito.FieldByName('ISBN').AsString ;
      StringGrid1.Cells[1,StringGrid1.Row]:=Carrito.FieldByName('Titulo').AsString ;
      StringGrid1.Cells[2,StringGrid1.Row]:=Carrito.FieldByName('Autor').AsString;
      StringGrid1.Cells[3,StringGrid1.Row]:=Carrito.FieldByName('Editorial').AsString;
      StringGrid1.Cells[4,StringGrid1.Row]:=CurrToStr(Carrito.FieldByName('Precio').AsCurrency);
      StringGrid1.Row:=StringGrid1.Rowcount - 1;
      //Agranda la tabla con una fila mas
      with StringGrid1 do         
        begin       
          RowCount := RowCount +1;
          for i:= RowCount - 1 downto StringGrid1.Rowcount - 1 do
            Rows[i]:= Rows[i-1];
            Rows[StringGrid1.Rowcount - 1].Clear;
          end;
      Aux:=Aux^.sig;
    end;

end;
Responder Con Cita
  #2  
Antiguo 01-07-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Neg90.

Según lo que te entendí, haría:
Código Delphi [-]
procedure TFormCatalogoLibros.SpeedButton0Click(Sender: TObject);
var
  i: Integer;
begin
  with StringGrid1 do
  begin
    // Limpiar datos previos
    for i := 0 to RowCount - 1 do Rows[i].Clear;
    Row:= 1;
    // Obtener columnas, poner títulos
    Carrito.Close;
    Carrito.SQL.Text:= 'SELECT * FROM LIBRO';
    Carrito.Open;
    ColCount:= Carrito.FieldCount; // Nro columnas = Nro campos
    FixedCols:= 0;
    FixedRows:= 1;
    // Poner títulos de columna
    for i:= 0 to ColCount-1 do
      Cells[i,0]:= Carrito.Fields[i].FieldName;
    // Preparar consulta
    Carrito.Close;
    Carrito.SQL.Text:= 'SELECT * FROM LIBRO WHERE ISBN = :PISBN';
    Carrito.Prepare;
    while Lista <> nil do
    begin
      Carrito.Close;
      Carrito.ParamByName('PISBN').AsString:= Lista.Dato;
      Carrito.Open;
      // Pasar registos a celdas
      while not Carrito.Eof do
      begin
        for i:= 0 to ColCount-1 do Cells[i, Row]:= Carrito.Fields[i].AsString;
        Carrito.Next;
        Row:= Row + 1;
        RowCount:= RowCount + 1;
      end;
      Lista:= Lista^.Sig;
    end;
  end;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como Invertir Una Lista Enlazada Simple sant0s OOP 10 14-12-2011 20:55:24
cargar lista en un combobox o tdblooupcombobox chalo Tablas planas 3 27-04-2011 05:10:21
Cargar datos en un combo o algun componente similar (lista) nelem Varios 6 24-01-2008 14:51:26
Mostrar comilla simple dentro de un string Black_Ocean Varios 2 05-06-2007 04:30:43
Algo simple de un stringgrid karlita_cb OOP 1 31-05-2004 21:01:08


La franja horaria es GMT +2. Ahora son las 23:41:08.


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
Copyright 1996-2007 Club Delphi