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

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

?? bsskintabs.pas

?? 一套支持Delphi的VCL庫
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
procedure DrawTabGlyphAndText(Cnvs: TCanvas; W, H: Integer; S: String;
                              IM: TCustomImageList; IMIndex: Integer;
                              AEnabled: Boolean; TopOffset: Integer);

var
  R, TR: TRect;
  GX, GY, GW, GH, TW, TH: Integer;
begin
  R := Rect(0, 0, 0, 0);
  DrawText(Cnvs.Handle, PChar(S), Length(S), R, DT_CALCRECT);
  TW := RectWidth(R) + 2;
  TH := RectHeight(R);
  GW := IM.Width;
  GH := IM.Height;
  GX := (W) div 2 - (GW + TW + 2) div 2;
  GY := H div 2 - GH div 2 + TopOffset;
  TR.Left := GX + GW + 2;
  TR.Top := H div 2 - TH div 2 + TopOffset;
  TR.Right := TR.Left + TW;
  TR.Bottom := TR.Top + TH;
  DrawText(Cnvs.Handle, PChar(S), Length(S), TR, DT_CENTER);
  IM.Draw(Cnvs, GX, GY, IMIndex, AEnabled);
end;

constructor TbsSkinCustomTabSheet.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Align := alClient;
  ControlStyle := ControlStyle + [csAcceptsControls, csNoDesignVisible];
  Visible := False;
  FWallPaper := TBitMap.Create;
  ButtonMouseIn := False;
  ButtonMouseDown := False;
end;

procedure TbsSkinCustomTabSheet.CMSENCPaint(var Message: TMessage);
begin
  Message.Result := SE_RESULT;
end;

procedure TbsSkinCustomTabSheet.CheckControlsBackground;
var
  i: Integer;
begin
  for i := 0 to ControlCount - 1 do
  begin
    if Controls[i] is TWinControl
    then
      SendMessage(TWinControl(Controls[i]).Handle, WM_CHECKPARENTBG, 0, 0);
  end;
end;

procedure TbsSkinCustomTabSheet.SetWallPaper(Value: TBitmap);
begin
  FWallPaper.Assign(Value);
  if (csDesigning in ComponentState) then RePaint;
end;


procedure TbsSkinCustomTabSheet.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
    with Params.WindowClass do
      Style := Style and not (CS_HREDRAW or CS_VREDRAW);
end;

destructor TbsSkinCustomTabSheet.Destroy;
begin
  PageControl := nil;
  FWallPaper.Free;
  inherited Destroy;
end;

procedure TbsSkinCustomTabSheet.WMEraseBkGnd;
begin
  PaintBG(Msg.DC);
end;

procedure TbsSkinCustomTabSheet.WMSize;
var
  PC: TbsSkinPageControl;
begin
  inherited;
  RePaint;
  PC := TbsSkinPageControl(Parent);
  if (PC <> nil) and (PC.SkinData <>  nil) and
  (not PC.SkinData.Empty) and (PC.StretchEffect)
  then
    CheckControlsBackground;
end;

procedure TbsSkinCustomTabSheet.PaintBG;
var
  C: TCanvas;
  TabSheetBG, Buffer2: TBitMap;
  PC: TbsSkinPageControl;
  X, Y, XCnt, YCnt, w, h, w1, h1: Integer;
begin
  if (Width <= 0) or (Height <=0) then Exit;
  PC := TbsSkinPageControl(Parent);
  if PC = nil then Exit;
  PC.GetSkinData;
  C := TCanvas.Create;
  C.Handle := DC;

  if not FWallPaper.Empty
  then
    begin
      if (Width > 0) and (Height > 0)
      then
        begin
          XCnt := Width div FWallPaper.Width;
          YCnt := Height div FWallPaper.Height;
          for X := 0 to XCnt do
          for Y := 0 to YCnt do
          C.Draw(X * FWallPaper.Width, Y * FWallPaper.Height, FWallPaper);
        end;
      C.Free;
      Exit;
    end;

  if (PC.FSD <> nil) and (not PC.FSD.Empty) and
     (PC.FIndex <> -1) and (PC.BGPictureIndex <> -1)
  then
    begin
      TabSheetBG := TBitMap(PC.FSD.FActivePictures.Items[PC.BGPictureIndex]);

      if PC.StretchEffect and (Width > 0) and (Height > 0)
      then
        begin
          case PC.StretchType of
            bsstFull:
              begin
                C.StretchDraw(Rect(0, 0, Width, Height), TabSheetBG);
              end;
            bsstVert:
              begin
                Buffer2 := TBitMap.Create;
                Buffer2.Width := Width;
                Buffer2.Height := TabSheetBG.Height;
                Buffer2.Canvas.StretchDraw(Rect(0, 0, Buffer2.Width, Buffer2.Height), TabSheetBG);
                YCnt := Height div Buffer2.Height;
                for Y := 0 to YCnt do
                  C.Draw(0, Y * Buffer2.Height, Buffer2);
                Buffer2.Free;
              end;
           bsstHorz:
             begin
               Buffer2 := TBitMap.Create;
               Buffer2.Width := TabSheetBG.Width;
               Buffer2.Height := Height;
               Buffer2.Canvas.StretchDraw(Rect(0, 0, Buffer2.Width, Buffer2.Height), TabSheetBG);
               XCnt := Width div Buffer2.Width;
               for X := 0 to XCnt do
                 C.Draw(X * Buffer2.Width, 0, Buffer2);
               Buffer2.Free;
             end;
          end;
        end
      else
      if (Width > 0) and (Height > 0)
      then
        begin
          XCnt := Width div TabSheetBG.Width;
          YCnt := Height div TabSheetBG.Height;
          for X := 0 to XCnt do
          for Y := 0 to YCnt do
          C.Draw(X * TabSheetBG.Width, Y * TabSheetBG.Height, TabSheetBG);
        end;
      C.Free;
      Exit;
    end;
 
  w1 := Width;
  h1 := Height;

  if PC.FIndex <> -1
  then
    with PC do
    begin
      TabSheetBG := TBitMap.Create;
      TabSheetBG.Width := RectWidth(ClRect);
      TabSheetBG.Height := RectHeight(ClRect);
      TabSheetBG.Canvas.CopyRect(Rect(0, 0, TabSheetBG.Width, TabSheetBG.Height),
        PC.Picture.Canvas,
          Rect(SkinRect.Left + ClRect.Left, SkinRect.Top + ClRect.Top,
               SkinRect.Left + ClRect.Right,
               SkinRect.Top + ClRect.Bottom));

     if PC.StretchEffect and (Width > 0) and (Height > 0)
      then
        begin
          case PC.StretchType of
            bsstFull:
              begin
                C.StretchDraw(Rect(0, 0, Width, Height), TabSheetBG);
              end;
            bsstVert:
              begin
                Buffer2 := TBitMap.Create;
                Buffer2.Width := Width;
                Buffer2.Height := TabSheetBG.Height;
                Buffer2.Canvas.StretchDraw(Rect(0, 0, Buffer2.Width, Buffer2.Height), TabSheetBG);
                YCnt := Height div Buffer2.Height;
                for Y := 0 to YCnt do
                  C.Draw(0, Y * Buffer2.Height, Buffer2);
                Buffer2.Free;
              end;
           bsstHorz:
             begin
               Buffer2 := TBitMap.Create;
               Buffer2.Width := TabSheetBG.Width;
               Buffer2.Height := Height;
               Buffer2.Canvas.StretchDraw(Rect(0, 0, Buffer2.Width, Buffer2.Height), TabSheetBG);
               XCnt := Width div Buffer2.Width;
               for X := 0 to XCnt do
                 C.Draw(X * Buffer2.Width, 0, Buffer2);
               Buffer2.Free;
             end;
          end;
        end
      else
        begin
          w := RectWidth(ClRect);
          h := RectHeight(ClRect);
          XCnt := w1 div w;
          YCnt := h1 div h;
          for X := 0 to XCnt do
          for Y := 0 to YCnt do
          C.Draw(X * w, Y * h, TabSheetBG);
        end;
      TabSheetBG.Free;
    end
  else
  with C do
  begin
    Brush.Color := clbtnface;
    FillRect(Rect(0, 0, w1, h1));
  end;
  C.Free;
end;


{TTabSheetes}
constructor TbsSkinTabSheet.Create(AOwner : TComponent);
begin
  inherited Create(AOwner);
end;

destructor TbsSkinTabSheet.Destroy;
begin
  inherited Destroy;
end;

procedure TbsSkinTabSheet.Notification(AComponent: TComponent; Operation: TOperation);
begin
  inherited Notification(AComponent, Operation);
end;

{ TbsSkinPageControl }

constructor TbsSkinPageControl.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  //
  FHideTabs := False;
  FOldTabHeight := -1;
  FFreeOnClose := False;
  FIsVistaOS := IsVistaOS;
  FImages := nil;
  FTempImages := TCustomImageList.Create(self);
  FTempImages.Width := 1;
  FTempImages.Height := 1;
  inherited Images := FTempImages;
  //
  FTabsBGTransparent := False;
  Ctl3D := False;
  FIndex := -1;
  Picture := nil;
  Font.Name := 'Arial';
  Font.Style := [];
  Font.Color := clBtnText;
  Font.Height := 14;
  FSkinUpDown := nil;
  FSkinDataName := 'tab';
  FDefaultFont := TFont.Create;
  FDefaultFont.Name := 'Arial';
  FDefaultFont.Style := [];
  FDefaultFont.Color := clBtnText;
  FDefaultFont.Height := 14;
  FDefaultItemHeight := 20;
  FActiveTab := -1;
  FOldActiveTab := -1;
  FActiveTabIndex := -1;
  FOldActiveTabIndex := -1;
  FUseSkinFont := True;
  FCloseSize := CLOSE_SIZE;
end;

destructor TbsSkinPageControl.Destroy;
begin
  FTempImages.Free;
  FDefaultFont.Free;
  inherited Destroy;
end;

procedure TbsSkinPageControl.CMSENCPaint(var Message: TMessage);
begin
  Message.Result := SE_RESULT;
end;

procedure TbsSkinPageControl.HideTabs;

function CanHide: 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;

begin
  if (FOldTabHeight = -1) and CanHide
  then
    begin
      FHideTabs := True;
      FOldTabPosition := TabPosition;
      FOldMultiLine := Multiline;
      if (TabPosition = tpLeft) or (TabPosition = tpRight)
      then
        TabPosition := tpTop;
      if MultiLine = True then MultiLine := False;
      FOldTabHeight := TabHeight;
      TabHeight := 1;
      if FSkinUpDown <> nil then HideSkinUpDown;
    end;
end;

procedure TbsSkinPageControl.ShowTabs;
begin
  if FOldTabHeight <> -1
  then
    begin
      TabPosition := FOldTabPosition;
      MultiLine := FOldMultiline;
      FHideTabs := False;
      TabHeight := FOldTabHeight;
      if (TabHeight <= 0) and (FIndex <> -1)
      then
        SetItemSize(TabWidth, RectHeight(TabRect));
      FOldTabHeight := -1;
      if not MultiLine then CheckScroll;
    end;
end;

function TbsSkinPageControl.GetCloseSize;
begin
  if (FIndex <> -1) and not IsNullRect(CloseButtonRect)
  then
    Result := RectWidth(CloseButtonRect)
  else
    Result := CLOSE_SIZE;
end;

procedure TbsSkinPageControl.DoClose;
var
  I: TTabSheet;
  CanClose: Boolean;
  P: TPoint;
begin
  I := ActivePage;
  CanClose := True;
  if Assigned(FOnClose) then FOnClose(I, CanClose);
  if CanClose
  then
    begin
      I.TabVisible := False;
      if FFreeOnClose then I.Free;
      if Assigned(FOnAfterClose) then FOnAfterClose(Self);
    end;
  if CanClose = False
  then
    begin
      GetCursorPos(P);
      if Windows.WindowFromPoint(P) <> Self.Handle
      then
        begin
          TbsSkinCustomTabSheet(I).ButtonMouseIn := False;
          TbsSkinCustomTabSheet(I).ButtonMouseDown := False;
          DrawTabs(Canvas);
        end;
    end;     
end;

procedure TbsSkinPageControl.DrawCloseButton(Cnvs: TCanvas; R: TRect;
          I, W, H: Integer);
var
  Buffer: TBitMap;
  CIndex: Integer;
  BtnSkinPicture: TBitMap;
  BtnLtPoint, BtnRTPoint, BtnLBPoint, BtnRBPoint: TPoint;
  BtnCLRect: TRect;
  BSR, ABSR, DBSR, R1: TRect;
  CIX, CIY, X, Y, XO, YO: Integer;
  ButtonData: TbsDataSkinButtonControl;
  ButtonR, R2: TRect;
begin
  if FIndex = -1
  then
    begin
      X := R.Left;
      Y := R.Top + RectHeight(R) div 2 - CLOSE_SIZE div 2;
      ButtonR := Rect(X, Y, X + CLOSE_SIZE, Y + CLOSE_SIZE);
      CIX := ButtonR.Left + 2;
      CIY := ButtonR.Top + 2;
      if TbsSkinCustomTabSheet(Self.Pages[I]).ButtonMouseDown and
         TbsSkinCustomTabSheet(Self.Pages[I]).ButtonMouseIn
      then
        DrawCloseImage(Cnvs, CIX, CIY, clWhite)
      else
      if TbsSkinCustomTabSheet(Self.Pages[I]).ButtonMouseIn
      then
        begin
          DrawCloseImage(Cnvs, CIX, CIY, clWhite)
        end
      else
        begin

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区中文字幕| 欧美一区二区三区精品| 欧美夫妻性生活| 国产精品国产三级国产普通话三级 | 日韩午夜在线观看视频| 亚洲欧洲在线观看av| 国产在线精品免费av| 91精品午夜视频| 亚洲高清免费观看 | 自拍偷在线精品自拍偷无码专区| 免费不卡在线视频| 欧美日韩精品一区二区天天拍小说| 国产三级一区二区三区| 日本成人中文字幕| 欧美色综合网站| 亚洲制服丝袜av| 91丨九色porny丨蝌蚪| 欧美国产日产图区| 国产91在线看| 国产精品视频一二三区| 国产成a人无v码亚洲福利| 日韩精品专区在线| 蜜臀精品一区二区三区在线观看| 欧美精品色一区二区三区| 一区二区三区加勒比av| 99久久精品免费看国产免费软件| 国产欧美一区二区三区网站| 国产成人综合自拍| 国产欧美日产一区| 国产成人av电影| 中文字幕在线观看不卡视频| 成人黄色软件下载| 国产精品二区一区二区aⅴ污介绍| 国产精品资源站在线| 久久久久久久久97黄色工厂| 国产麻豆成人精品| 国产网站一区二区| 99久久er热在这里只有精品15| 日韩码欧中文字| 欧美色图在线观看| 欧美a级一区二区| 久久久久久久网| www.亚洲激情.com| 一区二区三区丝袜| 制服.丝袜.亚洲.中文.综合| 久久激情综合网| 国产精品狼人久久影院观看方式| 成人18视频在线播放| 亚洲一区在线视频观看| 日韩视频免费观看高清完整版| 精品一区二区在线观看| 久久网站最新地址| 一本色道亚洲精品aⅴ| 日日噜噜夜夜狠狠视频欧美人| 欧美mv日韩mv国产网站app| 国产九九视频一区二区三区| 综合色天天鬼久久鬼色| 欧美精品tushy高清| 国产不卡免费视频| 亚洲成人第一页| 久久久久久麻豆| 色狠狠桃花综合| 另类小说一区二区三区| 亚洲欧洲精品一区二区三区不卡| 欧洲中文字幕精品| 国产麻豆精品在线| 亚洲成a人v欧美综合天堂 | 91精品久久久久久久久99蜜臂| 极品少妇xxxx偷拍精品少妇| 中文字幕人成不卡一区| 91精品欧美一区二区三区综合在| 国产黄人亚洲片| 亚洲国产成人av网| 国产精品热久久久久夜色精品三区| 日本精品一区二区三区高清| 久久99精品国产.久久久久久| 亚洲欧洲精品一区二区三区不卡| 日韩三区在线观看| 色婷婷香蕉在线一区二区| 国产综合色精品一区二区三区| 一区二区高清视频在线观看| 久久色.com| 91精品国产综合久久精品图片 | 欧美日韩国产欧美日美国产精品| 国产综合色视频| 日本中文字幕一区二区有限公司| 中文字幕亚洲精品在线观看| 精品国产成人在线影院| 欧美日韩精品福利| 欧美在线制服丝袜| 91视频在线看| voyeur盗摄精品| 国产精品一区二区在线播放| 免费成人你懂的| 午夜精品一区在线观看| 一区二区三区不卡视频在线观看| 国产亚洲成年网址在线观看| 日韩欧美精品三级| 欧美一区二区三区在线看| 欧美性欧美巨大黑白大战| 91麻豆产精品久久久久久 | 国产精品国产三级国产三级人妇 | 欧美日本高清视频在线观看| 在线这里只有精品| 一本大道av一区二区在线播放| 国产 欧美在线| 国产成人午夜精品影院观看视频 | 久久久不卡网国产精品一区| 欧美成va人片在线观看| 精品国产一区a| 久久人人97超碰com| 久久综合狠狠综合久久激情| 久久一日本道色综合| 久久青草国产手机看片福利盒子| 精品理论电影在线观看 | 成人高清免费在线播放| 成人看片黄a免费看在线| 成人福利在线看| 99国产一区二区三精品乱码| 菠萝蜜视频在线观看一区| 99麻豆久久久国产精品免费优播| 成人免费视频视频| 91麻豆精品秘密| 欧美日本一区二区在线观看| 日韩精品专区在线| 国产三级精品在线| 亚洲欧洲成人自拍| 亚洲国产精品天堂| 美女视频黄频大全不卡视频在线播放| 日韩av电影免费观看高清完整版在线观看 | 麻豆91精品视频| 国产成人福利片| 在线精品视频免费播放| 51久久夜色精品国产麻豆| 精品国产1区二区| 欧美国产1区2区| 亚洲成人av电影在线| 久久机这里只有精品| 成人免费视频视频| 欧美性极品少妇| 日韩女同互慰一区二区| 国产精品国产三级国产专播品爱网| 亚洲欧洲制服丝袜| 理论电影国产精品| fc2成人免费人成在线观看播放| 欧美日韩在线精品一区二区三区激情| 日韩一区二区三区视频| 国产精品久久久久精k8| 日韩影视精彩在线| 成人av影视在线观看| 欧美日韩mp4| 国产精品麻豆欧美日韩ww| 日韩成人免费看| 99精品国产99久久久久久白柏| 欧美电影在线免费观看| 国产精品欧美一区二区三区| 日本在线不卡视频| 99久久精品国产精品久久| 日韩一区二区在线观看| 亚洲视频一区在线| 国产乱码精品1区2区3区| 在线观看国产91| 国产精品天干天干在线综合| 日本中文字幕一区二区有限公司| jizzjizzjizz欧美| 久久亚洲精华国产精华液| 亚洲超碰精品一区二区| av亚洲精华国产精华精华| 精品国产人成亚洲区| 天天综合日日夜夜精品| 色婷婷激情久久| 国产精品区一区二区三| 国产美女精品在线| 欧美一级夜夜爽| 亚洲成人免费在线| 色狠狠一区二区三区香蕉| 国产精品美女久久久久aⅴ国产馆| 蜜桃一区二区三区在线| 欧美老女人在线| 亚洲一区二区三区四区五区黄| www..com久久爱| 中文字幕第一区综合| 国产乱子伦一区二区三区国色天香| 欧美另类高清zo欧美| 一区二区三区免费在线观看| 91啪在线观看| 综合亚洲深深色噜噜狠狠网站| 国产·精品毛片| 欧美韩日一区二区三区| 国产成人丝袜美腿| 久久久久久99久久久精品网站| 日本午夜精品一区二区三区电影| 欧美视频一区二区三区四区 | 国内外成人在线| 欧美大片顶级少妇| 久久成人综合网| 精品国产百合女同互慰| 国产一本一道久久香蕉| 久久亚洲影视婷婷| 丁香六月综合激情|