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

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

?? boxprocs.pas

?? RX Library contains a large number of components, objects and routines for Borland Delphi with full
?? PAS
字號(hào):
{*******************************************************}
{                                                       }
{         Delphi VCL Extensions (RX)                    }
{                                                       }
{         Copyright (c) 1995 AO ROSNO                   }
{         Copyright (c) 1997, 1998 Master-Bank          }
{                                                       }
{*******************************************************}

unit BoxProcs;

{$I RX.INC}

interface

uses Classes, Controls, StdCtrls, RxCtrls;

procedure BoxMoveSelectedItems(SrcList, DstList: TWinControl);
procedure BoxMoveAllItems(SrcList, DstList: TWinControl);
procedure BoxDragOver(List: TWinControl; Source: TObject;
  X, Y: Integer; State: TDragState; var Accept: Boolean; Sorted: Boolean);
procedure BoxMoveFocusedItem(List: TWinControl; DstIndex: Integer);

procedure BoxMoveSelected(List: TWinControl; Items: TStrings);
procedure BoxSetItem(List: TWinControl; Index: Integer);
function BoxGetFirstSelection(List: TWinControl): Integer;
function BoxCanDropItem(List: TWinControl; X, Y: Integer;
  var DragIndex: Integer): Boolean;

implementation

uses {$IFDEF WIN32} Windows {$ELSE} WinTypes, WinProcs {$ENDIF}, Graphics;

function BoxItems(List: TWinControl): TStrings;
begin
  if List is TCustomListBox then
    Result := TCustomListBox(List).Items
  else if List is TRxCustomListBox then
    Result := TRxCustomListBox(List).Items
  else Result := nil;
end;

function BoxGetSelected(List: TWinControl; Index: Integer): Boolean;
begin
  if List is TCustomListBox then
    Result := TCustomListBox(List).Selected[Index]
  else if List is TRxCustomListBox then
    Result := TRxCustomListBox(List).Selected[Index]
  else Result := False;
end;

procedure BoxSetSelected(List: TWinControl; Index: Integer; Value: Boolean);
begin
  if List is TCustomListBox then
    TCustomListBox(List).Selected[Index] := Value
  else if List is TRxCustomListBox then
    TRxCustomListBox(List).Selected[Index] := Value;
end;

function BoxGetItemIndex(List: TWinControl): Integer;
begin
  if List is TCustomListBox then
    Result := TCustomListBox(List).ItemIndex
  else if List is TRxCustomListBox then
    Result := TRxCustomListBox(List).ItemIndex
  else Result := LB_ERR;
end;

{$IFNDEF WIN32}
function BoxGetCanvas(List: TWinControl): TCanvas;
begin
  if List is TCustomListBox then
    Result := TCustomListBox(List).Canvas
  else if List is TRxCustomListBox then
    Result := TRxCustomListBox(List).Canvas
  else Result := nil;
end;
{$ENDIF}

procedure BoxSetItemIndex(List: TWinControl; Index: Integer);
begin
  if List is TCustomListBox then
    TCustomListBox(List).ItemIndex := Index
  else if List is TRxCustomListBox then
    TRxCustomListBox(List).ItemIndex := Index;
end;

function BoxMultiSelect(List: TWinControl): Boolean;
begin
  if List is TCustomListBox then
    Result := TListBox(List).MultiSelect
  else if List is TRxCustomListBox then
    Result := TRxCheckListBox(List).MultiSelect
  else Result := False;
end;

function BoxSelCount(List: TWinControl): Integer;
begin
  if List is TCustomListBox then
    Result := TCustomListBox(List).SelCount
  else if List is TRxCustomListBox then
    Result := TRxCustomListBox(List).SelCount
  else Result := 0;
end;

function BoxItemAtPos(List: TWinControl; Pos: TPoint;
  Existing: Boolean): Integer;
begin
  if List is TCustomListBox then
    Result := TCustomListBox(List).ItemAtPos(Pos, Existing)
  else if List is TRxCustomListBox then
    Result := TRxCustomListBox(List).ItemAtPos(Pos, Existing)
  else Result := LB_ERR;
end;

function BoxItemRect(List: TWinControl; Index: Integer): TRect;
begin
  if List is TCustomListBox then
    Result := TCustomListBox(List).ItemRect(Index)
  else if List is TRxCustomListBox then
    Result := TRxCustomListBox(List).ItemRect(Index)
  else FillChar(Result, SizeOf(Result), 0);
end;

procedure BoxMoveSelected(List: TWinControl; Items: TStrings);
var
  I: Integer;
begin
  if BoxItems(List) = nil then Exit;
  I := 0;
  while I < BoxItems(List).Count do begin
    if BoxGetSelected(List, I) then begin
      Items.AddObject(BoxItems(List).Strings[I], BoxItems(List).Objects[I]);
      BoxItems(List).Delete(I);
    end
    else Inc(I);
  end;
end;

function BoxGetFirstSelection(List: TWinControl): Integer;
var
  I: Integer;
begin
  Result := LB_ERR;
  if BoxItems(List) = nil then Exit;
  for I := 0 to BoxItems(List).Count - 1 do begin
    if BoxGetSelected(List, I) then begin
      Result := I;
      Exit;
    end;
  end;
  Result := LB_ERR;
end;

procedure BoxSetItem(List: TWinControl; Index: Integer);
var
  MaxIndex: Integer;
begin
  if BoxItems(List) = nil then Exit;
  with List do begin
    if CanFocus then SetFocus;
    MaxIndex := BoxItems(List).Count - 1;
    if Index = LB_ERR then Index := 0
    else if Index > MaxIndex then Index := MaxIndex;
    if Index >= 0 then begin
      if BoxMultiSelect(List) then BoxSetSelected(List, Index, True)
      else BoxSetItemIndex(List, Index);
    end;
  end;
end;

procedure BoxMoveSelectedItems(SrcList, DstList: TWinControl);
var
  Index, I, NewIndex: Integer;
begin
  Index := BoxGetFirstSelection(SrcList);
  if Index <> LB_ERR then begin
    BoxItems(SrcList).BeginUpdate;
    BoxItems(DstList).BeginUpdate;
    try
      I := 0;
      while I < BoxItems(SrcList).Count do begin
        if BoxGetSelected(SrcList, I) then begin
          NewIndex := BoxItems(DstList).AddObject(BoxItems(SrcList).Strings[I],
            BoxItems(SrcList).Objects[I]);
          if (SrcList is TRxCheckListBox) and (DstList is TRxCheckListBox) then
          begin
            TRxCheckListBox(DstList).State[NewIndex] :=
              TRxCheckListBox(SrcList).State[I];
          end;
          BoxItems(SrcList).Delete(I);
        end
        else Inc(I);
      end;
      BoxSetItem(SrcList, Index);
    finally
      BoxItems(SrcList).EndUpdate;
      BoxItems(DstList).EndUpdate;
    end;
  end;
end;

procedure BoxMoveAllItems(SrcList, DstList: TWinControl);
var
  I, NewIndex: Integer;
begin
  for I := 0 to BoxItems(SrcList).Count - 1 do begin
    NewIndex := BoxItems(DstList).AddObject(BoxItems(SrcList)[I],
      BoxItems(SrcList).Objects[I]);
    if (SrcList is TRxCheckListBox) and (DstList is TRxCheckListBox) then
    begin
      TRxCheckListBox(DstList).State[NewIndex] :=
        TRxCheckListBox(SrcList).State[I];
    end;
  end;
  BoxItems(SrcList).Clear;
  BoxSetItem(SrcList, 0);
end;

function BoxCanDropItem(List: TWinControl; X, Y: Integer;
  var DragIndex: Integer): Boolean;
var
  Focused: Integer;
begin
  Result := False;
  if (BoxSelCount(List) = 1) or (not BoxMultiSelect(List)) then begin
    Focused := BoxGetItemIndex(List);
    if Focused <> LB_ERR then begin
      DragIndex := BoxItemAtPos(List, Point(X, Y), True);
      if (DragIndex >= 0) and (DragIndex <> Focused) then begin
        Result := True;
      end;
    end;
  end;
end;

procedure BoxDragOver(List: TWinControl; Source: TObject;
  X, Y: Integer; State: TDragState; var Accept: Boolean; Sorted: Boolean);
var
  DragIndex: Integer;
  R: TRect;

  procedure DrawItemFocusRect(Idx: Integer);
{$IFDEF WIN32}
  var
    P: TPoint;
    DC: HDC;
{$ENDIF}
  begin
    R := BoxItemRect(List, Idx);
{$IFDEF WIN32}
    P := List.ClientToScreen(R.TopLeft);
    R := Bounds(P.X, P.Y, R.Right - R.Left, R.Bottom - R.Top);
    DC := GetDC(0);
    DrawFocusRect(DC, R);
    ReleaseDC(0, DC);
{$ELSE}
    BoxGetCanvas(List).DrawFocusRect(R);
{$ENDIF}
  end;

begin
  if Source <> List then
    Accept := (Source is TWinControl) or (Source is TRxCustomListBox)
  else begin
    if Sorted then Accept := False
    else begin
      Accept := BoxCanDropItem(List, X, Y, DragIndex);
      if ((List.Tag - 1) = DragIndex) and (DragIndex >= 0) then begin
        if State = dsDragLeave then begin
          DrawItemFocusRect(List.Tag - 1);
          List.Tag := 0;
        end;
      end
      else begin
        if List.Tag > 0 then DrawItemFocusRect(List.Tag - 1);
        if DragIndex >= 0 then DrawItemFocusRect(DragIndex);
        List.Tag := DragIndex + 1;
      end;
    end;
  end;
end;

procedure BoxMoveFocusedItem(List: TWinControl; DstIndex: Integer);
begin
  if (DstIndex >= 0) and (DstIndex < BoxItems(List).Count) then
    if (DstIndex <> BoxGetItemIndex(List)) then begin
      BoxItems(List).Move(BoxGetItemIndex(List), DstIndex);
      BoxSetItem(List, DstIndex);
    end;
end;

end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品三区四区| 欧美另类一区二区三区| 国产91在线观看| 国产91在线观看丝袜| 欧美经典三级视频一区二区三区| 国产精品国产自产拍高清av王其| 亚州成人在线电影| 成人免费三级在线| 欧美一级精品在线| 一区二区三区电影在线播| 另类小说视频一区二区| 91视频在线看| 久久精品视频一区二区三区| 亚洲国产一区二区视频| 国产激情一区二区三区| 91麻豆精品国产自产在线| 亚洲激情男女视频| 成人免费毛片嘿嘿连载视频| 亚洲六月丁香色婷婷综合久久 | 美女视频免费一区| 在线免费观看日本欧美| 日本一区二区在线不卡| 紧缚捆绑精品一区二区| 91.麻豆视频| 国产精品白丝av| 精品国一区二区三区| 亚洲国产sm捆绑调教视频 | 国产成人精品亚洲777人妖 | 国产xxx精品视频大全| 亚洲精品中文在线| 日韩精品一区二区在线观看| 日本在线不卡视频一二三区| 欧美日韩三级在线| 亚洲电影第三页| 国产午夜亚洲精品午夜鲁丝片| 色乱码一区二区三区88| 亚洲色图色小说| 成人av在线一区二区| 欧美极品少妇xxxxⅹ高跟鞋| 欧美亚洲动漫另类| 日本视频一区二区三区| 亚洲丝袜美腿综合| 日韩美女主播在线视频一区二区三区| 菠萝蜜视频在线观看一区| 蜜臀精品久久久久久蜜臀| 亚洲欧美日韩中文字幕一区二区三区| 97久久久精品综合88久久| 国产精品动漫网站| 日韩欧美成人午夜| 欧美日韩国产区一| 男人的天堂久久精品| 欧美成人猛片aaaaaaa| 国产精品羞羞答答xxdd| 五月天一区二区三区| 日韩一级片在线观看| 色哟哟精品一区| 日本中文字幕一区| 亚洲高清视频中文字幕| 国产精品国产三级国产专播品爱网| 日韩小视频在线观看专区| 欧美日韩亚洲综合在线| 97aⅴ精品视频一二三区| 国产黑丝在线一区二区三区| 美女视频一区二区三区| 午夜免费欧美电影| 亚洲午夜精品17c| 一区二区三区在线视频观看58| 亚洲国产精品成人综合色在线婷婷 | 天堂在线亚洲视频| 亚洲午夜久久久久久久久电影网| 亚洲视频在线一区| 国产精品国产自产拍高清av | 色综合天天综合网天天看片| 亚洲一区二区三区美女| 日韩一二在线观看| 91精品国产91热久久久做人人| 极品少妇一区二区三区精品视频| 日韩国产成人精品| 日韩影院精彩在线| 青青草原综合久久大伊人精品优势| 婷婷六月综合网| 日韩av电影一区| 免费欧美日韩国产三级电影| 蜜桃在线一区二区三区| 麻豆精品视频在线观看| 久久爱www久久做| 激情欧美一区二区| 亚洲国产日韩一区二区| 午夜激情一区二区| 日韩成人av影视| 国产在线观看一区二区| 一区二区三区四区在线| 亚洲影院理伦片| 日韩影视精彩在线| 精品在线一区二区| 国产成人av影院| 国产**成人网毛片九色 | 日精品一区二区| 久久精品国产一区二区三区免费看| 久久99精品国产91久久来源| 国产98色在线|日韩| 99久久精品国产毛片| 欧美天堂一区二区三区| 日韩一区二区在线观看视频播放| 日韩欧美一区二区免费| 国产视频一区在线观看| 亚洲免费视频成人| 午夜成人免费电影| 国产精品一区二区免费不卡 | 成人av电影在线观看| 在线看日韩精品电影| 精品国产成人在线影院| 最近中文字幕一区二区三区| 视频一区欧美日韩| 国产成人亚洲精品狼色在线| 欧美在线影院一区二区| 欧美mv日韩mv国产网站| 亚洲欧美日韩小说| 激情六月婷婷综合| 91久久精品一区二区三区| 日韩免费观看2025年上映的电影| 国产精品久久久一本精品| 亚洲成人你懂的| 国产91丝袜在线观看| 91精品久久久久久久99蜜桃| 中文字幕乱码亚洲精品一区 | 亚洲午夜精品久久久久久久久| 国产在线精品一区二区不卡了| 色综合色综合色综合色综合色综合| 欧美日本一区二区三区| 中文字幕第一页久久| 丝袜诱惑制服诱惑色一区在线观看| 成人午夜精品一区二区三区| 欧美日韩aaaaa| 国产精品成人免费精品自在线观看| 日韩黄色免费网站| 91香蕉视频污在线| 久久久久久日产精品| 中文一区在线播放| 麻豆精品视频在线观看免费| 欧美天堂亚洲电影院在线播放| 国产精品午夜在线观看| 亚洲欧美在线视频观看| 亚洲一区二区三区四区五区中文| 国产一区亚洲一区| 欧美一区二区三区在| 亚洲一区免费视频| av日韩在线网站| 欧美日韩一级片网站| 中文字幕在线免费不卡| 国产精品综合久久| 精品少妇一区二区三区视频免付费 | 国产乱码精品一区二区三区忘忧草| 欧美日韩精品欧美日韩精品一| 亚洲激情中文1区| jizzjizzjizz欧美| 中文字幕久久午夜不卡| 久久精品av麻豆的观看方式| 欧美一区二区视频免费观看| 偷拍亚洲欧洲综合| 欧美中文字幕不卡| 亚洲成人综合网站| 欧美亚洲一区三区| 亚洲一区二区偷拍精品| 欧美日韩一区二区电影| 亚洲电影第三页| 欧美日韩另类国产亚洲欧美一级| 亚洲精品国产品国语在线app| 成人免费毛片片v| 亚洲欧美怡红院| 97久久人人超碰| 亚洲伊人伊色伊影伊综合网| 欧美亚日韩国产aⅴ精品中极品| 夜夜夜精品看看| 欧美日韩亚洲综合一区 | 精品国产乱码91久久久久久网站| 美女在线观看视频一区二区| 日韩三级伦理片妻子的秘密按摩| 美女脱光内衣内裤视频久久网站| 日韩美女视频一区二区在线观看| 久久成人久久爱| 国产日产亚洲精品系列| thepron国产精品| 亚洲精品伦理在线| 欧美日产国产精品| 麻豆91在线播放| 欧美韩日一区二区三区| 91在线国产观看| 亚洲gay无套男同| 26uuu久久天堂性欧美| 视频一区二区欧美| 日韩一区二区免费在线观看| 国产一区二区成人久久免费影院| 久久久久9999亚洲精品| 91一区二区三区在线播放| 亚洲国产一区二区三区| 精品国产一区二区亚洲人成毛片 | 91一区在线观看| 日韩中文字幕1| 欧美国产激情一区二区三区蜜月|