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

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

?? rm_utils.pas

?? report machine 2.3 功能強大
?? PAS
?? 第 1 頁 / 共 3 頁
字號:

{*****************************************}
{                                         }
{           Report Machine v2.0           }
{            Various routines             }
{                                         }
{*****************************************}

unit RM_utils;

interface

{$I RM.inc}

uses
  SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, StdCtrls,
  Menus, RM_DBRel, DB
{$IFDEF Delphi6}, Variants{$ENDIF};

procedure RMReadMemo(Stream: TStream; l: TStrings);
procedure RMReadMemo22(Stream: TStream; l: TStrings);
procedure RMWriteMemo(Stream: TStream; l: TStrings);
function RMReadString(Stream: TStream): string;
function RMReadString22(Stream: TStream): string;
procedure RMWriteString(Stream: TStream; s: string);
function RMReadBoolean(Stream: TStream): Boolean;
function RMReadByte(Stream: TStream): Byte;
function RMReadWord(Stream: TStream): Word;
function RMReadInteger(Stream: TStream): Integer;
procedure RMReadFont(Stream: TStream; Font: TFont);
procedure RMWriteBoolean(Stream: TStream; Value: Boolean);
procedure RMWriteByte(Stream: TStream; Value: Byte);
procedure RMWriteWord(Stream: TStream; Value: Word);
procedure RMWriteInteger(Stream: TStream; Value: Integer);
procedure RMWriteFont(Stream: TStream; Font: TFont);
function RMReadFloat(Stream: TStream): Single;
procedure RMWriteFloat(Stream: TStream; Value: Single);

procedure RMEnableControls(c: array of TControl; e: Boolean);
function RMGetDataSet(ComplexName: string): TDataSet;
function RMGetFieldValue(F: TField): Variant;
procedure RMGetDataSetAndField(ComplexName: string; var DataSet: TDataSet; var Field: string);
function RMGetFontStyle(Style: TFontStyles): Integer;
function RMSetFontStyle(Style: Integer): TFontStyles;
function RMFindComponent(Owner: TComponent; Name: string): TComponent;
procedure RMGetComponents(Owner: TComponent; ClassRef: TClass; List: TStrings; Skip: TComponent);
function RMStrToFloat(s: string): Double;
function RMRemoveQuotes(const s: string): string;
procedure RMSetCommaText(Text: string; sl: TStringList);

function RMCanvasWidth(const str: string; AFont: TFont): integer;
function RMCanvasHeight(const str: string; AFont: TFont): integer;
function RMWrapStrings(const SrcLines: TStrings; DstLines: TStrings; aCanvas: TCanvas;
  aWidth: integer; const aOneLineHeight: integer; aWordBreak: Boolean): integer;

function RMGetBrackedVariable(const s: string; var i, j: Integer): string;

function RMCurrToBIGNum(Value: Currency): string;
function RMChineseNumber(const jnum: string): string;
procedure RMSetFontSize(aComboBox: TComboBox; aFontSize: integer);
function RMGetFontSize(aComboBox: TComboBox): integer;
function RMCreateBitmap(const ResName: string): TBitmap;
function RMLoadStr(ID: Integer): string;
function RMRound(x: Extended; dicNum: Integer): Extended; //四舍五入

function RMMakeFileName(AFileName, AFileExtension: string; ANumber: Integer): string;
function RMAppendTrailingBackslash(const S: string): string;
function RMColorBGRToRGB(AColor: TColor): string;
function RMMakeImgFileName(AFileName, AFileExtension: string; ANumber: Integer): string;
procedure RMSetControlsEnable(AControl: TWinControl; AState: Boolean);

procedure RMSaveFormPosition(f: TForm);
procedure RMRestoreFormPosition(f: TForm);
procedure RMGetBitmapPixels(aGraphic: TGraphic; var x, y: Integer);

implementation

uses Registry, RM_Const1, RM_Class, RM_DSet;

function RMSetFontStyle(Style: Integer): TFontStyles;
begin
  Result := [];
  if (Style and $1) <> 0 then
    Result := Result + [fsItalic];
  if (Style and $2) <> 0 then
    Result := Result + [fsBold];
  if (Style and $4) <> 0 then
    Result := Result + [fsUnderLine];
  if (Style and $8) <> 0 then
    Result := Result + [fsStrikeOut];
end;

function RMGetFontStyle(Style: TFontStyles): Integer;
begin
  Result := 0;
  if fsItalic in Style then
    Result := Result or $1;
  if fsBold in Style then
    Result := Result or $2;
  if fsUnderline in Style then
    Result := Result or $4;
  if fsStrikeOut in Style then
    Result := Result or $8;
end;

procedure RMReadMemo(Stream: TStream; l: TStrings);
var
  s: string;
  b: Byte;
  n: Word;
begin
  l.Clear;
  Stream.Read(n, 2);
  if n > 0 then
  begin
    repeat
      Stream.Read(n, 2);
      SetLength(s, n);
      if n > 0 then
        Stream.Read(s[1], n);
      l.Add(s);
      Stream.Read(b, 1);
    until b = 0;
  end
  else
    Stream.Read(b, 1);
end;

procedure RMWriteMemo(Stream: TStream; l: TStrings);
var
  s: string;
  i: Integer;
  n: Word;
  b: Byte;
begin
  n := l.Count;
  Stream.Write(n, 2);
  for i := 0 to l.Count - 1 do
  begin
    s := l[i];
    n := Length(s);
    Stream.Write(n, 2);
    if n > 0 then
      Stream.Write(s[1], n);
    b := 13;
    if i <> l.Count - 1 then
      Stream.Write(b, 1);
  end;
  b := 0;
  Stream.Write(b, 1);
end;

function RMReadString(Stream: TStream): string;
var
  s: string;
  n: Word;
  b: Byte;
begin
  Stream.Read(n, 2);
  SetLength(s, n);
  if n > 0 then
    Stream.Read(s[1], n);
  Stream.Read(b, 1);
  Result := s;
end;

procedure RMWriteString(Stream: TStream; s: string);
var
  b: Byte;
  n: Word;
begin
  n := Length(s);
  Stream.Write(n, 2);
  if n > 0 then
    Stream.Write(s[1], n);
  b := 0;
  Stream.Write(b, 1);
end;

procedure RMReadMemo22(Stream: TStream; l: TStrings);
var
  s: string;
  i: Integer;
  b: Byte;
begin
  SetLength(s, 4096);
  l.Clear;
  i := 1;
  repeat
    Stream.Read(b, 1);
    if (b = 13) or (b = 0) then
    begin
      SetLength(s, i - 1);
      if not ((b = 0) and (i = 1)) then
        l.Add(s);
      SetLength(s, 4096);
      i := 1;
    end
    else if b <> 0 then
    begin
      s[i] := Chr(b);
      Inc(i);
      if i > 4096 then
        SetLength(s, Length(s) + 4096);
    end;
  until b = 0;
end;

function RMReadString22(Stream: TStream): string;
var
  s: string;
  i: Integer;
  b: Byte;
begin
  SetLength(s, 4096);
  i := 1;
  repeat
    Stream.Read(b, 1);
    if b = 0 then
      SetLength(s, i - 1)
    else
    begin
      s[i] := Chr(b);
      Inc(i);
      if i > 4096 then
        SetLength(s, Length(s) + 4096);
    end;
  until b = 0;
  Result := s;
end;

function RMReadBoolean(Stream: TStream): Boolean;
begin
  Stream.Read(Result, 1);
end;

function RMReadByte(Stream: TStream): Byte;
begin
  Stream.Read(Result, 1);
end;

function RMReadWord(Stream: TStream): Word;
begin
  Stream.Read(Result, 2);
end;

function RMReadInteger(Stream: TStream): Integer;
begin
  Stream.Read(Result, 4);
end;

{$HINTS OFF}

procedure RMReadFont(Stream: TStream; Font: TFont);
var
  w: Word;
begin
  Font.Name := RMReadString(Stream);
  Font.Size := RMReadInteger(Stream);
  Font.Style := RMSetFontStyle(RMReadWord(Stream));
  Font.Color := RMReadInteger(Stream);
  w := RMReadWord(Stream);
{$IFNDEF Delphi2}
  Font.Charset := w;
{$ENDIF}
end;
{$HINTS ON}

procedure RMWriteBoolean(Stream: TStream; Value: Boolean);
begin
  Stream.Write(Value, 1);
end;

procedure RMWriteByte(Stream: TStream; Value: Byte);
begin
  Stream.Write(Value, 1);
end;

procedure RMWriteWord(Stream: TStream; Value: Word);
begin
  Stream.Write(Value, 2);
end;

procedure RMWriteInteger(Stream: TStream; Value: Integer);
begin
  Stream.Write(Value, 4);
end;

function RMReadFloat(Stream: TStream): Single;
begin
  Stream.Read(Result, SizeOf(Result));
end;

procedure RMWriteFloat(Stream: TStream; Value: Single);
begin
  Stream.Write(Value, SizeOf(Value));
end;

{$HINTS OFF}

procedure RMWriteFont(Stream: TStream; Font: TFont);
var
  w: Word;
begin
  RMWriteString(Stream, Font.Name);
  RMWriteInteger(Stream, Font.Size);
  RMWriteWord(Stream, RMGetFontStyle(Font.Style));
  RMWriteInteger(Stream, Font.Color);
  w := RMCharset;
{$IFNDEF Delphi2}
  w := Font.Charset;
{$ENDIF}
  RMWriteWord(Stream, w);
end;
{$HINTS ON}

type
  THackWinControl = class(TWinControl)
  end;

procedure RMEnableControls(c: array of TControl; e: Boolean);
const
  Clr1: array[Boolean] of TColor = (clGrayText, clWindowText);
  Clr2: array[Boolean] of TColor = (clBtnFace, clWindow);
var
  i: Integer;
begin
  for i := Low(c) to High(c) do
  begin
    if c[i] is TLabel then
    begin
      with TLabel(c[i]) do
      begin
        Font.Color := Clr1[e];
        Enabled := e;
      end;
    end
    else if c[i] is TWinControl then
    begin
      with THackWinControl(c[i]) do
      begin
        Color := Clr2[e];
        Enabled := e;
      end;
    end
    else
      c[i].Enabled := e;
  end;
end;

function RMGetDataSet(ComplexName: string): TDataSet;
begin
  Result := TDataSet(RMFindComponent(CurReport.Owner, ComplexName));
end;

function RMGetFieldValue(F: TField): Variant;
begin
  if not F.DataSet.Active then
    F.DataSet.Open;
  if Assigned(F.OnGetText) then
    Result := F.DisplayText
  else
  begin
{$IFDEF Delphi4}
    if F.DataType in [ftLargeint] then
      Result := F.DisplayText
    else
{$ENDIF}
      Result := F.AsVariant;
//    if F.DataType in [ftCurrency{$IFDEF Delphi4}, ftLargeint{$ENDIF}] then
//      Result := F.DisplayText
//    else
//      Result := F.AsVariant;
  end;

  if Result = Null then
  begin
    if F.DataType in [ftString{$IFDEF Delphi4}, ftWideString{$ENDIF}] then
      Result := ''
    else if F.DataType = ftBoolean then
      Result := False
    else
      Result := 0;
  end;
end;

procedure RMGetDataSetAndField(ComplexName: string; var DataSet: TDataSet; var Field: string);
var
  i, j, n: Integer;
  f: TComponent;
  sl: TStringList;
  s: string;
  c: Char;
  cn: TControl;

  function FindField(ds: TDataSet; FName: string): string;
  var
    sl: TStringList;
  begin
    Result := '';
    if ds <> nil then
    begin
      sl := TStringList.Create;
      RMGetFieldNames(ds, sl);
      if sl.IndexOf(FName) <> -1 then
        Result := FName;
      sl.Free;
    end;
  end;

begin
  Field := '';
  f := CurReport.Owner;
  sl := TStringList.Create;

  n := 0; j := 1;
  for i := 1 to Length(ComplexName) do
  begin
    c := ComplexName[i];
    if c = '"' then
    begin
      sl.Add(Copy(ComplexName, i, 255));
      j := i;
      Break;
    end
    else if c = '.' then
    begin
      sl.Add(Copy(ComplexName, j, i - j));
      j := i + 1;
      Inc(n);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品亚洲综合一区在线观看| 97se亚洲国产综合自在线观| 91精品国产综合久久久久| 亚洲品质自拍视频| 不卡电影一区二区三区| 欧美国产乱子伦| 国产精品一品视频| 久久精品视频免费| 国产成人在线免费观看| 日本一区免费视频| 成人国产免费视频| 国产精品久久久久久久久久久免费看 | 日韩午夜在线观看| 蜜桃一区二区三区在线观看| 91精品国产一区二区| 蜜臀a∨国产成人精品| 日韩精品一区在线观看| 久久丁香综合五月国产三级网站 | 欧美日韩极品在线观看一区| 亚洲超碰97人人做人人爱| 欧美精品日韩一本| 久久av资源站| 久久免费国产精品| 成人av在线播放网站| 亚洲女子a中天字幕| 欧亚洲嫩模精品一区三区| 亚洲成精国产精品女| 欧美一区二区在线观看| 狠狠色丁香九九婷婷综合五月| 精品动漫一区二区三区在线观看| 国产一区二区三区免费播放| 国产欧美视频一区二区| 99久久精品一区| 夜色激情一区二区| 91精品国产色综合久久不卡电影| 麻豆精品一区二区av白丝在线| 日韩精品一区二区三区swag| 高清久久久久久| 一区二区三区精品视频| 欧美人牲a欧美精品| 精品一区二区三区免费毛片爱| 欧美极品美女视频| 91电影在线观看| 麻豆精品一区二区综合av| 欧美激情在线看| 欧美吻胸吃奶大尺度电影| 美女在线视频一区| 国产精品女同一区二区三区| 色老汉av一区二区三区| 青青草视频一区| 国产清纯白嫩初高生在线观看91| 色婷婷激情综合| 久久精品久久综合| 国产精品天干天干在观线| 在线免费视频一区二区| 蜜臀精品久久久久久蜜臀| 国产日韩av一区| 在线观看亚洲一区| 国产一区二区免费在线| 一区二区三区四区不卡视频| 日韩欧美国产午夜精品| 成人av午夜电影| 免费成人av在线播放| 国产精品美女www爽爽爽| 欧美日产在线观看| 丁香婷婷综合网| 日本不卡视频一二三区| 国产精品美日韩| 日韩欧美中文字幕公布| 91蝌蚪porny九色| 蜜桃视频在线观看一区二区| 1024精品合集| 欧美成人欧美edvon| 91蜜桃传媒精品久久久一区二区| 精品综合免费视频观看| 一区二区三区不卡视频在线观看| 精品国产乱码久久久久久免费| 色美美综合视频| 福利一区二区在线| 免费观看一级特黄欧美大片| 亚洲免费在线观看视频| 久久久不卡网国产精品一区| 欧美精品欧美精品系列| 色呦呦网站一区| 国产福利一区在线| 日韩成人免费看| 亚洲制服丝袜一区| 国产精品麻豆网站| 精品日韩在线观看| 欧美日韩黄视频| 99久久精品免费| 国产精品亚洲专一区二区三区 | 日韩电影在线观看网站| 亚洲日本在线视频观看| 久久久国产一区二区三区四区小说 | 亚洲电影中文字幕在线观看| 国产色91在线| 日韩精品专区在线影院观看| 欧美特级限制片免费在线观看| 成人激情小说网站| 国模娜娜一区二区三区| 欧美aaaaaa午夜精品| 五月综合激情婷婷六月色窝| 18成人在线观看| 国产精品护士白丝一区av| 久久精品免视看| 欧美成va人片在线观看| 欧美一区二区视频免费观看| 欧美日韩在线播放三区四区| 91免费在线视频观看| 大尺度一区二区| 国产91在线看| 国产成人午夜高潮毛片| 国产乱一区二区| 精品系列免费在线观看| 蜜桃视频一区二区三区| 免费在线看一区| 青青草精品视频| 免费精品视频在线| 蜜臀av性久久久久蜜臀aⅴ | 成人小视频在线观看| 国产原创一区二区三区| 国产在线精品一区二区| 经典三级视频一区| 国产一区欧美日韩| 韩国v欧美v日本v亚洲v| 韩国理伦片一区二区三区在线播放| 九九久久精品视频| 精品亚洲porn| 国产成人综合网站| 成人在线综合网站| 成人动漫av在线| av不卡免费在线观看| 91丨porny丨国产入口| 一本大道综合伊人精品热热| 欧亚洲嫩模精品一区三区| 欧美三级资源在线| 欧美人伦禁忌dvd放荡欲情| 欧美高清性hdvideosex| 欧美一区二区三区播放老司机| 欧美一级专区免费大片| 精品国免费一区二区三区| 久久婷婷成人综合色| 中文字幕乱码日本亚洲一区二区| 国产精品视频看| 成人欧美一区二区三区视频网页| 亚洲日本成人在线观看| 亚洲综合色噜噜狠狠| 亚洲国产va精品久久久不卡综合| 性欧美大战久久久久久久久| 美国毛片一区二区| 国产超碰在线一区| 色域天天综合网| 欧美二区乱c少妇| 精品国产免费久久| 国产精品色哟哟网站| 亚洲欧美电影院| 日韩电影在线观看网站| 国产综合色产在线精品| av电影天堂一区二区在线| 欧美日韩在线播放| 精品福利视频一区二区三区| 国产精品久久久久aaaa| 午夜一区二区三区在线观看| 麻豆成人在线观看| 白白色 亚洲乱淫| 久久女同互慰一区二区三区| 婷婷综合五月天| 精品一区二区三区视频| 不卡av在线网| 欧美日韩在线三级| 久久久亚洲高清| 亚洲欧美日韩国产另类专区| 偷窥少妇高潮呻吟av久久免费| 国产一区二区不卡在线| 97超碰欧美中文字幕| 日韩亚洲欧美高清| 国产精品久久毛片av大全日韩| 亚洲精品videosex极品| 六月丁香综合在线视频| 97国产精品videossex| 欧美一区二区三区在线看| 国产精品日韩成人| 蜜臀久久99精品久久久久宅男| fc2成人免费人成在线观看播放 | 美女在线视频一区| 99在线精品视频| 日韩一区二区三区电影在线观看| 国产精品灌醉下药二区| 日本不卡在线视频| 99国产精品99久久久久久| 日韩欧美在线综合网| 亚洲欧美偷拍三级| 经典三级一区二区| 欧美视频一二三区| 国产女主播在线一区二区| 日韩av电影免费观看高清完整版在线观看| 国产精品亚洲第一区在线暖暖韩国| 欧美日韩一区二区欧美激情| 亚洲国产精品t66y|