//************************************************************************ // Confidential Trade Secret. // Copyright (c) 1997 Data Access Corporation, Miami Florida // as an unpublished work. All rights reserved. // DataFlex Is A registered trademark Of Data Access Corporation. // //************************************************************************ //************************************************************************ // // $File name : DfAbout.pkg // $File title : About class support // Notice : // $Author(s) : Vincent Oorsprong, Ken Ross // // $Rev History // // NGS 08/16/2013 Improved by using a cRichEdit object were the params gets added to. // The objects that previously were popupated with values from the params, // and their corresponding "Procedure Set..." messages, were removed as // the edit object is used instead. // The number of params to the DoAbout procedure was increased to ten, so // it is easier to add whatever extra text strings needed/wanted. // The StdAbout.pkg was also changed for this to work. It allows for an extra // five new params to be passed, but these new params are all optional. // So the interface will work exactly as before - if no extra parameters are passed. // Also added an extra bitmap object to show the "Powered By Visual DataFlex" logo, in // the lower left corner of the About object, beneath the "main" About bitmap. // Note: It is assumed that the bitmap "PoweredByVisualDataFlex.bmp" exists. // The background was changed to clWhite for easier usage of bitmaps. Just set the background // color of your bitmap to white and the bitmap will not look jagged. // If an Internet address is passed as one of the params, it will be underlined and clickable. // An e-mail address can also be passed; e.g. "E-mail: mailto:mail@myemailaccount.com" and will // also be clickable. // VOO 02/22/2012 Replaced obsolete code, improved Network_User_Name by asking // Windows for the size first. // VOO 07/25/2003 Removed OnResize procedure for sysinfo dialog. Replaced logic // with anchor technique. Removed unnessary property in the // sysinfo dialog. Changed the size Of the about & sysinfo dialog // object To better look in Windows XP. Repositioned the close // button in the sysinfo dialog To line up with the display area // Replaced obsolete code and techniques. Removed dead code. // JJT 10/23/2001 removed all ghoworkspace support. Uses app object or nothing // SWB 07/19/01 Added support Of the Application object in preference to // the global Workspace object, if it is present // JJT 11/05/98 Added version information // VOO 29/10/98 Replaced the GetFreeSystemResources for the Win32 variant // JJT 7/31/97 Registered Enumerate Workspace so dfabout can exist without // workspace package. // JJT 6/27/97 Turned the sysinfo objects into classes so the AboutDialog // class can create this object. // Cleaned up the interface (used correct classes and messages) // Added workspace reporting support To sys-info. // Turned off wrapping in the sys-info editor. // KR ??/??/96 File created //************************************************************************ Use LanguageText.pkg Use Windows.pkg Use DFbitmap.pkg Use GlobalFunctionsProcedures.pkg Use cRichEdit.pkg Use cTextEdit.pkg Use gFormatNumbers.pkg //Use MapiDllCalls.Pkg Use DFBTRDRV.PKG Use MSSqldrv.pkg Use db2_drv.pkg Use odbc_drv.pkg Use seq_chnl.pkg //Use Std_help.pkg Use vWin32fh.pkg Register_Function phoWorkspace Returns Handle Register_Function Help_filename Returns String Register_Function GetHelpFile Returns String Register_Function pbEnterKeyAsTabKey Returns Boolean // Use of Mertech drivers: // Ad the line "Define DUF_Use_Mertech_Drivers" prior "Use" of this package to your source code if using Mertech drivers! #IFDEF DUF_Use_Mertech_Drivers Use mertech.inc #ENDIF #IFNDEF ORAFLEX Define ORAFLEX for "ORA_DRV" #ENDIF #IFNDEF SQLFLEX Define SQLFLEX for "SQL_DRV" #ENDIF #IFNDEF MDSPgSQL Define MDSPgSQL for "MDSPGSQL" #ENDIF #IFNDEF MDSMySQL Define MDSMySQL for "MDSMYSQL" #ENDIF // *** Constant Declarations: *** // #IFDEF DF_DRIVER_SQLSERVER_CLIENT_VERSION #ELSE #Replace DF_DRIVER_SQLSERVER_CLIENT_VERSION |CI1160 #ENDIF // NOTE: These text constants should be added to the various "Language_xxx.inc" files: #IFSame Language$Current = Language$English #Replace C_$Computer_Name |CS"Computer Name: %1" #Replace C_$Current_User_Count |CS"Current User Count: %1" #Replace C_$Max_Licensed_User_Count |CS"Max Licensed User Count: %1" #Replace C_$Max_DbDriver_Licensed_User_Count |CS"Max dbDriver Licensed User Count: %1" #Replace C_$Pervasive_Local_Engine_Version |CS"Pervasive Local Engine Version: %1" #Replace C_$Pervasive_Server_Engine_Version |CS"Pervasive Server Engine Version: %1" #Replace C_$SQLSERVER2016DRVRSTR |CS"MS-SQL Server 2016 Client ODBC Driver 13 for SQL Server" #Replace C_$SQLSERVER2014DRVRSTR |CS"MS-SQL Server 2014 Client ODBC Driver 11 for SQL Server" #Replace C_$SQL_Server_Native_Client_11_0 |CS"SQL Server Native Client 11.0 (SQL Server 2012)" #Replace C_$SQL_Server_Native_Client_10_0 |CS"SQL Server Native Client 10.0 (SQL Server 2008)" #Replace C_$SQL_Native_Client |CS"SQL Native Client (SQL Server 2005)" #Replace C_$SQL_Server_SQL_Server_2000_client |CS"SQL Server (SQL Server 2000 client (MDAC))" #Replace C_$VDF_Studio_License_Text |CS"Program run under Studio license. The Max number of users for database drivers could not be retrieved." #Replace C_$Compile_Date |CS"Compile Date:" #IFNDEF C_$CopyToClipboard_Text #Replace C_$CopyToClipboard_Text |CS"Content copied to Windows clipboard. Press Ctrl+V to paste the content in e.g. an e-mail." #ENDIF #ENDIF #IFSAME Language$Current Language$Nederlands #Replace C_$Computer_Name |CS"Computer Name: %1" #Replace C_$Current_User_Count |CS"Current User Count: %1" #Replace C_$Max_Licensed_User_Count |CS"Max Licensed User Count: %1" #Replace C_$Max_DbDriver_Licensed_User_Count |CS"Max dbDriver Licensed User Count: %1" #Replace C_$Pervasive_Local_Engine_Version |CS"Pervasive Local Engine Version: %1" #Replace C_$Pervasive_Server_Engine_Version |CS"Pervasive Server Engine Version: %1" #Replace C_$SQLSERVER2016DRVRSTR |CS"MS-SQL Server 2016 Client ODBC Driver 13 for SQL Server" #Replace C_$SQLSERVER2014DRVRSTR |CS"MS-SQL Server 2014 Client ODBC Driver 11 for SQL Server" #Replace C_$SQL_Server_Native_Client_11_0 |CS"SQL Server Native Client 11.0 (SQL Server 2012)" #Replace C_$SQL_Server_Native_Client_10_0 |CS"SQL Server Native Client 10.0 (SQL Server 2008)" #Replace C_$SQL_Native_Client |CS"SQL Native Client (SQL Server 2005)" #Replace C_$SQL_Server_SQL_Server_2000_client |CS"SQL Server (SQL Server 2000 client (MDAC))" #Replace C_$VDF_Studio_License_Text |CS"Program run under Studio license. The Max number of users for database drivers could not be retrieved." #Replace C_$Compile_Date |CS"Compile Date:" #IFNDEF C_$CopyToClipboard_Text #Replace C_$CopyToClipboard_Text |CS"Content copied to Windows clipboard. Press Ctrl+V to paste the content in e.g. an e-mail." #ENDIF #ENDIF #IFSame Language$Current = Language$Svenska #Replace C_$Computer_Name |CS"Datornamn: %1" #Replace C_$Current_User_Count |CS"Aktuellt antal anv„ndare: %1" #Replace C_$Max_Licensed_User_Count |CS"Max antal licensierade anv„ndare: %1" #Replace C_$Max_DbDriver_Licensed_User_Count |CS"Max antal dbDriver licensierade anv„ndare: %1" #Replace C_$Pervasive_Local_Engine_Version |CS"Pervasive Local Engine Version: %1" #Replace C_$Pervasive_Server_Engine_Version |CS"Pervasive Server Engine Version: %1" #Replace C_$SQLSERVER2016DRVRSTR |CS"MS-SQL Server 2016 Client ODBC Driver 13 for SQL Server" #Replace C_$SQLSERVER2014DRVRSTR |CS"MS-SQL Server 2014 Client ODBC Driver 11 for SQL Server" #Replace C_$SQL_Server_Native_Client_11_0 |CS"SQL Server Native Client 11.0 (SQL Server 2012)" #Replace C_$SQL_Server_Native_Client_10_0 |CS"SQL Server Native Client 10.0 (SQL Server 2008)" #Replace C_$SQL_Native_Client |CS"SQL Native Client (SQL Server 2005)" #Replace C_$SQL_Server_SQL_Server_2000_client |CS"SQL Server (SQL Server 2000 client (MDAC))" #Replace C_$VDF_Studio_License_Text |CS"Programmet k”rs under DataFlex Studio licens. Max antal anv„ndare f”r databas drivrutin kan ej best„mmas." #Replace C_$Compile_Date |CS"Kompilerad:" #IFNDEF C_$CopyToClipboard_Text #Replace C_$CopyToClipboard_Text |CS"Inneh†ll kopierat till Windows klippbord. Tryck p† Ctrl+V f”r att klistra in inneh†llet i t ex ett e-mejl." #ENDIF #ENDIF #IFSAME Language$Current Language$Deutsch #Replace C_$Computer_Name |CS"Computer Name: %1" #Replace C_$Current_User_Count |CS"Current User Count: %1" #Replace C_$Max_Licensed_User_Count |CS"Max Licensed User Count: %1" #Replace C_$Max_DbDriver_Licensed_User_Count |CS"Max dbDriver Licensed User Count: %1" #Replace C_$Pervasive_Local_Engine_Version |CS"Pervasive Local Engine Version: %1" #Replace C_$Pervasive_Server_Engine_Version |CS"Pervasive Server Engine Version: %1" #Replace C_$SQLSERVER2016DRVRSTR |CS"MS-SQL Server 2016 Client ODBC Driver 13 for SQL Server" #Replace C_$SQLSERVER2014DRVRSTR |CS"MS-SQL Server 2014 Client ODBC Driver 11 for SQL Server" #Replace C_$SQL_Server_Native_Client_11_0 |CS"SQL Server Native Client 11.0 (SQL Server 2012)" #Replace C_$SQL_Server_Native_Client_10_0 |CS"SQL Server Native Client 10.0 (SQL Server 2008)" #Replace C_$SQL_Native_Client |CS"SQL Native Client (SQL Server 2005)" #Replace C_$SQL_Server_SQL_Server_2000_client |CS"SQL Server (SQL Server 2000 client (MDAC))" #Replace C_$VDF_Studio_License_Text |CS"Program run under Studio license. The Max number of users for database drivers could not be retrieved." #Replace C_$Compile_Date |CS"Compile Date:" #IFNDEF C_$CopyToClipboard_Text #Replace C_$CopyToClipboard_Text |CS"Content copied to Windows clipboard. Press Ctrl+V to paste the content in e.g. an e-mail." #ENDIF #ENDIF #IFSAME Language$Current Language$Dansk #Replace C_$Computer_Name |CS"Computer Name: %1" #Replace C_$Current_User_Count |CS"Current User Count: %1" #Replace C_$Max_Licensed_User_Count |CS"Max Licensed User Count: %1" #Replace C_$Max_DbDriver_Licensed_User_Count |CS"Max dbDriver Licensed User Count: %1" #Replace C_$Pervasive_Local_Engine_Version |CS"Pervasive Local Engine Version: %1" #Replace C_$Pervasive_Server_Engine_Version |CS"Pervasive Server Engine Version: %1" #Replace C_$SQLSERVER2016DRVRSTR |CS"MS-SQL Server 2016 Client ODBC Driver 13 for SQL Server" #Replace C_$SQLSERVER2014DRVRSTR |CS"MS-SQL Server 2014 Client ODBC Driver 11 for SQL Server" #Replace C_$SQL_Server_Native_Client_11_0 |CS"SQL Server Native Client 11.0 (SQL Server 2012)" #Replace C_$SQL_Server_Native_Client_10_0 |CS"SQL Server Native Client 10.0 (SQL Server 2008)" #Replace C_$SQL_Native_Client |CS"SQL Native Client (SQL Server 2005)" #Replace C_$SQL_Server_SQL_Server_2000_client |CS"SQL Server (SQL Server 2000 client (MDAC))" #Replace C_$VDF_Studio_License_Text |CS"Program run under Studio license. The Max number of users for database drivers could not be retrieved." #Replace C_$Compile_Date |CS"Compile Date:" #IFNDEF C_$CopyToClipboard_Text #Replace C_$CopyToClipboard_Text |CS"Content copied to Windows clipboard. Press Ctrl+V to paste the content in e.g. an e-mail." #ENDIF #ENDIF // 2016-12-12, Samuel: Added section for Portuguese #IFSame Language$Current = Language$Portugues #Replace C_$Computer_Name |CS"Nome do Computador: %1" #Replace C_$Current_User_Count |CS"Quantidade atua de Usu rios: %1" #Replace C_$Max_Licensed_User_Count |CS"Quantidade m xima de usu rios licenciados: %1" #Replace C_$Max_DbDriver_Licensed_User_Count |CS"Quantidade m xima de usuarios licenciados para o dbDriver: %1" #Replace C_$Pervasive_Local_Engine_Version |CS"VersÝo do motor Local do Pervasive: %1" #Replace C_$Pervasive_Server_Engine_Version |CS"VersÝo do Motor do Servidor Pervasive: %1" #Replace C_$SQLSERVER2016DRVRSTR |CS"MS-SQL Server 2016 Client ODBC Driver 13 for SQL Server" #Replace C_$SQLSERVER2014DRVRSTR |CS"MS-SQL Server 2014 Client ODBC Driver 11 for SQL Server" #Replace C_$SQL_Server_Native_Client_11_0 |CS"Cliente Nativo do SQL Server 11.0 (SQL Server 2012)" #Replace C_$SQL_Server_Native_Client_10_0 |CS"Cliente Nativo do SQL Server 10.0 (SQL Server 2008)" #Replace C_$SQL_Native_Client |CS"Cliente Nativo SQL (SQL Server 2005)" #Replace C_$SQL_Server_SQL_Server_2000_client |CS"SQL Server (SQL Server 2000 client (MDAC))" #Replace C_$VDF_Studio_License_Text |CS"Programa rodando sob Licensa do DataFlex Studios. Numero maximo de usuarios para o dbDriver nÝo pode ser recuperado." #Replace C_$Compile_Date |CS"Data de Compila‡Ýo:" #IFNDEF C_$CopyToClipboard_Text #Replace C_$CopyToClipboard_Text |CS"Conte£do copiado da Ýrea de Transferˆncia do Windows. Pressione Ctrl+V para colar o conte£do em p. ex. um e-mail." #ENDIF #ENDIF #IFSAME Language$Current Language$Francais #Replace C_$Computer_Name |CS"Computer Name: %1" #Replace C_$Current_User_Count |CS"Current User Count: %1" #Replace C_$Max_Licensed_User_Count |CS"Max Licensed User Count: %1" #Replace C_$Max_DbDriver_Licensed_User_Count |CS"Max dbDriver Licensed User Count: %1" #Replace C_$Pervasive_Local_Engine_Version |CS"Pervasive Local Engine Version: %1" #Replace C_$Pervasive_Server_Engine_Version |CS"Pervasive Server Engine Version: %1" #Replace C_$SQLSERVER2016DRVRSTR |CS"MS-SQL Server 2016 Client ODBC Driver 13 for SQL Server" #Replace C_$SQLSERVER2014DRVRSTR |CS"MS-SQL Server 2014 Client ODBC Driver 11 for SQL Server" #Replace C_$SQL_Server_Native_Client_11_0 |CS"SQL Server Native Client 11.0 (SQL Server 2012)" #Replace C_$SQL_Server_Native_Client_10_0 |CS"SQL Server Native Client 10.0 (SQL Server 2008)" #Replace C_$SQL_Native_Client |CS"SQL Native Client (SQL Server 2005)" #Replace C_$SQL_Server_SQL_Server_2000_client |CS"SQL Server (SQL Server 2000 client (MDAC))" #Replace C_$VDF_Studio_License_Text |CS"Program run under Studio license. The Max number of users for database drivers could not be retrieved." #Replace C_$Compile_Date |CS"Compile Date:" #IFNDEF C_$CopyToClipboard_Text #Replace C_$CopyToClipboard_Text |CS"Content copied to Windows clipboard. Press Ctrl+V to paste the content in e.g. an e-mail." #ENDIF #ENDIF #IFSAME Language$Current Language$Italiano #Replace C_$Computer_Name |CS"Computer Name: %1" #Replace C_$Current_User_Count |CS"Current User Count: %1" #Replace C_$Max_Licensed_User_Count |CS"Max Licensed User Count: %1" #Replace C_$Max_DbDriver_Licensed_User_Count |CS"Max dbDriver Licensed User Count: %1" #Replace C_$Pervasive_Local_Engine_Version |CS"Pervasive Local Engine Version: %1" #Replace C_$Pervasive_Server_Engine_Version |CS"Pervasive Server Engine Version: %1" #Replace C_$SQLSERVER2016DRVRSTR |CS"MS-SQL Server 2016 Client ODBC Driver 13 for SQL Server" #Replace C_$SQLSERVER2014DRVRSTR |CS"MS-SQL Server 2014 Client ODBC Driver 11 for SQL Server" #Replace C_$SQL_Server_Native_Client_11_0 |CS"SQL Server Native Client 11.0 (SQL Server 2012)" #Replace C_$SQL_Server_Native_Client_10_0 |CS"SQL Server Native Client 10.0 (SQL Server 2008)" #Replace C_$SQL_Native_Client |CS"SQL Native Client (SQL Server 2005)" #Replace C_$SQL_Server_SQL_Server_2000_client |CS"SQL Server (SQL Server 2000 client (MDAC))" #Replace C_$VDF_Studio_License_Text |CS"Program run under Studio license. The Max number of users for database drivers could not be retrieved." #Replace C_$Compile_Date |CS"Compile Date:" #IFNDEF C_$CopyToClipboard_Text #Replace C_$CopyToClipboard_Text |CS"Content copied to Windows clipboard. Press Ctrl+V to paste the content in e.g. an e-mail." #ENDIF #ENDIF #IFSame Language$Current = Language$Espanol #Replace C_$Computer_Name |CS"Nome do Computador: %1" #Replace C_$Current_User_Count |CS"Quantidade atua de Usu rios: %1" #Replace C_$Max_Licensed_User_Count |CS"Quantidade m xima de usu rios licenciados: %1" #Replace C_$Max_DbDriver_Licensed_User_Count |CS"Quantidade m xima de usuarios licenciados para o dbDriver: %1" #Replace C_$Pervasive_Local_Engine_Version |CS"VersÝo do motor Local do Pervasive: %1" #Replace C_$Pervasive_Server_Engine_Version |CS"VersÝo do Motor do Servidor Pervasive: %1" #Replace C_$SQLSERVER2016DRVRSTR |CS"MS-SQL Server 2016 Client ODBC Driver 13 for SQL Server" #Replace C_$SQLSERVER2014DRVRSTR |CS"MS-SQL Server 2014 Client ODBC Driver 11 for SQL Server" #Replace C_$SQL_Server_Native_Client_11_0 |CS"Cliente Nativo do SQL Server 11.0 (SQL Server 2012)" #Replace C_$SQL_Server_Native_Client_10_0 |CS"Cliente Nativo do SQL Server 10.0 (SQL Server 2008)" #Replace C_$SQL_Native_Client |CS"Cliente Nativo SQL (SQL Server 2005)" #Replace C_$SQL_Server_SQL_Server_2000_client |CS"SQL Server (SQL Server 2000 client (MDAC))" #Replace C_$VDF_Studio_License_Text |CS"Programa rodando sob Licensa do DataFlex Studios. Numero maximo de usuarios para o dbDriver nÝo pode ser recuperado." #Replace C_$Compile_Date |CS"Data de Compila‡Ýo:" #IFNDEF C_$CopyToClipboard_Text #Replace C_$CopyToClipboard_Text |CS"Conte£do copiado da Ýrea de Transferˆncia do Windows. Pressione Ctrl+V para colar o conte£do em p. ex. um e-mail." #ENDIF #ENDIF #IFSame Language$Current = Language$Norsk #Replace C_$Computer_Name |CS"Datamaskinnavn: %1" #Replace C_$Current_User_Count |CS"Antall brukere: %1" #Replace C_$Max_Licensed_User_Count |CS"Maks. antall lisensierte brukere: %1" #Replace C_$Max_DbDriver_Licensed_User_Count |CS"Maks. antall lisensierte brukere for databasedriver: %1" #Replace C_$Pervasive_Local_Engine_Version |CS"Pervasive Local Engine Version: %1" #Replace C_$Pervasive_Server_Engine_Version |CS"Pervasive Server Engine Version: %1" #Replace C_$SQLSERVER2016DRVRSTR |CS"MS-SQL Server 2016 Client ODBC Driver 13 for SQL Server" #Replace C_$SQLSERVER2014DRVRSTR |CS"MS-SQL Server 2014 Client ODBC Driver 11 for SQL Server" #Replace C_$SQL_Server_Native_Client_11_0 |CS"SQL Server Native Client 11.0 (SQL Server 2012)" #Replace C_$SQL_Server_Native_Client_10_0 |CS"SQL Server Native Client 10.0 (SQL Server 2008)" #Replace C_$SQL_Native_Client |CS"SQL Native Client (SQL Server 2005)" #Replace C_$SQL_Server_SQL_Server_2000_client |CS"SQL Server (SQL Server 2000 client (MDAC))" #Replace C_$VDF_Studio_License_Text |CS"Programmet kj›res under DataFlex Studio lisens. Maks. antal brukere for databasedriverrutine kan ikke fastsettes." #Replace C_$Compile_Date |CS"Kompilert:" #IFNDEF C_$CopyToClipboard_Text #Replace C_$CopyToClipboard_Text |CS"Innehold kopiert til Windows utklippstavle. Trykk Ctrl+V for † lime inn i for eksempel en e-post." #ENDIF #ENDIF #IFSame Language$Current = Language$Russian #Replace C_$Computer_Name |CS"Computer Name: %1" #Replace C_$Current_User_Count |CS"Current User Count: %1" #Replace C_$Max_Licensed_User_Count |CS"Max Licensed User Count: %1" #Replace C_$Max_DbDriver_Licensed_User_Count |CS"Max dbDriver Licensed User Count: %1" #Replace C_$Pervasive_Local_Engine_Version |CS"Pervasive Local Engine Version: %1" #Replace C_$Pervasive_Server_Engine_Version |CS"Pervasive Server Engine Version: %1" #Replace C_$SQLSERVER2016DRVRSTR |CS"MS-SQL Server 2016 Client ODBC Driver 13 for SQL Server" #Replace C_$SQLSERVER2014DRVRSTR |CS"MS-SQL Server 2014 Client ODBC Driver 11 for SQL Server" #Replace C_$SQL_Server_Native_Client_11_0 |CS"SQL Server Native Client 11.0 (SQL Server 2012)" #Replace C_$SQL_Server_Native_Client_10_0 |CS"SQL Server Native Client 10.0 (SQL Server 2008)" #Replace C_$SQL_Native_Client |CS"SQL Native Client (SQL Server 2005)" #Replace C_$SQL_Server_SQL_Server_2000_client |CS"SQL Server (SQL Server 2000 client (MDAC))" #Replace C_$VDF_Studio_License_Text |CS"Program run under Studio license. The Max number of users for database drivers could not be retrieved." #Replace C_$Compile_Date |CS"Compile Date:" #IFNDEF C_$CopyToClipboard_Text #Replace C_$CopyToClipboard_Text |CS"Content copied to Windows clipboard. Press Ctrl+V to paste the content in e.g. an e-mail." #ENDIF #ENDIF #IFSame Language$Current = Language$Polish #Replace C_$Computer_Name |CS"Computer Name: %1" #Replace C_$Current_User_Count |CS"Current User Count: %1" #Replace C_$Max_Licensed_User_Count |CS"Max Licensed User Count: %1" #Replace C_$Max_DbDriver_Licensed_User_Count |CS"Max dbDriver Licensed User Count: %1" #Replace C_$Pervasive_Local_Engine_Version |CS"Pervasive Local Engine Version: %1" #Replace C_$Pervasive_Server_Engine_Version |CS"Pervasive Server Engine Version: %1" #Replace C_$SQLSERVER2016DRVRSTR |CS"MS-SQL Server 2016 Client ODBC Driver 13 for SQL Server" #Replace C_$SQLSERVER2014DRVRSTR |CS"MS-SQL Server 2014 Client ODBC Driver 11 for SQL Server" #Replace C_$SQL_Server_Native_Client_11_0 |CS"SQL Server Native Client 11.0 (SQL Server 2012)" #Replace C_$SQL_Server_Native_Client_10_0 |CS"SQL Server Native Client 10.0 (SQL Server 2008)" #Replace C_$SQL_Native_Client |CS"SQL Native Client (SQL Server 2005)" #Replace C_$SQL_Server_SQL_Server_2000_client |CS"SQL Server (SQL Server 2000 client (MDAC))" #Replace C_$VDF_Studio_License_Text |CS"Program run under Studio license. The Max number of users for database drivers could not be retrieved." #Replace C_$Compile_Date |CS"Compile Date:" #IFNDEF C_$CopyToClipboard_Text #Replace C_$CopyToClipboard_Text |CS"Content copied to Windows clipboard. Press Ctrl+V to paste the content in e.g. an e-mail." #ENDIF #ENDIF #IFSame Language$Current = Language$Hungarian #Replace C_$Computer_Name |CS"Computer Name: %1" #Replace C_$Current_User_Count |CS"Current User Count: %1" #Replace C_$Max_Licensed_User_Count |CS"Max Licensed User Count: %1" #Replace C_$Max_DbDriver_Licensed_User_Count |CS"Max dbDriver Licensed User Count: %1" #Replace C_$Pervasive_Local_Engine_Version |CS"Pervasive Local Engine Version: %1" #Replace C_$Pervasive_Server_Engine_Version |CS"Pervasive Server Engine Version: %1" #Replace C_$SQLSERVER2016DRVRSTR |CS"MS-SQL Server 2016 Client ODBC Driver 13 for SQL Server" #Replace C_$SQLSERVER2014DRVRSTR |CS"MS-SQL Server 2014 Client ODBC Driver 11 for SQL Server" #Replace C_$SQL_Server_Native_Client_11_0 |CS"SQL Server Native Client 11.0 (SQL Server 2012)" #Replace C_$SQL_Server_Native_Client_10_0 |CS"SQL Server Native Client 10.0 (SQL Server 2008)" #Replace C_$SQL_Native_Client |CS"SQL Native Client (SQL Server 2005)" #Replace C_$SQL_Server_SQL_Server_2000_client |CS"SQL Server (SQL Server 2000 client (MDAC))" #Replace C_$VDF_Studio_License_Text |CS"Program run under Studio license. The Max number of users for database drivers could not be retrieved." #Replace C_$Compile_Date |CS"Compile Date:" #IFNDEF C_$CopyToClipboard_Text #Replace C_$CopyToClipboard_Text |CS"Content copied to Windows clipboard. Press Ctrl+V to paste the content in e.g. an e-mail." #ENDIF #ENDIF #IFNDEF DATAFLEX_ID Define DATAFLEX_ID for "DATAFLEX" #ENDIF // System icon menu constants. If the upper left hand // icon in dialogs is clicked, shadow all menu items except Move & Close. #IFNDEF SC_RESTORE Define SC_RESTORE for |CI$F120 #ENDIF #IFNDEF SC_MOVE Define SC_MOVE for |CI$F010 #ENDIF #IFNDEF SC_SIZE Define SC_SIZE for |CI$F000 #ENDIF #IFNDEF SC_MINIMIZE Define SC_MINIMIZE for |CI$F020 #ENDIF #IFNDEF SC_MAXIMIZE Define SC_MAXIMIZE for |CI$F030 #ENDIF #IFNDEF SC_CLOSE Define SC_CLOSE for |CI$F060 #ENDIF #IFNDEF SC_KEYMENU Define SC_KEYMENU for |CI$F100 #ENDIF #IFNDEF SC_NEXTWINDOW Define SC_NEXTWINDOW for |CI$F040 #ENDIF #IFNDEF SC_PREVWINDOW Define SC_PREVWINDOW for |CI$F050 #ENDIF // *** Struct Declarations: *** #IF (Required_FMAC_Build < 107) Struct tWinMemoryStatusEx UInteger dwLength UInteger dwMemoryLoad UBigInt ullTotalPhys UBigInt ullAvailPhys UBigInt ullTotalPageFile UBigInt ullAvailPageFile UBigInt ullTotalVirtual UBigInt ullAvailVirtual UBigInt ullAvailExtendedVirtual End_Struct #ENDIF // OBSOLETE STRUCTURE AND WINDOWS API CALL. KEPT FOR BACKWARDS COMPATIBILITY //Type MEMORYSTATUS // Field MEMORYSTATUS.dwLength as DWord // sizeof(MEMORYSTATUS) // Field MEMORYSTATUS.dwMemoryLoad as DWord // percent Of memory in use // Field MEMORYSTATUS.dwTotalPhys as DWord // bytes Of physical memory // Field MEMORYSTATUS.dwAvailPhys as DWord // free physical memory bytes // Field MEMORYSTATUS.dwTotalPageFile as DWord // bytes Of paging file // Field MEMORYSTATUS.dwAvailPageFile as DWord // free bytes Of paging file // Field MEMORYSTATUS.dwTotalVirtual as DWord // user bytes Of address space // Field MEMORYSTATUS.dwAvailVirtual as DWord // free user bytes //End_Type // *** External Function calls: *** // #IFNDEF get_GetSystemMenu External_Function GetSystemMenu "GetSystemMenu" User32.dll Handle hWnd Boolean bRevert Returns Handle #ENDIF #IFNDEF get_RemoveMenu External_Function GetRemoveMenu "RemoveMenu" user32.dll Handle hWnd UInteger uPosition UInteger uFlags Returns Handle #ENDIF #IFNDEF get_WNetGetUser External_Function WNetGetUser "WNetGetUserA" MPR.DLL Pointer lpName Pointer lpUser_Name Pointer lpLength Returns DWord #ENDIF #IFNDEF get_GlobalMemoryStatus External_Function GlobalMemoryStatus "GlobalMemoryStatus" Kernel32.Dll Pointer lpsMemoryStatus Returns Integer #ENDIF #IFNDEF get_GlobalMemoryStatusEx External_Function GlobalMemoryStatusEx "GlobalMemoryStatusEx" Kernel32.Dll Pointer lpMemoryStatus Returns Integer #ENDIF // *** Global/Desktop Function Declarations: *** Function ComputerName for Desktop Returns String String sName Get_Environment "COMPUTERNAME" to sName Function_Return sName End_Function Function Network_User_Name for cDesktop Returns String String sName Get_Environment "USERNAME" to sName Function_Return sName End_Function // *** Class Declarations: *** // Class cBitmapContainerVDFLink is a BitmapContainer Procedure Mouse_Click Integer iWindowNumber Integer iPosition Send Mouse_Up iWindowNumber iPosition End_Procedure Procedure Mouse_Up Integer iWindowNumber Integer iPosition Forward Send Mouse_Up iWindowNumber iPosition Send Show_HomePage "http://www.dataaccess.com/" End_Procedure End_Class Class cCopyEditorContentButton is a Button Procedure Construct_Object Forward Send Construct_Object Property Handle phoEditorHandle #IF (!@ >= 170) Set psToolTip to C_$DescCopy #ENDIF End_Procedure Procedure CopyToWindowsClipboard String sValue Handle hoEditor Boolean bCanCopy Address aEditorAddress Get phoEditorHandle to hoEditor Send Select_All of hoEditor Get CanCopy of hoEditor to bCanCopy If (bCanCopy = True) Begin Get paValue of hoEditor to aEditorAddress Move aEditorAddress to sValue Send Copy of hoEditor // Remove the selection after text is copied to the clipboard. Send Beginning_of_Data of hoEditor Send Info_Box C_$CopyToClipboard_Text End End_Procedure End_Class { Visibility=Private } Class SysinfoDisplay is a cTextEdit Procedure Construct_Object Forward Send Construct_Object Set Size to 104 247 Set Location to 4 6 Set Border_Style to Border_None Set peAnchors to anAll Set Read_Only_State to True Set pbWrap to True End_Procedure // Augmented class message to adjust certain text strings that are wrong... Procedure AppendTextLn String sText String sWorkspaceWSFile // Only works for English: If (ghoApplication > 0) Begin If (sText contains "Workspace Name") Begin Move "Workspace Config Filename:" to sText Get psWorkspaceWSFile of (phoWorkspace(ghoApplication)) to sWorkspaceWSFile Move (sText * sWorkspaceWSFile) to sText End End Send AppendText sText Send AppendText (character(10)) End_Procedure //**************************************************************************** // $Module type: PROCEDURE // $Module name: Show_Current_Directory // $Author : VOO // Created : 06-10-96 @ 15:24 // // Description // This method will show the name Of the current directory in the system // information box // // $Rev History // 06-10-96 Module header created //**************************************************************************** { Visibility=Private } Procedure Show_Current_Directory String sDir Get_Current_Directory To sDir Send AppendTextLn (SFormat (C_$CurrentDirectory, sDir)) End_Procedure { Visibility=Private } Procedure Show_Windows_Directory String sWindir Get_Windows_Directory To sWindir Send AppendTextLn (SFormat (C_$WindowsDirectory, sWindir)) End_Procedure { Visibility=Private } Procedure Show_Current_User Send AppendTextLn (SFormat (C_$Computer_Name, ComputerName (Self))) Send AppendTextLn (SFormat (C_$NetworkUserName, Network_User_Name (Self))) End_Procedure { Visibility=Private } Procedure Show_Number_Format Integer iFormat String sFormatText Get_Attribute DF_THOUSANDS_SEPARATOR to iFormat Move (Character (iFormat)) To sFormatText Send AppendTextLn (SFormat (C_$ThousandsSeparator, sFormatText, iFormat)) Get_Attribute DF_DECIMAL_SEPARATOR to iFormat Move (Character (iFormat)) to sFormatText Send AppendTextLn (SFormat (C_$DecimalSeparator, sFormatText)) End_Procedure { Visibility=Private } Procedure Show_Filelist_Name String sFilename Get_Attribute DF_FILELIST_NAME to sFilename Send AppendTextLn (SFormat (C_$CurrentFilelist, sFilename)) End_Procedure { Visibility=Private } Procedure Show_Lock_Delay Integer iLockdelay Get_Attribute DF_LOCK_DELAY to iLockdelay Send AppendTextLn (SFormat (C_$DatabaseLockingDelay, iLockDelay)) End_Procedure { Visibility=Private } Procedure Show_Lock_Timeout Integer iLockTimeout Get_Attribute DF_LOCK_TIMEOUT to iLockTimeout Send AppendTextLn (SFormat (C_$DatabaseLockingTimeout, iLockTimeOut)) End_Procedure { Visibility=Private } Procedure Show_Screen_Size Integer iYscreensize iXscreensize Move (GetSystemMetrics (SM_CXSCREEN)) To iXscreensize Move (GetSystemMetrics (SM_CYSCREEN)) To iYscreensize Send AppendTextLn (SFormat (C_$VideoResolution, iXscreensize, iYscreensize)) End_Procedure { Visibility=Private } Procedure Show_Page_Size Send AppendTextLn (SFormat (C_$PageEndFormFeed, Pageend, Pagefeed)) End_procedure { Visibility=Private } Procedure Show_Date Date dToday Sysdate dToday Send AppendTextLn (SFormat (C_$CurrentSystemDate, String (dToday))) End_procedure { Visibility=Private } Procedure Show_Date_Format Integer iDateFormat String sDateFormat Get_Attribute DF_DATE_FORMAT to iDateFormat Case Begin Case (iDateFormat = DF_DATE_USA) Move C_$USA To sDateFormat Case Break Case (iDateFormat = DF_DATE_EUROPEAN) Move C_$European To sDateFormat Case Break Case (iDateFormat = DF_DATE_MILITARY) Move C_$Military To sDateFormat Case Break Case Else Move C_$UnknownDateType To sDateFormat Case Break Case End Send AppendTextLn (SFormat (C_$DateFormat, sDateformat)) End_Procedure { Visibility=Private } // 2013-08-14 NGS // Unformatted numeric values shown doesn't look good. These looks much better. Procedure Show_Systemresources tWinMemoryStatusEx MemoryStatusInfo Integer iRetval Number nValue String sValue Move (SizeOfType (tWinMemoryStatusEx)) to MemoryStatusInfo.dwLength Move (GlobalMemoryStatusEx (AddressOf (MemoryStatusInfo))) to iRetval If (iRetval = 0) Begin Move (ShowLastError ()) to iRetval Procedure_Return End Send AppendTextLn "" Move MemoryStatusInfo.ullTotalPhys to nValue // Show memory in Gigabytes: Move (nValue/1024/1024/1024) to nValue Move (Round(nValue)) to nValue Get FormatNumber nValue 2 to sValue Send AppendTextLn (SFormat (C_$AvailableMemory, (sValue * "GB"))) Send AppendTextLn (SFormat (C_$MemoryUtilization, String(MemoryStatusInfo.dwMemoryLoad) * "%")) // Send AppendTextLn (SFormat (C_$AvailablePhysicalMemory, Real (MemoryStatusInfo.ullAvailPhys) / Real (MemoryStatusInfo.ullTotalPhys) * 100.0)) Move (Real(MemoryStatusInfo.ullAvailPhys) / Real(MemoryStatusInfo.ullTotalPhys) * 100.0) to nValue Move (Round(nValue)) to nValue Get FormatNumber nValue 0 to sValue Send AppendTextLn (SFormat (C_$AvailablePhysicalMemory, (sValue * "%"))) // Send AppendTextLn (SFormat (C_$AvailablePagefileSpace, Real (MemoryStatusInfo.ullAvailPageFile) / Real (MemoryStatusInfo.ullTotalPageFile) * 100.0)) Move (Real(MemoryStatusInfo.ullAvailPageFile) / Real(MemoryStatusInfo.ullTotalPageFile) * 100.0) to nValue Move (Round(nValue)) to nValue Get FormatNumber nValue 0 to sValue Send AppendTextLn (SFormat (C_$AvailablePagefileSpace, (sValue * "%"))) // Send AppendTextLn (SFormat (C_$AvailableVirtualMemory, Real (MemoryStatusInfo.ullAvailVirtual) / Real (MemoryStatusInfo.ullTotalVirtual) * 100.0)) Move (Real(MemoryStatusInfo.ullAvailVirtual) / Real(MemoryStatusInfo.ullTotalVirtual) * 100.0) to nValue Move (Round(nValue)) to nValue Get FormatNumber nValue 0 to sValue Send AppendTextLn (SFormat (C_$AvailableVirtualMemory, (sValue * "%"))) // Add an empty row after the memory information: Send AppendTextLn "" End_Procedure { Visibility=Private } Procedure Show_Registration String sRegName Integer iSN iUsersMax iUserCount Registration sRegName iSN Get_Licensed_Max_Users to iUsersMax Get_Current_User_Count to iUserCount Send AppendTextLn (SFormat (C_$Serial, iSN)) Send AppendTextLn (SFormat (C_$RegName, sRegName)) Send AppendTextLn (SFormat (C_$Current_User_Count, iUserCount)) Send AppendTextLn (SFormat (C_$Max_Licensed_User_Count, iUsersMax)) End_Procedure //**************************************************************************** // If workspaces are used, we will send the message EnumerateWorkspaceData // To the workspace object passing the an object and message To send back // To this object. It is expected that the workspace object will send this // message for every line Of information it wants displayed (passing the // information To be displayed //**************************************************************************** Register_Procedure EnumerateWorkspaceData Integer hObjId Integer hmMessId { Visibility=Private } Procedure Show_ServicePack String sKey sVersion sDataFlex Handle hoRegistry Boolean bExists bOpened #IF (!@ < 180) Move "Visual DataFlex" to sDataFlex #ELSE Move "DataFlex" to sDataFlex #ENDIF Get Create U_cRegistry to hoRegistry Set phRootKey of hoRegistry to HKEY_LOCAL_MACHINE Set pfAccessRights of hoRegistry to KEY_READ Get KeyExists of hoRegistry "SOFTWARE\Wow6432Node" to bExists If (bExists) Begin Move ("SOFTWARE\Wow6432Node\Data Access Worldwide\" + sDataFlex + "\" + SysConf (SYSCONF_DATAFLEX_REV)) to sKey End Else Begin Move ("SOFTWARE\Data Access Worldwide\" + sDataFlex + "\" + SysConf (SYSCONF_DATAFLEX_REV)) to sKey End Get KeyExists of hoRegistry sKey to bExists If (bExists) Begin Get OpenKey of hoRegistry sKey to bOpened If (bOpened) Begin Get ValueExists of hoRegistry "CurrentVersionDescription" to bExists If (bExists) Begin Get ReadString of hoRegistry "CurrentVersionDescription" to sVersion End Send CloseKey of hoRegistry End End Send Destroy of hoRegistry If (sVersion <> "") Begin Send AppendTextLn sVersion Send AppendTextLn "" End End_Procedure { Visibility=Private } Procedure Show_WorkspaceInformation Integer hoWorkspace If (ghoApplication <> 0) Begin Get phoWorkspace of ghoApplication to hoWorkspace If (hoWorkspace <> 0) Begin Send EnumerateWorkspaceData of hoWorkspace Self msg_AppendTextLn End End End_Procedure #IF (!@ >= 190) //**************************************************************************** // If connection ids are used, we will send the message EnumerateConnections // to the connection manager object passing the an object and message to send // back to this object. It is expected that the connection manager object will // send this message for every line Of information it wants displayed (passing // the information To be displayed //**************************************************************************** Register_Procedure EnumerateConnections Integer hObjId Integer hmMessId { Visibility=Private } Procedure Show_ConnectionIdInformation If (ghoConnection > 0) Begin Send EnumerateConnections of ghoConnection Self (RefProc(AppendTextLn)) Send AppendTextLn "" End End_Procedure #ENDIF { Visibility=Private } Function VersionStr Integer iVer Integer iRev Integer iBld Returns String Function_Return (String (iVer) - "." - String (iRev) - "." - String (iBld)) End_Function { Visibility=Private } Procedure Show_Versions Integer iVersion iRevision iBuild Version_information iVersion iRevision iBuild Send AppendTextLn (SFormat (C_$RuntimeVersion, VersionStr(self,iVersion,iRevision,iBuild) )) Send AppendTextLn (SFormat (C_$PackageVersion, VersionStr(self,PKG_VERSION, PKG_REVISION, PKG_BUILD) )) Send AppendTextLn (SFormat (C_$FMACVersion, VersionStr(self,FMAC_VERSION, FMAC_REVISION, FMAC_BUILD) )) End_Procedure Function IsDAWSQLDriver String sDriverID Returns Boolean Boolean bOK Move (sDriverID = MSSQLDRV_ID or sDriverID = DB2_DRV_ID or sDriverID = ODBC_DRV_ID) to bOK Function_Return bOK End_Function Function IsMertechDriver String sDriverID Returns Boolean Boolean bOK #IFDEF DUF_Use_Mertech_Drivers Move (sDriverID = SQLFLEX or sDriverID = ORAFLEX or sDriverID = MDSPgSQL or sDriverID = MySQLFlex) to bOK #ENDIF Function_Return bOK End_Function //*** //*** BW //*** Procedure: Show_Drivers //*** Purpose : Show loaded database drivers //*** { Visibility=Private } #IF (Required_FMAC_Build > 106) #warning -3 #ENDIF Procedure Show_Drivers String sDriverID sVersion sClient sValue Integer iNumberOfDrivers iDriver iClient iUsersMax iSerialNo iNumServers iCount Handle hoCLIHandler hoBtrvHandler Boolean bStudioLicense bIsDAWDriver bIsMertechDriver Move False to bStudioLicense Get Create U_cCLIHandler to hoCLIHandler Get Create U_cDFBtrDrvHandler to hoBtrvHandler // For testing purposes: // Send Ignore_Error of Error_Object_Id DFERR_CANT_LOAD_DLL // Load_Driver MSSQLDRV_ID // Load_Driver ODBC_DRV_ID // Load_Driver DB2_DRV_ID // Send Trap_Error of Error_Object_Id DFERR_CANT_LOAD_DLL // // #IFDEF DUF_Use_Mertech_Drivers // Send Ignore_Error of Error_Object_Id DFERR_CANT_LOAD_DLL // Load_Driver SQLFLEX // Load_Driver MDSPgSQL // Load_Driver MDSMySQL // Load_Driver ORAFLEX // Send Trap_Error of Error_Object_Id DFERR_CANT_LOAD_DLL // #ENDIF Move False to Err // Loop through all loaded drivers. Get_Attribute DF_NUMBER_DRIVERS to iNumberOfDrivers If (iNumberOfDrivers > 1) Begin Send AppendTextLn "" End For iDriver from 1 to iNumberOfDrivers // For some weird reason it can happen that - when using Mertech drivers - that the driver index // was increased in the CLI array, but it has no value. In that case a "Bad parameter..." error // would be thrown, so we safeguard from that here. Send Ignore_Error of Error_Object_Id DFERR_BAD_PARAMETER Get_Attribute DF_DRIVER_NAME of iDriver to sDriverID Send Trap_Error of Error_Object_Id DFERR_BAD_PARAMETER Get IsDAWSQLDriver sDriverID to bIsDAWDriver Get IsMertechDriver sDriverID to bIsMertechDriver If (sDriverID = DFBTRDRV_ID or bIsDAWDriver = True or bIsMertechDriver = True) Begin // Pervasive/Btrieve database If (sDriverID = DFBTRDRV_ID) Begin Get CKRevision of hoBtrvHandler to sVersion Get PSQLLocalEngineVersionInfo of hoBtrvHandler 0 to sClient If (sClient <> "0.0.0") Begin Send AppendTextLn (SFormat (C_$Pervasive_Local_Engine_Version, sClient)) End Get PSQLServerEngineVersionInfo of hoBtrvHandler 0 to sClient If (sClient <> "0.0.0") Begin Send AppendTextLn (SFormat (C_$Pervasive_Server_Engine_Version, sClient)) End End Else Begin Set psDriverID of hoCLIHandler to sDriverID Move 0 to iNumServers If (sDriverID <> DATAFLEX_ID) Begin Get_Attribute DF_DRIVER_NUMBER_SERVERS of iDriver to iNumServers End If (bIsDAWDriver = True) Begin If (sDriverID = MSSQLDRV_ID) Begin // This info is only available for the MS SQL driver: Get_Attribute DF_DRIVER_SQLSERVER_CLIENT_VERSION of iDriver to iClient If (iClient = 13) Begin Move C_$SQLSERVER2016DRVRSTR to sClient End If (iClient = 12) Begin Move C_$SQLSERVER2014DRVRSTR to sClient End If (iClient = 11) Begin Move C_$SQL_Server_Native_Client_11_0 to sClient End If (iClient = 10) Begin Move C_$SQL_Server_Native_Client_10_0 to sClient End If (iClient = 9) Begin Move C_$SQL_Native_Client to sClient End If (iClient = 8) Begin Move C_$SQL_Server_SQL_Server_2000_client to sClient End If (sClient <> "") Begin Move (" " + sClient) to sClient End End Get CKRevision of hoCLIHandler to sVersion End If (bIsMertechDriver = True) Begin #IFDEF DUF_Use_Mertech_Drivers GET_DRIVER_REVISION to sVersion #ENDIF End // If the serialnumber is = 0, it means that the // Studio licens is in use and there is no // number of max users defined because the driver is // relying on the info from the VDF license. If (bStudioLicense = False) Begin Get SerialNumber of hoCLIHandler to iSerialNo Move (iSerialNo = 0) to bStudioLicense End End Send AppendTextLn (SFormat (C_$DatabaseDriver, (sDriverID * "-" * (C_$Version + ": " + sVersion)))) If (iNumServers <> 0) Begin For iCount from 1 to iNumServers Get_Attribute DF_DRIVER_SERVER_NAME of iDriver iCount to sValue Send AppendTextLn (" " + "Server/DSN:" * sValue) Loop End If (sClient <> "" and sDriverID = MSSQLDRV_ID) Begin Send AppendTextLn sClient End End Loop Send AppendTextLn "" If (bStudioLicense = False) Begin Get MaxUsers of hoCLIHandler to iUsersMax Send AppendTextLn (SFormat (C_$Max_DbDriver_Licensed_User_Count, iUsersMax)) End Else Begin Send AppendTextLn C_$VDF_Studio_License_Text End Send Destroy of hoCLIHandler Send Destroy of hoBtrvHandler End_Procedure { Visibility=Private } Procedure Show_HelpFile String sHelpFile Integer eHelpType If (ghoApplication <> 0) Begin Get peHelpType Of ghoApplication To eHelpType If (eHelpType = htHtmlHelp and ghoHtmlHelp) Begin Get GetHelpFile Of ghoHtmlHelp To sHelpFile End Else If (eHelpType = htWinHelp and Help_object_id) Begin Get Help_filename Of Help_object_id To sHelpFile End Else Begin Move C_$ThereIsNoHelpfileDefined To sHelpFile End Send AppendTextLn (SFormat (C_$HelpFile, sHelpFile)) End End_Procedure { Visibility=Private } Procedure Show_EnterAsTab Boolean bEnterKeyAsTabKey String sText If (ghoApplication <> 0) Begin Get pbEnterKeyAsTabKey Of ghoApplication To bEnterKeyAsTabKey If (bEnterKeyAsTabKey) Begin Move "True" To sText End Else Begin Move "False" To sText End Send AppendTextLn (SFormat (C_$EnterKeyNavForward, sText)) End End_Procedure //**************************************************************************** // $Module type: PROCEDURE // $Module name: Add_Focus // $Author : VOO // Created : 24-09-96 @ 19:43 // // Description // During activation we will remove the old information and add the newly // found systeminformation // // $Rev History // 24-09-96 Module header created //**************************************************************************** { Visibility=Private } Procedure Add_Focus Integer hoRoot Forward Send Add_Focus hoRoot Send Delete_Data Set Changed_State To False Set Read_Only_State To True Send Show_Registration Send Show_Drivers Send AppendTextLn "" Send Show_ServicePack If (ghoApplication <> 0) Begin Send Show_WorkSpaceInformation Send Show_HelpFile Send AppendTextLn "" End Else Begin Send AppendTextLn "" End #IF (!@ >= 190) If (ghoConnection <> 0) Begin Send Show_ConnectionIdInformation End #ENDIF Send Show_Current_User Send Show_Windows_Directory Send Show_Current_Directory // This is already shown in the workspace details, // unless no workspace object is present: If (ghoApplication = 0) Begin Send Show_Filelist_Name End If (ghoApplication <> 0) Begin Send AppendTextLn "" Send Show_EnterAsTab End Send Show_Versions Send Show_Screen_Size Send Show_Page_Size Send Show_Number_Format Send Show_Date_Format Send Show_Lock_Delay Send Show_Lock_Timeout Send Show_Date Send Show_Systemresources Send Beginning_of_Data Set Icon to 'default.ico' End_Procedure End_Class //**************************************************************************** // $Module type: OBJECT // $Module name: Sysinfo_Dialog // $Author : VOO // Created : 24-09-96 @ 18:47 // // Description // This object shows the systeminformation on the screen // // $Rev History // 24-09-96 Module header created //**************************************************************************** { Visibility=Private } Class SysInfoDialog is a ModalPanel Procedure Construct_Object Forward Send Construct_Object Set Label to C_$SystemInformation Set Size to 140 267 Set Locate_Mode to CENTER_ON_PARENT Set Border_Style to Border_Thick Set Sysmenu_Icon to False // "+1" will make the panel to paint correctly. Set piMinSize to (Hi(Size(Self))) (Low(Size(Self)) +1) // 2014-09-14 NGS // Added a container object around the cTexteditor // object to get a border around the text. Object oSysinfoDisplayContainer is a Container3d Set Location to 2 4 Set Size to 110 255 Set Border_Style to Border_ClientEdge Set Color to clWhite Set peAnchors to anAll Object oSysinfoDisplay is a SysInfoDisplay End_Object End_Object Object oCloseButton is a Button Set Label to C_$Close Set Location to 120 210 Set Message item 0 to msg_Close_Panel Set Default_State To True // In case someone likes to make the AboutDialog's Border_Style to thick, // and changes its peAnchors, we might as well prepare this object // for that situation. Set peAnchors to anBottomRight End_Object Object oCopyButton is a cCopyEditorContentButton On_Item C_$Copy Send CopyToWindowsClipboard Set Size to 14 50 Set Location to 120 158 // In case someone wants to set the AboutDialog's Border_Style to thick, // we might as well prepare the object for it. Set peAnchors to anBottomRight Set phoEditorHandle to (oSysinfoDisplay(Self)) End_Object On_Key kCancel Send Close_Panel End_Procedure Procedure Page Integer iPageObject Handle hMenu Integer iPrevState Forward Send Page iPageObject // Ok, this seems to have been fixed in VDF 17.1! // #IF (!@ < 170) // Shadow upper left corner menu items: (icon menu items) Move (GetSystemMenu(Window_Handle(Self), False)) to hMenu Move (EnableMenuItem(hMenu, SC_RESTORE, MF_BYCOMMAND ior MF_GRAYED)) to iPrevState // The "Move" menu command may come in handy to have. // Move (EnableMenuItem(hMenu, SC_MOVE, MF_BYCOMMAND ior MF_GRAYED)) to iPrevState Move (EnableMenuItem(hMenu, SC_SIZE, MF_BYCOMMAND ior MF_GRAYED)) to iPrevState Move (EnableMenuItem(hMenu, SC_MINIMIZE, MF_BYCOMMAND ior MF_GRAYED)) to iPrevState Move (EnableMenuItem(hMenu, SC_MAXIMIZE, MF_BYCOMMAND ior MF_GRAYED)) to iPrevState // The "Close" menu command may be good to have. // Move (EnableMenuItem(hMenu, SC_CLOSE, MF_BYCOMMAND ior MF_GRAYED)) to iPrevState #ENDIF End_Procedure End_Class Class cAboutEdit is an cRichEdit Procedure Construct_Object Forward Send Construct_Object Set Size to 77 153 Set Location to 8 60 Set Read_Only_State to True Set Skip_State to True // Font size is calculated in "Twips", which are 1/1440 of an inch, // or 1/20 of a printer's point. // Set piFontSize to (9 * 20) Set piRightMargin to (0.1 * 1440) Set Border_Style to Border_None End_Procedure // Adds a line of text to the edit object Procedure Add_Line String sVal String sText Address aAddress Get paValue to aAddress Move aAddress to sText Move (sText + String(sVal)) to sVal Move (AddressOf(sVal)) to aAddress Set paValue to aAddress End_Procedure // Compared to Add_Line above, this adds an extra empty line after the passed value. // Note that we use the paValue interface, // because the object isn't paged yet when we add the // values and the COM edit object needs to be paged // for the "Set Value" interface to be used. Procedure Add_LineLn String sVal String sText Address aAddress Get paValue to aAddress Move aAddress to sText Move (sText + String(sVal) + Character(10) + Character(13)) to sVal Move (AddressOf(sVal)) to aAddress Set paValue to aAddress End_Procedure Procedure OnLinkClicked Integer iPositionStart Integer iPositionEnd String sLinkText Get TextRange iPositionStart iPositionEnd to sLinkText Send Show_HomePage sLinkText End_Procedure End_Class // Purpose: // // Ken Ross 12/17/96 5:16PM // { OverrideProperty=StatusBar_Id DesignTime=False } { OverrideProperty=ToolBar_Id DesignTime=False } { HelpTopic=AboutDialog } Class AboutDialog is a ModalPanel Procedure Construct_Object Forward Send Construct_Object Set Label to C_$About Set Size to 116 230 Set Locate_Mode To CENTER_ON_PARENT Set piMinSize to (Hi(Size(Self))) (Low(Size(Self))) // Set Sysmenu_Icon to True Object oSysInfoDialog is a SysInfoDialog End_Object Object oBox is a Container3d Set Border_Style to Border_Normal Set Size to 90 220 Set Location to 4 5 Set Color to clWhite // In case someone wants to set the AboutDialog's Border_Style to thick, // we might as well prepare the object for it. Set peAnchors to anAll Object oAboutGraphic is a BitmapContainer Set Border_Style To Border_None Set Bitmap_Style to Bitmap_Center Set Color to clWhite Set Size to 45 50 Set Location to 0 3 End_Object Object oPoweredByVDFGraphic is a cBitmapContainerVDFLink Set Border_Style to Border_None Set Bitmap_Style to Bitmap_Center Set Color to clWhite Set Size to 30 55 //28 50 Set Location to 44 3 End_Object Object oInfoList_Editor is an cAboutEdit // In case someone wants to set the AboutDialog's Border_Style to thick, // we might as well prepare the object for it. Set peAnchors to anAll End_Object // These objects are here for backwards compatability only. // They are not used. Object oProductName is a TextBox Set Label To C_$ProductName Set Size To 10 45 Set Location To 8 53 Set Visible_State to False Set Focus_Mode to NonFocusable End_Object Object oVersion is a TextBox Set Label To C_$Version Set Size To 10 25 Set Location To 21 53 Set Visible_State to False Set Focus_Mode to NonFocusable End_Object Object oCopyright is a TextBox Set Label To C_$Copyright Set Size To 10 31 Set Location To 34 53 Set Visible_State to False Set Focus_Mode to NonFocusable End_Object Object oAuthor is a TextBox Set Label To C_$Author Set Size To 10 22 Set Location To 46 53 Set Visible_State to False Set Focus_Mode to NonFocusable End_Object End_Object Object oOKButton Is A Button On_Item C_$Close Send Close_Panel Set Location to 98 176 // In case someone wants to set the AboutDialog's Border_Style to thick, // we might as well prepare the object for it. Set peAnchors to anBottomRight End_Object Object oSysInfoButton Is A Button On_Item C_$SystemInfo Send Show_Sysinfo Set Location to 98 123 // In case someone wants to set the AboutDialog's Border_Style to thick, // we might as well prepare the object for it. Set peAnchors to anBottomRight End_Object Object oCopyButton is a cCopyEditorContentButton On_Item C_$Copy Send CopyToWindowsClipboard Set Size to 14 50 Set Location to 98 70 // In case someone wants to set the AboutDialog's Border_Style to thick, // we might as well prepare the object for it. Set peAnchors to anBottomRight Set phoEditorHandle to (oInfoList_Editor(Self)) End_Object On_Key Kcancel Send KeyAction of oOKButton Set Logo to "DacAbout.bmp" // Square bitmaps of 80x80 work best Set LogoVDF to "PoweredByOrange.bmp" End_Procedure Procedure Page Integer iPageObject Handle hMenu Integer iPrevState Forward Send Page iPageObject // Due to a bug in the ModalPanel class, we need to set the icon here: // Set Icon to "ActionAbout.ico" // Shadow upper left corner menu items: (icon menu items) Move (GetSystemMenu(Window_Handle(Self), False)) to hMenu Move (EnableMenuItem(hMenu, SC_RESTORE, MF_BYCOMMAND ior MF_GRAYED)) to iPrevState // The "Move" menu command may come in handy to have. // Move (EnableMenuItem(hMenu, SC_MOVE, MF_BYCOMMAND ior MF_GRAYED)) to iPrevState Move (EnableMenuItem(hMenu, SC_SIZE, MF_BYCOMMAND ior MF_GRAYED)) to iPrevState Move (EnableMenuItem(hMenu, SC_MINIMIZE, MF_BYCOMMAND ior MF_GRAYED)) to iPrevState Move (EnableMenuItem(hMenu, SC_MAXIMIZE, MF_BYCOMMAND ior MF_GRAYED)) to iPrevState // The "Close" menu command may be good to have. // Move (EnableMenuItem(hMenu, SC_CLOSE, MF_BYCOMMAND ior MF_GRAYED)) to iPrevState End_Procedure { MethodType=Property } Procedure Set ProductName String sText Set Value of oProductName to sText End_Procedure { MethodType=Property } Procedure Set Copyright String sText Set Value of oCopyright to sText End_Procedure { MethodType=Property } Procedure Set Author String sText Set Value of oAuthor to sText End_Procedure { MethodType=Property } Procedure Set Version String sVersion Handle hoVersionInfo Boolean bIncluded Integer iMajor iMinor iRelease iBuild Date dCompileDate If (sVersion = "") Begin // This automatically shows the program version of the program, if available. // It will be displayed as the second item in the edit object. If (ghoApplication <> 0) Begin Get phoVersionInfo of ghoApplication to hoVersionInfo If (hoVersionInfo <> 0) Begin Get pbIncluded of hoVersionInfo to bIncluded If (bIncluded) Begin Get piVersionMajor of hoVersionInfo to iMajor Get piVersionMinor of hoVersionInfo to iMinor Get piVersionRelease of hoVersionInfo to iRelease Get piVersionBuild of hoVersionInfo to iBuild Move (SFormat (C_$VERSION + ": %1.%2.%3.%4", iMajor, iMinor, iRelease, iBuild)) to sVersion End End End End // Display the compiled date as the next row in the edit object, after the program version. Get GetCompileDate to dCompileDate If (sVersion <> "") Begin Send Add_Lineln (sVersion + (Character(13)) + C_$Compile_Date * String(dCompileDate)) End End_Procedure Function GetCompileDate Returns Date Date dCompileDate String sAppFilename sProgram sData sCompileDate Integer iChannel iPos iDateFormat iCount iSize // Get full path to the current running executable Get GetApplicationFileName of ghoApplication to sAppFilename Get GetApplicationName of ghoApplication to sProgram //Read the current file up to where the data we're interesting in is (this was hand calced and so could vary) Get Seq_Open_Input_Channel ("binary:" * sAppFilename) to iChannel Read_Block channel iChannel sData (8 * 1024) // First 8K is .exe header skip it Read_Block channel iChannel sData 75 // The compile information we're interested in // The data is padded with Character(0)s. Strip them out Move (CString(sData)) to sData // The compile date is after the first ", ", so string parsing is required Move (Pos(", ", sData)) to iPos Move (Mid(sData, 10, (iPos + 2) )) to sCompileDate // In US format // If the current date format is non US, we need to temporary // change the format and then move the string to the date variable. Get_Attribute DF_DATE_FORMAT to iDateFormat Set_Attribute DF_DATE_FORMAT to DF_DATE_USA Move (Date(sCompileDate)) to dCompileDate // As of DataFlex 19.1 the header has changed; and so has the compile date location. // It seems to me that the position for the compilation date can vary. So we read line-by-line // until we encounter the program name that appears just in front of the compile date. // Although I'm not sure about if/how the position varies, the below seems to work just fine. If (dCompileDate = 0) Begin Move 500 to iSize For iCount from 1 to iSize Readln channel iChannel sData Move (Pos(sProgram, sData)) to iPos If (iPos <> 0) Begin Move (Mid(sData, 10, (iPos + (Length(sProgram) + 3)))) to sCompileDate Move (Trim(sCompileDate)) to sCompileDate Move iSize to iCount // We're out of here. End Loop Move (Date(sCompileDate)) to dCompileDate End Send Seq_Close_Channel iChannel Set_Attribute DF_DATE_FORMAT to iDateFormat // Reset date format Function_Return dCompileDate End_Function Procedure Add_LineLn String sValue Send Add_LineLn of oInfoList_Editor sValue End_Procedure Procedure Add_Line String sValue Send Add_Line of oInfoList_Editor sValue End_Procedure { MethodType=Property } Procedure Set Logo string sLogo // Square bitmaps of 80x80 work best Set Bitmap of oAboutGraphic to sLogo End_Procedure { MethodType=Property } Procedure Set LogoVDF String sLogo Set Bitmap of oPoweredByVDFGraphic to sLogo End_Procedure { Visibility=Private } Procedure Show_Sysinfo Send Popup_Modal of oSysinfoDialog End_Procedure { Visibility=Private } Procedure Show_HomePage String sWebpage Handle hWnd Get Window_Handle to hWnd Send vShellExecute hWnd "open" (Trim(sWebpage)) "" "" End_Procedure // Procedure End_Construct_Object // Handle hoVersionInfo // Boolean bIncluded // Integer iMajor iMinor iRelease iBuild // String sLabel sVersion // // If (sVersion = "") Begin // // This automatically shows the program version of the program, if available. // // It will be displayed as the last item in the edit object. // If (ghoApplication <> 0) Begin // Get phoVersionInfo of ghoApplication to hoVersionInfo // If (hoVersionInfo <> 0) Begin // Get pbIncluded of hoVersionInfo to bIncluded // If (bIncluded) Begin // Get piVersionMajor of hoVersionInfo to iMajor // Get piVersionMinor of hoVersionInfo to iMinor // Get piVersionRelease of hoVersionInfo to iRelease // Get piVersionBuild of hoVersionInfo to iBuild // Move (SFormat (C_$VERSION + ": %1.%2.%3.%4", iMajor, iMinor, iRelease, iBuild)) to sLabel // Set Version to sLabel // End // End // End // End // // Forward Send End_Construct_Object // End_Procedure End_Class