如何在ScrollBox控件中加入标尺,可以设定标尺的度量单位(英寸、毫米、像素等),可以放大缩小,不要第三方控件。
解决方案 »
- 请大家介绍几本中高级delphi好书(详见内文)
- 按揭200分给饭桶
- 谁能回答一下有关INI配置文件的基本知识吗?(用法,定义.....)
- 数据读取时碰到的问题
- 即将离开现在的单位,心情不好,先散200分!
- 使用VB开发的OCX控件是否可以调入到delphi中?调入后为何,看到我的控件,开发过程中需要注意些什么?还是调入过程中有问题?
- (分不多了!)怎么得到当前时间?
- 如何用代码使TDateTimePicker 弹出日历界面
- 急问:如何设置NMSMTP控件才能让程序连接到SMTP服务器上而不出现要求认证的错误?
- 我需要一个把显示在dbgrid里内容打印并可以下载成excel的实例!100分相送!
- adoquery的属性connection和connectionstring有什么区别?
- 我有一个dll文件,在使用过程中,参数出问题了。
能否说的详细点,或给个思路。
自己画了,给你帖个应用中的代码
(1)
FOldBottomProc := pnlBottom.WindowProc;
pnlBottom.WindowProc := NewDrawBottomPanelProc;(2)
procedure TFrmSendTaskGraphView.NewDrawBottomPanelProc(var Message: TMessage);
var
i,j,UnitWidth,UnitSecond,TmpSecond,TmpWidth:Integer;
TmpDC:HDC;
XOffSet,YOffSet:Integer;
MyCvs:TCanvas;
ClientRect:TRect;
begin
FOldBottomProc(Message);
GetUnitWidthAndSecond(UnitWidth,UnitSecond); XOffSet:=2;
YOffSet:=2;
if (Message.Msg = WM_PAINT) then
begin
ClientRect := pnlBottom.ClientRect;
MyCvs:=TCanvas.Create;
MyCvs.Handle:=GetDC(pnlBottom.Handle);//这句主要
MyCvs.Brush.Color:=TColor($3C3C3C);
MyCvs.FillRect(ClientRect);
MyCvs.Pen.Color := clWhite;
MyCvs.Pen.Style := psSolid;
MyCvs.Pen.Width := 1; MyCvs.Font.Color := clWhite;
MyCvs.Font.Size := 7; myCvs.LineTo(0,0);
myCvs.LineTo(ClientRect.Right,0); i:=0;
j:=3600*6+
Round((HScrollBar.Position*100/TaskBar_WidthOneSecond)/ FSimpleGraph.ZoomX);
if (j mod 60) <> 0 then
begin
TmpSecond:= 60- (j mod 60);
TmpWidth:= MulDiv(Round(TmpSecond*TaskBar_WidthOneSecond),FSimpleGraph.ZoomX,100);
j:= j+ TmpSecond;
i:= i+TmpWidth;
end; while i<ClientRect.Right do
begin
MyCvs.MoveTo(i,0);
if (j mod 60)=0 then
begin
MyCvs.LineTo(i,6);
MyCvs.TextOut(i,6,
format('%2.2d',[j div 3600])+':'+
format('%2.2d',[(j mod 3600)div 60])+':'+
format('%2.2d',[j mod 60]));
end
else
MyCvs.LineTo(i,4);
Inc(i,UnitWidth);
Inc(j,UnitSecond);
end; ReleaseDC(pnlBottom.Handle,MyCvs.Handle);
MyCvs.Free;
end;
end;