⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dxbaraccessibility.pas

📁 胜天进销存源码,国产优秀的进销存
💻 PAS
📖 第 1 页 / 共 4 页
字号:
end;

function TdxDockControlAccessibilityHelper.GetScreenBounds(
  AChildID: TcxAccessibleSimpleChildElementID): TRect;
begin
  if Visible then
    GetWindowRect(GetOwnerObjectWindow, Result)
  else
    Result := cxEmptyRect;
end;

function TdxDockControlAccessibilityHelper.GetState(
  AChildID: TcxAccessibleSimpleChildElementID): Integer;
var
  AHandle: HWND;
begin
  Result := cxSTATE_SYSTEM_NORMAL;
  AHandle := GetOwnerObjectWindow;
  if (AHandle = 0) or not IsWindowVisible(AHandle) then
    Result := Result or cxSTATE_SYSTEM_INVISIBLE;
end;

function TdxDockControlAccessibilityHelper.GetDockControl: TdxDockControl;
begin
  Result := TdxDockControl(FOwnerObject);
end;

{ TCustomdxBarControlAccessibilityHelper }

// IdxBarAccessibilityHelper
function TCustomdxBarControlAccessibilityHelper.CanNavigateToChildren(AKey: Word): Boolean;
var
  ABarControlInstance: TCustomdxBarControlAccess;
begin
  ABarControlInstance := TCustomdxBarControlAccess(BarControlInstance);
  Result := not (ABarControlInstance.SelectedControl is TdxBarWinControl and
    TdxBarWinControl(ABarControlInstance.SelectedControl).Focused);
end;

function TCustomdxBarControlAccessibilityHelper.GetChild(
  AIndex: Integer): TcxAccessibilityHelper;
begin
  Result := BarControlInstance.ViewInfo.ItemControlViewInfos[AIndex].Control.IAccessibilityHelper.GetHelper;
end;

function TCustomdxBarControlAccessibilityHelper.GetChildCount: Integer;
begin
  Result := BarControlInstance.ViewInfo.ItemControlCount;
end;

function TCustomdxBarControlAccessibilityHelper.GetChildIndex(
  AChild: TcxAccessibilityHelper): Integer;
begin
  if AChild is TdxBarItemControlAccessibilityHelper then
    Result := BarControlInstance.ViewInfo.GetItemControlIndex(TdxBarItemControlAccessibilityHelper(AChild).ItemControl)
  else
    Result := -1;
end;

function TCustomdxBarControlAccessibilityHelper.GetOwnerObjectWindow: HWND;
begin
  if BarControlInstance.HandleAllocated then
    Result := BarControlInstance.Handle
  else
    Result := 0;
end;

function TCustomdxBarControlAccessibilityHelper.GetScreenBounds(
  AChildID: TcxAccessibleSimpleChildElementID): TRect;
begin
  if Visible then
    GetWindowRect(GetOwnerObjectWindow, Result)
  else
    Result := cxEmptyRect;
end;

function TCustomdxBarControlAccessibilityHelper.GetState(
  AChildID: TcxAccessibleSimpleChildElementID): Integer;
var
  AHandle: HWND;
begin
  Result := cxSTATE_SYSTEM_NORMAL;
  AHandle := GetOwnerObjectWindow;
  if (AHandle = 0) or not IsWindowVisible(AHandle) then
    Result := Result or cxSTATE_SYSTEM_INVISIBLE;
end;

function TCustomdxBarControlAccessibilityHelper.Expand: TCustomdxBarControlAccessibilityHelper;
begin
  raise Exception.Create('');
end;

procedure TCustomdxBarControlAccessibilityHelper.GetItemControlKeyTipPosition(
  AItemControl: TdxBarItemControl; out ABasePoint: TPoint;
  out AHorzAlign: TAlignment; out AVertAlign: TcxAlignmentVert);
begin
  ABasePoint := cxRectCenter(GetItemControlScreenBounds(AItemControl));
  AHorzAlign := taCenter;
  AVertAlign := vaCenter;
end;

function TCustomdxBarControlAccessibilityHelper.GetItemControlScreenBounds(
  AItemControl: TdxBarItemControl): TRect;
begin
  Result := TdxBarItemControlAccessibilityHelper(
    AItemControl.IAccessibilityHelper.GetHelper).GetScreenBounds(cxAccessibleObjectSelfID);
end;

function TCustomdxBarControlAccessibilityHelper.GetNextAccessibleObject(
  AItemControl: TdxBarItemControl;
  ADirection: TcxAccessibilityNavigationDirection): IdxBarAccessibilityHelper;
var
  AObjects: TList;
begin
  AObjects := TList.Create;
  try
    GetChildrenForNavigation(AItemControl.IAccessibilityHelper.GetBarHelper,
      Self, GetItemControlScreenBounds(AItemControl), ADirection, True, AObjects);
    Result := dxBar.GetNextAccessibleObject(
      AItemControl.IAccessibilityHelper.GetBarHelper, AObjects, ADirection, False);
  finally
    AObjects.Free;
  end;
end;

function TCustomdxBarControlAccessibilityHelper.IsCollapsed: Boolean;
begin
  Result := False;
end;

procedure TCustomdxBarControlAccessibilityHelper.UnselectSelectedItemControl;
begin
  if TdxBarManagerAccess(BarControlInstance.BarManager).FocusedBarControl = BarControlInstance then
    BarControlInstance.BarLostFocus
  else
    TCustomdxBarControlAccess(BarControlInstance).SetKeySelectedItem(nil);
end;

{ TdxBarControlAccessibilityHelper }

// IdxBarAccessibilityHelper
function TdxBarControlAccessibilityHelper.GetBarManager: TdxBarManager;
begin
  Result := Bar.BarManager;
end;

function TdxBarControlAccessibilityHelper.GetDefaultAccessibleObject: IdxBarAccessibilityHelper;
begin
  Result := Self;
end;

function TdxBarControlAccessibilityHelper.HandleNavigationKey(var AKey: Word): Boolean;
var
  ATempKey: Word;
begin
  Result := inherited HandleNavigationKey(AKey);
  if Result then
    Exit;

  ATempKey := AKey;
  if BarControl.IsRealVertical then
  begin
    case ATempKey of
      VK_LEFT:
        ATempKey := VK_UP;
      VK_RIGHT:
        ATempKey := VK_DOWN;
      VK_UP:
        ATempKey := VK_LEFT;
      VK_DOWN:
        ATempKey := VK_RIGHT;
    end;
  end;
  Result := TdxBarControlAccess(BarControl).SelectedItemWantsKey(ATempKey);
end;

procedure TdxBarControlAccessibilityHelper.Select(ASetFocus: Boolean);
begin
  BarControl.BarGetFocus(nil);
end;

procedure TdxBarControlAccessibilityHelper.Unselect(
  ANextSelectedObject: IdxBarAccessibilityHelper);
begin
  inherited Unselect(ANextSelectedObject);
  BarControl.HideAll;
end;

function TdxBarControlAccessibilityHelper.GetChild(
  AIndex: Integer): TcxAccessibilityHelper;
begin
  if AIndex = BarControl.ViewInfo.ItemControlCount then
    Result := BarControl.Bar.CaptionButtons.IAccessibilityHelper.GetHelper
  else
    Result := inherited GetChild(AIndex);
end;

function TdxBarControlAccessibilityHelper.GetChildCount: Integer;
begin
  Result := inherited GetChildCount + 1;
end;

function TdxBarControlAccessibilityHelper.GetChildIndex(
  AChild: TcxAccessibilityHelper): Integer;
begin
  if AChild = BarControl.Bar.CaptionButtons.IAccessibilityHelper.GetHelper then
    Result := inherited GetChildCount
  else
    Result := inherited GetChildIndex(AChild);
end;

function TdxBarControlAccessibilityHelper.GetParent: TcxAccessibilityHelper;
begin
  if BarControl.DockControl <> nil then
    Result := BarControl.DockControl.IAccessibilityHelper.GetHelper
  else
    Result := inherited GetParent;
end;

//function TdxBarControlAccessibilityHelper.ChildIsSimpleElement(
//  AIndex: Integer): Boolean;
//begin
//  Result := False;
//end;
//
//function TdxBarControlAccessibilityHelper.GetChildIndex(
//  AChild: TcxAccessibilityHelper): Integer;
//begin
//  Result := BarControl.ViewInfo.GetItemControlIndex(
//    TdxBarItemControlAccessibilityHelper(AChild).ItemControl);
//end;
//
//function TdxBarControlAccessibilityHelper.GetHitTest(AScreenX, AScreenY: Integer;
//  out AChildIndex: Integer): TcxAccessibleObjectHitTest;
//var
//  AItemControl: TdxBarItemControl;
//begin
//  AItemControl := BarControl.ItemAtPos(BarControl.ScreenToClient(Point(AScreenX, AScreenY)));
//  if AItemControl <> nil then
//  begin
//    AChildIndex := BarControl.ViewInfo.GetItemControlIndex(AItemControl);
//    Result := aohtChild;
//  end
//  else
//    Result := aohtSelf;
//end;
//
//function TdxBarControlAccessibilityHelper.GetName(
//  AChildID: TcxAccessibleSimpleChildElementID): string;
//begin
//  Result := BarControl.Bar.Caption;
//end;
//
//function TdxBarControlAccessibilityHelper.GetSupportedProperties(
//  AChildID: TcxAccessibleSimpleChildElementID): TcxAccessibleObjectProperties;
//begin
//  Result := [aopLocation];
//end;
//
//function TdxBarControlAccessibilityHelper.NavigateToChild(
//  ACurrentChildIndex: Integer; ADirection: TcxAccessibilityNavigationDirection): Integer;
//begin
//  Result := ACurrentChildIndex;
//  case ADirection of
//    andLeft:
//      if ACurrentChildIndex > 0 then
//        Dec(Result);
//    andRight:
//      if ACurrentChildIndex + 1 < GetChildCount then
//        Inc(Result);
//  end;
//end;

function TdxBarControlAccessibilityHelper.GetBarControlInstance: TCustomdxBarControl;
begin
  Result := Bar.Control;
end;

procedure TdxBarControlAccessibilityHelper.GetCaptionButtonKeyTipPosition(
  ACaptionButton: TdxBarCaptionButton; out ABasePointY: Integer;
  out AVertAlign: TcxAlignmentVert);
begin
  raise Exception.Create('');
end;

function TdxBarControlAccessibilityHelper.GetNextAccessibleObject(
  AItemControl: TdxBarItemControl;
  ADirection: TcxAccessibilityNavigationDirection): IdxBarAccessibilityHelper;
var
  AItemLink: TdxBarItemLink;
  ARelativeDirection: TcxAccessibilityNavigationDirection;
begin
  ARelativeDirection := ADirection;
  if BarControl.IsRealVertical then
    case ADirection of
      andLeft:
        ARelativeDirection := andUp;
      andRight:
        ARelativeDirection := andDown;
      andUp:
        ARelativeDirection := andLeft;
      andDown:
        ARelativeDirection := andRight;
    end;

  if ARelativeDirection in [andUp, andDown] then
    Result := inherited GetNextAccessibleObject(AItemControl, ADirection)
  else
  begin
    if ARelativeDirection = andLeft then
      AItemLink := TdxBarItemLinksAccess(BarControl.ItemLinks).Prev(AItemControl.ItemLink)
    else
      AItemLink := TdxBarItemLinksAccess(BarControl.ItemLinks).Next(AItemControl.ItemLink);
    if (AItemLink <> nil) and (AItemLink.Control <> nil) then
      Result := AItemLink.Control.IAccessibilityHelper
    else
      Result := nil;
  end;
end;

function TdxBarControlAccessibilityHelper.GetBar: TdxBar;
begin
  Result := BarControl.Bar;//TdxBar(FOwnerObject);
end;

function TdxBarControlAccessibilityHelper.GetBarControl: TdxBarControl;
begin
  Result := TdxBarControl(FOwnerObject);
end;

{ TdxBarControlMarkAccessibilityHelper }

procedure TdxBarControlMarkAccessibilityHelper.CloseUpHandler(
  AClosedByEscape: Boolean);
begin
  if AClosedByEscape and BarNavigationController.NavigationMode then
    BarControl.MarkIAccessibilityHelper.Select(False);
end;

// IdxBarAccessibilityHelper
function TdxBarControlMarkAccessibilityHelper.GetBarManager: TdxBarManager;
begin
  Result := BarControl.BarManager;
end;

function TdxBarControlMarkAccessibilityHelper.HandleNavigationKey(var AKey: Word): Boolean;
begin
  Result := inherited HandleNavigationKey(AKey);
  if not Result then
  begin
    Result := AKey in [VK_RETURN, VK_SPACE];
    if Result then
      DropDown;
  end;
end;

function TdxBarControlMarkAccessibilityHelper.IsNavigationKey(
  AKey: Word): Boolean;
begin
  Result := inherited IsNavigationKey(AKey) or
    (AKey in [VK_ESCAPE, VK_RETURN, VK_SPACE]);
end;

procedure TdxBarControlMarkAccessibilityHelper.Select(ASetFocus: Boolean);
begin
  inherited Select(ASetFocus);
  TdxBarControlAccess(BarControl).InvalidateMark;
end;

procedure TdxBarControlMarkAccessibilityHelper.Unselect(
  ANextSelectedObject: IdxBarAccessibilityHelper);
begin
  inherited Unselect(ANextSelectedObject);
  TdxBarControlAccess(BarControl).InvalidateMark;
end;

function TdxBarControlMarkAccessibilityHelper.GetOwnerObjectWindow: HWND;
begin
  Result := Parent.OwnerObjectWindow;
end;

function TdxBarControlMarkAccessibilityHelper.GetParent: TcxAccessibilityHelper;
begin
  Result := BarControl.IAccessibilityHelper.GetHelper;
end;

function TdxBarControlMarkAccessibilityHelper.GetScreenBounds(
  AChildID: TcxAccessibleSimpleChildElementID): TRect;
begin
  if Visible then
  begin
    Result := TCustomdxBarControlAccess(BarControl).MarkRect;
    Result.TopLeft := BarControl.ClientToScreen(Result.TopLeft);
    Result.BottomRight := BarControl.ClientToScreen(Result.BottomRight);
  end
  else

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -