フレームワーク・アプリケーションで、F1=ヘルプ・キーを無効にするまたは別の機能を割り当てる

Visual LANSA

フレームワーク・アプリケーションで、F1=ヘルプ・キーを無効にするまたは別の機能を割り当てる


Visual LANSAアプリケーションでは、F1キーに特別な機能が割り当てられています。オンライン・ヘルプを起動する、という機能であり、Windowsアプリケーションでは一般に、ほかの目的でこのキーを使うことはできないようになっています。

ただし、これを無効にし、処理を取り込んで別の目的(CHM文書を表示するなど)に使うことも可能です。

F1=ヘルプ・キーを取り込んで、無効にするコード例を以下に示します。付属のユーザー・エントリー・ポイント・フォームUF_EXECを若干修正したものです。

試してみる場合は、UF_EXEC以外の名前のフォームを作り、以下のコードをコピーしてください。

独自のエントリー・ポイント・フォームを作成する方法については、コード末尾の注釈も参照してください。

 

* =============================================================================

* Component   : XX_EXEC

* Type        : Form

* Ancestor    : VF_AC006

*

* =============================================================================

*

* PLEASE NOTE:  This component is a COPY of the shipped version.

*               You may choose to modify it. Refer

*               to the end of this component for more details about making your

*               own version of this component.

*

Function Options(*DIRECT) 

BEGIN_COM ROLE(*EXTENDS #VF_AC006 *implements #Prim_App.IHelpHandler) CLIENTWIDTH(771) LEFT(153) TOP(32) WIDTH(779)

DEFINE_COM CLASS(*ANCESTOR) NAME(#BROWSER) WIDTH(247)

DEFINE_COM CLASS(*ANCESTOR) NAME(#COMMANDHANDLER) WIDTH(578)

DEFINE_COM CLASS(*ANCESTOR) NAME(#COMMAND_PANEL) WIDTH(578)

DEFINE_COM CLASS(*ANCESTOR) NAME(#INTRO) WIDTH(578)

DEFINE_COM CLASS(*ANCESTOR) NAME(#INTRO_PANEL) WIDTH(578)

DEFINE_COM CLASS(*ANCESTOR) NAME(#RIGHT_PANEL) WIDTH(578)

DEFINE_COM CLASS(*ANCESTOR) NAME(#SELECT_PANEL) WIDTH(247)

DEFINE_COM CLASS(*ANCESTOR) NAME(#TOP_PANEL) WIDTH(578)

DEFINE_COM CLASS(*ANCESTOR) NAME(#WORK_PANEL) WIDTH(578)

DEFINE_COM CLASS(*ANCESTOR) NAME(#STATUS) LEFT(239)

DEFINE_COM CLASS(*ANCESTOR) NAME(#TOOLBAR) WIDTH(767)

DEFINE_COM CLASS(*ANCESTOR) NAME(#IDENT_PANEL) WIDTH(767)

DEFINE_COM CLASS(*ANCESTOR) NAME(#MAIN_PANEL) WIDTH(767)

DEFINE_COM CLASS(*ANCESTOR) NAME(#IDENT_BUTTON) LEFT(746)

DEFINE_COM CLASS(*ANCESTOR) NAME(#CURRENT_OBJECT) WIDTH(467)

DEFINE_COM CLASS(*ANCESTOR) NAME(#APPLICATION) WIDTH(185)

DEFINE_COM CLASS(*ANCESTOR) NAME(#LEFT_PANEL) WIDTH(185)

DEFINE_COM CLASS(*ANCESTOR) NAME(#STATUS_BAR) WIDTH(771)

DEFINE_COM CLASS(*ANCESTOR) NAME(#MiniFilter) WIDTH(467)

DEFINE_COM CLASS(*ANCESTOR) NAME(#Right_panel_Main) LEFT(189) WIDTH(578)

 

 

* =============================================================================

* Method Routines

* =============================================================================

 

MthRoutine uInitializeFramework Options(*Redefine)

 

* Set up for end user mode

 

Set #Com_Owner iDesignMode(FALSE)

Set #Com_Owner uAdminMode(FALSE)

 

* Set to start up image name

 

Set #Com_Owner uStartupImage(#uf_im001)

 

* Nominate the XML file containing the Framework design

 

Set #Com_Owner uSystemXMLFile('vf_sy001_system.xml') uSystemXMLChoice('vf_sy001_system_choice')

 

EndRoutine

 

Mthroutine Name(ProcessHelpRequest) Options(*Redefine)

* Define_Map For(*input) Class(#prim_objt) Name(#Requestor) Pass(*by_reference)

* Define_Map For(*input) Class(#prim_alph) Name(#Tag)

* Define_Map For(*input) Class(#prim_boln) Name(#Handled)

 

****************************************************************************

* Add logic here to determine if F1 is ignored or not.

****************************************************************************

 

* If Handled is true this will stop the help request going to the normal VL help facility.

 

Set Com(#Handled) Value(True)

 

Endroutine

 

*  =============================================================================

*  MAKING YOUR OWN VERSION OF THIS COMPONENT

*  =============================================================================

*

* It is not recommended that you create development or design entry points for your

* framework. Simply use the shipped ones and use the 'Save As' option to create

* different frameworks. Then only create administrator and user entry points as

* required for production users, locking them into a specific XML file and never

* allowing the end user a framework XML file choice.

*

*  To create your own User entry point do the following:

*

*  -> Create a VL form with your chosen entry point name (eg: MYEXEC).

*

* -> Copy the code from UF_EXEC into your new form. Initially this will cause

* errors to be displayed.

*

*  -> Change the ancestor of your new form to VF_AC006.

*

*  -> The copied code should contain a method routine that will

*  look like this:

*

*  MthRoutine uInitializeFramework Options(*Redefine)

*  Set #Com_Owner iDesignMode(FALSE)

*  Set #Com_Owner uAdminMode(FALSE)

*  Set #Com_Owner uStartupImage(#uf_im001)

*  Set #Com_Owner uSystemXMLFile('vf_sy001_system.xml')

*  EndRoutine

*

*  This code defines whether this entry point should allow application

*  design (iDesignMode),  whether the administration of users and servers

*  should be allowed (uAdminMode). It also defines what the startup bitmap

*  to be shown is (uStartUpImage) and the name of the XML file containing

*  the framework design.

*

*  -> Change these properties as desired and then compile and test your

*  entry point. You should not make any other changes to the logic

*  in your entry point.

*

*  -> Optionally include a uSystemXMLChoice file name to allow the user to

*  select which framework should be opened from a list contained in the

*  specified file.

*

*  -> In design mode entry points only, optionally add the uSystemXMLSaveAs

*  property to indicate the designer can save the framework XML file with a

*  different name.

*

*  -> If you enroll a bitmap into the LANSA repository, say, your company

*  logo under the name #MYLOGO then changing the line:

*

*  Set #Com_Owner uStartupImage(#uf_im001)

*

*  to:

*

*  Set #Com_Owner uStartupImage(#MYLOGO)

*

*  will cause your logo to be presented while the framework is starting.

*

* -> UF_DESGN, UF_DEVEL, UF_ADMIN and UF_EXEC are designed to act as framework

* entry points only. You should not try to use UF_DESGN, UF_DEVEL, UF_ADMIN and UF_EXEC

* (or any copied version of them) inside any framework in any way.

*

 

End_Com