ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Ocultar Colunas no dbgrid

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
28440959842
Aprendiz
Aprendiz


Registrado: Quinta-Feira, 12 de Abril de 2012
Mensagens: 166

MensagemEnviada: Qua Mar 02, 2016 12:52 am    Assunto: Ocultar Colunas no dbgrid Responder com Citação

Amigos, estou com uma dúvida,

Para ocultar uma coluna no dbgrid faço o seguinte:

Código:
 DBGrd2.Columns[8].Visible := False;


Blz, mas o que gostaria é o seguinte.

tenho um dbgrid com 24 colunas, onde cada uma é um horário, 01:00, 02:00, 03:00....00:00

fiz um cadastro de turno onde tenho 3 horários, ou posso ter mais, como por exemplo:

horário 1 - 07:00 as 15:00
horario 2 15:00 as 23:00
horario 3 23:00 as 07:00


então, quando o usuário das 07:00 as 15:00 entrassem no sistema, só ficasse visível as colunas das 07:00 as 15:00.



como se pegasse colunas <07>15:00 disable, mas como faz isso no delphi?

Abraços!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qua Mar 02, 2016 10:12 am    Assunto: Responder com Citação

Bom dia,

Acho que você pode utilizar um looping para varrer as colunas do DBGrid e verificar se cada coluna está dentro do intervalo.
Exemplo utilizando o título da coluna para fazer a comparação:

Código:
var
  i: integer;
  HoraAux := TTime;
  // ...
begin
  // ...
  for i := 0 to DBGrd2.Columns.Count - 1 do
    begin
      HoraAux := StrToTime(DBGrd2.Columns[i].Title);
      DBGrd2.Columns[i].Visible :=
          ( (dm1.DataSet1.FieldByName('HoraFim').AsDateTime > dm1.DataSet1.FieldByName('HoraIni').AsDateTime) and
            (HoraAux >= dm1.DataSet1.FieldByName('HoraIni').AsDateTime) and
            (HoraAux <= dm1.DataSet1.FieldByName('HoraFim').AsDateTime) ) or
          ( (dm1.DataSet1.FieldByName('HoraFim').AsDateTime < dm1.DataSet1.FieldByName('HoraIni').AsDateTime) and
            ( (HoraAux >= dm1.DataSet1.FieldByName('HoraIni').AsDateTime) or
              (HoraAux <= dm1.DataSet1.FieldByName('HoraFim').AsDateTime) ) );
    end;


Espero que ajude


Editado pela última vez por imex em Seg Dez 04, 2023 11:39 am, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
28440959842
Aprendiz
Aprendiz


Registrado: Quinta-Feira, 12 de Abril de 2012
Mensagens: 166

MensagemEnviada: Qua Mar 02, 2016 12:25 pm    Assunto: Responder com Citação

Obrigado meu amigo, vou fazer o teste aqui, apenas para tirar uma dúvida, tenho 24 colunas no dbgrid, faço o laço para cada coluna?

Abraços!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qua Mar 02, 2016 1:40 pm    Assunto: Responder com Citação

Não, você executa o laço apenas uma vez para o DBGrid.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB