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

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

?? bsskinmenus.pas

?? 一套支持Delphi的VCL庫
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
    WM_NCLBUTTONDOWN, WM_NCMBUTTONDOWN, WM_NCRBUTTONDOWN,
    WM_KILLFOCUS, WM_MOVE, WM_SIZE, WM_CANCELMODE, WM_PARENTNOTIFY:
      Result := True;
  end;
end;

//===============TbsSkinMenuItem===================//
constructor TbsSkinMenuItem.Create;
begin
  WaitCommand := False;
  Parent := AParent;
  MenuItem := AMenuItem;
  FVisible := True;
  MI := AData;
  if MI <> nil
  then
    with AData do
    begin
      if (ActivePictureIndex <> - 1) and
         (ActivePictureIndex < Self.Parent.SD.FActivePictures.Count)
      then
        ActivePicture := Self.Parent.SD.FActivePictures.Items[ActivePictureIndex]
      else
        begin
          ActivePicture := nil;
          SkinRect := NullRect;
          ActiveSkinRect := NullRect;
        end;
    end;
  FMorphKf := 0;
  CurrentFrame := 0;
end;

procedure TbsSkinMenuItem.DrawSkinCheckImage(Cnvs: TCanvas; R: TRect; AActive: Boolean);
var
  Buffer: TBitMap;
  SR: TRect;
  X, Y: Integer;
begin
  if AActive then SR := MI.ActiveCheckImageRect else SR := MI.CheckImageRect;
  Buffer := TBitMap.Create;
  Buffer.Width := RectWidth(SR);
  Buffer.Height := RectHeight(SR);
  Buffer.Canvas.CopyRect(Rect(0, 0, Buffer.Width, Buffer.Height),
    ActivePicture.Canvas, SR);
  Buffer.Transparent := True;
  X := R.Left + RectWidth(R) div 2 - Buffer.Width div 2;
  if X < R.Left then X := R.Left;
  Y := R.Top + RectHeight(R) div 2 - Buffer.Height div 2;
  if Y < R.Top then Y := R.Top;
  Cnvs.Draw(X, Y, Buffer);
  Buffer.Free;
end;

procedure TbsSkinMenuItem.DrawSkinRadioImage(Cnvs: TCanvas; R: TRect; AActive: Boolean);
var
  Buffer: TBitMap;
  SR: TRect;
  X, Y: Integer;
begin
  if AActive then SR := MI.ActiveRadioImageRect else SR := MI.RadioImageRect;
  Buffer := TBitMap.Create;
  Buffer.Width := RectWidth(SR);
  Buffer.Height := RectHeight(SR);
  Buffer.Canvas.CopyRect(Rect(0, 0, Buffer.Width, Buffer.Height),
    ActivePicture.Canvas, SR);
  Buffer.Transparent := True;
  X := R.Left + RectWidth(R) div 2 - Buffer.Width div 2;
  if X < R.Left then X := R.Left;
  Y := R.Top + RectHeight(R) div 2 - Buffer.Height div 2;
  if Y < R.Top then Y := R.Top;
  Cnvs.Draw(X, Y, Buffer);
  Buffer.Free;
end;

procedure TbsSkinMenuItem.DrawSkinArrowImage(Cnvs: TCanvas; R: TRect; AActive: Boolean);
var
  Buffer: TBitMap;
  SR: TRect;
  X, Y: Integer;
begin
  if AActive then SR := MI.ActiveArrowImageRect else SR := MI.ArrowImageRect;
  Buffer := TBitMap.Create;
  Buffer.Width := RectWidth(SR);
  Buffer.Height := RectHeight(SR);
  Buffer.Canvas.CopyRect(Rect(0, 0, Buffer.Width, Buffer.Height),
    ActivePicture.Canvas, SR);
  Buffer.Transparent := True;
  X := R.Left + RectWidth(R) div 2 - Buffer.Width div 2;
  if X < R.Left then X := R.Left;
  Y := R.Top + RectHeight(R) div 2 - Buffer.Height div 2;
  if Y < R.Top then Y := R.Top;
  Cnvs.Draw(X, Y, Buffer);
  Buffer.Free;
end;


function TbsSkinMenuItem.EnableMorphing: Boolean;
begin
  Result := (MI <> nil) and MI.Morphing and (Parent.SD <> nil) and
             not (Parent.SD.Empty) and
             Parent.SD.EnableSkinEffects;
end;

function TbsSkinMenuItem.EnableAnimation: Boolean;
begin
  Result := (MI <> nil) and not IsNullRect(MI.AnimateSkinRect) and (Parent.SD <> nil) and
             not (Parent.SD.Empty) and
             Parent.SD.EnableSkinEffects;
end;


function TbsSkinMenuItem.CanMorphing;
var
  AD: Boolean;
begin
  AD := Active or Down;
  Result := FVisible and ((AD and (MorphKf < 1)) or
                         (not AD and (MorphKf > 0)));
  if not FVisible and (FMorphKf <> 0)
  then
    begin
      Active := False;
      Down := False;
      FMorphKf := 0;
    end;
end;

procedure TbsSkinMenuItem.DoMorphing;
begin
  if Active or Down
  then MorphKf := MorphKf + MorphInc
  else MorphKf := MorphKf - MorphInc;
  Draw(Parent.Canvas);
end;

procedure TbsSkinMenuItem.SetMorphKf(Value: Double);
begin
  FMorphKf := Value;
  if FMorphKf < 0 then FMorphKf := 0 else
  if FMorphKf > 1 then FMorphKf := 1;
end;

procedure TbsSkinMenuItem.ReDraw;
begin
  if (MI <> nil) and EnableAnimation
  then
    begin
      if  Parent.MorphTimer.Interval <> MI.AnimateInterval
      then
        Parent.MorphTimer.Interval := MI.AnimateInterval;
       if EnableAnimation and not MI.InActiveAnimation and not Active
       then
        begin
          CurrentFrame := 0;
          Draw(Parent.Canvas);
       end
      else
        Parent.MorphTimer.Enabled := True
    end
  else
  if (MI <> nil) and EnableMorphing
  then
    begin
      if Parent.MorphTimer.Interval <> MorphTimerInterval
      then
        Parent.MorphTimer.Interval := MorphTimerInterval;
      Parent.MorphTimer.Enabled := True
    end
  else
    Draw(Parent.Canvas);
end;

procedure TbsSkinMenuItem.MouseDown(X, Y: Integer);
begin
  WaitCommand := False;
  if not Down and MenuItem.Enabled
  then
    Parent.ParentMenu.CheckItem(Parent, Self, True, False);
end;

procedure TbsSkinMenuItem.MouseEnter;
var
  i: Integer;
begin
  Active := True;
  if EnableAnimation then CurrentFrame := 0;          
  for i := 0 to Parent.ItemList.Count - 1 do
    if (TbsSkinMenuItem(Parent.ItemList.Items[i]) <> Self)
       and TbsSkinMenuItem(Parent.ItemList.Items[i]).Down
    then
      with TbsSkinMenuItem(Parent.ItemList.Items[i]) do
      begin
        Down := False;
        ReDraw;
      end;

  if WaitCommand and not Kb
  then
    begin
      ReDraw;
    end
  else  
  if not Down
  then
    begin
      ReDraw;
      Parent.ParentMenu.CheckItem(Parent, Self, False, Kb);
    end
  else
    with Parent.ParentMenu do
    begin
      i := GetPWIndex(Parent);
      if i + 2 < FPopupList.Count
      then
        TbsSkinPopupWindow(FPopupList.Items[i + 1]).UpDatePW;
    end;

  if Parent.Hint <> MenuItem.Hint then Parent.Hint := MenuItem.Hint;
end;

procedure TbsSkinMenuItem.MouseLeave;
begin
  Active := False;
  if EnableAnimation then CurrentFrame := MI.FrameCount + 1;
  WaitCommand := False;
  if not Down then ReDraw;
  with Parent.ParentMenu do
  begin
    if (WItem <> nil) and (WItem = Self)
    then
      begin
        WaitTimer.Enabled := False;
        WItem := nil;
      end;
  end;
end;

procedure TbsSkinMenuItem.DefaultDraw(Cnvs: TCanvas);
var
  MIShortCut, S: WideString;
  B: TBitMap;
  TextOffset: Integer;
  R, TR, SR: TRect;
  DrawGlyph: Boolean;
  GX, GY, IX, IY: Integer;
begin
  {$IFDEF TNTUNICODE}
  if MenuItem is TTNTMenuItem
  then
    begin
      if MenuItem.ShortCut <> 0
      then
        MIShortCut := ShortCutToText(TTNTMenuItem(MenuItem).ShortCut)
      else
        MIShortCut := '';
     end
  else
    begin
      if MenuItem.ShortCut <> 0
      then
        MIShortCut := ShortCutToText(MenuItem.ShortCut)
      else
        MIShortCut := '';
    end;
  {$ELSE}
  if MenuItem.ShortCut <> 0
  then
    MIShortCut := ShortCutToText(MenuItem.ShortCut)
  else
    MIShortCut := '';
  {$ENDIF}
  B := TBitMap.Create;
  B.Width := RectWidth(ObjectRect);
  B.Height := RectHeight(ObjectRect);

  if Parent.ImgL = nil
  then TextOffset := 19
  else TextOffset := Parent.GlyphWidth;


  with B.Canvas do
  begin
    R := Rect(0, 0, B.Width, B.Height);
    Font.Assign(Parent.ParentMenu.FDefaultMenuItemFont);
    if (Parent.ParentMenu.SkinData <> nil) and
       (Parent.ParentMenu.SkinData.ResourceStrData <> nil)
    then
      Font.CharSet := Self.Parent.ParentMenu.SkinData.ResourceStrData.Charset;
    if (Active or Down) and (MenuItem.Caption <> '-')
    then
      begin
        Frame3D(B.Canvas, R, BS_XP_BTNFRAMECOLOR, BS_XP_BTNFRAMECOLOR, 1);
        Brush.Color := BS_XP_BTNACTIVECOLOR;
        Font.Color := clWindowText;
        FillRect(R);
      end
    else
      begin
        R := Rect(0, 0, TextOffset, B.Height);
        Brush.Color := clBtnFace;
        FillRect(R);
        R := Rect(TextOffset, 0, B.Width, B.Height);
        Brush.Color := clWindow;
        if MenuItem.Enabled
        then
          Font.Color := clWindowText
        else
          Font.Color := clBtnShadow;
        FillRect(R);
      end;
  end;

  if MenuItem.Caption = '-'
  then
    begin
      R.Left := TextOffset;
      R.Top := B.Height div 2;
      R.Right := B.Width;
      R.Bottom := B.Height div 2 + 1;
      Frame3D(B.Canvas, R, clBtnShadow, clBtnShadow, 1);
      Cnvs.Draw(ObjectRect.Left, ObjectRect.Top, B);
      B.Free;
      Exit;
    end;

  {$IFDEF TNTUNICODE}
  if MenuItem is TTntMenuItem
  then
    S := TTntMenuItem(MenuItem).Caption
  else
    S := MenuItem.Caption;
  {$ELSE}
  S := MenuItem.Caption;
  {$ENDIF}

  TR := Rect(2, 2, B.Width - 2, B.Height - 2);
  //
  if (S[1] = '-') and (S[Length(S)] = '-') and not MenuItem.Enabled
  then
    begin
       with B.Canvas do
       begin
         Brush.Color := clBtnShadow;
         FillRect(Rect(0, 0, B.Width, B.Height));
         Brush.Style := bsClear;
         Delete(S, 1, 1);
         Delete(S, Length(S), 1);
         Font.Color := clBtnHighLight;
       end;
      BSDrawSkinText(B.Canvas, S, TR,
          Parent.ParentMenu.FForm.DrawTextBiDiModeFlags(DT_CENTER or DT_VCENTER));
      Cnvs.Draw(ObjectRect.Left, ObjectRect.Top, B);
      B.Free;
      Exit;
    end;
    //

  // text
  R := Rect(TR.Left + TextOffset, 0, TR.Right - 19, 0);
  BSDrawSkinText(B.Canvas, S, R,
             DT_CALCRECT);
  OffsetRect(R, 0, TR.Top + RectHeight(TR) div 2 - R.Bottom div 2);
  Inc(R.Right, 2);
  BSDrawSkinText(B.Canvas, S, R,
    Parent.ParentMenu.FForm.DrawTextBiDiModeFlags(DT_CENTER or DT_VCENTER));
  // short cut
  if MIShortCut <> ''
  then
    begin
      SR := Rect(0, 0, 0, 0);
      BSDrawSkinText(B.Canvas, MIShortCut, SR, DT_CALCRECT);
      SR := Rect(TR.Right - SR.Right - 19, R.Top, TR.Right - 19, R.Bottom);
      BSDrawSkinText(B.Canvas, MIShortCut, SR,
       Parent.ParentMenu.FForm.DrawTextBiDiModeFlags(DT_CENTER or DT_VCENTER));
    end;
  //
  if MenuItem.Count <> 0
  then
    DrawSubImage(B.Canvas,
                 TR.Right - 7, TR.Top + RectHeight(TR) div 2 - 4,
                 B.Canvas.Font.Color);
  //
  DrawGlyph := (not MenuItem.Bitmap.Empty) or  ((Parent.ImgL <> nil) and (MenuItem.ImageIndex > -1) and
       (MenuItem.ImageIndex < Parent.ImgL.Count));

  if DrawGlyph
  then
    begin
      if not MenuItem.Bitmap.Empty
        then
          begin
            GX := TR.Left + 2;
            GY := TR.Top + RectHeight(TR) div 2 - MenuItem.Bitmap.Height div 2;
            if MenuItem.Checked
            then
              with B.Canvas do
              begin
                Brush.Style := bsClear;
                Pen.Color := Font.Color;
                Rectangle(GX - 1, GY - 1,
                          GX + MenuItem.Bitmap.Width + 1,
                          GY + MenuItem.Bitmap.Height + 1);
             end;
          end
        else
          begin
            GX := TR.Left + 2;
            GY := TR.Top + RectHeight(TR) div 2 - Parent.ImgL.Height div 2;
            if MenuItem.Checked
            then
              with B.Canvas do
              begin
                Brush.Style := bsClear;
                Pen.Color := Font.Color;
                Rectangle(GX - 1, GY - 1,
                          GX + Parent.ImgL.Width + 1,
                          GY + Parent.ImgL.Height + 1);
             end;
           end;
    end
  else
    begin
      GX := 0; GY := 0;
      IY := TR.Top + RectHeight(TR) div 2 - 4;
      IX := TR.Left + 2;
      if (MenuItem.Name = MI_CLOSENAME) or (MenuItem.Name = TMI_CLOSENAME)
      then DrawCloseImage(B.Canvas, IX, IY, B.Canvas.Font.Color) else
      if MenuItem.Name = MI_MINNAME
      then DrawMinimizeImage(B.Canvas, IX, IY, B.Canvas.Font.Color)
      else
      if MenuItem.Name = MI_MAXNAME
      then DrawMaximizeImage(B.Canvas, IX, IY, B.Canvas.Font.Color)
      else
      if (MenuItem.Name = MI_RESTORENAME) or (MenuItem.Name = TMI_RESTORENAME)
      then DrawRestoreImage(B.Canvas, IX, IY, B.Canvas.Font.Color)
      else
      if MenuItem.Name = MI_ROLLUPNAME
      then DrawRollUpImage(B.Canvas, IX, IY, B.Canvas.Font.Color)
      else
      if MenuItem.Name = MI_MINTOTRAYNAME
      then DrawMTImage(B.Canvas, IX, IY, B.Canvas.Font.Color)
      else
      if MenuItem.Checked
      then
      if MenuItem.RadioItem
      then
        begin
          DrawRadioImage(B.Canvas,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品久久人人爱蜜臀| 国产精品国产精品国产专区不蜜 | 欧美在线观看视频一区二区三区| 国产一区高清在线| 精东粉嫩av免费一区二区三区| 亚洲电影你懂得| 亚洲电影你懂得| 三级久久三级久久| 日本在线不卡视频| 免费国产亚洲视频| 久久成人av少妇免费| 久久精品国产成人一区二区三区| 日韩1区2区3区| 久久精品久久久精品美女| 捆绑变态av一区二区三区| 美女被吸乳得到大胸91| 激情图区综合网| 国产iv一区二区三区| 成人黄色综合网站| 日本韩国视频一区二区| 欧美高清激情brazzers| 精品女同一区二区| 亚洲国产岛国毛片在线| 亚洲欧洲制服丝袜| 日日摸夜夜添夜夜添精品视频| 婷婷六月综合网| 国产一区二区三区四区五区入口| 国产精品亚洲一区二区三区妖精| aaa亚洲精品| 欧美日韩国产在线观看| 久久综合中文字幕| 亚洲色图一区二区三区| 奇米四色…亚洲| 豆国产96在线|亚洲| 欧美日韩一区在线观看| 久久青草欧美一区二区三区| 一区二区三区四区激情| 麻豆91精品91久久久的内涵| zzijzzij亚洲日本少妇熟睡| 欧美日韩高清影院| 国产精品久久久久永久免费观看| 午夜私人影院久久久久| 国产福利一区二区三区视频| 欧美三级三级三级爽爽爽| 久久精品这里都是精品| 亚洲一区二区三区四区在线免费观看 | 欧美精品一区二区三区蜜桃| 亚洲乱码国产乱码精品精的特点| 开心九九激情九九欧美日韩精美视频电影 | 色网站国产精品| 久久综合色播五月| 亚洲成av人片在www色猫咪| 国产电影一区在线| 欧美精选一区二区| 亚洲欧美视频一区| 成人性视频网站| 26uuu国产一区二区三区| 亚洲一二三区在线观看| av激情成人网| 国产婷婷色一区二区三区四区| 日韩精品免费专区| 欧美系列一区二区| 一区二区三区在线视频观看| voyeur盗摄精品| 国产目拍亚洲精品99久久精品| 日本aⅴ亚洲精品中文乱码| 在线观看亚洲精品| 亚洲色图欧美激情| 91免费国产在线| 国产精品高潮呻吟| 成人教育av在线| 久久久精品免费网站| 精品一区二区三区在线观看| 欧美一区午夜精品| 亚洲高清免费观看| 欧美亚洲高清一区| 亚洲一级二级在线| 欧美三级午夜理伦三级中视频| 亚洲精品日韩一| 欧美日韩在线一区二区| 亚洲国产乱码最新视频| 欧美日韩免费在线视频| 亚洲综合色丁香婷婷六月图片| 色欧美乱欧美15图片| 亚洲一区电影777| 欧美另类变人与禽xxxxx| 男人的天堂久久精品| 日韩精品在线一区| 国产精品一区专区| 国产精品久久久久一区二区三区共| 成人影视亚洲图片在线| 日韩美女啊v在线免费观看| 99国产精品久| 亚洲成人久久影院| 日韩欧美国产三级电影视频| 极品美女销魂一区二区三区| 久久亚洲一级片| av激情综合网| 日韩精品电影在线| 精品福利一区二区三区| 波多野洁衣一区| 丝袜脚交一区二区| 国产亚洲午夜高清国产拍精品| 成人小视频在线观看| 悠悠色在线精品| 日韩一级完整毛片| 成人av动漫在线| 午夜欧美大尺度福利影院在线看| 精品免费国产一区二区三区四区| 国产精品一区在线| 亚洲精品乱码久久久久久久久| 欧美一区二区在线看| 风流少妇一区二区| 午夜欧美一区二区三区在线播放| 久久欧美一区二区| 欧美嫩在线观看| 国产精品一区二区免费不卡| 亚洲国产日产av| 国产欧美日韩亚州综合| 欧美日韩在线播放| a亚洲天堂av| 久久精品国产免费| 亚洲一区二区三区四区在线| 久久在线观看免费| 欧美日韩一区二区三区不卡| 国产精品一二三在| 免费亚洲电影在线| 亚洲午夜久久久久久久久电影网 | 亚洲人成网站影音先锋播放| 91精品国产色综合久久久蜜香臀| 91在线精品秘密一区二区| 久久精品国产色蜜蜜麻豆| 夜夜爽夜夜爽精品视频| 久久久五月婷婷| 91精品视频网| 在线观看亚洲a| 色婷婷综合久色| 成人av综合在线| 国产一区二区网址| 老鸭窝一区二区久久精品| 亚洲自拍欧美精品| 亚洲免费观看在线视频| 日本一区二区成人在线| 国产亚洲精品久| 欧美电影免费观看高清完整版在| 欧美系列亚洲系列| 99综合电影在线视频| 东方欧美亚洲色图在线| 国产a区久久久| 国产91精品精华液一区二区三区 | 日韩中文字幕一区二区三区| 亚洲综合图片区| 亚洲午夜私人影院| 亚洲大片在线观看| 日韩精品一区第一页| 日韩电影在线一区二区| 五月天丁香久久| 喷水一区二区三区| 蜜臂av日日欢夜夜爽一区| 天天综合网 天天综合色| 亚洲成av人影院在线观看网| 亚洲一区中文在线| 婷婷六月综合亚洲| 久久成人18免费观看| 国内久久精品视频| 成人涩涩免费视频| 91在线国内视频| 欧美日韩激情在线| 日韩亚洲欧美一区| 精品国产免费人成电影在线观看四季 | 成人一区二区三区视频在线观看 | 欧美日韩成人一区| 日韩欧美美女一区二区三区| 精品蜜桃在线看| 中文字幕一区二区不卡| 亚洲宅男天堂在线观看无病毒| 亚洲成人精品一区二区| 精品午夜久久福利影院| 成人h精品动漫一区二区三区| 色哟哟精品一区| 欧美精品777| 欧美国产国产综合| 亚洲国产精品嫩草影院| 国产一区视频导航| 日本丶国产丶欧美色综合| 欧美剧在线免费观看网站| 精品久久久久一区| 国产精品久久久久久久久动漫| 亚洲大片免费看| 国产精品一区二区三区网站| 色综合色综合色综合| 91精品久久久久久久99蜜桃 | 69堂成人精品免费视频| 26uuu国产日韩综合| 亚洲综合激情网| 国产一区二区三区在线观看免费| 91首页免费视频| 久久无码av三级| 日韩国产精品大片| 91丝袜美腿高跟国产极品老师 |