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

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

?? bsskintabs.pas

?? 一套支持Delphi的VCL庫
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
  //
  SaveIndex := -1;
  IR := GetActiveTabRect;
  if not IsNullRect(IR)
  then
    begin
      SaveIndex := SaveDC(Cnvs.Handle);
      ExcludeClipRect(Cnvs.Handle, IR.Left, IR.Top, IR.Right, IR.Bottom);
    end;
  //
  Cnvs.Draw(R.Left, R.Top, TB);
  Cnvs.Draw(R.Left, R.Top + TB.Height, LB);
  Cnvs.Draw(R.Left + RectWidth(R) - RB.Width, R.Top + TB.Height, RB);
  Cnvs.Draw(R.Left, R.Top + RectHeight(R) - BB.Height, BB);
  if SaveIndex <> -1 then RestoreDC(Cnvs.Handle, SaveIndex);
  LB.Free;
  TB.Free;
  RB.Free;
  BB.Free;
end;


procedure TbsSkinPageControl.Loaded;
begin
  inherited Loaded;
  if FIndex = -1
  then
    begin
      if TabHeight <= 0
      then
        SetItemSize(TabWidth, FDefaultItemHeight)
      else
        SetItemSize(TabWidth, TabHeight);
      Change2;
      ReAlign;
    end;
end;

procedure TbsSkinPageControl.WMPaint(var Msg: TWMPaint);
begin
  if PageCount = 0
  then
    begin
      PaintHandler(Msg);
    end
  else
    inherited;
end;

function TbsSkinPageControl.CheckVisibleTabs: Boolean;
var
  i: Integer;
begin
  Result := False;
  if PageCount = 0
  then
    Result := False
  else
    begin
      for i := 0 to PageCount - 1 do
      begin
        if Pages[i].TabVisible
        then
          begin
            Result := True;
            Break;
          end;
      end;
    end;
end;

procedure TbsSkinPageControl.WMEraseBkGnd(var Msg: TWMEraseBkGnd);
begin
  if (PageCount = 0) or (not CheckVisibleTabs)
  then
    begin
      GetSkinData;
      if FIndex = -1
      then
        inherited
      else
        DrawEmptyBackGround(Msg.DC);
    end
  else
    begin
      Msg.Result := 1;
    end;
end;


procedure TbsSkinPageControl.WndProc(var Message:TMessage);
var
  TOff, LOff, Roff, BOff: Integer;
begin
  if Message.Msg = TCM_ADJUSTRECT
  then
    begin
      inherited WndProc(Message);
      if FIndex <> -1
      then
        begin
          TOff := ClRect.Top;
          LOff := ClRect.Left;
          ROff := RectWidth(SkinRect) - ClRect.Right;
          BOff := RectHeight(SkinRect) - ClRect.Bottom;
        end;
      case TabPosition of
        tpLeft:
           if FIndex <> -1
           then
             begin
               PRect(Message.LParam)^.Left := PRect(Message.LParam)^.Left + LOff - 4;
               PRect(Message.LParam)^.Right := ClientWidth - ROff;
               {$IFNDEF VER130}
               PRect(Message.LParam)^.Top := PRect(Message.LParam)^.Top - 4 + TOff;
               {$ELSE}
               PRect(Message.LParam)^.Top := PRect(Message.LParam)^.Top - 6 + TOff;
               {$ENDIF}
               PRect(Message.LParam)^.Bottom := ClientHeight - BOff;
               if FHideTabs then PRect(Message.LParam)^.Left := PRect(Message.LParam)^.Left - 1;
             end
           else
             begin
               PRect(Message.LParam)^.Left := PRect(Message.LParam)^.Left - 3;
               PRect(Message.LParam)^.Right := ClientWidth - 1;
               PRect(Message.LParam)^.Top := PRect(Message.LParam)^.Top - 5;
               PRect(Message.LParam)^.Bottom := ClientHeight - 1;
               if FHideTabs then PRect(Message.LParam)^.Left := PRect(Message.LParam)^.Left - 1;
             end;
        tpRight:
           if FIndex <> -1
           then
             begin
               PRect(Message.LParam)^.Left := LOff;
               PRect(Message.LParam)^.Right := PRect(Message.LParam)^.Right - ROff + 4;
               {$IFNDEF VER130}
               PRect(Message.LParam)^.Top := PRect(Message.LParam)^.Top - 4 + TOff;
               {$ELSE}
               PRect(Message.LParam)^.Top := PRect(Message.LParam)^.Top - 6 + TOff;
               {$ENDIF}
               PRect(Message.LParam)^.Bottom := ClientHeight - BOff;
               if FHideTabs then PRect(Message.LParam)^.Right := PRect(Message.LParam)^.Right + 1;
             end
           else
             begin
               PRect(Message.LParam)^.Left := PRect(Message.LParam)^.Left - 3;
               PRect(Message.LParam)^.Right := PRect(Message.LParam)^.Right + 3;
               PRect(Message.LParam)^.Top := PRect(Message.LParam)^.Top - 5;
               PRect(Message.LParam)^.Bottom := ClientHeight - 1;
               if FHideTabs then PRect(Message.LParam)^.Right := PRect(Message.LParam)^.Right + 1;
             end;
        tpTop:
           if FIndex <> -1
           then
             begin
               PRect(Message.LParam)^.Left := LOff;
               PRect(Message.LParam)^.Right := ClientWidth - ROff;
               PRect(Message.LParam)^.Top := PRect(Message.LParam)^.Top - 6 + TOff;
               PRect(Message.LParam)^.Bottom := ClientHeight - BOff;
               if FHideTabs then PRect(Message.LParam)^.Top := PRect(Message.LParam)^.Top - 1;
             end
           else
             begin
               PRect(Message.LParam)^.Left := 1;
               PRect(Message.LParam)^.Right := ClientWidth - 1;
               PRect(Message.LParam)^.Top := PRect(Message.LParam)^.Top - 5;
               PRect(Message.LParam)^.Bottom := ClientHeight - 1;
               if FHideTabs then PRect(Message.LParam)^.Top := PRect(Message.LParam)^.Top - 1;
             end;
        tpBottom:
          if FIndex <> -1
          then
            begin
              PRect(Message.LParam)^.Left := LOff;
              PRect(Message.LParam)^.Right := ClientWidth - ROff;
              {$IFNDEF VER130}
              PRect(Message.LParam)^.Top := PRect(Message.LParam)^.Top - 4 + TOff;
              {$ELSE}
              PRect(Message.LParam)^.Top := PRect(Message.LParam)^.Top - 6 + TOff;
              {$ENDIF}
              PRect(Message.LParam)^.Bottom := PRect(Message.LParam)^.Bottom + 4 - BOff;
              if FHideTabs then PRect(Message.LParam)^.Bottom := PRect(Message.LParam)^.Bottom + 1;
            end
          else
            begin
              PRect(Message.LParam)^.Left := 1;
              PRect(Message.LParam)^.Right := ClientWidth - 1;
              PRect(Message.LParam)^.Top := 1;
              PRect(Message.LParam)^.Bottom := PRect(Message.LParam)^.Bottom + 3;
            end;

      end;
    end
  else
    if Message.Msg = TCM_GETITEMRECT
    then
      begin
        inherited WndProc(Message);
        if Style = tsTabs
        then
          case TabPosition of
            tpLeft:
                begin
                  PRect(Message.LParam)^.Left := PRect(Message.LParam)^.Left - 2;
                  PRect(Message.LParam)^.Right := PRect(Message.LParam)^.Right - 2;
                end;
            tpRight:
                begin
                  PRect(Message.LParam)^.Left := PRect(Message.LParam)^.Left + 2;
                  PRect(Message.LParam)^.Right := PRect(Message.LParam)^.Right + 2;
                end;

            tpTop:
                begin
                  if not MultiLine
                  then
                    begin
                      PRect(Message.LParam)^.Left := PRect(Message.LParam)^.Left - 2;
                      PRect(Message.LParam)^.Right := PRect(Message.LParam)^.Right - 2;
                    end;
                  PRect(Message.LParam)^.Top := PRect(Message.LParam)^.Top - 2;
                  PRect(Message.LParam)^.Bottom := PRect(Message.LParam)^.Bottom - 2;
                end;
            tpBottom:
                begin
                  if not MultiLine
                  then
                    begin
                      PRect(Message.LParam)^.Left := PRect(Message.LParam)^.Left - 2;
                      PRect(Message.LParam)^.Right := PRect(Message.LParam)^.Right - 2;
                    end;
                  PRect(Message.LParam)^.Top := PRect(Message.LParam)^.Top + 2;
                  PRect(Message.LParam)^.Bottom := PRect(Message.LParam)^.Bottom + 2;
                end;
          end;
      end
  else
  inherited WndProc(Message);
  if (Message.Msg = WM_SIZE) and (not MultiLine) and
     not (csDesigning in ComponentState)
  then
    begin
      CheckScroll;
    end;
end;

function TbsSkinPageControl.GetItemRect(index: integer): TRect;
var
  R: TRect;
begin
  SendMessage(Handle, TCM_GETITEMRECT, index, Integer(@R));
  Result := R;
  if (Index = 0) and not MultiLine then Result.Left := Result.Left + 1;
end;

procedure TbsSkinPageControl.SetItemSize;
begin
  SendMessage(Handle, TCM_SETITEMSIZE, 0, MakeLParam(AWidth, AHeight));
end;

procedure TbsSkinPageControl.PaintWindow(DC: HDC);
var
  SaveIndex: Integer;
begin
  if (Width <= 0) or (Height <=0) then Exit;
  GetSkinData;
  SaveIndex := SaveDC(DC);
  try
    Canvas.Handle := DC;
    if FIndex = -1
    then
      PaintDefaultWindow(Canvas)
    else
      PaintSkinWindow(Canvas);
    DrawTabs(Canvas);
    Canvas.Handle := 0;
  finally
    RestoreDC(DC, SaveIndex);
  end;
end;

procedure TbsSkinPageControl.TestActive(X, Y: Integer);
var
  i, j, k: Integer;
  R: TRect;
  BR: TRect;
begin
  if FHideTabs then Exit;

  FOldActiveTab := FActiveTab;
  FOldActiveTabIndex := FActiveTabIndex;
  FActiveTab := -1;
  FActiveTabIndex := -1;
  k := -1;
  j := -1;
  for i := 0 to PageCount - 1 do
  if Pages[i].TabVisible then
  begin
    Inc(k);
    R := GetItemRect(k);
    if PtInRect(R, Point(X, Y))
    then
      begin
        j := k;
        Break;
      end;
  end;

  FActiveTab := i;
  FActiveTabIndex := j;

  if (FOldActiveTabIndex <> FActiveTabIndex)
  then
    begin
      if (FOldActiveTabIndex <> - 1) and (FOldActiveTabIndex <> TabIndex) and
         (FOldActiveTabIndex < PageCount)
      then
        begin
          R := GetItemRect(FOldActiveTabIndex);
          TbsSkinCustomTabSheet(Pages[FOldActiveTab]).ButtonMouseIn := False;
          TbsSkinCustomTabSheet(Pages[FOldActiveTab]).ButtonMouseDown := False;
          DrawTabs(Canvas);
        end;
      if (FActiveTabIndex <> -1) and (FActiveTabIndex <> TabIndex) and
         (FActiveTabIndex < PageCount)
      then
        begin
          R := GetItemRect(FActiveTabIndex);
          DrawTabs(Canvas);
        end;
    end;

  if (FActiveTabIndex <> -1) and FShowCloseButtons
  then
    with TbsSkinCustomTabSheet(Pages[FActiveTab]) do
    begin
      R := GetItemRect(FActiveTabIndex);
      BR := ButtonRect;
      OffsetRect(BR, R.Left, R.Top);
      if PtInRect(BR, Point(X, Y)) and not ButtonMouseIn
      then
        begin
          ButtonMouseIn := True;
          DrawTabs(Canvas);
        end
      else
      if not PtInRect(BR, Point(X, Y)) and ButtonMouseIn
      then
        begin
         ButtonMouseIn := False;
         ButtonMouseDown := False;
         DrawTabs(Canvas);  
       end;
    end;
end;

procedure TbsSkinPageControl.DrawTabs;
var
  i, j: integer;
  IR: TRect;
  w, h, XCnt, YCnt, X, Y, TOff, LOff, Roff, BOff, YO: Integer;
  Rct, R, DR: TRect;
  Buffer, Buffer2: TBitMap;
  ATabIndex, SaveIndex: Integer;
begin
  if FHideTabs
  then
    begin
      Exit;
    end;
  //
  if (PageCount = 0) then Exit;
  
  if FIndex = -1
  then
    begin
      j := -1;
      for i := 0 to PageCount-1 do
      if Pages[i].TabVisible then
      begin
        inc(j);
        R := GetItemRect(j);
        DrawTab(i, R, (j = TabIndex), j = FActiveTabIndex, Cnvs);
      end;
      Exit;
    end;
  //
  GetSkinData;
  TOff := ClRect.Top;
  LOff := ClRect.Left;
  ROff := RectWidth(SkinRect) - ClRect.Right;
  BOff := RectHeight(SkinRect) - ClRect.Bottom;
  DR := Self.DisplayRect;
  R := Rect(DR.Left - LOff, DR.Top - TOff, DR.Right + ROff, DR.Bottom + BOff);
  Buffer := TBitMap.Create;
  case TabPosition of
    tpTop:
      begin
        Buffer.Width := Width;
        Buffer.Height := R.Top;
      end;
    tpBottom:
      begin
        Buffer.Width := Width;
        Buffer.Height := Height - R.Bottom;
      end;
    tpRight:
      begin
        Buffer.Width := Width - R.Right;
        Buffer.Height := Height;
      end;
    tpLeft:
      begin
        Buffer.Width := R.Left;
        Buffer.Height := Height;
      end;
  end;
  // draw tabsbg
  if IsNullRect(TabsBGRect)
  then
    begin
      TabsBGRect := ClRect;
      OffsetRect(TabsBGRect, SkinRect.Left, SkinRect.Top);
    end;
  w := RectWidth(TabsBGRect);
  h := RectHeight(TabsBGRect);
  XCnt := Buffer.Width div w;
  YCnt := Buffer.Height div h;
  if not TabsBGTransparent
  then
    begin
      Buffer2 := TBitMap.Create;
      Buffer2.Width := w;
      Buffer2.Height := h;
      Buffer2.Canvas.CopyRect(Rect(0, 0, w, h), Picture.Canvas, TabsBGRect);
      for X := 0 to XCnt do
      for Y := 0 to YCnt do
      begin
       Buffer.Canvas.Draw(X * w, Y * h, Buffer2);
      end;
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品福利一区二区三区| 欧美日韩国产高清一区二区三区 | 国产精品综合视频| 91精品国产福利在线观看 | 2022国产精品视频| 处破女av一区二区| 亚洲人午夜精品天堂一二香蕉| 一本色道久久综合亚洲91| 一区二区三区免费在线观看| 欧美日韩亚洲综合在线| 蜜桃视频一区二区三区| 国产精品丝袜黑色高跟| 91福利视频网站| 七七婷婷婷婷精品国产| 久久人人爽爽爽人久久久| 99国产精品国产精品久久| 午夜久久久影院| 久久综合久久99| 色又黄又爽网站www久久| 天堂蜜桃91精品| 国产亲近乱来精品视频| 欧美视频中文字幕| 日韩欧美123| 国产a精品视频| 一区二区三区四区乱视频| 日韩一区二区中文字幕| 成人午夜碰碰视频| 五月天国产精品| 国产精品素人视频| 欧美一区二区三区免费在线看| 国产成都精品91一区二区三| 亚洲综合免费观看高清完整版| 日韩欧美国产综合| 一本色道久久综合亚洲91| 久久成人18免费观看| 亚洲精品写真福利| 精品88久久久久88久久久| 一本一道波多野结衣一区二区 | 极品少妇一区二区三区精品视频| 国产精品久久久久婷婷| 91精品国产综合久久久久久| 北岛玲一区二区三区四区| 日本成人在线看| 国产精品久久久久一区二区三区| 日韩一区二区三区视频在线观看| 色综合久久久久久久久| 国产剧情av麻豆香蕉精品| 亚洲成av人片一区二区| 中文字幕日韩精品一区| 欧美va亚洲va| 在线成人午夜影院| 色哟哟日韩精品| 成人精品视频网站| 韩国成人福利片在线播放| 亚洲国产欧美日韩另类综合 | 亚洲电影一区二区三区| 欧美激情一区三区| 欧美tk—视频vk| 777奇米四色成人影色区| 91福利资源站| 在线视频综合导航| 91视频91自| aa级大片欧美| 99久久伊人久久99| 国产成人免费视频网站| 国产美女在线精品| 国产永久精品大片wwwapp | 日本一区二区免费在线观看视频 | 欧美日韩一区二区不卡| 在线精品视频一区二区| 色av成人天堂桃色av| 色哟哟国产精品| 色婷婷激情综合| 色综合色狠狠综合色| 97国产一区二区| 91美女蜜桃在线| 91国偷自产一区二区使用方法| 91香蕉视频黄| 欧美少妇一区二区| 欧美日韩精品免费| 91精品欧美久久久久久动漫 | 久久精品一区二区三区不卡 | 一区二区三区在线高清| 亚洲精品成人少妇| 亚洲成人在线网站| 午夜久久福利影院| 国精产品一区一区三区mba桃花 | 欧美精品一区二区三区蜜桃| 欧美mv日韩mv| 中文字幕的久久| 亚洲男人的天堂一区二区| 亚洲激情一二三区| 五月婷婷另类国产| 黑人巨大精品欧美一区| 成人精品国产福利| 在线免费观看日本一区| 7777精品伊人久久久大香线蕉超级流畅 | 亚洲综合色视频| 婷婷一区二区三区| 黑人精品欧美一区二区蜜桃| 成人app软件下载大全免费| 色一情一伦一子一伦一区| 欧美狂野另类xxxxoooo| 2023国产一二三区日本精品2022| 中文字幕一区二区三区四区| 亚洲在线一区二区三区| 欧美aaaaa成人免费观看视频| 国产精品69毛片高清亚洲| 99精品欧美一区二区三区小说| 欧美吞精做爰啪啪高潮| 精品国产露脸精彩对白 | 亚洲一二三级电影| 国产在线一区二区综合免费视频| 99久久精品免费| 91精品国产一区二区三区蜜臀| 久久午夜羞羞影院免费观看| 成人免费小视频| 麻豆91精品91久久久的内涵| 成人av电影免费观看| 欧美一级搡bbbb搡bbbb| 国产精品久久久久aaaa樱花| 日本vs亚洲vs韩国一区三区二区| 福利一区二区在线| 欧美一区二区三区四区五区| 亚洲欧美视频在线观看| 日本成人在线视频网站| 色综合久久66| 中文字幕精品一区二区三区精品 | 亚洲精品一卡二卡| 国产一区二区美女诱惑| 欧美日韩国产成人在线91| 久久精品一二三| 日本女优在线视频一区二区| 国产成人av福利| 欧美大片拔萝卜| 亚洲高清久久久| 成人动漫视频在线| 精品久久久久久综合日本欧美| 夜夜嗨av一区二区三区中文字幕 | 激情综合色综合久久| 91搞黄在线观看| 自拍偷拍国产亚洲| 国产成人精品一区二| 欧美一区二区成人| 午夜影院久久久| 欧美视频中文一区二区三区在线观看| 国产精品网曝门| 国产麻豆视频一区| 日韩一区二区三区四区五区六区| 一区二区三区在线不卡| 97超碰欧美中文字幕| 国产精品久久久久三级| 久久99深爱久久99精品| 欧美日韩国产一二三| 亚洲美女淫视频| 成人v精品蜜桃久久一区| 久久久美女毛片| 国产一区二区电影| 精品福利视频一区二区三区| 免费高清视频精品| 91精品国产91久久综合桃花| 亚洲第一福利视频在线| 在线精品视频免费观看| 亚洲自拍与偷拍| 欧美婷婷六月丁香综合色| 亚洲国产中文字幕| 欧美在线|欧美| 午夜精品福利在线| 欧美日韩国产欧美日美国产精品| 亚洲综合一区二区精品导航| 在线免费观看成人短视频| 一区av在线播放| 欧美日韩情趣电影| 秋霞午夜av一区二区三区| 日韩视频免费直播| 精品一区二区精品| 日本一区二区在线不卡| www.亚洲在线| 一区2区3区在线看| 欧美日韩在线直播| 日韩av网站在线观看| 日韩欧美国产三级| 国产精品综合av一区二区国产馆| 国产偷v国产偷v亚洲高清| 不卡一区在线观看| 一区二区三区久久| 91精品一区二区三区在线观看| 欧美bbbbb| 欧美国产日产图区| 91福利视频网站| 日本视频中文字幕一区二区三区| 精品国免费一区二区三区| 国产综合色精品一区二区三区| 国产精品激情偷乱一区二区∴| 在线中文字幕不卡| 免费高清在线视频一区·| 国产精品女同一区二区三区| 在线观看av一区| 激情亚洲综合在线| 亚洲国产成人一区二区三区|