亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mychart.pas

?? 水晶 ? ?報表 ? ? ? ?源碼 
?? PAS
字號:
(*
    迷你曲線圖表類(2005-3-9)
*)
unit MyChart;

interface

uses
  Windows,SysUtils, Classes, Controls,Graphics,ExtCtrls,Math;

type
  TLabelType=(ltNumber,ltTime);//坐標類型
  TMyChart = class(TGraphicControl)
  private
    { Private declarations }
    SelectPoints:Array[0..4] of TPoint;//選擇區(qū)域
    FLineColor:TColor;//表線顏色
    FCoordColor:TColor;//坐標軸顏色
    FGridColor:TColor;//網格顏色
    FBackColor:TColor;//背景顏色
    FSelLineColor:TColor;//選擇線顏色
    MDown:Boolean;//鼠標選中
    SelectStart:Boolean;//鼠標選中開始
    FLeftPixs:Integer;//左邊距
    FTopPixs:Integer;//上邊距
    FBottomPixs:Integer;//下邊距
    FRightPixs:Integer;//右邊距
    FCellWidth:Integer;//單元格寬度
    FCellHeight:Integer;//單元格高度
    BaseX:Double;//X方向位移
    BaseY:Double;//Y方向位移
    OffsetX1:Integer;//繪圖區(qū)域開始-X
    OffsetX2:Integer;//繪圖區(qū)域結束-X
    OffsetY1:Integer;//繪圖區(qū)域開始-Y
    OffsetY2:Integer;//繪圖區(qū)域結束-Y
    ScaleX:Double;//X-放大系數
    ScaleY:Double;//Y-放大系數
    internalCanvas:TCanvas;//內部畫布
    internalBitmap:TBitmap;
    internalWidth:Integer;//繪圖區(qū)域寬度
    internalHeight:Integer;//繪圖區(qū)域高度
    FLabelType: TLabelType;//坐標類型
    internalRgn:HRGN;
    FCoordFontColor: TColor;//坐標刻度顏色

    procedure SetLineColor(const Value: TColor);
    procedure SetCoordColor(const Value: TColor);
    procedure SetGridColor(const Value: TColor);
    procedure SetBackColor(const Value: TColor);
    procedure SetSelLineColor(const Value: TColor);
    procedure SetBottomPixs(const Value: Integer);
    procedure SetCellHeight(const Value: Integer);
    procedure SetCellWidth(const Value: Integer);
    procedure SetLeftPixs(const Value: Integer);
    procedure SetRightPixs(const Value: Integer);
    procedure SetTopPixs(const Value: Integer);
    procedure FMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
    procedure FMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
    procedure FMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
    procedure ZoomRect;
    procedure DrawGrid;
    procedure DrawCoord;
    procedure DoResize(Sender: TObject);
    procedure Clear;
    procedure DrawLine;

    property Canvas;
    property OnMouseDown;
    property OnMouseMove;
    property OnMouseUp;
    property OnResize;
    procedure SetLabelType(const Value: TLabelType);
    procedure SetCoordFontColor(const Value: TColor);
  protected
    { Protected declarations }
    procedure Paint;override;
  public
    { Public declarations }
    Points:Array[0..12,0..2047] of TPoint;
    constructor Create(AOwner:TComponent);override;
    destructor Destroy;override;
    procedure ReDraw;
  published
    { Published declarations }
    property Align;
    property ParentShowHint;
    property PopupMenu;
    property ShowHint;
    property Visible;
    property LabelType:TLabelType read FLabelType write SetLabelType;
    property LineColor:TColor read FLineColor write SetLineColor default clYellow;
    property CoordColor:TColor read FCoordColor write SetCoordColor default clWhite;
    property GridColor:TColor read FGridColor write SetGridColor default clSilver;
    property BackColor:TColor read FBackColor write SetBackColor default clBlack;
    property SelLineColor:TColor read FSelLineColor write SetSelLineColor default clWhite;
    property CoordFontColor:TColor read FCoordFontColor write SetCoordFontColor default clWhite;
    property TopPixs:Integer read FTopPixs write SetTopPixs default 10;
    property LeftPixs:Integer read FLeftPixs write SetLeftPixs default 10;
    property BottomPixs:Integer read FBottomPixs write SetBottomPixs default 30;
    property RightPixs:Integer read FRightPixs write SetRightPixs default 10;
    property CellWidth:Integer read FCellWidth write SetCellWidth default 40;
    property CellHeight:Integer read FCellHeight write SetCellHeight default 30;
  end;
implementation

{ TMyChart }

procedure TMyChart.Clear;//清除背景
begin
  with internalCanvas do
  begin
    Brush.Color:=FBackColor;
    FillRect(ClientRect);
  end;
  DrawCoord;//繪制坐標系
end;

constructor TMyChart.Create(AOwner: TComponent);
var
  i:Integer;
begin
  inherited Create(AOwner);
  internalBitmap:=TBitmap.Create;
  internalCanvas:=internalBitmap.Canvas;
  ControlStyle := ControlStyle + [csReplicatable];
  FLineColor:=clYellow;
  FGridColor:=clSilver;
  FCoordColor:=clWhite;
  FCoordFontColor:=clWhite;  
  FBackColor:=clBlack;
  FSelLineColor:=clWhite;
  MDown:=False;
  Height:=100;
  Width:=100;
  FTopPixs:=10;
  FLeftPixs:=10;
  FBottomPixs:=30;
  FRightPixs:=10;
  FCellWidth:=40;
  FCellHeight:=30;
  ScaleX:=1;
  ScaleY:=1;
  BaseX:=0;
  BaseY:=0;
  internalWidth:=Width-FLeftPixs-FRightPixs;
  internalHeight:=Height-FTopPixs-FBottomPixs;
  OffsetX2:=internalWidth;
  OffsetX1:=0;
  OffsetY2:=internalHeight;
  OffsetY1:=0;
  
  OnMouseDown:=FMouseDown;
  OnMouseMove:=FMouseMove;
  OnMouseUp:=FMouseUp;
  OnResize:=DoResize;
  for i:=0 to 2047 do
  begin
    Points[0,i].X:=i+FLeftPixs;
    Points[0,i].Y:=i Mod 100;
  end;
end;

destructor TMyChart.Destroy;
begin
  inherited;
  DeleteObject(internalRgn);  
  internalBitmap.Free;
end;

procedure TMyChart.DrawCoord;
begin
  with internalCanvas do
  begin
    Pen.Color:=FCoordColor;
    Pen.Style:=psSolid;
    MoveTo(FLeftPixs,FTopPixs);
    LineTo(FLeftPixs,Height-FBottomPixs);
    LineTo(Width-FRightPixs,Height-FBottomPixs);
  end;
  DrawGrid;
end;

procedure TMyChart.DrawGrid;
const
  YLabelFormatStr='%d';
  XLabelFormatStr='%d';
var
  tx,ty:Integer;
  sx,sy,CoordX,CoordY:Double;
  CoordXLabel,CoordYLabel:String;
begin
  with internalCanvas do
  begin
    Pen.Style:=psDot;
    Pen.Color:=FGridColor;
    sy:=(OffsetY2-OffsetY1)/(internalHeight/FCellHeight);
    CoordY:=OffsetY1;
    CoordYLabel:=Format(YLabelFormatStr,[Round(CoordY)]);
    TextOut(FLeftPixs-TextWidth(CoordYLabel),Height-FBottomPixs-13,CoordYLabel);
    ty:=Height-FBottomPixs-FCellHeight;
    while ty>=FTopPixs do
    begin
      MoveTo(FLeftPixs,ty);
      LineTo(Width-FRightPixs,ty);
      CoordY:=CoordY+sy;
      CoordYLabel:=Format(YLabelFormatStr,[Round(CoordY)]);
      TextOut(FLeftPixs-TextWidth(CoordYLabel),ty-13,CoordYLabel);
      Dec(ty,FCellHeight);
    end;
    sx:=(OffsetX2-OffsetX1)*FCellWidth/internalWidth;
    CoordX:=OffsetX1;
    CoordXLabel:=Format(XLabelFormatStr,[Round(CoordX)]);
    TextOut(FLeftPixs-TextWidth(CoordXLabel) shr 1,Height-FBottomPixs+1,CoordXLabel);
    tx:=FLeftPixs+FCellWidth;
    while tx<=InternalWidth+FLeftPixs do
    begin
      MoveTo(tx,FTopPixs);
      LineTo(tx,Height-FBottomPixs);
      CoordX:=CoordX+sx;
      CoordXLabel:=Format(XLabelFormatStr,[Round(CoordX)]);
      TextOut(tx-TextWidth(CoordXLabel) shr 1,Height-FBottomPixs+1,CoordXLabel);
      Inc(tx,FCellWidth);
    end;
  end;
end;

procedure TMyChart.DrawLine;
var
  tx:Integer;
begin
  with internalCanvas do
  begin
    SelectClipRgn(Handle,internalRgn);
    Pen.Style:=psSolid;
    Pen.Color:=FLineColor;
    if (ScaleX<>1) or (ScaleY<>1) then
    begin
      MoveTo(Round((Points[0,OffsetX1].X-FLeftPixs)*ScaleX-BaseX+FLeftPixs),Round((internalHeight-Points[0,OffsetX1].Y)*ScaleY-BaseY)+FTopPixs);
      for tx:=OffsetX1+1 to OffsetX2 do
      begin
        LineTo(Round((Points[0,tx].X-FLeftPixs)*ScaleX-BaseX+FLeftPixs),Round((internalHeight-Points[0,tx].Y)*ScaleY-BaseY)+FTopPixs);
      end;
    end
    else
    begin
      MoveTo(Points[0,OffsetX1].X,internalHeight-Points[0,OffsetX1].Y+FTopPixs);
      for tx:=OffsetX1+1 to OffsetX2 do
      begin
        LineTo(Points[0,tx].X,internalHeight-Points[0,tx].Y+FTopPixs);
      end;
    end;
  end;
  with Canvas do
  begin
    CopyRect(ClientRect,internalCanvas,ClientRect);
    if MDown and (not SelectStart)then
    begin
      Pen.Color:=FSelLineColor;
      Pen.Mode:=pmXOR;
      PolyLine(SelectPoints);
      Pen.Mode:=pmCopy;
    end;
  end;
end;



procedure TMyChart.FMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if mbLeft in [Button] then
  begin
    SelectPoints[0].X:=X;
    SelectPoints[0].Y:=Y;
    SelectPoints[1].Y:=Y;
    SelectPoints[3].X:=X;
    SelectPoints[4].X:=X;
    SelectPoints[4].Y:=Y;
    SelectStart:=True;
    MDown:=True;
  end;
end;
procedure TMyChart.FMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if MDown then
  begin
    with Canvas do
    begin
      Pen.Mode:=pmXOR;
      Pen.Style:=psSolid;
      Pen.Color:=FSelLineColor;
      if not SelectStart then
      begin
        PolyLine(SelectPoints);
      end;
      SelectPoints[1].X:=X;
      SelectPoints[2].X:=X;
      SelectPoints[2].Y:=Y;
      SelectPoints[3].Y:=Y;
      PolyLine(SelectPoints);
      Pen.Mode:=pmCopy;
      SelectStart:=False;
    end;
  end;
end;

procedure TMyChart.FMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  MDown:=False;
  if not SelectStart then
  begin
    with Canvas do
    begin
      Pen.Color:=FSelLineColor;
      Pen.Style:=psSolid;
      Pen.Mode:=pmXOR;
      PolyLine(SelectPoints);
      Pen.Mode:=pmCopy;
    end;
    ZoomRect;
  end;
end;


procedure TMyChart.Paint;
begin
  if (internalBitmap.Width<>Width) or (internalBitmap.Height<>Height) then
  begin
    internalBitmap.Width:=Width;
    internalBitmap.Height:=Height;
    DeleteObject(internalRgn);
    internalRgn:=CreateRectRgn(FLeftPixs,FTopPixs,Width-FRightPixs+1,Height-FBottomPixs+1);
    internalBitmap.Canvas.Font.Height:=-13;
    internalBitmap.Canvas.Font.Color:=FCoordFontColor;
  end;
  internalWidth:=Width-FLeftPixs-FRightPixs;
  internalHeight:=Height-FTopPixs-FBottomPixs;
  if ScaleX=1 then
  begin
    OffsetX2:=internalWidth;
  end;
  if ScaleY=1 then
  begin
    OffsetY2:=internalHeight;
  end;
  ReDraw;
  if csDesigning in ComponentState then
  begin
  	with Canvas do
	  begin
	    Pen.Style := psDash;
  	  Brush.Style := bsClear;
	    Rectangle(0, 0, Width, Height);
  	end;
  end;
end;

procedure TMyChart.SetBackColor(const Value: TColor);
begin
  if  FBackColor <> Value then
  begin
    FBackColor := Value;
    ReDraw;
  end;
end;

procedure TMyChart.SetBottomPixs(const Value: Integer);
begin
  if  FBottomPixs <> Value then
  begin
    FBottomPixs := Value;
    internalHeight:=Height-FTopPixs-FBottomPixs;
    ReDraw;
  end;
end;

procedure TMyChart.SetCellHeight(const Value: Integer);
begin
  if FCellHeight<>Value then
  begin
    if Value<9 then
      FCellHeight :=9
    else
      FCellHeight := Value;
    ReDraw;
  end;
end;

procedure TMyChart.SetCellWidth(const Value: Integer);
begin
  if FCellWidth<>Value then
  begin
    if Value<12 then
      FCellWidth :=12
    else
      FCellWidth := Value;
    ReDraw;
  end;
end;

procedure TMyChart.SetCoordColor(const Value: TColor);
begin
  if FCoordColor <> Value then
  begin
    FCoordColor := Value;
    ReDraw;
  end;
end;


procedure TMyChart.SetGridColor(const Value: TColor);
begin
  if FGridColor <> Value then
  begin
    FGridColor := Value;
    ReDraw;
  end;
end;

procedure TMyChart.SetLeftPixs(const Value: Integer);
var
  i:Integer;
begin
  if  FLeftPixs <> Value then
  begin
    FLeftPixs := Value;
    internalWidth:=Width-FLeftPixs-FRightPixs;
    for i:=0 to 2047 do
    begin
      Points[0,i].X:=i+FLeftPixs;
    end;
    ReDraw;
  end;
end;

procedure TMyChart.SetLineColor(const Value: TColor);
begin
  if  FLineColor <> Value then
  begin
    FLineColor := Value;
    ReDraw;
  end;
end;


procedure TMyChart.SetRightPixs(const Value: Integer);
var
  i:Integer;
begin
  if  FRightPixs <> Value then
  begin
    FRightPixs := Value;
    internalWidth:=Width-FLeftPixs-FRightPixs;
    for i:=0 to 2047 do
    begin
      Points[0,i].X:=i+FLeftPixs;
    end;
    ReDraw;
  end;
end;

procedure TMyChart.SetSelLineColor(const Value: TColor);
begin
  if FSelLineColor <> Value then
  begin
    FSelLineColor := Value;
    ReDraw;
  end;
end;

procedure TMyChart.SetTopPixs(const Value: Integer);
begin
  if FTopPixs <> Value then
  begin
    FTopPixs := Value;
    internalHeight:=Height-FTopPixs-FBottomPixs;
    ReDraw;
  end;
end;

procedure TMyChart.ZoomRect;
var
  wx,wy:Integer;
  sy,sx:Double;
begin
    wx:=(SelectPoints[2].X-SelectPoints[0].X);
    wy:=(SelectPoints[2].Y-SelectPoints[0].Y);
    if (wx<>0) and (wy<>0) then
    begin
      if (wx<0) or (wy<0) then
      begin
        ScaleX:=1;
        ScaleY:=1;
        BaseX:=0;
        BaseY:=0;
        OffsetX2:=internalWidth;
        OffsetX1:=0;
        OffsetY2:=internalHeight;
        OffsetY1:=0;
      end
      else
      begin
        OffsetX1:=Floor((SelectPoints[0].X-FLeftPixs+BaseX)/ScaleX);
        OffsetX2:=Round((SelectPoints[2].X-FLeftPixs+BaseX)/ScaleX);
        OffsetY2:=internalHeight-Floor((SelectPoints[0].Y-FTopPixs+BaseY)/ScaleY);
        OffsetY1:=internalHeight-Round((SelectPoints[2].Y-FTopPixs+BaseY)/ScaleY);
        sx:=internalWidth/wx;
        sy:=internalHeight/wy;
        ScaleX:=ScaleX*sx;
        ScaleY:=ScaleY*sy;
        BaseX:=(SelectPoints[0].X-FLeftPixs+BaseX)*sx;
        BaseY:=(SelectPoints[0].Y-FTopPixs+BaseY)*sy;
      end;
      ReDraw;
    end;
end;

procedure TMyChart.DoResize(Sender: TObject);
begin
end;

procedure TMyChart.SetLabelType(const Value: TLabelType);
begin
  FLabelType := Value;
end;

{ TLabelTypeProperty }


procedure TMyChart.ReDraw;
begin
  Clear;
  DrawLine;
end;

procedure TMyChart.SetCoordFontColor(const Value: TColor);
begin
  if FCoordFontColor <> Value then
  begin
    FCoordFontColor := Value;
    internalCanvas.Font.Color:=FCoordFontColor;
    ReDraw;
  end;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
制服丝袜亚洲色图| 日本亚洲免费观看| 中文字幕日韩一区| 中文字幕在线一区二区三区| 日本一二三四高清不卡| 中文成人综合网| 国产日韩精品一区二区浪潮av| 精品三级av在线| 精品国产精品一区二区夜夜嗨| 精品国产91洋老外米糕| 久久在线观看免费| 国产精品美女视频| 亚洲欧美日韩在线| 亚洲高清三级视频| 日本不卡在线视频| 精品一区二区在线视频| 国产.欧美.日韩| 99久久精品国产毛片| 91免费版pro下载短视频| 91精品福利在线| 91精品国产免费| 国产亚洲精品aa| 亚洲色大成网站www久久九九| 一区二区视频免费在线观看| 亚洲成av人片在线| 久久99九九99精品| 99久久精品国产一区| 欧美自拍偷拍午夜视频| 91精品婷婷国产综合久久竹菊| 精品久久99ma| 国产精品成人一区二区三区夜夜夜| 亚洲美女偷拍久久| 日韩黄色免费电影| 国产成人精品综合在线观看| 波多野结衣欧美| 欧美日韩一区二区三区四区 | 欧美成人video| 国产亚洲精品中文字幕| 亚洲精品国产一区二区精华液| 天天免费综合色| 国产电影精品久久禁18| 欧美特级限制片免费在线观看| 欧美成人在线直播| 伊人夜夜躁av伊人久久| 久国产精品韩国三级视频| 欧美精品日韩综合在线| 久久一留热品黄| 一区二区三区四区视频精品免费| 免费视频最近日韩| 一本色道久久综合亚洲精品按摩| 欧美一二三区在线| 亚洲激情中文1区| 国产一区二区三区最好精华液| 欧洲色大大久久| 国产精品视频观看| 美女国产一区二区| 欧美性感一类影片在线播放| 久久精品日产第一区二区三区高清版 | 4438x亚洲最大成人网| 欧美国产激情二区三区| 奇米777欧美一区二区| 91丨porny丨在线| 久久久99精品免费观看不卡| 午夜视频在线观看一区二区| 国产成人av电影| 日韩三区在线观看| 亚洲大片一区二区三区| 97久久超碰国产精品电影| 欧美成人激情免费网| 亚洲成在线观看| 色婷婷精品久久二区二区蜜臀av| 国产亚洲成年网址在线观看| 日韩精品免费视频人成| 在线观看不卡一区| 国产精品女主播av| 国内成人自拍视频| 91精品国产欧美一区二区18| 亚洲一区二区三区四区五区中文| 国产91精品精华液一区二区三区 | 日韩电影在线一区| 欧美亚洲国产bt| 亚洲乱码日产精品bd| 成人免费av资源| 久久久av毛片精品| 成人久久18免费网站麻豆| 奇米影视在线99精品| 在线观看国产一区二区| 国产欧美日韩三级| 国产精品99久久久久久有的能看| 91精品国产高清一区二区三区蜜臀 | 欧美性欧美巨大黑白大战| 亚洲天堂中文字幕| 99久久伊人网影院| 中文字幕在线一区免费| www.成人网.com| 亚洲欧洲在线观看av| 成人性生交大片| 中文字幕va一区二区三区| 国产成人丝袜美腿| 欧美国产综合色视频| 懂色av一区二区三区免费观看| 久久久av毛片精品| 国产精品1024久久| 国产精品网站在线| 99视频精品在线| 一区二区三区久久| 在线观看日韩av先锋影音电影院| 一区二区三区在线不卡| 欧美日韩免费高清一区色橹橹| 亚洲成人午夜影院| 51精品秘密在线观看| 免费一级片91| 久久久91精品国产一区二区三区| 国产凹凸在线观看一区二区| 国产欧美日产一区| 色网综合在线观看| 亚洲v日本v欧美v久久精品| 欧美日本一区二区在线观看| 美女在线一区二区| 国产午夜亚洲精品不卡| 成人午夜碰碰视频| 艳妇臀荡乳欲伦亚洲一区| 欧美精品一二三| 激情久久五月天| 国产精品三级电影| 欧美日韩一区在线| 久久精品999| 国产精品精品国产色婷婷| 欧美中文字幕久久| 老司机免费视频一区二区三区| 久久久av毛片精品| 在线观看91精品国产入口| 日韩精品一区第一页| 2014亚洲片线观看视频免费| www.av亚洲| 三级成人在线视频| 欧美精品一区二区三区四区| 不卡一区二区三区四区| 亚洲成人久久影院| 欧美精品一区二区在线播放| 99精品欧美一区二区蜜桃免费| 亚洲一级二级三级在线免费观看| 欧美成人性战久久| av高清不卡在线| 日本亚洲欧美天堂免费| 欧美国产乱子伦| 欧美精选一区二区| 成人app软件下载大全免费| 亚洲成av人片在线观看无码| 久久九九久久九九| 欧美色网站导航| 国产福利一区二区| 婷婷夜色潮精品综合在线| 久久久久久久久久久久久女国产乱| 91在线视频18| 国产一区二区三区四区五区美女| 亚洲日本中文字幕区| 精品久久久久久综合日本欧美| 91看片淫黄大片一级在线观看| 久久爱www久久做| 亚洲在线免费播放| 中文一区二区在线观看| 欧美日韩国产欧美日美国产精品| 粉嫩绯色av一区二区在线观看| 视频一区国产视频| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 欧美久久免费观看| 99热这里都是精品| 韩国视频一区二区| 视频一区免费在线观看| 亚洲女人小视频在线观看| 久久蜜桃av一区二区天堂| 3d成人动漫网站| 91丨九色丨蝌蚪丨老版| 国产黄色精品视频| 九九**精品视频免费播放| 亚洲高清中文字幕| 亚洲免费看黄网站| 国产精品久久久久久久裸模| 精品国产三级a在线观看| 在线不卡一区二区| 在线观看日韩电影| 91视频一区二区三区| 成人性生交大片免费看在线播放| 国内外精品视频| 日韩av电影免费观看高清完整版 | 国产精品一区免费在线观看| 日韩高清不卡在线| 亚洲va国产va欧美va观看| 亚洲免费资源在线播放| 久久久99精品免费观看不卡| 精品欧美一区二区三区精品久久| 69精品人人人人| 欧美精品色综合| 欧美日韩一二三| 欧美乱妇23p| 欧美理论在线播放| 欧美嫩在线观看| 欧美另类videos死尸| 欧美精品一二三|