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

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

?? ehutils.pas

?? 很COOL的GRID表格控件
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
unit EHUtils;

interface

uses
  Windows, Classes,  Graphics, Controls, SysUtils,stdctrls;

type
  TCurrencyType = (ctHead,ctBody);

  TMoneyStyle   = Class(TPersistent)
  private
     FOnChange      : TNotifyEvent;
     FGrid          : TCustomControl;
     FCurrencyFont  : TFont;
     FCurrencySymbol: String;
     FCompartColor  : TColor;
     FKilobitColor  : TColor;
     FRadixColor    : TColor;
     FShowMinus     : Boolean;
     FShowZero      : Boolean;
     FMinusColor    : TColor;
     FLayout        : TTextLayout;
     FCHNWidth      : integer;
     FENGWidth      : integer;
     FCHNHeight     : integer;
     FENGHeight     : integer;
     FHeadFont      : TFont;
     FDigits        : Byte;
     procedure SetCurrencyFont(Value:Tfont);
     procedure SetCurrencySymbol(Value:String);
     procedure SetCompartColor(Value:TColor);
     procedure SetKilobitColor(Value:TColor);
     procedure SetRadixColor(Value:TColor);
     procedure SetShowMinus(Value:Boolean);
     procedure SetShowZero(Value:Boolean);
     procedure SetMinusColor(Value:TColor);
     procedure SetLayout(Value:TTextLayout);
     procedure FontChanged(Sender: TObject);
     procedure SetHeadFont(Value: TFont);
     procedure SetDigits(Value: Byte);
  public
     constructor Create(AGrid:TCustomControl);
     destructor  Destroy ; override;
     procedure Assign(Source: TPersistent); override;
     procedure CalcWidth;
     procedure Changed; dynamic;
     procedure paintHead(ACanvas:TCanvas;ARect:TRect);
     procedure paintBody(ACanvas:TCanvas;AText:String;hRect:TRect);
  published
     property CurrencyFont  : TFont         read  FCurrencyFont   write   SetCurrencyFont  ;
     property CurrencySymbol: String        read  FCurrencySymbol write   SetCurrencySymbol;
     property CompartColor  : TColor        read  FCompartColor   write   SetCompartColor  ;
     property KilobitColor  : TColor        read  FKilobitColor   write   SetKilobitColor  ;
     property RadixColor    : TColor        read  FRadixColor     write   SetRadixColor    ;
     property ShowMinus     : Boolean       read  FShowMinus      write   SetShowMinus     ;
     property ShowZero      : Boolean       read  FShowZero       write   SetShowZero     ;
     property MinusColor    : TColor        read  FMinusColor     write   SetMinusColor    ;
     property Layout        : TTextLayout   read  FLayout         write   SetLayout        ;
     property CHNWidth :integer read FCHNWidth;
     property ENGWidth :integer read FENGWidth;
     property CHNHeight:integer read FCHNHeight;
     property ENGHeight:integer read FENGHeight;
     property OnChange  : TNotifyEvent read FOnChange write FOnChange;
     property HeadFont: TFont read FHeadFont write SetHeadFont;
     property Digits: Byte read FDigits write SetDigits default 2;
  end;

  TChinaAlignment=(agTopLeft, agTopCenter, agTopRight, agCenterLeft,
                   agCenter, agCenterRight, agBottomLeft, agBottomCenter,
                   agBottomRight);
{Misc Routines - Font}
  function ChinaAlignRect(Alignment:TChinaAlignment; srcRect, destRect:TRect):TRect;
  function ChinaAlignTextRect(Alignment:TChinaAlignment; const aString:String;
                          aRect:TRect;
                          Font:TFont; MultiLine, Accel:Boolean; flags:LongInt):TRect;
  procedure ChinaDrawTextCalc(const aString:String; var aRect:TRect;
                          Font:TFont; MultiLine, Accel:Boolean;
                          BExt:Integer; flags:LongInt);
  procedure ChinaDrawTextCalcExt(Canvas:TCanvas; const aString:String;
                          var aRect:TRect;
                          Font:TFont; MultiLine, Accel:Boolean;
                          BExt:Integer;flags:LongInt);
  Function f_ReplaceAll(psString,psStr1,psStr2:string):String;
  Function StrToCurrDef (value: String; defValue: Currency) : Currency;

implementation
uses
  consts;

Function f_ReplaceAll(psString,psStr1,psStr2:string):String;
var
  I: Integer;
  Source: string;
begin
  Source := psString;
  Result := '';
  repeat
    I := Pos(psStr1, Source);
    if I > 0 then begin
      Result := Result + Copy(Source, 1, I - 1) + psStr2;
      Source := Copy(Source, I + Length(psStr1), MaxInt);
    end
    else Result := Result + Source;
  until I <= 0;
end;

Function StrToCurrDef;
Begin
  If not TextToFloat (PChar (value), Result, fvCurrency) Then
    Result := defValue;

End;

procedure GetRectWH(aRect:TRect;var w,h:integer);
begin
  with aRect do
    begin
     w:=Right-Left;
     h:=Bottom-Top;
    end;
end;
{------------------------------------------------------------------------------}
function ChinaAlignRect(Alignment:TChinaAlignment; srcRect, destRect:TRect):TRect;
var
  sw, sh, dw, dh:Integer;
begin
  GetRectWH(srcRect, sw, sh);
  GetRectWH(destRect, dw, dh);
  case Alignment of
    agTopLeft, agTopCenter, agTopRight:          result.Top:=0;
    agCenterLeft, agCenter, agCenterRight:       result.Top:=(dh-sh) div 2;
    agBottomLeft, agBottomCenter, agBottomRight: result.Top:=dh-sh;
  end;
  case Alignment of
    agTopLeft, agCenterLeft, agBottomLeft:    result.Left:=0;
    agTopCenter, agCenter, agBottomCenter:    result.Left:=(dw-sw) div 2;
    agTopRight, agCenterRight, agBottomRight: result.Left:=dw-sw;
  end;
  with result do result:=Bounds(destRect.Left+Left, destRect.Top+Top, sw, sh);
end;

{------------------------------------------------------------------------------}
function ChinaAlignTextRect(Alignment:TChinaAlignment; const aString:String;
                          aRect:TRect;
                          Font:TFont; MultiLine, Accel:Boolean; flags:Longint):TRect;
var
  nRect:TRect;
begin
  nRect:=aRect; Dec(nRect.Right);
  ChinaDrawTextCalc(aString,nRect, Font, MultiLine,
                  Accel, 0, flags);
  result:=ChinaAlignRect(Alignment, nRect, aRect);
  IntersectRect(Result,Result,aRect);
end;


{calculates dimensions of strings (normal, rotated, multiline)}
{------------------------------------------------------------------------------}
procedure ChinaDrawTextCalc(const aString:String;  var aRect:TRect;
                          Font:TFont; MultiLine, Accel:Boolean; BExt:Integer; flags:Longint);
var
  aCanvas:TCanvas;
begin
  aCanvas:=TCanvas.Create;
  try
    ChinaDrawTextCalcExt(aCanvas, aString,  aRect, Font, MultiLine, Accel,BExt, flags);
  finally
    aCanvas.Free;
  end;
end;

{------------------------------------------------------------------------------}
procedure ChinaDrawTextCalcExt(Canvas:TCanvas; const aString:String;
                             var aRect:TRect;
                             Font:TFont; MultiLine, Accel:Boolean; BExt:Integer; flags:Longint);

var DC:HDC;
{    flag:Byte;
    sn, cs:real;
    tw, th, xm, ym, dummy:Integer;{}
    buffer:String;

begin
  buffer:=aString;
  DC := GetDC(0);
  try
    Canvas.Handle:=DC;
    Canvas.Font:=Font;
    flags:=flags or (DT_EXPANDTABS or DT_CALCRECT);
    if MultiLine then flags:=flags or DT_WORDBREAK;
    if (Length(buffer)=0) or (Accel and (buffer='&')) then buffer:=' ';
    if not Accel then Flags := Flags or DT_NOPREFIX;
    DrawTextEx(Canvas.Handle, PChar(buffer), Length(buffer), aRect, Flags, nil);
    Inc(aRect.Right, 2*(BExt+1));
    Inc(aRect.Bottom, 2*(BExt+1));
  finally
    Canvas.Handle := 0;
    ReleaseDC(0, DC);
  end;
end;

{ TMoneyStyle }
constructor TMoneyStyle.Create;
begin
  FGrid :=  AGrid;
  FCurrencySymbol:='¥';
  FDigits:=2;
  FCompartColor:= clSilver;
  FKilobitColor:=clGreen;
  FRadixColor:=clRed;
  FShowMinus:=True;
  FMinusColor:=clRed;
  FLayout:=tlCenter;
  FCurrencyFont:=TFont.Create;
  FHeadFont:=TFont.Create;
  FHeadFont.Name:='楷體_GB2312';
  CalcWidth;
  FCurrencyFont.OnChange:=self.FontChanged;
  FHeadFont.OnChange:=Self.FontChanged;
end;

destructor TMoneyStyle.Destroy;
begin
  FCurrencyFont.Free;
  FHeadFont.Free;
  inherited Destroy;
end;


procedure TMoneyStyle.Assign;
begin
  if Source is TMoneyStyle then
  begin
    Self.FCurrencyFont.Assign(TMoneyStyle(Source).CurrencyFont);
    Self.FHeadFont.Assign(TMoneyStyle(Source).HeadFont);
    Self.FCurrencySymbol:=TMoneyStyle(Source).CurrencySymbol;
    Self.FCompartColor:=TMoneyStyle(Source).CompartColor;
    Self.FKilobitColor:=TMoneyStyle(Source).KilobitColor;
    Self.FRadixColor:=TMoneyStyle(Source).RadixColor;
    Self.FShowMinus:=TMoneyStyle(Source).ShowMinus;
    Self.FMinusColor:=TMoneyStyle(Source).MinusColor;
    Self.FLayout:=Layout;
    exit;
  end;
  inherited Assign(Source);
end;

procedure TMoneyStyle.Changed;
begin
  if Assigned(FOnChange) then FOnChange(self);
  if FGrid<>nil then FGrid.Invalidate;
end;

procedure TMoneyStyle.SetCurrencyFont;
begin
  if FCurrencyFont <> Value then
  begin
     FCurrencyFont.Assign(Value);
     FCurrencyFont.Style:=[];
  end;
end;

procedure TMoneyStyle.SetCurrencySymbol;
begin
  if FCurrencySymbol <> Value then
  begin
     FcurrencySymbol := Value;
     Changed;
  end;
end;

procedure TMoneyStyle.SetCompartColor;
begin
  if FCompartColor <> value then
  begin
     FCompartColor :=Value;
     Changed;
  end;
end;

procedure TMoneyStyle.SetKilobitColor;
begin
  if FKilobitColor <> Value then
  begin
    FKilobitColor := Value ;
     Changed;
  end;
end;

procedure TMoneyStyle.SetRadixColor;
begin

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av中文字幕不卡| 国产精品一品视频| 欧美日本国产视频| 久久99精品久久久久婷婷| 久久久99精品免费观看不卡| 99riav久久精品riav| 三级影片在线观看欧美日韩一区二区| 欧美mv日韩mv国产网站| www.日本不卡| 972aa.com艺术欧美| 欧美在线小视频| 国产成人免费视频| 日韩国产在线观看一区| 久久免费看少妇高潮| 欧美少妇bbb| 成人午夜视频网站| 美女在线视频一区| 亚洲国产中文字幕在线视频综合 | 国产精品综合av一区二区国产馆| 激情五月婷婷综合网| 亚洲国产综合人成综合网站| 丝袜亚洲另类欧美| 国内精品自线一区二区三区视频| 国产激情视频一区二区在线观看 | 日本一不卡视频| 国产一区二区毛片| 久久精品久久综合| 五月综合激情日本mⅴ| 亚洲精品亚洲人成人网| 亚洲欧洲www| 国产日韩精品一区二区浪潮av| 欧美顶级少妇做爰| 欧美精品九九99久久| 精品免费日韩av| 亚洲精品少妇30p| 免费成人美女在线观看.| 日本不卡的三区四区五区| 国产一区二区电影| 日本精品视频一区二区| 色偷偷88欧美精品久久久| 成人国产精品视频| 9久草视频在线视频精品| 欧美日韩国产首页在线观看| 久久精品视频在线看| 亚洲国产中文字幕| 99久久国产综合色|国产精品| 日韩免费电影网站| 欧美国产精品v| 国产精品久久夜| 一区二区三区成人在线视频| 亚洲最大成人综合| 成人毛片视频在线观看| 日韩一区二区电影在线| 精品久久久久久久久久久久包黑料 | 奇米精品一区二区三区在线观看一| 极品尤物av久久免费看| 欧美三级日韩三级国产三级| 欧美日韩国产一二三| 综合亚洲深深色噜噜狠狠网站| 亚洲视频1区2区| 国产剧情一区二区| 欧美刺激午夜性久久久久久久| 亚洲精品成人悠悠色影视| 丁香天五香天堂综合| 欧美亚洲免费在线一区| 中文字幕一区二区三区精华液 | 久久久99精品免费观看不卡| 免费精品99久久国产综合精品| 欧美日韩国产一级| 日韩中文字幕亚洲一区二区va在线 | 一区二区三区日韩精品视频| av激情成人网| 国产精品麻豆久久久| 亚洲成人资源在线| 国产成人精品亚洲日本在线桃色| 日韩一区二区电影| 激情另类小说区图片区视频区| 欧美一区二区在线免费观看| 国产精品嫩草久久久久| 国产福利视频一区二区三区| 亚洲国产精华液网站w| 国产成人欧美日韩在线电影| 久久蜜桃一区二区| 成人一级片在线观看| 亚洲视频在线一区| 欧美日韩精品电影| 久久99九九99精品| 国产午夜一区二区三区| 97精品超碰一区二区三区| 亚洲美女视频在线观看| 粉嫩绯色av一区二区在线观看| 欧美激情一区二区三区在线| 成人美女视频在线看| 亚洲男人电影天堂| 在线成人小视频| 国产乱码精品一区二区三区忘忧草| 欧美激情一区在线| 欧美区视频在线观看| 蜜臀av在线播放一区二区三区| 精品国产麻豆免费人成网站| 日韩国产一区二| 久久人人97超碰com| 97超碰欧美中文字幕| 石原莉奈一区二区三区在线观看| 精品久久国产老人久久综合| 成人免费视频国产在线观看| 亚洲成人免费在线观看| 久久久久亚洲蜜桃| 91官网在线免费观看| 久88久久88久久久| 亚洲男同性视频| 精品国产sm最大网站免费看| 91网站在线观看视频| 亚洲天堂精品在线观看| 欧美日韩高清不卡| 成人黄色av网站在线| 蜜臀久久99精品久久久画质超高清 | 国产色婷婷亚洲99精品小说| 色婷婷综合视频在线观看| 国内外成人在线视频| 亚洲超碰97人人做人人爱| 国产日韩欧美麻豆| 日韩欧美一区中文| 在线免费不卡视频| 成人看片黄a免费看在线| 美女视频网站黄色亚洲| 一区二区国产盗摄色噜噜| 久久九九影视网| 精品毛片乱码1区2区3区| 欧美日韩精品一区二区天天拍小说| 成人精品鲁一区一区二区| 久久se精品一区二区| 午夜欧美视频在线观看 | 日韩精品乱码免费| 一区二区三区中文字幕电影| 国产午夜精品福利| 精品国产伦一区二区三区观看方式| 欧美亚洲国产一区二区三区va| 99国产精品99久久久久久| 丁香啪啪综合成人亚洲小说 | 日韩欧美成人一区二区| 欧美一区二区免费视频| 欧美高清hd18日本| 欧美日本精品一区二区三区| 色噜噜偷拍精品综合在线| 99久久久久免费精品国产| 成人免费不卡视频| 成人app软件下载大全免费| 国产精品一卡二卡在线观看| 国产精品亚洲午夜一区二区三区| 老司机一区二区| 秋霞午夜鲁丝一区二区老狼| 日韩精品成人一区二区三区| 午夜精品久久久久久久99水蜜桃 | 欧美一区二区三区四区视频| 欧美色图在线观看| 欧美蜜桃一区二区三区| 91精品国产综合久久久蜜臀图片| 国产永久精品大片wwwapp| 久久99深爱久久99精品| 韩国三级在线一区| 国产麻豆日韩欧美久久| 懂色av一区二区三区蜜臀| 不卡大黄网站免费看| 一本一本大道香蕉久在线精品| 99久久国产综合精品女不卡| 91国偷自产一区二区三区观看| 在线免费观看日本欧美| 日韩一区国产二区欧美三区| 久久久一区二区三区捆绑**| 亚洲欧洲av在线| 日韩电影网1区2区| 久久精品99国产精品| 国产高清精品久久久久| 色域天天综合网| 91精品国产综合久久精品| 久久在线观看免费| 日韩欧美123| 中文字幕第一区二区| 亚洲一区二区欧美激情| 亚洲色图20p| 日韩电影在线看| 国产高清成人在线| 欧美日韩成人激情| 久久久国产午夜精品| 一区二区三区在线不卡| 麻豆精品久久久| 色综合久久中文字幕| 日韩三级中文字幕| 18欧美亚洲精品| 美女视频一区二区三区| 99精品视频在线播放观看| 日韩欧美一二三| 亚洲欧美另类小说| 国产一区二区精品在线观看| 欧美日韩国产不卡| 中文字幕一区二区三区不卡 | 欧美日韩视频在线观看一区二区三区 | 欧美一级一级性生活免费录像| 欧美激情一区二区三区全黄|