DateTimePicker.Checked não está funcionando no windows vista

Notei estranho o comportamento estranho desse componente num pc novo, eu desmarcava o check e a consulta continuava filtrando por data, ai coloquei uma data bem antiga e todos os registros apareceram. Pensei: — Como assim?! eu tinha testado isso..

Abri um novo projeto, inseri o DateTimePicker (propriedade ShowCheckBox = true) e um botão onde coloquei:

ShowMessage(BoolToStr(DateTimePicker1.Checked))

Executei:

  • Estava desmarcado, cliquei no botão, 0 (certo)
  • Marquei, botão, -1 (certo)
  • Desmarquei, botão, -1 (opa! ta errado)

Depois de ler, o que fiz:

Abri a unit ComCtrls (onde esta o componente). Para abri-la basta clicar com o direito em TDateTimePicker e selecionar a primeira opção do menu suspenso (Find declaration).

Procurei a procedure “TDateTimePicker.CNNotify”:

procedure TDateTimePicker.CNNotify(var Message: TWMNotify);
var
DT: TDateTime;
AllowChange: Boolean;
begin

DTN_DATETIMECHANGE:

{if FShowCheckbox and IsBlankSysTime(st) then * linha original}

if FShowCheckbox and (dwFlags = GDT_NONE) then {linha atualizada}

FChecked := False

Fiz uma pesquisa na pasta do Delphi pelo arquivo ComCtrls.dcu porque é ele que será usado quando você compilar o projeto. resultado nestas pastas:

  • C:\Program Files\CodeGear\RAD Studio\5.0\lib
  • C:\Program Files\CodeGear\RAD Studio\5.0\lib\debug

Fui no menu “Tools>Options>Enviroment Options>Delphi Options>Library – Win32” e coloquei o diretório do arquivo .pas (C:\Program Files\CodeGear\RAD Studio\5.0\source\Win32\vcl) no início da lista do “Library path”.

Compilei o projeto, para gerar o arquivo .dcu no diretório do arquivo .pas. Peguei esse .dcu e coloquei nos dois diretórios que falei aqui em cima (o da pesquisa).

Voltei lá no Library path e tirei o diretório recém colocado.

Pronto! Tudo certinho!

fontes:

newsgroups.cryer.info

msdn (microsoft developer network)

Anúncios

2 Respostas para “DateTimePicker.Checked não está funcionando no windows vista

  1. Boa dica amigo. Tive o mesmo problema e consegui resolver com esta publicação.

  2. Aparentemente funcionou também no Rad Studio 2009 com Windows 7.
    Apenas uma observação, o usuário tem que ter permissão de escrita no diretório do Delphi.
    Abraços.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s