property TabStop: Boolean; // published, inherited from TWinControl
TabStop가 True이면 PDF 뷰어가 form의 tab 순서에 참여합니다. form의 다른 control에 포커스가 있는 상태에서 Tab을 누르면 결국 포커스가 뷰어로 이동하고, 그 뒤에는 Page Up / Page Down, 스크롤용 화살표 키, 그리고 OnKeyDown에 정의된 찾기 단축키 처리기가 모두 활성화됩니다
뷰어를 포커스 가능 상태로 유지하는 것은 접근성에 중요합니다. screen reader와 키보드만 쓰는 사용자는 page를 넘기거나 화살표 키와 Shift를 함께 눌러 text selection을 시작하려면 문서 영역에 도달할 수 있어야 합니다. TScrollingWinControl 파생 클래스의 게시된 TabStop 기본값은 True입니다
TabStop := False로 설정하면 뷰어가 tab 순서에서 제거됩니다. 사용자는 여전히 마우스로 클릭해 스크롤할 수 있지만, 명시적인 PdfView1.SetFocus 호출 없이는 키보드로 포커스를 줄 수 없습니다. 이는 뷰어가 단순히 장식용일 때, 예를 들어 search result 목록 옆의 preview pane처럼 사용하면 유용합니다
TabStop와 TabOrder가 모두 form 파일에 저장됩니다AllowUserTextSelection이 주도하는 text selection은 뷰어에 포커스가 생긴 뒤에야 마우스 드래그와 키보드 입력에 반응하므로, TabStop을 끄면 사용자가 키보드로 text를 선택하기 전에 반드시 클릭하도록 사실상 강제하게 됩니다OnEnter / OnExit를 TabStop과 함께 사용해 toolbar를 갱신하세요. 예를 들어 뷰어가 활성 control일 때만 Copy button을 활성화할 수 있습니다
// viewer를 키보드로 완전히 접근 가능하게 만들고 첫 tab stop으로 둡니다
procedure TForm1.FormCreate(Sender: TObject);
begin
PdfView1.TabStop := True;
PdfView1.TabOrder := 0;
PdfView1.OnKeyDown := PdfView1KeyDown;
end;
procedure TForm1.PdfView1KeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if (Key = VK_F3) then PdfView1.FindNext
else if (Key = Ord('C')) and (ssCtrl in Shift) then
Clipboard.AsText := PdfView1.SelectedText;
end;