From: Sebastien B. <sb...@us...> - 2002-09-27 18:41:11
|
Update of /cvsroot/jvcl/jvcl/source In directory usw-pr-cvs1:/tmp/cvs-serv20886 Modified Files: JvUpDown.pas Log Message: Fixed bug 0000336 Index: JvUpDown.pas =================================================================== RCS file: /cvsroot/jvcl/jvcl/source/JvUpDown.pas,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** JvUpDown.pas 20 Jul 2002 11:52:36 -0000 1.2 --- JvUpDown.pas 27 Sep 2002 18:41:06 -0000 1.3 *************** *** 71,76 **** --- 71,78 ---- function AcceptPosition(Value: Integer):Boolean; function CanChange: Boolean; override; + procedure SetPos(const Value: Integer); public constructor Create(AOwner: TComponent);override; + function AcceptInteger: Boolean; published property AlignButton:TJvAlignButton read FAlignButton write SetAlignButton default abRight; *************** *** 98,101 **** --- 100,104 ---- UDS_HOTTRACK = $0100; + {*****************************************************************} *************** *** 144,148 **** if HandleAllocated then begin ! Result := SendMessage(Handle, UDM_GETPOS32, 0, 0); FPosition := Result; end --- 147,154 ---- if HandleAllocated then begin ! if AcceptInteger then ! Result := SendMessage(Handle, UDM_GETPOS32, 0, 0) ! else ! Result := SendMessage(Handle, UDM_GETPOS, 0, 0); FPosition := Result; end *************** *** 202,206 **** FPosition := Value; if HandleAllocated then ! SendMessage(Handle, UDM_SETPOS32, 0, Value); if (FAssociate<>nil) and (FAssociate is TCustomEdit) then TCustomEdit(FAssociate).Text := IntToStr(FPosition); --- 208,212 ---- FPosition := Value; if HandleAllocated then ! SetPos(Value); if (FAssociate<>nil) and (FAssociate is TCustomEdit) then TCustomEdit(FAssociate).Text := IntToStr(FPosition); *************** *** 240,244 **** inherited; SendMessage(Handle, UDM_SETRANGE32, FMin, FMax); ! SendMessage(Handle, UDM_SETPOS32, 0, FPosition); SetAssociate(FAssociate); Increment := 1; --- 246,250 ---- inherited; SendMessage(Handle, UDM_SETRANGE32, FMin, FMax); ! SetPos(FPosition); SetAssociate(FAssociate); Increment := 1; *************** *** 303,306 **** --- 309,353 ---- MakeWParam(0, EN_CHANGE), Associate.handle); + end; + + {**************************************************} + + function TJvUpDown.AcceptInteger: Boolean; + var + Info: Pointer; + InfoSize: DWORD; + FileInfo: PVSFixedFileInfo; + FileInfoSize: DWORD; + Tmp: DWORD; + Major, Minor: Integer; + begin + //SETPOS32 are only supported with comctl32.dll version 5.80 or later + result := false; + try + InfoSize := GetFileVersionInfoSize('comctl32.dll', Tmp); + if InfoSize = 0 then + Exit; + GetMem(Info, InfoSize); + try + GetFileVersionInfo('comctl32.dll', 0, InfoSize, Info); + VerQueryValue(Info, '\', Pointer(FileInfo), FileInfoSize); + Major := FileInfo^.dwFileVersionMS shr 16; + Minor := FileInfo^.dwFileVersionMS and $FFFF; + result := (Major>5) or ((Major=5) and (Minor>80)); + finally + FreeMem(Info, FileInfoSize); + end; + except + end; + end; + + {**************************************************} + + procedure TJvUpDown.SetPos(const Value: Integer); + begin + if AcceptInteger then + SendMessage(Handle, UDM_SETPOS32, 0, Value) + else + SendMessage(Handle, UDM_SETPOS, 0, Value); end; |