Host+DLL 모드에서 단축키 사용
6011 단어 host
최근에 Host+DLL의 플러그인 시스템을 만들었는데 각 DLL 모듈은 하나의 기본 모듈인 TBaseForm을 계승했다. 그리고 기본 모듈에서 F1 증가, F2 삭제, F3 변경, F4 찾기 등 기능을 정의했고 각 기능마다 단축키를 정의했다.
메인 프로그램에서 PageControl을 통해 모든 DLL 모듈을 불러옵니다. 문제가 생겼습니다. 여러 모듈을 열었을 때 F1을 눌렀을 때 시스템이 호출한 것은 현재 활성화된 TabSheet 모듈이 아니라 첫 번째로 열린 모듈의 새로운 모듈입니다.
기능, 원래 단축키가 첫 번째 모듈에 등록된 후 뒤에 열린 모듈을 다시 등록하면 무효입니다.나중에 생각해 낸 방법은 TabSheet의 OnHide 이벤트에서 현재 모듈의 단축키를 취소하고 onShow 이벤트에서
현재 모듈의 단축키를 연결하여 테스트 성공!!,,다음은 부분 코드입니다.
1 procedure TBaseForm.bidingshortcut; //
2 begin
3 al_new.ShortCut:=TextToShortCut('F5');
4 al_edit.ShortCut:=TextToShortCut('F6');
5 al_delete.ShortCut:=TextToShortCut('F7');
6 al_refdata.ShortCut:=TextToShortCut('F8');
7 al_query.ShortCut:=TextToShortCut('F3');
8 al_report.ShortCut:=TextToShortCut('F2');
9 al_export.ShortCut:=TextToShortCut('F10');
10 al_import.ShortCut:=TextToShortCut('F4');
11 al_gridset.ShortCut:=TextToShortCut('F9');
12 end;
13
14 procedure TBaseForm.unbidingshortcut; //
15 begin
16 al_new.ShortCut:=TextToShortCut('none');
17 al_edit.ShortCut:=TextToShortCut('none');
18 al_delete.ShortCut:=TextToShortCut('none');
19 al_refdata.ShortCut:=TextToShortCut('none');
20 al_query.ShortCut:=TextToShortCut('none');
21 al_report.ShortCut:=TextToShortCut('none');
22 al_export.ShortCut:=TextToShortCut('none');
23 al_import.ShortCut:=TextToShortCut('none');
24 al_gridset.ShortCut:=TextToShortCut('none');
25 end;
그리고 Host 프로그램의 onHide와 onShow에서 각각 unbidingshortcut과 bidingshortcut을 호출하면 된다.
여기에 기본 클래스의 변환 과정이 있습니다. 저는 Tabsheet의 tag에 현재 창을 저장했기 때문에 다음과 같은 변환만 하면 됩니다.
TBaseForm(TabSheet.tag).bidingshourtcut만 있으면 돼요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Host+DLL 모드에서 단축키 사용최근에 Host+DLL의 플러그인 시스템을 만들었는데 각 DLL 모듈은 하나의 기본 모듈인 TBaseForm을 계승했다. 그리고 기본 모듈에서 F1 증가, F2 삭제, F3 변경, F4 찾기 등 기능을 정의했고 각 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.