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

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

?? winsubclass.pas

?? delphi控件
?? PAS
?? 第 1 頁 / 共 5 頁
字號:

        PUSH    ESI
        PUSH    EDI
        MOV     ESI,EDX

        MOV     EDX,[ESI].TPropInfo.Index       { pass index in EDX }
        CMP     EDX,$80000000
        JNE     @@hasIndex
        MOV     EDX,ECX                         { pass value in EDX }
@@hasIndex:
        MOV     EDI,[ESI].TPropInfo.SetProc
        CMP     [ESI].TPropInfo.SetProc.Byte[3],$FE
        JA      @@isField
        JB      @@isStaticMethod

@@isVirtualMethod:
        MOVSX   EDI,DI
        ADD     EDI,[EAX]
        CALL    DWORD PTR [EDI]
        JMP     @@exit

@@isStaticMethod:
        CALL    EDI
        JMP     @@exit

@@isField:
  AND  EDI,$00FFFFFF
  ADD  EAX,EDI
  MOV  EDX,ECX
  CALL  AssignWideStr

@@exit:
        POP     EDI
        POP     ESI
end;
{$ENDIF}

function  GetStringProp(control: TObject;aprop:string):widestring;
var PropInfo:PPropInfo;
    s:string;
begin
   result:='';
   if  control<>nil then begin
      PropInfo:=GetPropInfo(control,aprop);
      if PropInfo<>nil then  begin
        case PropInfo^.PropType^.Kind of
          tkWString: result := GetWideStrProp(control,PropInfo);
          else  result:=StrToWideStr(GetStrProp(control,PropInfo));
        end;
      end;
   end;
end;

function  GetControlCaption(control: TACControl):widestring;
var PropInfo:PPropInfo;
    s:string;
    aprop:string;
begin
   result:='';
   aprop:='Caption';
   if  control<>nil then begin
      PropInfo:=GetPropInfo(control,aprop);
      if PropInfo<>nil then  begin
        case PropInfo^.PropType^.Kind of
          tkWString: result := control.caption;
          else  result:=StrToWideStr(control.caption);
        end;
      end;
   end;
end;

function  GetObjMethod(control: TObject;aprop:string): TMethod;
var PropInfo:PPropInfo;
begin
//   result:=nil;
   if  control<>nil then begin
      PropInfo:=GetPropInfo(control,aprop);
      if PropInfo<>nil then  begin
        result:=GetMethodProp(control,PropInfo);
      end;
   end;
end;

function GetObjProp(control: TObject;aprop:string; MinClass: TClass):Tobject;
var PropInfo:PPropInfo;
begin
   result:=nil;
   if  control<>nil then begin
      PropInfo:=GetPropInfo(control,aprop);
      if PropInfo<>nil then  begin
        result:=GetObjectProp(control,PropInfo,MinClass);
      end;
   end;
end;

procedure  SetProperty(control: TObject;aprop,value:string);
var PropInfo:PPropInfo;
begin
   if  control<>nil then begin
      PropInfo:=GetPropInfo(control,aprop);
      if PropInfo<>nil then  begin
         if propinfo^.PropType^.Kind= tkEnumeration then
          SetEnumProp(control,PropInfo,value)
         else if propinfo^.PropType^.Kind= tkInteger then
          SetOrdProp(control,PropInfo,strtoint(value))
         else if propinfo^.PropType^.Kind= tkString then
          SetStrProp(control,PropInfo,value)
         else if propinfo^.PropType^.Kind= tkLString then
          SetStrProp(control,PropInfo,value)
         else if propinfo^.PropType^.Kind= tkWString then
          SetStrProp(control,PropInfo,value);
      end;
   end;
end;

procedure TSkinButton.DoMouseDown(var Message: TWMMouse);
var acontrol:Taccontrol;
    p:Tpoint;
begin
    acontrol:=TACcontrol(control);
    with Message do
      if (acontrol.Width > 32768) or (acontrol.Height > 32768) then begin
        GetCursorPos(p);
        p := acontrol.ScreenToClient(p);
        acontrol.MouseDown(mbLeft, KeysToShiftState(Keys), p.X, p.Y);
//        with acontrol.CalcCursorPos do
//          acontrol.MouseDown(mbLeft, KeysToShiftState(Keys), p.X, p.Y);
      end  else
       acontrol.MouseDown(mbLeft, KeysToShiftState(Keys), Message.XPos, Message.YPos);
end;

{procedure TSkinButton.SetRedraw(b:boolean);
begin
   redraw:=b;
   if b then begin
       KillTimer(hwnd, 1);
       sendmessage(hwnd,WM_SETREDRAW,1,0);
       Application.ProcessMessages;
   end else begin
       KillTimer(hwnd, 1);
       sendmessage(hwnd,WM_SETREDRAW,0,0);
       SetTimer(hwnd, 1, 100, nil);
   end;
end;   }

procedure TSkinButton.SetRedraw(b:boolean);
var dw:dword;
begin
//   redraw:=b;
   dw := GetWindowLong(hwnd, GWL_STYLE);
   if b then begin
      KillTimer(hwnd, 1);
      if redraw then
         dw := dw or WS_VISIBLE;
      redraw:=false;
   end else begin
      KillTimer(hwnd, 1);
      redraw := true;
      dw := dw and not WS_VISIBLE;
      SetTimer(hwnd, 1, 100, nil);
   end;
   SetWindowLong(hwnd, GWL_STYLE, dw);
end; 

function TSkinButton.BeforeProc(var Message: TMessage):boolean;
 var s:string;
     sf: Twinskinform;
begin
  {$IFDEF buttontest}
    s:= MsgtoStr(message);
    if s<>''  then begin
      s:=format('Button %s %1x %s',[caption,hwnd,s]);
      fsd.dodebug(s);
      //skinaddlog(s);
    end;
  {$ENDIF}
{    if message.msg= CM_VISIBLECHANGED then begin
        if message.wParam=0 then begin
            if redraw then setredraw(true);
        end;
        result:=true;
        exit;
    end else if isdefault then begin
       default(message);
       result:=false;
       exit;
    end;  }

    result:=true;
    case message.msg of
    WM_LBUTTONDOWN, WM_LBUTTONDBLCLK:
      begin
       if not Focused then  begin
        SetFocus(hwnd);
       end;
       state:=state+[scDown];
       PaintControl(0);
       result:=false;
       if (kind=0) and (control<>nil) then DoMouseDown(TWMMouse(message));
      end;
{   WM_LBUTTONUP:
      if scDown in state then begin
         state:=state-[scDown];
         PaintControl(0);
         setredraw(false);
         skinned:=false;
         sendmessage(hwnd,WM_LBUTTONDOWN,message.WParam,message.LParam);
         application.ProcessMessages;
         sendmessage(hwnd,WM_LBUTTONUP,message.WParam,message.LParam);
         skinned:=true;
         setredraw(true);
         if IsWindowVisible(hwnd) then
            Invalidate;
         application.ProcessMessages;
         result:=false;
      end;  }
{    WM_LBUTTONDOWN, WM_LBUTTONDBLCLK:
      begin
       if not Focused then  begin
        SetFocus(hwnd);
       end;
       state:=state+[scDown];
       setredraw(false);
//       sendmessage(hwnd,WM_SETREDRAW,0,0);
       default(message);
//       sendmessage(hwnd,WM_SETREDRAW,1,0);
       setredraw(true);
       PaintControl(0);
       result:=false;
      end;
    WM_LBUTTONUP:
      if scDown in state then begin
         state:=state-[scDown];
         setredraw(false);
         default(message);
         setredraw(true);
         if IsWindowVisible(hwnd) then
            Invalidate;
         result:=false;
      end;}
    WM_TIMER : begin
         setredraw(true);
         result:=false;
       end;
    WM_ERASEBKGND:begin
         message.Result:=1;
         result:=false;
      end;
    wm_paint: begin
        wmpaint(message);
        result:=false;
      end;
{    wm_enable,CM_ENABLEDCHANGED:begin
        WMEnable(message);
        result:=false;
      end;   }
    else result:=inherited beforeProc(message);
    end;
end;

{function TSkinButton.BeforeProc(var Message: TMessage):boolean;
 var s:string;
     sf: Twinskinform;
begin
    if message.msg= CM_VISIBLECHANGED then begin
        if message.wParam=0 then begin
            if redraw then setredraw(true);
        end;
        result:=true;
        exit;
    end else if isdefault then begin
       default(message);
       result:=false;
       exit;
    end;

    result:=true;
    case message.msg of
    WM_LBUTTONDOWN, WM_LBUTTONDBLCLK:
      begin
       if not Focused then  begin
        SetFocus(hwnd);
       end;
       state:=state+[scDown];
       PaintControl(0);
       result:=false;
      end;
    WM_LBUTTONUP:
      if scDown in state then begin
         state:=state-[scDown];
         PaintControl(0);
         setredraw(false);
         isdefault:=true;
         sendmessage(hwnd,WM_LBUTTONDOWN,message.WParam,message.LParam);
         sendmessage(hwnd,WM_LBUTTONUP,message.WParam,message.LParam);
         isdefault:=false;
         setredraw(true);
         if IsWindowVisible(hwnd) then
            Invalidate;
         result:=false;
      end;
    WM_TIMER : begin
         setredraw(true);
         result:=false;
       end;
    WM_ERASEBKGND:begin
         message.Result:=1;
         result:=false;
      end;
    wm_paint: begin
        wmpaint(message);
        result:=false;
      end;
    else result:=inherited beforeProc(message);
    end;
end;}

procedure TSkinButton.WMEnable(var Message: TMessage);
var dw: dword;
begin
{   dw:=GetWindowLong(hWnd,GWL_STYLE);
   dw := dw and ( not WS_VISIBLE);
   SetWindowLong( hwnd, GWL_STYLE, dw);
   dw := dw or WS_VISIBLE;
   SetWindowLong( hwnd, GWL_STYLE, dw);}
   default(Message);
   Invalidate;
end;

procedure TSkinButton.AfterProc(var Message: TMessage);
var sf:Twinskinform;
    s:string;
begin
    case message.msg of
{     CM_MOUSEENTER:
      if Enabled then begin
        state:=state+[scMouseIn];
        Invalidate;
      end;   
   CM_MOUSELEAVE:
      if Enabled then begin
        state:=state-[scMouseIn];
        state:=state-[scDown];
        Invalidate;
      end;  }

    WM_MOUSEMove:begin
      if enabled and (not (scmousein in state)) then begin
        state:=state+[scMouseIn];
        Invalidate;
      end;
      WinSkinData.DoTrackMouse(hwnd);
      end;
    WM_MOUSELEAVE: begin
//          if (scDown in state) then begin
          state:=state-[scMouseIn];
          state:=state-[scDown];
          invalidate;
//          end;
        end;

    WM_LBUTTONUP:
      if scDown in state then begin
         state:=state-[scDown];
         //PaintControl(0);
         Invalidate;
         s:=lowercase(GetWindowClassname(hwnd));
         if control<>nil then begin
           TACcontrol(control).Click  ;
//           postMessage(getparent(hwnd),WM_COMMAND,BN_CLICKED,hWnd)
         end else if (s='tbutton') then
           postMessage(getparent(hwnd),WM_COMMAND,BN_CLICKED,hWnd)
         else
           postMessage(getparent(hwnd),WM_COMMAND,BN_CLICKED*$100+GetDlgCtrlID(hwnd),hWnd);
      end;

    WM_SETTEXT: PaintControl(0);
    CM_FOCUSCHANGED : invalidate;
    CM_DIALOGKEY:invalidate;
    WM_KEYDOWN:
      if Message.WParam = VK_SPACE then begin
       state:=state+[scDown];
       Invalidate;
      end;

    WM_KEYUP:
      if Message.WParam = VK_SPACE then begin
        state:=state-[scDown];
        Invalidate;
      end;
    else inherited AfterProc(message);
    end;
end;

{procedure TSkinButton.DrawControl( dc:HDC; rc:TRect);
var i:integer;
    r1:Trect;
    acolor:Tcolor;
    bfont,cfont:Hfont;
    temp:Tbitmap;
begin
    if fsd.button=nil then exit;
    if fsd.Button.map.empty then exit;
    i:=1;

    temp:=Tbitmap.create;

    Focused := (GetFocus= hWnd);
    enabled := (GetWindowLong(hWnd,GWL_STYLE) and WS_DISABLED)=0;
    caption:=getformcaption(hwnd);
    if (caption='') and (control<>nil) then
      caption:=Taccontrol(control).caption;

    if focused then i:=4;
    if (scDown in state)  then i:=2
    else if (scMouseIn in state) then i:=4;
    if not enabled then i:=3;

    r1:=rc;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91在线看| 国产91在线观看丝袜| 亚洲欧洲一区二区在线播放| 欧美xxxxx牲另类人与| 欧美精品18+| 日韩精品在线网站| 欧美精品色综合| 91精品国产品国语在线不卡| 欧美一区二区播放| 欧美mv日韩mv亚洲| 国产精品人人做人人爽人人添| 亚洲国产激情av| 亚洲欧美中日韩| 一区二区三区成人在线视频| 日韩中文字幕区一区有砖一区| 免费亚洲电影在线| 丁香激情综合五月| 色香蕉成人二区免费| 欧美日韩精品免费| 日韩三级电影网址| 亚洲国产成人午夜在线一区| 国产精品嫩草影院com| 亚洲最大成人网4388xx| 人人超碰91尤物精品国产| 久久99日本精品| 成人91在线观看| 欧美精品乱码久久久久久| 精品国产三级电影在线观看| 日韩一区在线看| 日本女人一区二区三区| 国产成人av影院| 91激情在线视频| 日韩精品一区二| 亚洲精品欧美二区三区中文字幕| 日本欧美肥老太交大片| 北条麻妃国产九九精品视频| 欧美一区二区在线免费观看| 国产精品国产三级国产aⅴ中文 | 91久久精品日日躁夜夜躁欧美| 3d成人动漫网站| 中文成人综合网| 日韩经典中文字幕一区| www.在线欧美| 精品国产乱码久久久久久久久| 亚洲免费高清视频在线| 国产激情精品久久久第一区二区 | 亚洲精品国产精华液| 日韩成人一级片| 成人小视频在线| 日韩网站在线看片你懂的| 亚洲日穴在线视频| 国产露脸91国语对白| 91精品国产一区二区三区| 亚洲人快播电影网| 国产精品夜夜嗨| 欧美一级片在线看| 视频一区在线视频| 日本韩国精品在线| 亚洲欧美另类图片小说| 国产一区二区视频在线播放| 7799精品视频| 午夜a成v人精品| 在线免费观看成人短视频| 国产精品久久久久婷婷| 国产九色精品成人porny| 欧美成人猛片aaaaaaa| 蜜臀av一区二区在线观看| 欧美偷拍一区二区| 亚洲综合在线第一页| 在线观看亚洲精品视频| 亚洲黄色在线视频| 色偷偷久久一区二区三区| 亚洲视频一区二区在线观看| 成人动漫av在线| 日韩理论片一区二区| youjizz久久| 亚洲女子a中天字幕| 色综合久久综合网欧美综合网| 亚洲乱码国产乱码精品精98午夜 | 中国av一区二区三区| 国产一区二区伦理| 国产视频一区二区在线| 成人精品电影在线观看| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 国产99精品视频| 中文字幕视频一区| 色婷婷久久99综合精品jk白丝| 亚洲综合色在线| 欧美一卡二卡在线观看| 韩国成人在线视频| 久久久久国产精品人| 不卡的av中国片| 亚洲已满18点击进入久久| 欧美日韩第一区日日骚| 蜜臀av一区二区| 国产精品免费免费| 色天使色偷偷av一区二区| 午夜精品久久一牛影视| 精品国产制服丝袜高跟| yourporn久久国产精品| 婷婷综合久久一区二区三区| 日韩一级黄色片| 成人精品亚洲人成在线| 亚洲成人动漫在线观看| 欧美电视剧免费全集观看| 不卡的电影网站| 日韩不卡手机在线v区| 欧美国产日韩一二三区| 欧美日韩一级大片网址| 国产精品资源在线观看| 亚洲综合视频网| 国产日韩欧美一区二区三区乱码 | 久久亚洲精品国产精品紫薇| 99国产精品国产精品久久| 日韩在线a电影| 最近日韩中文字幕| 26uuu亚洲| 欧美美女视频在线观看| 国产91精品一区二区| 日韩中文字幕不卡| 1000部国产精品成人观看| 日韩欧美在线不卡| 色婷婷一区二区三区四区| 国产成人在线视频免费播放| 午夜视黄欧洲亚洲| 亚洲视频免费在线观看| 久久先锋影音av| 欧美一区二区播放| 欧美日韩综合一区| 99re成人精品视频| 国产成人啪午夜精品网站男同| 日韩精品一二三区| 一区二区免费在线播放| 国产精品久久午夜夜伦鲁鲁| 精品国产电影一区二区| 日韩一区二区不卡| 555夜色666亚洲国产免| 欧美日韩www| 欧美最猛性xxxxx直播| 99国产精品视频免费观看| 国产精品一区二区久久不卡| 久久精品国产99| 久久精品99国产精品| 视频在线观看一区| 亚洲aⅴ怡春院| 天天综合日日夜夜精品| 亚洲国产视频一区| 亚洲二区在线视频| 亚洲高清不卡在线观看| 亚洲福利视频一区二区| 午夜伦理一区二区| 婷婷国产在线综合| 日韩vs国产vs欧美| 喷水一区二区三区| 久久精品国产色蜜蜜麻豆| 久久av资源站| 国产高清久久久| 粉嫩在线一区二区三区视频| 成人性生交大片免费看视频在线 | 丝袜美腿成人在线| 午夜电影一区二区| 日韩成人免费电影| 久草在线在线精品观看| 精品综合久久久久久8888| 国产成人在线视频网站| 99久久精品国产精品久久| 色婷婷一区二区| 欧美一区二区人人喊爽| 精品日韩av一区二区| 日本一区二区视频在线观看| 自拍偷自拍亚洲精品播放| 亚洲一本大道在线| 精品一区二区三区影院在线午夜 | 久久亚洲私人国产精品va媚药| 精品美女一区二区| 国产精品毛片久久久久久| 亚洲男人的天堂一区二区| 日本大胆欧美人术艺术动态| 国产精品亚洲综合一区在线观看| av一区二区三区四区| 5月丁香婷婷综合| 中文一区二区完整视频在线观看| 一区二区三区国产精品| 国内精品自线一区二区三区视频| 福利视频网站一区二区三区| 欧美一a一片一级一片| 精品日韩一区二区三区免费视频| 中文字幕日本乱码精品影院| 爽好多水快深点欧美视频| 丁香桃色午夜亚洲一区二区三区| 99热精品一区二区| 日韩视频一区二区| 亚洲精品中文字幕乱码三区| 国内精品写真在线观看| 色猫猫国产区一区二在线视频| 亚洲精品一区二区三区在线观看| 亚洲乱码一区二区三区在线观看| 精品在线观看视频| 欧美精品高清视频| 中文字幕色av一区二区三区|