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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ssplitter.pas

?? AlphaControls是一個Delphi標(biāo)準(zhǔn)控件的集合
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
      end;

    end;
  end;
end;

procedure TsSplitter.MouseMove(Shift: TShiftState; X, Y: Integer);
var
  AllowChange: Boolean;
begin
  inherited MouseMove(Shift, X, Y);
  if (GetCapture = Handle) and FSizing then begin
    AllowChange := True;
    Changing(X, Y, AllowChange);
    case ResizeStyle of
      srsUpdate : begin
        MoveAndUpdate(X, Y, AllowChange);
      end;
      srsInverseLine : begin
        MoveInverseRect(X, Y, AllowChange);
      end;
    end;
  end;
end;

procedure TsSplitter.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  StopSizing(X, Y, True);
  inherited MouseUp(Button, Shift, X, Y);
  if ResizeStyle = srsUpdate then FCommonData.Invalidate;
end;

procedure TsSplitter.MoveAndUpdate(X, Y: Integer; AllowChange: Boolean);
const
  DecSize = 3;
var
  P: TPoint;
  NoDrop: Boolean;
  NewSize : integer;
  H, W : integer;
  R : TRect;
  i : integer;
begin
  CheckPosition(X, Y);
  if Parent = nil then Exit;
  R := Parent.ClientRect;
  H := R.Bottom - R.Top - Height;
  W := R.Right - R.Left - Width;
  if not AllowChange then begin
    P := ScreenToClient(FPrevOrg);
    X := P.X + FOffset.X - Width div 2;
    Y := P.Y + FOffset.Y - Height div 2
  end;
  if (ControlFirst.Align = alRight) or ((ControlSecond <> nil) and (ControlSecond.Align = alRight)) then begin
    X := -X;
    FOffset.X := -FOffset.X;
  end;
  if (ControlFirst.Align = alBottom) or ((ControlSecond <> nil) and (ControlSecond.Align = alBottom)) then begin
    Y := -Y;
    FOffset.Y := -FOffset.Y;
  end;
  Parent.DisableAlign;
  try
    if FStyle = spHorizontalFirst then begin
      NewSize := ControlFirst.Height + Y - FOffset.Y;
      if NewSize <= 0 then NewSize := 1;
      if NewSize >= H then NewSize := H - DecSize;
      ControlFirst.Height := NewSize;
    end
    else if FStyle = spHorizontalSecond then begin
      NewSize := ControlSecond.Height + Y - FOffset.Y;
      if NewSize <= 0 then NewSize := 1;
      if NewSize >= H then NewSize := H - DecSize;
      ControlSecond.Height := NewSize;
    end
    else if FStyle = spVerticalFirst then begin
      NewSize := ControlFirst.Width + X - FOffset.X;
      if NewSize <= 0 then NewSize := 1;
      if NewSize >= W then NewSize := W - DecSize;
      ControlFirst.Width := NewSize;
    end
    else if FStyle = spVerticalSecond then begin
      NewSize := ControlSecond.Width + X - FOffset.X;
      if NewSize <= 0 then NewSize := 1;
      if NewSize >= W then NewSize := W - DecSize;
      ControlSecond.Width := NewSize;
    end;
  finally
    Parent.EnableAlign;
    for i := 0 to Parent.ControlCount - 1 do begin
      Parent.Controls[i].Repaint;    
    end;
//    if Assigned(ControlFirst) then ControlFirst.Repaint;
//    if Assigned(ControlSecond) then ControlSecond.Repaint;
  end;

  P := Point(X, Y);
  NoDrop := not AllowChange or (((X <> P.X) and (FStyle in [spVerticalFirst,
              spVerticalSecond])) or ((Y <> P.Y) and (FStyle in [spHorizontalFirst,
                spHorizontalSecond])));
  if NoDrop <> FNoDropCursor then begin
    FNoDropCursor := NoDrop;
    if NoDrop
      then SetCursor(Screen.Cursors[crNoDrop])
      else SetCursor(Screen.Cursors[Cursor]);
  end;
  ShowInverseRect(X - FOffset.X + Width div 2, Y - FOffset.Y + Height div 2, imMove);
end;

procedure TsSplitter.MoveInverseRect(X, Y: Integer; AllowChange: Boolean);
var
  P: TPoint;
  NoDrop: Boolean;
begin
  if not AllowChange then begin
    SetCursor(Screen.Cursors[crNoDrop]);
    Exit;
  end;
  P := Point(X, Y);
  CheckPosition(X, Y);
  NoDrop := not AllowChange or (((X <> P.X) and (FStyle in [spVerticalFirst,
              spVerticalSecond])) or ((Y <> P.Y) and (FStyle in [spHorizontalFirst,
                spHorizontalSecond])));
  if NoDrop <> FNoDropCursor then begin
    FNoDropCursor := NoDrop;
    if NoDrop
      then SetCursor(Screen.Cursors[crNoDrop])
      else SetCursor(Screen.Cursors[Cursor]);
  end;
  ShowInverseRect(X - FOffset.X + Width div 2, Y - FOffset.Y + Height div 2, imMove);
end;

procedure TsSplitter.Notification(AComponent: TComponent; AOperation: TOperation);
begin
  inherited Notification(AComponent, AOperation);
  if AOperation = opRemove then begin
    if AComponent = ControlFirst then ControlFirst := nil
    else if AComponent = ControlSecond then ControlSecond := nil;
  end;
end;

procedure TsSplitter.Paint;
var
  R: TRect;
  CI : TCacheInfo;
  State : integer;
begin
  R := ClientRect;
  Canvas.Brush.Color := Color;
  FCommonData.FCacheBmp.Width := Width;
  FCommonData.FCacheBmp.Height := Height;
  CI := GetParentCache(FCOmmonData);
  State := integer(FCommonData.ControlIsActive);
  if FSizing and (ResizeStyle = srsUpdate) then State := 2; 
  sGraphUtils.PaintItem(FCommonData.SkinIndex, FCommonData.SkinSection, CI, True, State, R, Point(Left, Top), FCommonData.FCacheBmp);

  BitBlt(Canvas.Handle, 0, 0, Width, Height, FCommonData.FCacheBmp.Canvas.Handle, 0,0, SRCCOPY);
end;

procedure TsSplitter.ReadOffset(Reader: TReader);
var
  I: Integer;
begin
  I := Reader.ReadInteger;
  FTopLeftLimit := I;
  FBottomRightLimit := I;
end;

procedure TsSplitter.SetAlign(Value: TAlign);
begin
  if not (Align in [alTop, alBottom, alLeft, alRight]) then begin
    inherited Align := Value;
    if not (csReading in ComponentState) then begin
      if Value in [alTop, alBottom] then Height := DefWidth
      else if Value in [alLeft, alRight] then Width := DefWidth;
    end;
  end
  else inherited Align := Value;
  if (ControlFirst = nil) and (ControlSecond = nil) then
    ControlFirst := FindControl;
end;

procedure TsSplitter.SetControlFirst(Value: TControl);
begin
  if Value <> FControlFirst then begin
    if (Value = Self) or (Value is TForm) then FControlFirst := nil
    else begin
      FControlFirst := Value;
      if Value <> nil then Value.FreeNotification(Self);
    end;
    UpdateState;
  end;
end;

procedure TsSplitter.SetControlSecond(Value: TControl);
begin
  if Value <> FControlSecond then begin
    if (Value = Self) or (Value is TForm) then FControlSecond := nil
    else begin
      FControlSecond := Value;
      if Value <> nil then Value.FreeNotification(Self);
    end;
    UpdateState;
  end;
end;

procedure TsSplitter.ShowInverseRect(X, Y: Integer; Mode: TInverseMode);
var
  P: TPoint;
  MaxRect: TRect;
  Horiz: Boolean;
begin
  P := Point(0, 0);
  if FStyle in [spHorizontalFirst, spHorizontalSecond] then begin
    P.Y := Y;
    Horiz := True;
  end
  else begin
    P.X := X;
    Horiz := False;
  end;
  MaxRect := Parent.ClientRect;
  P := ClientToScreen(P);
  with P, MaxRect do begin
    TopLeft := Parent.ClientToScreen(TopLeft);
    BottomRight := Parent.ClientToScreen(BottomRight);
    if X < Left then X := Left;
    if X > Right then X := Right;
    if Y < Top then Y := Top;
    if Y > Bottom then Y := Bottom;
  end;
  if (Mode = imMove) then if ((P.X = FPrevOrg.X) and not Horiz) or ((P.Y = FPrevOrg.Y) and Horiz) then Exit;
  if Mode in [imClear, imMove] then DrawSizingLine(FPrevOrg);
  if Mode in [imNew, imMove] then begin
    DrawSizingLine(P);
    FPrevOrg := P;
  end;
end;

procedure TsSplitter.StartInverseRect;
var
  R: TRect;
  W: Integer;
begin
  if Parent = nil then Exit;
  Application.ProcessMessages;
  R := Parent.ClientRect;
  FLimitRect.TopLeft := CToC(Self, Parent, Point(R.Left + FTopLeftLimit, R.Top + FTopLeftLimit));
  FLimitRect.BottomRight := CToC(Self, Parent, Point(R.Right - R.Left - FBottomRightLimit, R.Bottom - R.Top - FBottomRightLimit));
  FNoDropCursor := False;
  FForm := ValidParentForm(Self);
  FForm.Canvas.Handle := GetDCEx(FForm.Handle, 0, DCX_CACHE or DCX_CLIPSIBLINGS or DCX_LOCKWINDOWUPDATE);

  with FForm.Canvas do begin
    Pen.Color := clWhite;
    if FStyle in [spHorizontalFirst, spHorizontalSecond]
      then W := Height
      else W := Width;
    if W > InverseThickness + 1
      then W := W - InverseThickness
      else W := InverseThickness;
    Pen.Width := W;
    Pen.Mode := pmXOR;
  end;
  ShowInverseRect(Width div 2, Height div 2, imNew);
end;

procedure TsSplitter.StartMoving;
var
  R: TRect;
//  W: Integer;
begin
  if Parent = nil then Exit;
  R := Parent.ClientRect;
  FLimitRect.TopLeft := CToC(Self, Parent, Point(R.Left + FTopLeftLimit, R.Top + FTopLeftLimit));
  FLimitRect.BottomRight := CToC(Self, Parent, Point(R.Right - R.Left - FBottomRightLimit, R.Bottom - R.Top - FBottomRightLimit));
  FNoDropCursor := False;
end;

procedure TsSplitter.StopSizing(X, Y: Integer; Apply: Boolean);
var
  AllowChange: Boolean;
begin
  if FSizing then begin
    ReleaseCapture;
    AllowChange := Apply;
    if Apply then Changing(X, Y, AllowChange);
    EndInverseRect(X, Y, AllowChange, Apply);
    FSizing := False;
    Application.ShowHint := FAppShowHint;
    if Assigned(FActiveControl) then begin
      TWC(FActiveControl).OnKeyDown := FOldKeyDown;
      FActiveControl := nil;
    end;
    if Apply then Changed;
  end;
end;

procedure TsSplitter.UpdateState;
begin
  inherited Cursor := Cursor;
end;

procedure TsSplitter.WndProc(var Message: TMessage);
begin
  if not ControlIsReady(Self) then inherited
  else begin
    if Assigned(FCommonData) and FCommonData.Skinned then
      case Message.Msg of
        WM_NCPAINT : begin
          Message.Result := 1;
        end;
        WM_SIZE, WM_MOVE : begin
          FCommonData.BGChanged := True;
          FCommonData.RegionChanged := True;
          Repaint;
        end;
        WM_ERASEBKGND : begin
          Message.Result := 1;
        end;
        SM_GETCACHE : begin
          GlobalCacheInfo.Bmp := FCommonData.FCacheBmp;
          GlobalCacheInfo.X := 0;
          GlobalCacheInfo.Y := 0;
          GlobalCacheInfo.Ready := True;
          Message.Result := 1;
        end;
        SM_REMOVESKIN : if not (csDestroying in ComponentState) then begin
          FCommonData.BorderIndex := -1;
          FCommonData.SkinIndex := -1;
          FCommonData.RegionChanged := True;
          Refresh;
        end;
      end;
    if Message.Result <> 1 then begin
      if Assigned(FCommonData) then begin
        FCommonData.WndProc(Message);
        if FCommonData.Skinned then begin
          case Message.Msg of
            CM_VISIBLECHANGED, WM_SIZE, CM_ENABLEDCHANGED, WM_MOUSEWHEEL, WM_MOVE : if FCommonData.Skinned then begin
              FCommonData.BGChanged := True;
              Repaint;
              SendMessage(Handle, WM_NCPAINT, 0, 0);
            end;
            WM_SETFOCUS, CM_ENTER, WM_KILLFOCUS, CM_EXIT: if FCommonData.Skinned then begin
              FCommonData.FFocused := (Message.Msg = CM_ENTER) or (Message.Msg = WM_SETFOCUS);
              FCommonData.FMouseAbove := False;
              FCommonData.BGChanged := True;
              Repaint;
              SendMessage(Handle, WM_NCPAINT, 0, 0);
            end;
            WM_VSCROLL : begin
              exit;
            end;
            CM_MOUSELEAVE, CM_MOUSEENTER : begin
              if not FCommonData.FFocused and not(csDesigning in ComponentState) then begin
                FCommonData.FMouseAbove := Message.Msg = CM_MOUSEENTER;
                FCommonData.BGChanged := True;
                SendMessage(Handle, WM_NCPAINT, 0, 0);
                Repaint;
              end;
            end;
          end;
        end;
      end;
   end;
    if Message.Result <> 1 then begin
      inherited;
    end;
  end;
end;

procedure TsSplitter.WriteOffset(Writer: TWriter);
begin
  Writer.WriteInteger(FTopLeftLimit);
end;

end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区三区四区| 日韩免费观看高清完整版在线观看| 天堂久久一区二区三区| 99久久精品国产观看| 亚洲品质自拍视频网站| 色婷婷亚洲精品| 亚洲国产成人tv| 日韩区在线观看| 福利一区二区在线观看| 国产精品国产自产拍高清av| 91麻豆高清视频| 亚洲成人动漫在线观看| 日韩欧美高清dvd碟片| 国产激情精品久久久第一区二区| 色欧美88888久久久久久影院| 91精品午夜视频| 国精产品一区一区三区mba视频| 色综合久久88色综合天天| 亚洲成人1区2区| 91精品一区二区三区久久久久久| 亚洲人成在线观看一区二区| 在线不卡一区二区| 国产电影一区二区三区| 一区二区三区在线观看视频| 91精品欧美福利在线观看| 国产一区二区不卡| 亚洲精品中文在线| 欧美xxxx在线观看| 粉嫩av亚洲一区二区图片| 亚洲成人在线网站| 国产农村妇女毛片精品久久麻豆| 国产一区二区三区观看| 亚洲另类中文字| 日韩一级黄色大片| 成人免费精品视频| 欧美aaa在线| 亚洲精品国产一区二区精华液 | 国产日韩精品一区二区浪潮av | 日韩午夜精品视频| 成人理论电影网| 天堂一区二区在线| 亚洲欧美日韩成人高清在线一区| 国产91精品一区二区麻豆亚洲| 久久一留热品黄| 欧美三级韩国三级日本一级| 成人精品在线视频观看| 久久精品国产99久久6| 亚洲激情在线播放| 国产午夜亚洲精品理论片色戒| 秋霞av亚洲一区二区三| 亚洲美女一区二区三区| 欧美成人猛片aaaaaaa| 在线免费精品视频| 成人av手机在线观看| 久久99国产乱子伦精品免费| 亚洲午夜久久久久中文字幕久| 欧美日韩不卡在线| 日本福利一区二区| 国产精品亚洲午夜一区二区三区 | 色欧美乱欧美15图片| 国产一区二区中文字幕| 亚洲午夜电影在线| 亚洲精品精品亚洲| 久久99精品久久久| 日韩电影在线观看一区| 亚洲一区二区三区免费视频| 亚洲视频图片小说| 亚洲日穴在线视频| 亚洲色图欧洲色图婷婷| 国产精品伦理在线| 日韩一区中文字幕| 中文字幕一区二区三区在线播放| 在线免费观看视频一区| 一本久久a久久精品亚洲| av在线综合网| 99国产欧美另类久久久精品| 国产成人精品亚洲午夜麻豆| 国产传媒欧美日韩成人| 国产大陆亚洲精品国产| 国产成人久久精品77777最新版本| 亚洲欧洲www| 国产精品久久久久久久久免费樱桃 | 欧美色中文字幕| 欧美在线观看一区二区| 欧美午夜精品理论片a级按摩| 精品一区二区三区免费毛片爱 | 日韩一级免费一区| 欧美成人精品1314www| 精品国产污网站| 日本一区二区综合亚洲| 亚洲色图制服诱惑 | 中文字幕免费观看一区| 久久免费美女视频| 国产精品少妇自拍| 亚洲最新视频在线观看| 午夜欧美一区二区三区在线播放| 欧美激情一区不卡| 亚洲狼人国产精品| 午夜精品久久久久久久久| 日本欧美加勒比视频| 蜜臀久久99精品久久久久宅男| 亚洲精品高清视频在线观看| 亚洲一区中文在线| 麻豆精品一二三| 国产99久久精品| 91网站最新地址| 欧美日韩一区在线观看| 欧美大片一区二区| 国产精品久久久久aaaa| 亚洲一区中文日韩| 国内精品伊人久久久久影院对白| 日韩电影免费在线看| 国产suv精品一区二区6| 不卡av在线免费观看| 欧美日韩综合色| 国产无人区一区二区三区| 亚洲黄色尤物视频| 精一区二区三区| 99久久久久免费精品国产| 欧美日韩国产精品自在自线| 久久亚洲综合色一区二区三区| 欧美一区二区三区免费在线看| 色综合久久88色综合天天免费| 懂色av噜噜一区二区三区av| 在线看一区二区| 久久综合成人精品亚洲另类欧美 | 国产日韩视频一区二区三区| 一区二区三区在线视频观看| 免费精品视频在线| 色偷偷一区二区三区| 精品日韩欧美在线| 亚洲国产精品精华液网站| 成人在线一区二区三区| 91精品国产综合久久久久久久| 91精品国产欧美一区二区成人| 欧美日韩国产综合久久| 中文字幕在线一区二区三区| 美女一区二区视频| 欧美日韩视频不卡| 亚洲欧美另类图片小说| 黑人巨大精品欧美一区| 制服丝袜亚洲精品中文字幕| 亚洲欧洲日韩av| 久久精品国产亚洲高清剧情介绍| 激情综合色播五月| 欧美精品日韩一区| 一区二区三区精品| 99久久精品免费看| 国产日韩av一区二区| 另类小说图片综合网| 欧美色图一区二区三区| 中文字幕中文字幕一区二区| 国产91精品免费| 久久久久国产精品麻豆ai换脸| 中文字幕乱码久久午夜不卡| 精品一区二区成人精品| 欧美日韩国产美| 亚洲成人激情av| 91福利资源站| 亚洲另类在线一区| 色综合久久久网| 一区二区三区在线播放| 色综合网站在线| 亚洲图片激情小说| 91免费视频观看| 成人欧美一区二区三区1314| 99久久久国产精品| 一区二区三区不卡视频| 色婷婷av一区二区三区大白胸 | 一区二区三区四区国产精品| 成人动漫一区二区在线| 久久久99精品免费观看| 国产福利不卡视频| 欧美国产成人精品| av电影在线观看一区| 亚洲人成人一区二区在线观看| 日韩av电影一区| 日韩限制级电影在线观看| 日韩av电影免费观看高清完整版 | 色一情一伦一子一伦一区| 亚洲男帅同性gay1069| 色999日韩国产欧美一区二区| 宅男噜噜噜66一区二区66| 视频在线观看91| 日韩一级大片在线观看| 美女被吸乳得到大胸91| 久久香蕉国产线看观看99| 成人免费毛片嘿嘿连载视频| 亚洲欧洲精品天堂一级| 91久久精品日日躁夜夜躁欧美| 2023国产精品| 国产成人av电影| 亚洲人妖av一区二区| 欧美日韩色一区| 麻豆精品国产91久久久久久| 久久久蜜桃精品| 色婷婷综合激情| 免费久久99精品国产| 国产精品久久久久国产精品日日| 国产专区综合网|