From: Remko B. <rem...@us...> - 2003-06-22 13:41:33
|
Update of /cvsroot/jvcl/jvcl/source In directory sc8-pr-cvs1:/tmp/cvs-serv2229 Modified Files: JvTimeLine.pas Log Message: Themed Index: JvTimeLine.pas =================================================================== RCS file: /cvsroot/jvcl/jvcl/source/JvTimeLine.pas,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** JvTimeLine.pas 22 Feb 2003 06:45:21 -0000 1.12 --- JvTimeLine.pas 22 Jun 2003 13:41:29 -0000 1.13 *************** *** 150,153 **** --- 150,156 ---- FRepeatClick: Boolean; FTimer: TTimer; + {$IFDEF JVCLThemesEnabled} + FMouseInControl: Boolean; + {$ENDIF} procedure SetDirection(const Value: TJvScrollArrow); procedure SetFlat(const Value: Boolean); *************** *** 156,159 **** --- 159,166 ---- procedure OnTimer(Sender: TObject); protected + {$IFDEF JVCLThemesEnabled} + procedure CMMouseEnter(var Msg: TMessage); message CM_MOUSEENTER; + procedure CMMouseLeave(var Msg: TMessage); message CM_MOUSELEAVE; + {$ENDIF} procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; *************** *** 484,487 **** --- 491,497 ---- uses + {$IFDEF JVCLThemesEnabled} + Themes, + {$ENDIF} {$IFDEF COMPILER6_UP} DateUtils, *************** *** 517,524 **** function PixelsForDays(Date: TDateTime; PixelsPerMonth: Integer): Integer; var ! y, m, D: Word; begin ! DecodeDate(Date - 1, y, m, D); ! Result := D * PixelsPerMonth div MonthDays[IsLeapYear(y), m]; end; --- 527,534 ---- function PixelsForDays(Date: TDateTime; PixelsPerMonth: Integer): Integer; var ! Y, M, D: Word; begin ! DecodeDate(Date - 1, Y, M, D); ! Result := D * PixelsPerMonth div MonthDays[IsLeapYear(Y), M]; end; *************** *** 532,536 **** R: TRect; begin ! Result := InterSectRect(R, Rect1, Rect2); end; --- 542,546 ---- R: TRect; begin ! Result := IntersectRect(R, Rect1, Rect2); end; *************** *** 797,806 **** end; procedure TJvTLScrollBtn.Paint; const Directions: array [TJvScrollArrow] of Integer = (DFCS_SCROLLLEFT, DFCS_SCROLLRIGHT, DFCS_SCROLLUP, DFCS_SCROLLDOWN); var ! Flags: Integer; begin if TimeLine = nil then --- 807,843 ---- end; + {$IFDEF JVCLThemesEnabled} + procedure TJvTLScrollBtn.CMMouseEnter(var Msg: TMessage); + begin + inherited; + if ThemeServices.ThemesEnabled and not (FMouseInControl) and not (csDesigning in ComponentState) then + begin + FMouseInControl := True; + Invalidate; + end; + end; + + procedure TJvTLScrollBtn.CMMouseLeave(var Msg: TMessage); + begin + inherited; + if ThemeServices.ThemesEnabled and FMouseInControl then + begin + FMouseInControl := False; + Invalidate; + end; + end; + {$ENDIF} + procedure TJvTLScrollBtn.Paint; const Directions: array [TJvScrollArrow] of Integer = (DFCS_SCROLLLEFT, DFCS_SCROLLRIGHT, DFCS_SCROLLUP, DFCS_SCROLLDOWN); + CFlat: array [Boolean] of Word = (0, DFCS_FLAT); + CPushed: array [Boolean] of Word = (0, DFCS_PUSHED); + {$IFDEF JVCLThemesEnabled} var ! Button: TThemedScrollBar; ! Details: TThemedElementDetails; ! {$ENDIF} begin if TimeLine = nil then *************** *** 808,820 **** if not Visible then Exit; ! if Flat then ! Flags := DFCS_FLAT else ! Flags := 0; ! if FPushed then ! Flags := Flags or DFCS_PUSHED; ! // TimeLine.FSelectedItem := nil; { fixes begindrag bug ? } ! DrawFrameControl(Canvas.Handle, Rect(0, 0, Width, Height), DFC_SCROLL, ! Flags or Directions[Direction]); end; --- 845,876 ---- if not Visible then Exit; ! ! {$IFDEF JVCLThemesEnabled} ! if ThemeServices.ThemesEnabled then ! begin ! if FPushed then ! Button := tsArrowBtnLeftPressed ! else ! if FMouseInControl then ! Button := tsArrowBtnLeftHot ! else ! Button := tsArrowBtnLeftNormal; ! ! case Direction of ! scrollRight: ! Button := TThemedScrollBar(Ord(tsArrowBtnRightNormal) + Ord(Button) - Ord(tsArrowBtnLeftNormal)); ! scrollUp: ! Button := TThemedScrollBar(Ord(tsArrowBtnUpNormal) + Ord(Button) - Ord(tsArrowBtnLeftNormal)); ! scrollDown: ! Button := TThemedScrollBar(Ord(tsArrowBtnDownNormal) + Ord(Button) - Ord(tsArrowBtnLeftNormal)); ! end; ! Details := ThemeServices.GetElementDetails(Button); ! ThemeServices.DrawElement(Canvas.Handle, Details, Rect(0, 0, Width, Height)); ! end else ! {$ENDIF} ! // TimeLine.FSelectedItem := nil; { fixes begindrag bug ? } ! DrawFrameControl(Canvas.Handle, Rect(0, 0, Width, Height), DFC_SCROLL, ! CFlat[Flat] or CPushed[FPushed] or Directions[Direction]); end; *************** *** 996,1005 **** FTimer.Interval := FRepeatPause; if FPushed and MouseCapture then ! try ! Click; ! except ! FTimer.Enabled := False; ! raise; ! end; end; --- 1052,1061 ---- FTimer.Interval := FRepeatPause; if FPushed and MouseCapture then ! try ! Click; ! except ! FTimer.Enabled := False; ! raise; ! end; end; *************** *** 1023,1029 **** FItemHintImageList := TImageList.CreateSize(14, 6); try ! Bmp.LoadFromResourceName(hInstance, 'JvTIMELINEITEMLEFT'); FItemHintImageList.Add(Bmp, nil); ! Bmp.LoadFromResourceName(hInstance, 'JvTIMELINEITEMRIGHT'); FItemHintImageList.Add(Bmp, nil); finally --- 1079,1085 ---- FItemHintImageList := TImageList.CreateSize(14, 6); try ! Bmp.LoadFromResourceName(HInstance, 'JvTIMELINEITEMLEFT'); FItemHintImageList.Add(Bmp, nil); ! Bmp.LoadFromResourceName(HInstance, 'JvTIMELINEITEMRIGHT'); FItemHintImageList.Add(Bmp, nil); finally *************** *** 1230,1237 **** procedure TJvCustomTimeLine.SetFirstDate(Value: TDate); var ! y, m, D: Word; begin ! DecodeDate(Value, y, m, D); ! Value := EncodeDate(y, m, 1); if Trunc(FFirstDate) <> Trunc(Value) then begin --- 1286,1293 ---- procedure TJvCustomTimeLine.SetFirstDate(Value: TDate); var ! Y, M, D: Word; begin ! DecodeDate(Value, Y, M, D); ! Value := EncodeDate(Y, M, 1); if Trunc(FFirstDate) <> Trunc(Value) then begin *************** *** 1419,1423 **** function TJvCustomTimeLine.HasMoved(P: TPoint): Boolean; begin ! Result := (abs(FStartPos.X - P.X) > 10) or (abs(FStartPos.Y - P.Y) > ItemHeight div 2); end; --- 1475,1479 ---- function TJvCustomTimeLine.HasMoved(P: TPoint): Boolean; begin ! Result := (Abs(FStartPos.X - P.X) > 10) or (Abs(FStartPos.Y - P.Y) > ItemHeight div 2); end; *************** *** 1623,1627 **** begin sDay := IntToStr(I); ! aRect.Left := round((I - 1) * DayWidth) + (StartAt + round(DayWidth) div 2 - TextWidth(sDay) div 2); aRect.Right := aRect.Left + TextWidth(sDay); --- 1679,1683 ---- begin sDay := IntToStr(I); ! aRect.Left := Round((I - 1) * DayWidth) + (StartAt + Round(DayWidth) div 2 - TextWidth(sDay) div 2); aRect.Right := aRect.Left + TextWidth(sDay); *************** *** 1735,1739 **** Pen.Color := clWhite else ! Pen.Color := clBtnface; Pen.Width := 1; MoveTo(StartAt, FItemOffset - 4); --- 1791,1795 ---- Pen.Color := clWhite else ! Pen.Color := clBtnFace; Pen.Width := 1; MoveTo(StartAt, FItemOffset - 4); *************** *** 1745,1749 **** procedure TJvCustomTimeLine.DrawTimeLine(ACanvas: TCanvas); var ! y, m, D: Word; I, fYr: Integer; FirstYear: Boolean; --- 1801,1805 ---- procedure TJvCustomTimeLine.DrawTimeLine(ACanvas: TCanvas); var ! Y, M, D: Word; I, fYr: Integer; FirstYear: Boolean; *************** *** 1752,1767 **** aShadowLeft, aShadowRight: string; ! procedure AdjustYears(var y, m: Word); begin ! if m = 13 then begin ! Inc(y); ! m := 1; end else ! if m = 0 then begin ! Dec(y); ! m := 12; end; end; --- 1808,1823 ---- aShadowLeft, aShadowRight: string; ! procedure AdjustYears(var Y, M: Word); begin ! if M = 13 then begin ! Inc(Y); ! M := 1; end else ! if M = 0 then begin ! Dec(Y); ! M := 12; end; end; *************** *** 1785,1793 **** { draw years and months } I := 0; ! DecodeDate(FFirstDate, y, m, D); ! aShadowLeft := IntToStr(y); ! fYr := y; ! DecodeDate(GetLastDate, y, m, D); ! aShadowRight := IntToStr(y); SetBkMode(Canvas.Handle, Windows.Transparent); LastDate := FFirstDate; --- 1841,1849 ---- { draw years and months } I := 0; ! DecodeDate(FFirstDate, Y, M, D); ! aShadowLeft := IntToStr(Y); ! fYr := Y; ! DecodeDate(GetLastDate, Y, M, D); ! aShadowRight := IntToStr(Y); SetBkMode(Canvas.Handle, Windows.Transparent); LastDate := FFirstDate; *************** *** 1795,1808 **** while LastDate <= (GetLastDate + 5) do begin ! DecodeDate(LastDate, y, m, D); ! if m <> 1 then begin { not a new year, so it's a month } ! DrawMonth(Canvas, I, m); ! if FSupportLines and ((FYearWidth >= 140) or (m mod 3 = 1)) then DrawVertSupport(Canvas, I); if FShowMonths and (FYearWidth >= 140) then ! DrawMonthName(Canvas, m, I); if FShowDays and (FYearWidth >= 1200) then ! DrawDays(Canvas, MonthDays[IsLeapYear(y), m], I); end else --- 1851,1864 ---- while LastDate <= (GetLastDate + 5) do begin ! DecodeDate(LastDate, Y, M, D); ! if M <> 1 then begin { not a new year, so it's a month } ! DrawMonth(Canvas, I, M); ! if FSupportLines and ((FYearWidth >= 140) or (M mod 3 = 1)) then DrawVertSupport(Canvas, I); if FShowMonths and (FYearWidth >= 140) then ! DrawMonthName(Canvas, M, I); if FShowDays and (FYearWidth >= 1200) then ! DrawDays(Canvas, MonthDays[IsLeapYear(Y), M], I); end else *************** *** 1811,1815 **** if FirstYear then begin ! fYr := y; FirstYear := False; end; --- 1867,1871 ---- if FirstYear then begin ! fYr := Y; FirstYear := False; end; *************** *** 1818,1830 **** { draw text for january here } if FShowMonths and (FYearWidth >= 144) then ! DrawMonthName(Canvas, m, I); if FShowDays and (FYearWidth >= 1200) then ! DrawDays(Canvas, MonthDays[IsLeapYear(y), m], I); end; Inc(I, Trunc(FMonthWidth)); ! Inc(m); ! AdjustYears(y, m); ! LastDate := EncodeDate(y, m, 1); end; --- 1874,1886 ---- { draw text for january here } if FShowMonths and (FYearWidth >= 144) then ! DrawMonthName(Canvas, M, I); if FShowDays and (FYearWidth >= 1200) then ! DrawDays(Canvas, MonthDays[IsLeapYear(Y), M], I); end; Inc(I, Trunc(FMonthWidth)); ! Inc(M); ! AdjustYears(Y, M); ! LastDate := EncodeDate(Y, M, 1); end; *************** *** 1932,1936 **** begin if Assigned(FOnDrawItem) and (FStyle in [tlOwnerDrawVariable, tlOwnerDrawFixed]) then ! FOnDrawItem(self, ACanvas, Item, R) else begin --- 1988,1992 ---- begin if Assigned(FOnDrawItem) and (FStyle in [tlOwnerDrawVariable, tlOwnerDrawFixed]) then ! FOnDrawItem(Self, ACanvas, Item, R) else begin *************** *** 2091,2101 **** function TJvCustomTimeLine.DateAtPos(Pos: Integer): TDateTime; var ! yr, m, D: Word; em, xremain, xday: Integer; begin em := Trunc(Pos / FMonthWidth); { elapsed months } xremain := Pos mod Trunc(FMonthWidth); ! DecodeDate(FFirstDate, yr, m, D); ! em := m + em; Yr := Yr + em div 12; em := em mod 12; --- 2147,2157 ---- function TJvCustomTimeLine.DateAtPos(Pos: Integer): TDateTime; var ! yr, M, D: Word; em, xremain, xday: Integer; begin em := Trunc(Pos / FMonthWidth); { elapsed months } xremain := Pos mod Trunc(FMonthWidth); ! DecodeDate(FFirstDate, yr, M, D); ! em := M + em; Yr := Yr + em div 12; em := em mod 12; *************** *** 2106,2116 **** end; ! xday := Ceil(xremain * (MonthDays[isleapyear(yr), em] / FMonthWidth)); if xday <= 0 then xday := 1 else ! if xday > MonthDays[Isleapyear(yr), em] then ! xday := MonthDays[Isleapyear(yr), em]; Result := EncodeDate(Yr, em, xday); end; --- 2162,2172 ---- end; ! xday := Ceil(xremain * (MonthDays[IsLeapYear(yr), em] / FMonthWidth)); if xday <= 0 then xday := 1 else ! if xday > MonthDays[IsLeapYear(yr), em] then ! xday := MonthDays[IsLeapYear(yr), em]; Result := EncodeDate(Yr, em, xday); end; *************** *** 2118,2126 **** function TJvCustomTimeLine.PosAtDate(Date: TDateTime): Integer; var ! m, D: Integer; begin ! m := MonthCount(FFirstDate, Date); ! D := PixelsForDays(Date, round(FMonthWidth)); ! Result := Round((m * FMonthWidth + D) + FMonthWidth / 60); { add in a little to place in "center" } end; --- 2174,2182 ---- function TJvCustomTimeLine.PosAtDate(Date: TDateTime): Integer; var ! M, D: Integer; begin ! M := MonthCount(FFirstDate, Date); ! D := PixelsForDays(Date, Round(FMonthWidth)); ! Result := Round((M * FMonthWidth + D) + FMonthWidth / 60); { add in a little to place in "center" } end; *************** *** 2153,2157 **** var I: Integer; ! ch: Char; S: string; Item: TJvTimeItem; --- 2209,2213 ---- var I: Integer; ! Ch: Char; S: string; Item: TJvTimeItem; *************** *** 2163,2171 **** begin S := ''; ! Stream.Read(ch, 1); ! while ch <> #13 do begin ! S := S + ch; ! Stream.Read(ch, 1); end; case I of --- 2219,2227 ---- begin S := ''; ! Stream.Read(Ch, 1); ! while Ch <> #13 do begin ! S := S + Ch; ! Stream.Read(Ch, 1); end; case I of *************** *** 2259,2262 **** --- 2315,2321 ---- RC, RW: TRect; ACanvas: TCanvas; + {$IFDEF JVCLThemesEnabled} + Details: TThemedElementDetails; + {$ENDIF} begin ACanvas := TCanvas.Create; *************** *** 2272,2278 **** { Draw borders in non-client area } OffsetRect(RW, -RW.Left, -RW.Top); if FBorderStyle = bsSingle then begin ! Frame3D(ACanvas, RW, clBtnShadow, clBtnHighLIght, 1); Frame3D(ACanvas, RW, cl3dDKShadow, clBtnFace, 1); end --- 2331,2349 ---- { Draw borders in non-client area } OffsetRect(RW, -RW.Left, -RW.Top); + {$IFDEF JVCLThemesEnabled} + if ThemeServices.ThemesEnabled then + begin + if FBorderStyle = bsSingle then + begin + Details := ThemeServices.GetElementDetails(teEditTextNormal); + ThemeServices.DrawElement(ACanvas.Handle, Details, RW); + RW := ThemeServices.ContentRect(ACanvas.Handle, Details, RW); + end; + end + else + {$ENDIF} if FBorderStyle = bsSingle then begin ! Frame3D(ACanvas, RW, clBtnShadow, clBtnHighlight, 1); Frame3D(ACanvas, RW, cl3dDKShadow, clBtnFace, 1); end |