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

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

?? ehlibvcl.pas

?? 一個功能強大的DBGRID控件
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
function SendTextMessage(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: string): LRESULT;
begin
  Result := SendMessage(hWnd, Msg, wParam, Integer(PChar(lParam)));
end;

function SendGetTextMessage(hWnd: HWND; Msg: UINT; wParam: WPARAM; var lParam: String; BufferSize: Integer): LRESULT;
var
  Text: array[0..4095] of Char;
begin
  Word((@Text)^) := SizeOf(Text);
  Result := SendMessage(hWnd, HWND, wParam, Longint(@Text));
  SetString(lParam, Text, Result);
end;

function SystemParametersInfoEh(uiAction, uiParam: UINT; var pvParam; fWinIni: UINT): BOOL;
begin
  Result := SystemParametersInfo(uiAction, uiParam, @pvParam, fWinIni);
end;

function WindowsInvalidateRect(hWnd: HWND; var Rect: TRect; bErase: BOOL): BOOL;
begin
  Result := InvalidateRect(hWnd, @Rect, bErase);
end;

function WindowsValidateRect(hWnd: HWND; var Rect: TRect): BOOL;
begin
  Result := ValidateRect(hWnd, @Rect);
end;

function WindowsScrollWindowEx(hWnd: HWND; dx, dy: Integer;
  var prcScroll,  prcClip: TRect;
  hrgnUpdate: HRGN; {prcUpdate: TRect; }flags: UINT): BOOL;
begin
  Result := ScrollWindowEx(hWnd, dx, dy, @prcScroll, @prcClip,
    hrgnUpdate, nil, flags);
end;

function WindowsScrollWindow(hWnd: HWND; dx, dy: Integer; var prcScroll, prcClip: TRect): BOOL;
begin
  Result := ScrollWindow(hWnd, dx, dy, @prcScroll, @prcClip);
end;

function FindWindowEh(lpClassName, lpWindowName: String): HWND;
begin

  Result := FindWindow(PChar(lpClassName), PChar(lpWindowName));
end;

procedure VarToMessage(var VarMessage; var Message: TMessage);
begin
  Message := TMessage(VarMessage);
end;

function MessageToTMessage(var Message): TMessage;
begin
  Result := TMessage(Message);
end;

function MessageToTWMMouse(var Message): TWMMouse;
begin
  Result := TWMMouse(Message);
end;

function MessageToTWMKey(var Message): TWMKey;
begin
  Result := TWMKey(Message);
end;

function UnwrapMessageEh(var Message): TMessage;
begin
  Result := TMessage(Message);
end;

function SmallPointToInteger(SmallPoint: TSmallPoint): Integer;
begin
  Result := Integer(SmallPoint);
end;

function LongintToSmallPoint(Value: Longint): TSmallPoint;
begin
  Result := TSmallPoint(Value);
end;

function WindowsLPtoDP(DC: HDC; var ARect: TRect): BOOL;
begin
  Result := LPtoDP(DC, ARect, 2);
end;

function WindowsCreatePolygonRgn(Points: array of TPoint; Count, FillMode: Integer): HRGN;
begin
  Result := CreatePolygonRgn(Points, Count, FillMode);
end;

procedure MessageSendGetSel(hWnd: HWND; var SelStart, SelEnd: Integer);
begin
  SendMessage(hWnd, EM_GETSEL, Longint(@SelStart), Longint(@SelEnd));
end;

function NlsUpperCase(const S: String): String;
begin
  Result := AnsiUpperCase(S);
end;

function NlsLowerCase(const S: String): String;
begin
  Result := AnsiLowerCase(S);
end;

function NlsCompareStr(const S1, S2: String): Integer;
begin
  Result := AnsiCompareStr(S1, S2);
end;

function NlsCompareText(const S1, S2: String): Integer;
begin
  Result := AnsiCompareText(S1, S2);
end;

procedure BitmapLoadFromResourceName(Bmp: TBitmap; Instance: THandle; const ResName: String);
begin
  Bmp.LoadFromResourceName(Instance, ResName);
end;

function LoadBitmapEh(hInstance: HINST; lpBitmapID: Integer): HBITMAP;
begin
  Result := LoadBitmap(hInstance, PChar(lpBitmapID));
end;

function GetPropListAsArray(ATypeInfo: PTypeInfo; TypeKinds: TTypeKinds): TPropListArray;
var
  PropList: PPropList;
  PropCount, FSize, i: Integer;
begin
  PropCount := GetPropList(ATypeInfo, tkProperties, nil);
  FSize := PropCount * SizeOf(Pointer);
  GetMem(PropList, FSize);
  GetPropList(ATypeInfo, tkProperties, PropList);
  SetLength(Result, PropCount);
  for i := 0 to PropCount-1 do
    Result[i] := PropList[i];
end;

function HexToBinEh(Text: Pointer; var Buffer: TBytes; Count: Integer): Integer;
begin
  SetLength(Buffer, 0);
  SetLength(Buffer, Count div 2);
  Result := HexToBin(PChar(Text), PChar(Buffer), Count);
end;

procedure BinToHexEh(Buffer: TBytes; var Text: String; Count: Integer);
begin
  SetString(Text, nil, Count*2);
  BinToHex(PChar(Buffer), PChar(Text), Count);
end;

procedure StreamWriteBytes(Stream: TStream; Buffer: TBytes);
begin
  Stream.Write(Pointer(Buffer)^, Length(Buffer));
end;

procedure StreamReadBytes(Stream: TStream; var Buffer: TBytes; Count: Integer);
var
  bs: String;
  i: Integer;
begin
  SetLength(Buffer, Count);
  SetString(bs, nil, Count);
  Stream.Read(Pointer(bs)^, Count);
  for i := 0 to Length(bs)-1 do
    Buffer[i] := Byte(bs[i+1]);
end;

function BytesOf(S: String): TBytes;
var
  i: Integer;
begin
  SetLength(Result, Length(S));
  for i := 0 to Length(S)-1 do
    Result[i] := Byte(S[i+1]);
end;

function PropInfo_getPropType(APropInfo: PPropInfo): PTypeInfo;
begin
  Result := APropInfo^.PropType^;
end;

function PropInfo_getName(APropInfo: PPropInfo): String;
begin
  Result := APropInfo^.Name;
end;

function PropType_getKind(APropType: PTypeInfo): TTypeKind;
begin
  Result := APropType^.Kind;
end;

procedure VarArrayRedimEh(var A : Variant; HighBound: Integer);
begin
  VarArrayRedim(A, HighBound);
end;

function EmptyRect: TRect;
begin
  Result := Rect(0, 0, 0, 0);
end;

{$IFNDEF EH_LIB_5}

function GetObjectProp(Instance: TObject; PropInfo: PPropInfo): TObject;
begin
  Result := TObject(GetOrdProp(Instance, PropInfo));
end;

function GetObjectPropClass(Instance: TObject; PropInfo: PPropInfo): TClass;
var
  TypeData: PTypeData;
begin
  TypeData := GetTypeData(PropInfo^.PropType^);
  if TypeData = nil then
    raise Exception.Create('SUnknownProperty');
//    raise EPropertyError.CreateRes(@SUnknownProperty);
  Result := TypeData^.ClassType;
end;

procedure SetObjectProp(Instance: TObject; PropInfo: PPropInfo;
  Value: TObject);
begin
  if (Value is GetObjectPropClass(Instance, PropInfo)) or
     (Value = nil) then
    SetOrdProp(Instance, PropInfo, Integer(Value));
end;

{$ENDIF}

type
  TPersistentCracker = class(TPersistent);
  TComponentCracker = class(TComponent);

function GetUltimateOwner(APersistent: TPersistent): TPersistent;
begin
  Result := TPersistentCracker(APersistent).GetOwner;
end;

{ TFilerAccess }

constructor TFilerAccess.Create(APersistent: TPersistent);
begin
  inherited Create;
  FPersistent := APersistent;
end;

procedure TFilerAccess.DefineProperties(AFiler: TFiler);
begin
  TPersistentCracker(FPersistent).DefineProperties(AFiler);
end;

function TFilerAccess.GetChildOwner: TComponent;
begin
  Result := TComponentCracker(FPersistent).GetChildOwner;
end;

function TFilerAccess.GetChildParent: TComponent;
begin
  Result := TComponentCracker(FPersistent).GetChildParent;
end;

procedure TFilerAccess.GetChildren(Proc: TGetChildProc; Root: TComponent);
begin
  TComponentCracker(FPersistent).GetChildren(Proc, Root);
end;

procedure TFilerAccess.SetAncestor(Value: Boolean);
begin
  TComponentCracker(FPersistent).SetAncestor(Value);
end;

procedure TFilerAccess.SetChildOrder(Child: TComponent; Order: Integer);
begin
  TComponentCracker(FPersistent).SetChildOrder(Child, Order);
end;

procedure TFilerAccess.Updated;
begin
  TComponentCracker(FPersistent).Updated;
end;

procedure TFilerAccess.Updating;
begin
  TComponentCracker(FPersistent).Updating;
end;

{ TMemoryStream }

constructor TMemoryStreamEh.Create;
begin
  inherited Create;
  HalfMemoryDelta := $1000;
end;

function TMemoryStreamEh.Realloc(var NewCapacity: Integer): Pointer;
var
  MemoryDelta: Integer;
begin
  MemoryDelta := HalfMemoryDelta * 2;
  if (NewCapacity > 0) and (NewCapacity <> Size) then
    NewCapacity := (NewCapacity + (MemoryDelta - 1)) and not (MemoryDelta - 1);
  Result := Memory;
  if NewCapacity <> Capacity then
  begin
    if NewCapacity = 0 then
    begin
{$IFDEF MSWINDOWS}
      GlobalFreePtr(Memory);
{$ELSE}
      FreeMem(Memory);
{$ENDIF}
      Result := nil;
    end else
    begin
{$IFDEF MSWINDOWS}
      if Capacity = 0 then
        Result := GlobalAllocPtr(HeapAllocFlags, NewCapacity)
      else
        Result := GlobalReallocPtr(Memory, NewCapacity, HeapAllocFlags);
{$ELSE}
      if Capacity = 0 then
        GetMem(Result, NewCapacity)
      else
        ReallocMem(Result, NewCapacity);
{$ENDIF}
{$IFDEF EH_LIB_5}
      if Result = nil then raise EStreamError.CreateRes(@SMemoryStreamError);
{$ELSE}
      if Result = nil then raise EStreamError.Create(SMemoryStreamError);
{$ENDIF}
    end;
  end;
end;

{$IFNDEF EH_LIB_6}

{ TDragObjectEx }

procedure TDragObjectEx.BeforeDestruction;
begin
  // Do not call inherited here otherwise DragSave will be cleared and thus
  // we will be unable to automatically free the dragobject.
end;

{$ENDIF}

procedure DataVarCast(var Dest: Variant; const Source: Variant; AVarType: Integer);
//function DataVarCast(const Source: Variant; AVarType: Integer): Variant;
begin
  if VarIsNull(Source) then
    Dest := Null
  else if AVarType = varVariant then
    Dest := Source
  else
    VarCast(Dest, Source, AVarType);
end;

function VariantToRefObject(Value: Variant): TObject;
begin
  Result := TObject(Integer(Value));
end;

function RefObjectToVariant(Value: TObject): Variant;
begin
  Result := Integer(Value);
end;

procedure DataVarCastAsObject(var Dest: Variant; const Source: Variant);
begin
  DataVarCast(Dest, Source, varVariant);
end;

function WStrCopy(Dest: PWideChar; const Source: PWideChar): PWideChar;
var
  Src : PWideChar;
begin
  Result := Dest;
  Src := Source;
  while (Src^ <> #$00) do
  begin
    Dest^ := Src^;
    Inc(Src);
    Inc(Dest);
  end;
  Dest^ := #$00;
end;

{$RANGECHECKS OFF}
// Here and below all routins work without rangecheck

function ExplicitLongwordToLongInt(v: Longword): LongInt;
begin
  Result := LongInt(v);
end;

function VarToWideStr(const V: Variant): WideString;
begin
  if not VarIsNull(V) then
    Result := V
  else
    Result := '';
end;

end.


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
www.日韩av| 久久精品99久久久| 国产91丝袜在线18| 久久综合色婷婷| 国产一区二区视频在线| 精品国产乱码久久久久久浪潮| 久久草av在线| 久久久久97国产精华液好用吗| 国产在线不卡一区| 国产欧美综合在线| 91麻豆高清视频| 亚洲在线视频网站| 在线播放欧美女士性生活| 日本欧美在线观看| 欧美mv日韩mv国产| 粉嫩高潮美女一区二区三区| 国产精品高潮久久久久无| 91在线看国产| 丝袜亚洲另类丝袜在线| 久久亚洲一级片| www.日韩在线| 日韩高清在线观看| 久久久精品蜜桃| 色综合久久综合中文综合网| 三级久久三级久久| 国产亚洲欧美日韩俺去了| 97久久久精品综合88久久| 亚洲国产乱码最新视频| 日韩限制级电影在线观看| 国产成人鲁色资源国产91色综| 亚洲日本在线a| 欧美大白屁股肥臀xxxxxx| 国产成a人无v码亚洲福利| 亚洲激情校园春色| 欧美不卡在线视频| 91污片在线观看| 久久精品国产亚洲aⅴ| 国产精品高潮呻吟| 欧美tk—视频vk| 欧美中文字幕亚洲一区二区va在线| 蜜桃视频一区二区三区| 国产欧美一区二区三区网站| 欧美日韩高清在线播放| 国产一区二区三区免费在线观看| 亚洲欧美成人一区二区三区| 精品三级在线观看| 色哟哟亚洲精品| 国产激情一区二区三区桃花岛亚洲| 亚洲免费观看高清| 精品国产凹凸成av人网站| 欧美亚洲愉拍一区二区| 国产夫妻精品视频| 日本视频在线一区| 艳妇臀荡乳欲伦亚洲一区| 国产女人水真多18毛片18精品视频 | 国产一区二区女| 亚洲在线成人精品| 欧美—级在线免费片| 日韩午夜电影在线观看| 91国内精品野花午夜精品| 国产成人精品午夜视频免费| 日本伊人精品一区二区三区观看方式| 国产精品国模大尺度视频| 精品国精品国产尤物美女| 欧美精品视频www在线观看| 99久免费精品视频在线观看| 国产精品自产自拍| 美女诱惑一区二区| 亚洲国产精品久久久男人的天堂| 亚洲欧洲国产日韩| 国产日韩欧美精品综合| 久久青草国产手机看片福利盒子| 欧美一区二区视频观看视频| 色天天综合久久久久综合片| 99视频超级精品| 大陆成人av片| 国产91精品在线观看| 国产精品综合在线视频| 国产在线一区二区综合免费视频| 免费一级欧美片在线观看| 丝袜亚洲另类欧美综合| 日韩黄色片在线观看| 亚洲成人av一区二区三区| 一区二区三区在线免费视频| 成人免费小视频| 亚洲视频一区二区在线| 亚洲天堂久久久久久久| 亚洲欧美另类在线| 最近日韩中文字幕| 亚洲免费观看高清完整| 亚洲影院理伦片| 日韩专区欧美专区| 奇米在线7777在线精品| 久久狠狠亚洲综合| 麻豆91在线播放| 国产乱码精品一区二区三区忘忧草 | 久久久午夜电影| 久久影院视频免费| 中文字幕高清不卡| 一区二区中文视频| 亚洲精品高清在线| 亚洲成人av一区二区三区| 蜜桃视频第一区免费观看| 精品午夜久久福利影院| 国产成人精品亚洲777人妖| 国产iv一区二区三区| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 欧美精品一区二区三区在线播放 | 久久久久久久综合狠狠综合| 久久色在线视频| 国产欧美一区二区精品婷婷 | 日韩精品一区二区三区swag| www国产精品av| 国产欧美一区二区三区鸳鸯浴| 亚洲欧美电影一区二区| 日韩av一区二区在线影视| 国产高清精品在线| 在线日韩一区二区| 日韩你懂的在线观看| 国产精品毛片久久久久久| 一区二区日韩av| 精品影院一区二区久久久| yourporn久久国产精品| 欧美欧美欧美欧美首页| 久久久久国产精品麻豆ai换脸| 亚洲综合久久久久| 狠狠色伊人亚洲综合成人| 91免费看`日韩一区二区| 日韩欧美色综合| 亚洲欧洲精品天堂一级 | 91一区二区在线观看| 91精品国产高清一区二区三区| 国产视频一区在线观看| 亚洲最快最全在线视频| 国产高清不卡一区二区| 欧美丰满美乳xxx高潮www| 欧美国产成人精品| 日韩电影在线观看一区| 91在线观看高清| 亚洲乱码中文字幕| 韩国在线一区二区| 欧美日韩一区二区三区视频| wwwwww.欧美系列| 亚洲高清免费视频| 波多野结衣欧美| 国产网站一区二区三区| 日韩综合在线视频| 在线中文字幕不卡| 国产精品午夜免费| 国内久久精品视频| 7777精品伊人久久久大香线蕉完整版| 国产精品国产自产拍高清av| 国产精品香蕉一区二区三区| 51久久夜色精品国产麻豆| 亚洲免费av网站| av一区二区不卡| 中文字幕一区在线观看视频| 国产在线视视频有精品| 日韩一级二级三级精品视频| 亚洲国产另类av| 在线免费亚洲电影| 国产精品国产精品国产专区不蜜| 国产高清亚洲一区| 精品国产精品网麻豆系列| 婷婷激情综合网| 欧美三级一区二区| 一区二区三区不卡视频| 97精品国产露脸对白| 国产精品久久99| caoporen国产精品视频| 国产精品二三区| 99视频在线观看一区三区| 久久久久国产免费免费| 国产一区二区不卡在线| 久久久久久99久久久精品网站| 蜜桃视频一区二区三区| 日韩亚洲欧美成人一区| 久久 天天综合| 精品国产在天天线2019| 蜜臀av一区二区在线免费观看| 欧美精品tushy高清| 日本女优在线视频一区二区 | 99免费精品视频| **性色生活片久久毛片| 色综合视频在线观看| 亚洲精品少妇30p| 欧美无人高清视频在线观看| 首页国产丝袜综合| 国产欧美日韩在线| 国产美女娇喘av呻吟久久| 国产亚洲自拍一区| 不卡在线观看av| 一区二区三区四区乱视频| 欧美视频中文一区二区三区在线观看| 亚洲gay无套男同| 日韩一区国产二区欧美三区| 国产伦精品一区二区三区视频青涩 | 国产精品视频一区二区三区不卡 | 欧美综合在线视频| 日韩中文字幕区一区有砖一区|