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

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

?? tntmenus.pas

?? TNT Components Source
?? PAS
?? 第 1 頁 / 共 3 頁
字號:
  else
    Alignment := paLeft;
  Result := Alignments[Alignment];
end;

procedure TTntMenuItem.AdvancedDrawItem(ACanvas: TCanvas; ARect: TRect;
  State: TOwnerDrawState; TopLevel: Boolean);

  procedure DrawMenuText(BiDi: Boolean);
  var
    ImageList: TCustomImageList;
    DrawImage, DrawGlyph: Boolean;
    GlyphRect, SaveRect: TRect;
    DrawStyle: Longint;
    Selected: Boolean;
    Win98Plus: Boolean;
    Win2K: Boolean;
  begin
    ImageList := GetImageList;
    Selected := odSelected in State;
    Win98Plus := (Win32MajorVersion > 4) or
      ((Win32MajorVersion = 4) and (Win32MinorVersion > 0));
    Win2K := (Win32MajorVersion > 4) and (Win32Platform = VER_PLATFORM_WIN32_NT);
    with ACanvas do
    begin
      GlyphRect.Left := ARect.Left + 1;
      DrawImage := (ImageList <> nil) and ((ImageIndex > -1) and
        (ImageIndex < ImageList.Count) or Checked and ((not MenuItemHasBitmap(Self)) or
        Bitmap.Empty));
      if DrawImage or MenuItemHasBitmap(Self) and not Bitmap.Empty then
      begin
        DrawGlyph := True;
        if DrawImage then
          GlyphRect.Right := GlyphRect.Left + ImageList.Width
        else begin
          { Need to add BitmapWidth/Height properties for TMenuItem if we're to
            support them.  Right now let's hardcode them to 16x16. }
          GlyphRect.Right := GlyphRect.Left + 16;
        end;
        { Draw background pattern brush if selected }
        if Checked then
        begin
          Inc(GlyphRect.Right);
          if not Selected then
            Brush.Bitmap := AllocPatternBitmap(clBtnFace, clBtnHighlight);
          Inc(GlyphRect.Left);
        end;
        if Checked then
          Dec(GlyphRect.Right);
      end else begin
        if (ImageList <> nil) and (not TopLevel) then
          GlyphRect.Right := GlyphRect.Left + ImageList.Width
        else
          GlyphRect.Right := GlyphRect.Left;
        DrawGlyph := False;
      end;
      if BiDi then begin
        SaveRect := GlyphRect;
        GlyphRect.Left := ARect.Right - (SaveRect.Right - ARect.Left);
        GlyphRect.Right := ARect.Right - (SaveRect.Left - ARect.Left);
      end;
      with GlyphRect do begin
        Dec(Left);
        Inc(Right, 2);
      end;
      if Selected then begin
        if DrawGlyph then begin
          if BiDi then
            ARect.Right := GlyphRect.Left - 1
          else
            ARect.Left := GlyphRect.Right + 1;
        end;
        if not (Win98Plus and TopLevel) then
          Brush.Color := clHighlight;
      end;
      if TopLevel and Win98Plus and (not Selected)
      {$IFDEF COMPILER_7_UP}
      and (not Win32PlatformIsXP)
      {$ENDIF}
      then
        OffsetRect(ARect, 0, -1);
      if not (Selected and DrawGlyph) then begin
        if BiDi then
          ARect.Right := GlyphRect.Left - 1
        else
          ARect.Left := GlyphRect.Right + 1;
      end;
      Inc(ARect.Left, 2);
      Dec(ARect.Right, 1);
      DrawStyle := DT_EXPANDTABS or DT_SINGLELINE or GetAlignmentDrawStyle;
      if Win2K and (odNoAccel in State) then
        DrawStyle := DrawStyle or DT_HIDEPREFIX;
      { Calculate vertical layout }
      SaveRect := ARect;
      if odDefault in State then
        Font.Style := [fsBold];
      DoDrawText(ACanvas, Caption, ARect, Selected, DrawStyle or DT_CALCRECT or DT_NOCLIP);
      if BiDi then begin
        { the DT_CALCRECT does not take into account alignment }
        ARect.Left := SaveRect.Left;
        ARect.Right := SaveRect.Right;
      end;
      OffsetRect(ARect, 0, ((SaveRect.Bottom - SaveRect.Top) - (ARect.Bottom - ARect.Top)) div 2);
      if TopLevel and Selected and Win98Plus
      {$IFDEF COMPILER_7_UP}
      and (not Win32PlatformIsXP)
      {$ENDIF}
      then
        OffsetRect(ARect, 1, 0);
      DoDrawText(ACanvas, Caption, ARect, Selected, DrawStyle);
      if (ShortCut <> scNone) and not TopLevel then
      begin
        if BiDi then begin
          ARect.Left := 10;
          ARect.Right := ARect.Left + WideCanvasTextWidth(ACanvas, WideShortCutToText(ShortCut));
        end else begin
          ARect.Left := ARect.Right;
          ARect.Right := SaveRect.Right - 10;
        end;
        DoDrawText(ACanvas, WideShortCutToText(ShortCut), ARect, Selected, DT_RIGHT);
      end;
    end;
  end;

var
  ParentMenu: TMenu;
  SaveCaption: WideString;
  SaveShortCut: TShortCut;
begin
  ParentMenu := GetParentMenu;
  if (not Win32PlatformIsUnicode)
  or (Self.IsLine)
  or (     (ParentMenu <> nil) and (ParentMenu.OwnerDraw or (GetImageList <> nil))
       and (Assigned(OnAdvancedDrawItem) or Assigned(OnDrawItem))    ) then
    inherited
  else begin
    SaveCaption := Caption;
    SaveShortCut := ShortCut;
    try
      FIgnoreMenuChanged := True;
      try
        Caption := '';
        ShortCut := scNone;
      finally
        FIgnoreMenuChanged := False;
      end;
      inherited;
    finally
      FIgnoreMenuChanged := True;
      try
        Caption := SaveCaption;
        ShortCut := SaveShortcut;
      finally
        FIgnoreMenuChanged := False;
      end;
    end;
    DrawMenuText((ParentMenu <> nil) and (ParentMenu.IsRightToLeft))
  end;
end;

procedure TTntMenuItem.DoDrawText(ACanvas: TCanvas; const ACaption: WideString;
  var Rect: TRect; Selected: Boolean; Flags: Longint);
var
  Text: WideString;
  ParentMenu: TMenu;
begin
  if (not Win32PlatformIsUnicode)
  or (IsLine) then
    inherited DoDrawText(ACanvas, ACaption, Rect, Selected, Flags)
  else begin
    ParentMenu := GetParentMenu;
    if (ParentMenu <> nil) and (ParentMenu.IsRightToLeft) then
    begin
      if Flags and DT_LEFT = DT_LEFT then
        Flags := Flags and (not DT_LEFT) or DT_RIGHT
      else if Flags and DT_RIGHT = DT_RIGHT then
        Flags := Flags and (not DT_RIGHT) or DT_LEFT;
      Flags := Flags or DT_RTLREADING;
    end;
    Text := ACaption;
    if (Flags and DT_CALCRECT <> 0) and ((Text = '') or
      (Text[1] = cHotkeyPrefix) and (Text[2] = #0)) then Text := Text + ' ';
    with ACanvas do
    begin
      Brush.Style := bsClear;
      if Default then
        Font.Style := Font.Style + [fsBold];
      if not Enabled then
      begin
        if not Selected then
        begin
          OffsetRect(Rect, 1, 1);
          Font.Color := clBtnHighlight;
          Tnt_DrawTextW(Handle, PWideChar(Text), Length(Text), Rect, Flags);
          OffsetRect(Rect, -1, -1);
        end;
        if Selected and (ColorToRGB(clHighlight) = ColorToRGB(clBtnShadow)) then
          Font.Color := clBtnHighlight else
          Font.Color := clBtnShadow;
      end;
      Tnt_DrawTextW(Handle, PWideChar(Text), Length(Text), Rect, Flags);
    end;
  end;
end;

function TTntMenuItem.MeasureItemTextWidth(ACanvas: TCanvas; const Text: WideString): Integer;
var
  R: TRect;
begin
  FillChar(R, SizeOf(R), 0);
  DoDrawText(ACanvas, Text, R, False,
    GetAlignmentDrawStyle or DT_EXPANDTABS or DT_SINGLELINE or DT_NOCLIP or DT_CALCRECT);
  Result := R.Right - R.Left;
end;

procedure TTntMenuItem.MeasureItem(ACanvas: TCanvas; var Width, Height: Integer);
var
  SaveMeasureItemEvent: TMenuMeasureItemEvent;
begin
  if (not Win32PlatformIsUnicode)
  or (Self.IsLine) then
    inherited
  else begin
    SaveMeasureItemEvent := inherited OnMeasureItem;
    try
      inherited OnMeasureItem := nil;
      inherited;
      Inc(Width, MeasureItemTextWidth(ACanvas, Caption));
      Dec(Width, MeasureItemTextWidth(ACanvas, inherited Caption));
      if ShortCut <> scNone then begin
        Inc(Width, MeasureItemTextWidth(ACanvas, WideShortCutToText(ShortCut)));
        Dec(Width, MeasureItemTextWidth(ACanvas, ShortCutToText{TNT-ALLOW ShortCutToText}(ShortCut)));
      end;
    finally
      inherited OnMeasureItem := SaveMeasureItemEvent;
    end;
    if Assigned(OnMeasureItem) then OnMeasureItem(Self, ACanvas, Width, Height);
  end;
end;

function TTntMenuItem.Find(ACaption: WideString): TMenuItem{TNT-ALLOW TMenuItem};
var
  I: Integer;
begin
  Result := nil;
  ACaption := WideStripHotkey(ACaption);
  for I := 0 to Count - 1 do
    if WideSameText(ACaption, WideStripHotkey(WideGetMenuItemCaption(Items[I]))) then
    begin
      Result := Items[I];
      System.Break;
    end;
end;

function TTntMenuItem.GetActionLinkClass: TMenuActionLinkClass;
begin
  Result := TTntMenuActionLink;
end;

procedure TTntMenuItem.ActionChange(Sender: TObject; CheckDefaults: Boolean);
begin
  if (Sender is TCustomAction{TNT-ALLOW TCustomAction}) and Supports(Sender, ITntAction) then begin
    if not CheckDefaults or (Caption = '') then
      Caption := TntAction_GetCaption(TCustomAction{TNT-ALLOW TCustomAction}(Sender));
    if not CheckDefaults or (Hint = '') then
      Hint := TntAction_GetHint(TCustomAction{TNT-ALLOW TCustomAction}(Sender));
  end;
  inherited;
end;

{ TTntMainMenu }

{$IFDEF COMPILER_9_UP}
function TTntMainMenu.CreateMenuItem: TMenuItem{TNT-ALLOW TMenuItem};
begin
  Result := TTntMenuItem.Create(Self);
end;
{$ENDIF}

procedure TTntMainMenu.DoChange(Source: TMenuItem{TNT-ALLOW TMenuItem}; Rebuild: Boolean);
begin
  inherited;
  UpdateMenuItems(Items, Self);
  if (THackMenuItem(Items).FMerged <> nil) then begin
    UpdateMenuItems(THackMenuItem(Items).FMerged, Self);
  end;
end;

{ TTntPopupMenu }

constructor TTntPopupMenu.Create(AOwner: TComponent);
begin
  inherited;
  PopupList.Remove(Self);
  if TntPopupList <> nil then
    TntPopupList.Add(Self);
end;

{$IFDEF COMPILER_9_UP}
function TTntPopupMenu.CreateMenuItem: TMenuItem{TNT-ALLOW TMenuItem};
begin
  Result := TTntMenuItem.Create(Self);
end;
{$ENDIF}

destructor TTntPopupMenu.Destroy;
begin
  if TntPopupList <> nil then
    TntPopupList.Remove(Self);
  PopupList.Add(Self);
  inherited;
end;

procedure TTntPopupMenu.DoChange(Source: TMenuItem{TNT-ALLOW TMenuItem}; Rebuild: Boolean);
begin
  inherited;
  UpdateMenuItems(Items, Self);
end;

procedure TTntPopupMenu.Popup(X, Y: Integer);
begin
  Menus.PopupList := TntPopupList;
  try
    inherited;
  finally
    Menus.PopupList := TntPopupList.SavedPopupList;
  end;
end;

{ TTntPopupList }

procedure TTntPopupList.WndProc(var Message: TMessage);
var
  I, Item: Integer;
  MenuItem: TMenuItem{TNT-ALLOW TMenuItem};
  FindKind: TFindItemKind;
begin
  case Message.Msg of
    WM_ENTERMENULOOP:
      begin
        Menus.PopupList := SavedPopupList;
        for i := 0 to Count - 1 do
          FixMenuBiDiProblem(Items[i]);
      end;
    WM_MENUSELECT:
      with TWMMenuSelect(Message) do
      begin
        FindKind := fkCommand;
        if MenuFlag and MF_POPUP <> 0 then FindKind := fkHandle;
        for I := 0 to Count - 1 do
        begin
          if FindKind = fkHandle then
          begin
            if Menu <> 0 then
              Item := Integer(GetSubMenu(Menu, IDItem)) else
              Item := -1;
          end
          else
            Item := IDItem;
          MenuItem := TPopupMenu{TNT-ALLOW TPopupMenu}(Items[I]).FindItem(Item, FindKind);
          if MenuItem <> nil then
          begin
            TntApplication.Hint := WideGetLongHint(WideGetMenuItemHint(MenuItem));
            Exit;
          end;
        end;
        TntApplication.Hint := '';
      end;
  end;
  inherited;
end;

initialization
  TntPopupList := TTntPopupList.Create;
  TntPopupList.SavedPopupList := Menus.PopupList;

finalization
  FreeAndNil(TntPopupList);

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色噜噜狠狠成人网p站| av福利精品导航| 中文字幕国产一区| 欧美福利一区二区| 99精品视频在线观看| 久久av中文字幕片| 亚洲精品视频在线观看免费| 欧美v国产在线一区二区三区| 99久久免费国产| 韩国女主播成人在线| 亚洲第四色夜色| 国产精品久久久久久亚洲毛片 | 欧美经典三级视频一区二区三区| 欧美主播一区二区三区美女| 丰满少妇久久久久久久| 捆绑紧缚一区二区三区视频| 夜夜精品浪潮av一区二区三区| 久久精品人人做| 欧美一区二区三区公司| 欧美图区在线视频| 97久久超碰精品国产| 看片网站欧美日韩| 婷婷亚洲久悠悠色悠在线播放| 国产精品亲子伦对白| 精品国产乱码久久久久久1区2区| 欧美日韩国产一区二区三区地区| 91麻豆精品在线观看| 丰满白嫩尤物一区二区| 国产精品中文字幕日韩精品| 加勒比av一区二区| 久久精品国产久精国产| 天天影视网天天综合色在线播放 | 亚洲免费看黄网站| 中文字幕不卡的av| 国产婷婷色一区二区三区在线| 欧美不卡一区二区三区四区| 欧美日韩大陆一区二区| 欧美色区777第一页| 在线观看91精品国产入口| 色爱区综合激月婷婷| 一本在线高清不卡dvd| 99v久久综合狠狠综合久久| 99视频在线精品| 91丨porny丨国产入口| 97精品视频在线观看自产线路二| 99视频精品免费视频| 99久久婷婷国产综合精品电影 | 久久一夜天堂av一区二区三区| 日韩三级电影网址| 欧美一级精品在线| 精品乱人伦一区二区三区| 精品国内片67194| 久久久99精品免费观看不卡| 日本一区二区久久| 国产精品不卡在线| 亚洲欧美日韩国产综合| 亚洲综合激情另类小说区| 亚洲成va人在线观看| 日韩av在线免费观看不卡| 久久精品久久精品| 国产成都精品91一区二区三| 91在线你懂得| 在线影视一区二区三区| 欧美精品三级日韩久久| 欧美电影免费观看高清完整版在线 | 国产成人日日夜夜| 色综合久久久久综合体桃花网| 在线视频一区二区免费| 欧美一区二区视频在线观看2022| 2023国产精品自拍| 日韩一区在线看| 天堂一区二区在线免费观看| 精品一区二区三区免费毛片爱| 高清在线观看日韩| 91成人免费电影| 精品国产乱码久久久久久久| 亚洲欧洲日产国码二区| 天堂一区二区在线免费观看| 国产福利不卡视频| 日本黄色一区二区| 欧美成人免费网站| 亚洲欧美偷拍三级| 免费观看91视频大全| 成人aaaa免费全部观看| 欧美日韩一区不卡| 国产视频911| 亚洲电影在线播放| 国产夫妻精品视频| 在线不卡欧美精品一区二区三区| 久久精品一区蜜桃臀影院| 一区二区三区资源| 国产麻豆精品视频| 欧美在线观看一二区| 久久综合99re88久久爱| 亚洲国产成人av网| 高清国产午夜精品久久久久久| 欧美色网站导航| 亚洲国产精品传媒在线观看| 天堂在线一区二区| 91蝌蚪porny| 久久九九久精品国产免费直播| 亚洲高清不卡在线观看| 成人激情黄色小说| 欧美成人午夜电影| 午夜精品国产更新| 91小视频在线观看| 国产日韩视频一区二区三区| 天使萌一区二区三区免费观看| 99精品偷自拍| 国产清纯在线一区二区www| 日韩成人一区二区三区在线观看| 日韩午夜电影av| **性色生活片久久毛片| 国产精品一线二线三线| 日韩欧美一级二级| 亚洲国产成人porn| 日本韩国欧美一区二区三区| 国产日韩影视精品| 韩日精品视频一区| 日韩一级精品视频在线观看| 亚洲最大的成人av| 91免费小视频| 国产精品另类一区| 高清在线观看日韩| 久久精品视频一区二区| 国产一区二区主播在线| 日韩一二三区视频| 日本欧美加勒比视频| 欧美精品第1页| 亚洲韩国一区二区三区| 色88888久久久久久影院野外| 中文字幕免费不卡在线| 国产精品一区二区黑丝| 久久香蕉国产线看观看99| 狠狠色狠狠色综合| 精品国产乱码久久久久久影片| 日本少妇一区二区| 欧美一二三区在线| 久久精品国产99| 日韩精品一区在线观看| 精品一区二区三区蜜桃| 欧美sm极限捆绑bd| 国产乱人伦偷精品视频不卡| www亚洲一区| 国产成人免费xxxxxxxx| 国产精品亲子乱子伦xxxx裸| 99精品一区二区| 洋洋成人永久网站入口| 欧美日韩免费高清一区色橹橹 | 麻豆久久久久久久| 欧美一区二区三区四区视频| 日韩电影免费一区| 26uuu亚洲婷婷狠狠天堂| 国产经典欧美精品| 国产精品福利一区二区三区| 波波电影院一区二区三区| 亚洲欧美另类久久久精品| 在线观看日韩av先锋影音电影院| 婷婷丁香久久五月婷婷| 日韩亚洲欧美综合| 国产ts人妖一区二区| 最新久久zyz资源站| 欧美日韩一区二区三区四区五区| 日本特黄久久久高潮| 久久亚洲免费视频| 99久久精品情趣| 亚洲高清免费观看高清完整版在线观看| 91精品国产91久久综合桃花| 国产一区福利在线| 亚洲欧美日韩人成在线播放| 精品视频1区2区| 激情久久五月天| 亚洲视频一二三区| 欧美一区午夜精品| 成人理论电影网| 亚洲国产日韩精品| 久久色在线视频| 日本福利一区二区| 蜜臀av一区二区在线免费观看| 国产欧美日韩三级| 欧美色图12p| 国产精品一区二区在线观看不卡| 日韩美女视频一区二区| 91精品国产黑色紧身裤美女| 国产成人在线视频网址| 亚洲五码中文字幕| 国产欧美精品一区二区色综合 | 2021国产精品久久精品| 91在线观看美女| 久久99精品国产麻豆婷婷| 亚洲视频免费在线| 精品欧美久久久| 色吊一区二区三区| 国产福利一区在线观看| 婷婷成人综合网| 亚洲视频电影在线| 久久久不卡影院| 欧美一区二区三区视频| 91视视频在线直接观看在线看网页在线看 | 精品成人私密视频|