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 10-03-2009
tato_pincha87 tato_pincha87 is offline
Registrado
 
Registrado: mar 2008
Posts: 6
Poder: 0
tato_pincha87 Va por buen camino
Wink Ayuda con formato de hora

Buenas gente de club delphi, les comento mi duda, que es una de las pocas cosas que me falta corregir para terminar uno de mis primeros proyectos enserio.

Tengo creada una BD en access, y en ella una tabla de turnos en donde me guardo los turnos que se le asignan a los clientes, dichos turnos, tienen un campo que es HoraTurno (tipo: hora corta (##:##)) ,pero mi problema es el siguiente:

En delphi, bah mejor dicho, en los DBGrids de delphi, el campo hora de las distintas tabla que tengo, me sale con el siguiente formato:

30/12/1899 08:00:00

Y yo lo unico que quiero que me salga es como en los registros de access que me sale lo siguiente:

08:00

Alguno sabe como elminar toda esa fecha que no es la que necesito?

Ojala se halla entendido. Muchas gracias aunque sea por leerlo.

Martin
Responder Con Cita
  #2  
Antiguo 10-03-2009
Avatar de MichelH
MichelH MichelH is offline
Miembro
 
Registrado: jul 2005
Ubicación: jalisco mexico
Posts: 44
Poder: 0
MichelH Va por buen camino
Que tal Tato!

Claro que se puede, esto se hace en el Evento OnDrawColumnCell del mismo DBGrid, esto yo lo uso para dale formato a cualquier tipo de datos como hora, fecha, importes monetarios, etc. Basicamente lo que haces en este Evento es redibujar los datos, y se manda llamar cada que se dibuja una columna de tu DBGrid. Yo lo uso de la siguiente forma:

Código Delphi [-]
procedure TFormClientes.RxDBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  vValue : String;  // variable donde se le dara formato a los datos
begin

  // verifico que columna se va a dibujar
  if Column.FieldName = 'HoraTurno' then begin
     
     // verifico que el valor no sea nulo, para evita error
     if Column.Field.Value = Null then 
       vValue := '00:00'
     else                                 
       vValue := FormatDateTime( 'hh:mm', Column.Field.AsDateTime );

    
     // aqui dibujo el dato con el nuevo formato, con alineación centrada  
     with RxDBGrid1 do 
        TextRect( Rect, ( Rect.Left +  Rect.Right - TextWidth( vValue ) ) div 2, ( ( Rect.Bottom - TextHeight( vValue ) ) + Rect.Top ) div 2, vValue );
  
  end;

end;

si quieres el codigo de las demas alineaciones son estas:
Alineación a la derecha:
Código Delphi [-]
with RxDBGrid1 do 
   TextRect( Rect, Rect.Right - TextWidth( vValue + ' ' ), ( ( Rect.Bottom - TextHeight( vValue ) ) + Rect.Top ) div 2, vValue );

Alineación a la izquierda:

Código Delphi [-]
with RxDBGrid1 do 
   TextRect( Rect, Rect.Left + TextWidth(' '), ( ( Rect.Bottom - TextHeight( vValue ) ) + Rect.Top ) div 2, vValue );

Por cierto yo mas bien uso el RxDBGrid de la libreria de componentes RX, te los recomiendo mucho traen varios componentes muy monos que me han hecho la vida mas facil y me han sacado de varios apuros.

Saludos!!
__________________
No hay misterios, sólo hay falta de información.
Tampoco hay milagros, sólo hay hechos científicos ignorados

Última edición por MichelH fecha: 10-03-2009 a las 05:41:37.
Responder Con Cita
  #3  
Antiguo 10-03-2009
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
no es necesario capturar el evento, solo basta con crear los campos persistentes de la tabla o query y en la propiedad de dateformat ponerle hh:nn (ojo mm es de mes no se minutos) y listo!! ya te aparecera como debe
Responder Con Cita
  #4  
Antiguo 10-03-2009
Avatar de MichelH
MichelH MichelH is offline
Miembro
 
Registrado: jul 2005
Ubicación: jalisco mexico
Posts: 44
Poder: 0
MichelH Va por buen camino
Cierto LuisGutierrez, me equiboque con el formato de los minutos, es nn para minutos y mm para meses.

Yo lo hago en el evento porque con solo ese evento puedo fomatear varias columnas a la vez con el mismo código, concatenar columnas en tiempo de ejecución o sustituir valores, inclusive varios dbgrids con el mismo codigo, ademas de poder colorear filas lo cual a veces es util por ejemplo en "pedidos cancelados" colorear los registro con este estado. Y con los campos persistentes lo tengo que hacer siempre de uno en uno cada vez que lo ocupo.

Bueno asi es como siento que tengo mas libertad en cuando a diseño.

Saludos!!
__________________
No hay misterios, sólo hay falta de información.
Tampoco hay milagros, sólo hay hechos científicos ignorados
Responder Con Cita
  #5  
Antiguo 10-03-2009
tato_pincha87 tato_pincha87 is offline
Registrado
 
Registrado: mar 2008
Posts: 6
Poder: 0
tato_pincha87 Va por buen camino
Muchas gracias señores, ya lo estoy probando, cuando vuelva de kinesiologia, MUCHAS PERO MUCHAS GRACIAS!

Un abrazo a los 2!

TATO
Responder Con Cita
  #6  
Antiguo 11-03-2009
tato_pincha87 tato_pincha87 is offline
Registrado
 
Registrado: mar 2008
Posts: 6
Poder: 0
tato_pincha87 Va por buen camino
Bueno, volvi de kinesiologia, jaja, y probe lo que me dijeron, pero no me anduvo. Sin embargo, explorando un poco el ADOQuery, vi que en una propiedad estaba el nombre "Display format" , y se me ocurrio ponerle hh:nn, y anduvo. Asique muchas gracias igual, y MichelH, que son las grillas RxDbgrids? Me fije en delphi, pero no las tengo, cual delphi tenes? no se si variara sobre si hay o no componentes, pero en el 2007 no lo tengo :S. Gracias muchachos!
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
cambiar formato de hora desve Varios 3 07-03-2008 22:33:44
Problema con formato de fecha y hora SaurioNet MS SQL Server 1 15-06-2006 23:28:28
Formato de Fecha y Hora adebonis Varios 2 17-03-2005 22:07:40
formato de hora que excede las 24:00 anitra_cattivo Varios 2 23-12-2003 04:37:49
convertir a formato de Hora ebeltete SQL 1 05-06-2003 09:26:59


La franja horaria es GMT +2. Ahora son las 04:34:17.


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