Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-10-2011
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 948
Poder: 25
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Cita:
Empezado por Chris Ver Mensaje
Una cosa que veo en el primer código, es que no estás haciendo una llamada a EnableControls. Por otro lado, no me queda claro el problema que estás teniendo con el primer código.

Saludos,
Chris
Como dice el compañero Chris, creo que falta el EnableControls después de volverlo al registro que estaba antes de realizar la suma...

Código Delphi [-]
 begin
      Temp:=0;
      PBookmark:=Q.GetBookmark;
      Q.DisableControls;
      for i:=0 to DBG1.SelectedRows.Count-1 do
      begin
        Q.GotoBookmark(pointer(DBG1.SelectedRows.Items[i]));
        Temp:=Temp+Q.fieldbyName('total').AsFloat;
      end;
      ResultadoParcial.Caption:='  : '+FormatFloat('#,##0.00 €',Temp)+'      Reg: '+IntToStr(DBG1.SelectedRows.Count);
      Q.GotoBookmark(PBookmark);
      Q.EnableControls;
      Q.FreeBookmark(PBookmark);
    end;

A ver que pasa ahora...
Responder Con Cita
  #2  
Antiguo 05-10-2011
glopez glopez is offline
Miembro
 
Registrado: ago 2003
Ubicación: Huelva
Posts: 84
Poder: 24
glopez Va por buen camino
Es cierto que me falta
Q.EnableControls;
al copiar el codigo me salte esa linea
El problema exacto con el primer código es el siguiente:
Imaginemos que tengo un grid con las siguientes lineas visibles
Nº Frac nombre total
1 Pepe 5
2 Juan 7.5
3 Pedro 8
.
.
.
30 Antonio 475

Entonces después de seleccionar varios registros y ejecutarse el código anterior para recorrer los registros seleccionados y sumarlos (sólo los seleccionados). Puede que el primer registro que tenga visible ahora no sea la Factura 1 si no la 3 y la última la 33. Es decir los registros se han desplazado un poco hacia arriba. Espero haberme explicado bien. Gracias.
Responder Con Cita
  #3  
Antiguo 05-10-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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
Cita:
Empezado por glopez Ver Mensaje
Entonces después de seleccionar varios registros y ejecutarse el código anterior para recorrer los registros seleccionados y sumarlos (sólo los seleccionados). Puede que el primer registro que tenga visible ahora no sea la Factura 1 si no la 3 y la última la 33. Es decir los registros se han desplazado un poco hacia arriba. Espero haberme explicado bien. Gracias.
Hola glopez.

Humm, sigo con la duda de haber entendido bién lo que buscas. Según entiendo deseas que cuando termines de seleccionar varios registros desde el DBGrid, haya hecho los scrolls que fueran, vuelva a posicionarse en el primero de la seleccion.

Si es así, creo que tendrías que hacer algo como:
Código Delphi [-]
...
var
  i: Integer;
  BM: TBookmark;
  Total: Double;
begin
  if DBGrid1.SelectedRows.Count > 0 then
  begin
    Total:= 0;
    BM:= DataSet.GetBookmark;
    try
      for i:= 0 to DBGrid1.SelectedRows.Count-1 do
      begin
        DataSet.GotoBookmark(Pointer(DBGrid1.SelectedRows[i]));
        Total:= Total + DataSet.FieldByName('FLOTANTE').AsFloat;
      end;
    finally
      DataSet.GotoBookmark(Pointer(DBGrid1.SelectedRows[0]));
      DataSet.FreeBookmark(BM);
    end;
    Label1.Caption:= FloatToStr(Total);
  end;
end;

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 06-10-2011
glopez glopez is offline
Miembro
 
Registrado: ago 2003
Ubicación: Huelva
Posts: 84
Poder: 24
glopez Va por buen camino
Intentare explicarme un poco mejor. Lo que quiero hacer es lo siguiente:
Tengo una tabla con 1000 lineas pero en el grid tengo visible sólo 10 lineas.
1
2
3
...
10
y selecciono las lineas 2 y 8 haciendo click con el ratón. Quiero que después de recorrer las lineas seleccionas con GotoBookmark siga viendo los registros del 1 al 10 y no otros.
Responder Con Cita
  #5  
Antiguo 06-10-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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 glopez.

Soy medio duro de mollera pero ahora creo que te entendí...

Una solución que se me ocurre es crearte al vuelo una consulta apuntando a la misma tabla y obtener el dato de ella utilizando el BookmarkList del DBGrid:
(asumo que la tabla involucrada se llama: TU_TABLA)
Código Delphi [-]
procedure TForm1.btnTotalClick(Sender: TObject);
var
  BM: TBookMark;
  i: Integer;
  Tot: Double;
begin
  with TIBQuery.Create(nil) do   // Crear consulta 
  try
    Database:= IBDatabase1;    // Asignar Database 
    Close;
    SQL.Text:= 'SELECT TOTAL FROM TU_TABLA'; // Seleccionar sólo campo a sumar
    Open;
    Tot:= 0;
    for i:= 0 to DBGrid1.SelectedRows.Count-1 do
    begin
      GotoBookmark(Pointer(DBGrid1.SelectedRows[i])); // Posicionarse
      Tot:= Tot + FieldByName('TOTAL').AsFloat;       // acumular
    end;
  finally
    Free;
  end;
  Caption:= FloatToStr(Tot);  // mostrar acumulador
end;
Al no realizarse posicionamiento sobre la consulta relacionada al TDBGrid, este permanecerá inamovible.


Como no especificaste con que motor de BD ni componentes estas trabajando hice el ejemplo con Firebird/IBX, reemplazá por los componentes que utilices.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 06-10-2011
glopez glopez is offline
Miembro
 
Registrado: ago 2003
Ubicación: Huelva
Posts: 84
Poder: 24
glopez Va por buen camino
Co la mollera mala estamos más de uno, pero ahora si me has entendido bien. Pero si te fijas en el segundo código que puse al principio yo hacia lo mismo que me explicas ahí.
Pero no entiendo porque a veces no se posiciona en los registros correctamente. Me pasa que algunas veces en vez de irse a unos de los registros que tengo seleccionado se me queda en el anterior. Utilizo Firebird y IBX pero he probado con FibPlus y tambien falla ya estoy pensando que puede que sea el Grid (ExDBGrid). Pero lo que no comprendo es que cuando recorro la consulta (Q) que esta directamente asociada al Grid no falla.
Sólo pasa a veces y casi siempre cuando ordeno el listado por fecha descendentemente. Gracias.
Responder Con Cita
  #7  
Antiguo 06-10-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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 glopez.
Cita:
Pero si te fijas en el segundo código que puse al principio yo hacia lo mismo que me explicas ahí.
Es que el endurecimiento de mollera me está afectando la vista tambien...

Seguramente no lo he probado tán a fondo como vos, y por eso no he detectado el fallo. Voy a revisar con cuidado y cualquier novedad que encuentre te comento.

Un saludo.
__________________
Daniel Didriksen

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


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
GotoBookMark BPL Varios 5 08-09-2010 20:52:47
GotoBookMark en TClientDataSet jzginez Conexión con bases de datos 0 30-08-2006 17:11:25
Ayuda de Delphi - Gotobookmark juanchi Conexión con bases de datos 4 21-02-2004 18:43:51


La franja horaria es GMT +2. Ahora son las 19:47:46.


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