📄 dxbaraccessibility.pas
字号:
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 + -