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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? tb2item.pas

?? Delphi的skin.v3.84皮膚美化包 可以使delphi的界面很美觀
?? PAS
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
end;

function TTBCustomItem.GetItem(Index: Integer): TTBCustomItem;
begin
  if (Index < 0) or (Index >= FItemCount) then IndexError;
  Result := FItems[Index].Item;
end;

procedure TTBCustomItem.Add(AItem: TTBCustomItem);
begin
  Insert(Count, AItem);
end;

procedure TTBCustomItem.InternalNotify(Ancestor: TTBCustomItem;
  NestingLevel: Integer; Action: TTBItemChangedAction; Index: Integer;
  Item: TTBCustomItem);
{ Note: Ancestor is Item's parent, or in the case of a group item relayed
  notification, it can also be a group item which *links* to Item's parent
  (i.e. ItemContainingItems(Ancestor) = Item.Parent). }

  procedure RelayToParentOf(const AItem: TTBCustomItem);
  begin
    if NestingLevel > MaxGroupLevel then
      Exit;
    if (tbisEmbeddedGroup in AItem.ItemStyle) and Assigned(AItem.Parent) then begin
      if Ancestor = Self then
        AItem.Parent.InternalNotify(AItem, NestingLevel + 1, Action, Index, Item)
      else
        { Don't alter Ancestor on subsequent relays; only on the first. }
        AItem.Parent.InternalNotify(Ancestor, NestingLevel + 1, Action, Index, Item);
    end;
  end;

var
  I: Integer;
  P: TTBCustomItem;
  SaveProc: TTBItemChangedProc;
begin
  { If Self is a group item, relay the notification to the parent }
  RelayToParentOf(Self);
  { If any group items are linked to Self, relay the notification to
    those items' parents }
  if Assigned(FLinkParents) then
    for I := 0 to FLinkParents.Count-1 do begin
      P := FLinkParents[I];
      if P <> Parent then
        RelayToParentOf(P);
    end;
  if Assigned(FNotifyList) then begin
    I := 0;
    while I < FNotifyList.Count do begin
      with PItemChangedNotificationData(FNotifyList[I])^ do begin
        SaveProc := Proc;
        Proc(Ancestor, Ancestor <> Self, Action, Index, Item);
      end;
      { Is I now out of bounds? }
      if I >= FNotifyList.Count then
        Break;
      { Only proceed to the next index if the list didn't change }
      if MethodsEqual(TMethod(PItemChangedNotificationData(FNotifyList[I])^.Proc),
         TMethod(SaveProc)) then
        Inc(I);
    end;
  end;
end;

procedure TTBCustomItem.Notify(Action: TTBItemChangedAction; Index: Integer;
  Item: TTBCustomItem);
begin
  InternalNotify(Self, 0, Action, Index, Item);
end;

procedure TTBCustomItem.ViewBeginUpdate;
begin
  Notify(tbicSubitemsBeginUpdate, -1, nil);
end;

procedure TTBCustomItem.ViewEndUpdate;
begin
  Notify(tbicSubitemsEndUpdate, -1, nil);
end;

procedure TTBCustomItem.Insert(NewIndex: Integer; AItem: TTBCustomItem);
begin
  if Assigned(AItem.FParent) then
    raise ETBItemError.Create(STBToolbarItemReinserted);
  if (NewIndex < 0) or (NewIndex > FItemCount) then IndexError;
  InsertIntoItemArray(FItems, FItemCount, NewIndex, AItem);
  AItem.FParent := Self;
  ViewBeginUpdate;
  try
    Notify(tbicInserted, NewIndex, AItem);
    AItem.RefreshOptions;
  finally
    ViewEndUpdate;
  end;
end;

procedure TTBCustomItem.Delete(Index: Integer);
begin
  if (Index < 0) or (Index >= FItemCount) then IndexError;
  Notify(tbicDeleting, Index, FItems[Index].Item);
  FItems[Index].Item.FParent := nil;
  DeleteFromItemArray(FItems, FItemCount, Index);
end;

function TTBCustomItem.IndexOf(AItem: TTBCustomItem): Integer;
var
  I: Integer;
begin
  for I := 0 to FItemCount-1 do
    if FItems[I].Item = AItem then begin
      Result := I;
      Exit;
    end;
  Result := -1;
end;

procedure TTBCustomItem.Remove(Item: TTBCustomItem);
var
  I: Integer;
begin
  I := IndexOf(Item);
  //if I = -1 then raise ETBItemError.Create(STBToolbarItemNotFound);
  if I <> -1 then
    Delete(I);
end;

procedure TTBCustomItem.Clear;
var
  I: Integer;
begin
  for I := Count-1 downto 0 do
    Items[I].Free;
end;

procedure TTBCustomItem.Move(CurIndex, NewIndex: Integer);
var
  Item: TTBCustomItem;
begin
  if CurIndex <> NewIndex then begin
    if (NewIndex < 0) or (NewIndex >= FItemCount) then IndexError;
    Item := Items[CurIndex];
    ViewBeginUpdate;
    try
      Delete(CurIndex);
      Insert(NewIndex, Item);
    finally
      ViewEndUpdate;
    end;
  end;
end;

function TTBCustomItem.ContainsItem(AItem: TTBCustomItem): Boolean;
begin
  while Assigned(AItem) and (AItem <> Self) do
    AItem := AItem.Parent;
  Result := Assigned(AItem);
end;

procedure TTBCustomItem.RegisterNotification(ANotify: TTBItemChangedProc);
var
  I: Integer;
  Data: PItemChangedNotificationData;
begin
  if FNotifyList = nil then FNotifyList := TList.Create;
  for I := 0 to FNotifyList.Count-1 do
    with PItemChangedNotificationData(FNotifyList[I])^ do
      if MethodsEqual(TMethod(ANotify), TMethod(Proc)) then begin
        Inc(RefCount);
        Exit;
      end;
  FNotifyList.Expand;
  New(Data);
  Data.Proc := ANotify;
  Data.RefCount := 1;
  FNotifyList.Add(Data);
end;

procedure TTBCustomItem.UnregisterNotification(ANotify: TTBItemChangedProc);
var
  I: Integer;
  Data: PItemChangedNotificationData;
begin
  if Assigned(FNotifyList) then
    for I := 0 to FNotifyList.Count-1 do begin
      Data := FNotifyList[I];
      if MethodsEqual(TMethod(Data.Proc), TMethod(ANotify)) then begin
        Dec(Data.RefCount);
        if Data.RefCount = 0 then begin
          FNotifyList.Delete(I);
          Dispose(Data);
          if FNotifyList.Count = 0 then begin
            FNotifyList.Free;
            FNotifyList := nil;
          end;
        end;
        Break;
      end;
    end;
end;

function TTBCustomItem.GetPopupWindowClass: TTBPopupWindowClass;
begin
  Result := TTBPopupWindow;
end;

procedure TTBCustomItem.DoPopup(Sender: TTBCustomItem; FromLink: Boolean);
begin
  if Assigned(FOnPopup) then
    FOnPopup(Sender, FromLink);
  if not(tbisCombo in ItemStyle) then
    Click;
end;

var
  PlayedSound: Boolean = False;

function TTBCustomItem.CreatePopup(const ParentView: TTBView;
  const ParentViewer: TTBItemViewer; const PositionAsSubmenu, SelectFirstItem,
  Customizing: Boolean; const APopupPoint: TPoint;
  const Alignment: TTBPopupAlignment): TTBPopupWindow;

  function CountObscured(X, Y, W, H: Integer): Integer;
  var
    I: Integer;
    P: TPoint;
    V: TTBItemViewer;
  begin
    Result := 0;
    if ParentView = nil then
      Exit;
    P := ParentView.FWindow.ClientToScreen(Point(0, 0));
    Dec(X, P.X);
    Dec(Y, P.Y);
    Inc(W, X);
    Inc(H, Y);
    for I := 0 to ParentView.FViewerCount-1 do begin
      V := ParentView.FViewers[I];
      if V.Show and (V.BoundsRect.Left >= X) and (V.BoundsRect.Right <= W) and
         (V.BoundsRect.Top >= Y) and (V.BoundsRect.Bottom <= H) then
        Inc(Result);
    end;
  end;

var
  EventItem, ParentItem: TTBCustomItem;
  Opposite: Boolean;
  ChevronParentView: TTBView;
  X, X2, Y, Y2, W, H: Integer;
  P: TPoint;
  RepeatCalcX: Boolean;
  ParentItemRect: TRect;
  MonitorRect: TRect;
  AnimDir: TTBAnimationDirection;
begin
  EventItem := ItemContainingItems(Self);
  if EventItem <> Self then
    EventItem.DoPopup(Self, True);
  DoPopup(Self, False);

  ChevronParentView := GetChevronParentView;
  if ChevronParentView = nil then
    ParentItem := Self
  else
    ParentItem := ChevronParentView.FParentItem;

  Opposite := Assigned(ParentView) and (vsOppositePopup in ParentView.FState);
  Result := GetPopupWindowClass.CreatePopupWindow(nil, ParentView, ParentItem,
    Customizing);
  try
    if Assigned(ChevronParentView) then begin
      ChevronParentView.FreeNotification(Result.View);
      Result.View.FChevronParentView := ChevronParentView;
      Result.View.FIsToolbar := True;
      Result.View.Style := Result.View.Style +
        (ChevronParentView.Style * [vsAlwaysShowHints]);
      Result.Color := clBtnFace;
    end;

    { Calculate ParentItemRect, and MonitorRect (the rectangle of the monitor
      that the popup window will be confined to) }
    if Assigned(ParentView) then begin
      ParentView.ValidatePositions;
      ParentItemRect := ParentViewer.BoundsRect;
      P := ParentView.FWindow.ClientToScreen(Point(0, 0));
      OffsetRect(ParentItemRect, P.X, P.Y);
      if not IsRectEmpty(ParentView.FMonitorRect) then
        MonitorRect := ParentView.FMonitorRect
      else
        MonitorRect := GetRectOfMonitorContainingRect(ParentItemRect, False);
    end
    else begin
      ParentItemRect.TopLeft := APopupPoint;
      ParentItemRect.BottomRight := APopupPoint;
      MonitorRect := GetRectOfMonitorContainingPoint(APopupPoint, False);
    end;
    Result.View.FMonitorRect := MonitorRect;

    { Initialize item positions and size of the popup window }
    if ChevronParentView = nil then
      Result.View.FMaxHeight := (MonitorRect.Bottom - MonitorRect.Top) -
        (PopupMenuWindowNCSize * 2)
    else
      Result.View.WrapOffset := (MonitorRect.Right - MonitorRect.Left) -
        (PopupMenuWindowNCSize * 2);
    if SelectFirstItem then
      Result.View.Selected := Result.View.FirstSelectable;
    Result.View.UpdatePositions;
    W := Result.Width;
    H := Result.Height;

    { Calculate initial X,Y position of the popup window }
    if Assigned(ParentView) then begin
      if not PositionAsSubmenu then begin
        if ChevronParentView = nil then begin
          if (ParentView = nil) or (ParentView.FOrientation <> tbvoVertical) then begin
            if GetSystemMetrics(SM_MENUDROPALIGNMENT) = 0 then
              X := ParentItemRect.Left
            else
              X := ParentItemRect.Right - W;
            Y := ParentItemRect.Bottom;
          end
          else begin
            X := ParentItemRect.Left - W;
            Y := ParentItemRect.Top;
          end;
        end
        else begin
          if ChevronParentView.FOrientation <> tbvoVertical then begin
            X := ParentItemRect.Right - W;
            Y := ParentItemRect.Bottom;
          end
          else begin
            X := ParentItemRect.Left - W;
            Y := ParentItemRect.Top;
          end;
        end;
      end
      else begin
        X := ParentItemRect.Right - PopupMenuWindowNCSize;
        Y := ParentItemRect.Top - PopupMenuWindowNCSize;
      end;
    end
    else begin
      X := APopupPoint.X;
      Y := APopupPoint.Y;
      case Alignment of
        tbpaRight: Dec(X, W);
        tbpaCenter: Dec(X, W div 2);
      end;
    end;

    { Adjust the Y position of the popup window }
    { If the window is going off the bottom of the monitor, try placing it
      above the parent item }
    if (Y + H > MonitorRect.Bottom) and
       ((ParentView = nil) or (ParentView.FOrientation <> tbvoVertical)) then begin
      if not PositionAsSubmenu then
        Y2 := ParentItemRect.Top
      else
        Y2 := ParentItemRect.Bottom + PopupMenuWindowNCSize;
      Dec(Y2, H);
      { Only place it above the parent item if it isn't going to go off the
        top of the monitor }
      if Y2 >= MonitorRect.

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品美女一区二区三区| 亚洲人成电影网站色mp4| 国产成人精品免费视频网站| 亚洲人成伊人成综合网小说| 91精品国产乱码久久蜜臀| 成人黄色一级视频| 久久激情五月激情| 亚洲国产一区二区在线播放| 欧美国产一区在线| 日韩欧美国产三级| 欧美日韩国产大片| 91美女福利视频| 国产白丝网站精品污在线入口| 奇米影视一区二区三区小说| 一区二区三区精品在线观看| 中文字幕成人网| 精品国产乱码久久久久久老虎| 欧美久久久久久久久久| 色婷婷综合在线| 成人教育av在线| 国产91色综合久久免费分享| 久久av资源网| 免费成人av资源网| 日本不卡一二三区黄网| 天天av天天翘天天综合网色鬼国产| 亚洲欧美偷拍另类a∨色屁股| 国产亚洲成年网址在线观看| 2023国产精华国产精品| 欧美刺激脚交jootjob| 制服丝袜成人动漫| 欧美色综合久久| 欧美在线|欧美| 欧洲色大大久久| 在线观看国产精品网站| 色欧美乱欧美15图片| 91麻豆123| 91在线视频播放| 99re成人在线| 91在线观看成人| 色欧美片视频在线观看| 色婷婷久久久综合中文字幕| 在线观看视频一区| 欧美日韩精品系列| 6080日韩午夜伦伦午夜伦| 欧美精选在线播放| 日韩视频一区二区| 日韩精品一区二区三区中文不卡 | 成人午夜激情影院| 国产成人午夜精品5599 | 国产真实乱子伦精品视频| 精油按摩中文字幕久久| 国产一区二区三区在线观看免费| 久久se精品一区精品二区| 国产精品系列在线观看| 懂色av中文字幕一区二区三区| 成av人片一区二区| 色88888久久久久久影院按摩 | 日本精品免费观看高清观看| 欧美日韩亚州综合| 欧美一级久久久久久久大片| 精品国产免费人成在线观看| 久久精品这里都是精品| 中文字幕中文字幕一区二区| 一区二区三区精密机械公司| 天天av天天翘天天综合网| 精品在线观看免费| www.亚洲精品| 7777精品伊人久久久大香线蕉超级流畅 | 成人永久免费视频| 91免费国产在线| 在线成人av网站| 国产亚洲精品bt天堂精选| 亚洲精品免费视频| 蜜桃视频一区二区三区在线观看| 粉嫩av亚洲一区二区图片| 在线观看三级视频欧美| 久久综合九色综合97婷婷女人| 国产精品久久久久久福利一牛影视 | 亚洲欧美一区二区三区极速播放| 亚洲午夜在线视频| 精品一区二区三区视频| 99r国产精品| 91精品国产91热久久久做人人| 欧美国产精品一区二区三区| 亚洲综合在线五月| 国产最新精品免费| 欧美在线999| 久久亚洲精精品中文字幕早川悠里| ㊣最新国产の精品bt伙计久久| 日韩在线播放一区二区| 成人白浆超碰人人人人| 日韩美女视频一区二区在线观看| 国产精品久久久久久妇女6080| 美女一区二区久久| 色综合久久久久久久久| 久久婷婷国产综合精品青草| 亚洲最大成人综合| 不卡电影免费在线播放一区| 欧美一级淫片007| 一区二区三区精品视频| 成人午夜在线播放| 精品国精品国产| 亚洲一区二区黄色| 99综合电影在线视频| 精品国产髙清在线看国产毛片| 亚洲狠狠爱一区二区三区| 波多野洁衣一区| 2022国产精品视频| 美女高潮久久久| 欧美日韩精品一区二区天天拍小说| 综合久久久久久久| 国产成人精品www牛牛影视| 日韩一级片网站| 午夜精品久久久久久久久久久 | av午夜一区麻豆| 精品国产乱码久久久久久蜜臀| 天天av天天翘天天综合网 | 国产成人精品aa毛片| 日韩精品一区二区三区在线| 日韩国产在线观看一区| 91福利小视频| 亚洲激情成人在线| 91亚洲男人天堂| 亚洲欧洲性图库| 成人av在线播放网站| 日本一区二区三区久久久久久久久不| 日本不卡高清视频| 7777精品伊人久久久大香线蕉经典版下载 | 成人午夜电影网站| 久久久国产一区二区三区四区小说 | 日韩一区国产二区欧美三区| 亚洲成av人影院| 欧美主播一区二区三区| 亚洲人成网站影音先锋播放| 99免费精品在线观看| 国产精品国产成人国产三级| 99精品视频一区| 亚洲精品日韩一| 欧美日本在线播放| 奇米777欧美一区二区| 日韩无一区二区| 久久爱另类一区二区小说| 337p粉嫩大胆色噜噜噜噜亚洲| 奇米精品一区二区三区在线观看一| 日韩一区二区不卡| 国产一区二区三区视频在线播放| 久久久国产精品不卡| 国产东北露脸精品视频| 国产精品久久久久aaaa| 99精品在线免费| 亚洲成人动漫精品| 日韩欧美亚洲一区二区| 狠狠久久亚洲欧美| 中文字幕日韩精品一区| 在线观看日韩毛片| 麻豆91精品91久久久的内涵| 26uuu精品一区二区| 风间由美一区二区三区在线观看 | 国产日韩精品一区二区三区在线| 国产精品99久| 亚洲精品菠萝久久久久久久| 欧美日韩国产a| 国产美女精品一区二区三区| 最新成人av在线| 欧美三级韩国三级日本一级| 久久成人综合网| 亚洲欧洲99久久| 欧美美女一区二区在线观看| 精品一区二区三区在线观看国产| 中文字幕欧美日本乱码一线二线| 一本色道a无线码一区v| 奇米影视在线99精品| 国产精品女同一区二区三区| 91一区二区三区在线播放| 麻豆国产精品视频| 国产精品麻豆欧美日韩ww| 欧美日韩中文一区| 国产成人一区在线| 午夜精品久久久久久久| 亚洲国产岛国毛片在线| 欧美高清你懂得| 97久久精品人人做人人爽50路| 同产精品九九九| 中文字幕中文字幕一区二区| 日韩午夜电影在线观看| 色综合色综合色综合| 精品一区二区免费| 一区二区三区波多野结衣在线观看| 欧美精品一区二区久久婷婷| 欧美专区日韩专区| 国产99久久久精品| 免费欧美日韩国产三级电影| 自拍偷拍欧美激情| 久久久久久久久久美女| 欧美日韩日日夜夜| 99久久精品国产导航| 国产精品资源在线观看| 免费人成精品欧美精品| 亚洲精品日日夜夜| 国产精品剧情在线亚洲|