Vim documentation: usr_31
main help file*usr_31.txt* For Vim version 7.2. Last change: 2007 May 08 VIM USER MANUAL - by Bram Moolenaar Exploiting the GUI Vim works well in a terminal, but the GUI has a few extra items. A file browser can be used for commands that use a file. A dialog to make a choice between alternatives. Use keyboard shortcuts to access menu items quickly. |31.1| The file browser |31.2| Confirmation |31.3| Menu shortcuts |31.4| Vim window position and size |31.5| Various Next chapter: |usr_32.txt| The undo tree Previous chapter: |usr_30.txt| Editing programs Table of contents: |usr_toc.txt|
*31.1* The file browser When using the File/Open... menu you get a file browser. This makes it easier to find the file you want to edit. But what if you want to split a window to edit another file? There is no menu entry for this. You could first use Window/Split and then File/Open..., but that's more work. Since you are typing most commands in Vim, opening the file browser with a typed command is possible as well. To make the split command use the file browser, prepend "browse": :browse split Select a file and then the ":split" command will be executed with it. If you cancel the file dialog nothing happens, the window isn't split. You can also specify a file name argument. This is used to tell the file browser where to start. Example: :browse split /etc The file browser will pop up, starting in the directory "/etc". The ":browse" command can be prepended to just about any command that opens a file. If no directory is specified, Vim will decide where to start the file browser. By default it uses the same directory as the last time. Thus when you used ":browse split" and selected a file in "/usr/local/share", the next time you use a ":browse" it will start in "/usr/local/share" again. This can be changed with the 'browsedir' option. It can have one of three values: last Use the last directory browsed (default) buffer Use the same directory as the current buffer current use the current directory For example, when you are in the directory "/usr", editing the file "/usr/local/share/readme", then the command: :set browsedir=buffer :browse edit Will start the browser in "/usr/local/share". Alternatively: :set browsedir=current :browse edit Will start the browser in "/usr". Note: To avoid using the mouse, most file browsers offer using key presses to navigate. Since this is different for every system, it is not explained here. Vim uses a standard browser when possible, your system documentation should contain an explanation on the keyboard shortcuts somewhere. When you are not using the GUI version, you could use the file explorer window to select files like in a file browser. However, this doesn't work for the ":browse" command. See |netrw-browse|.
*31.2* Confirmation Vim protects you from accidentally overwriting a file and other ways to lose changes. If you do something that might be a bad thing to do, Vim produces an error message and suggests appending ! if you really want to do it. To avoid retyping the command with the !, you can make Vim give you a dialog. You can then press "OK" or "Cancel" to tell Vim what you want. For example, you are editing a file and made changes to it. You start editing another file with: :confirm edit foo.txt Vim will pop up a dialog that looks something like this: +-----------------------------------+ | | | ? Save changes to "bar.txt"? | | | | YES NO CANCEL | +-----------------------------------+ Now make your choice. If you do want to save the changes, select "YES". If you want to lose the changes for ever: "NO". If you forgot what you were doing and want to check what really changed use "CANCEL". You will be back in the same file, with the changes still there. Just like ":browse", the ":confirm" command can be prepended to most commands that edit another file. They can also be combined: :confirm browse edit This will produce a dialog when the current buffer was changed. Then it will pop up a file browser to select the file to edit. Note: In the dialog you can use the keyboard to select the choice. Typically the <Tab> key and the cursor keys change the choice. Pressing <Enter> selects the choice. This depends on the system though. When you are not using the GUI, the ":confirm" command works as well. Instead of popping up a dialog, Vim will print the message at the bottom of the Vim window and ask you to press a key to make a choice. :confirm edit main.c Save changes to "Untitled"? [Y]es, (N)o, (C)ancel: You can now press the single key for the choice. You don't have to press <Enter>, unlike other typing on the command line.
*31.3* Menu shortcuts The keyboard is used for all Vim commands. The menus provide a simple way to select commands, without knowing what they are called. But you have to move your hand from the keyboard and grab the mouse. Menus can often be selected with keys as well. This depends on your system, but most often it works this way. Use the <Alt> key in combination with the underlined letter of a menu. For example, <A-w> (<Alt> and w) pops up the Window menu. In the Window menu, the "split" item has the p underlined. To select it, let go of the <Alt> key and press p. After the first selection of a menu with the <Alt> key, you can use the cursor keys to move through the menus. <Right> selects a submenu and <left> closes it. <Esc> also closes a menu. <Enter> selects a menu item. There is a conflict between using the <Alt> key to select menu items, and using <Alt> key combinations for mappings. The 'winaltkeys' option tells Vim what it should do with the <Alt> key. The default value "menu" is the smart choice: If the key combination is a menu shortcut it can't be mapped. All other keys are available for mapping. The value "no" doesn't use any <Alt> keys for the menus. Thus you must use the mouse for the menus, and all <Alt> keys can be mapped. The value "yes" means that Vim will use any <Alt> keys for the menus. Some <Alt> key combinations may also do other things than selecting a menu.
*31.4* Vim window position and size To see the current Vim window position on the screen use: :winpos This will only work in the GUI. The output may look like this: Window position: X 272, Y 103 The position is given in screen pixels. Now you can use the numbers to move Vim somewhere else. For example, to move it to the left a hundred pixels: :winpos 172 103 Note: There may be a small offset between the reported position and where the window moves. This is because of the border around the window. This is added by the window manager. You can use this command in your startup script to position the window at a specific position. The size of the Vim window is computed in characters. Thus this depends on the size of the font being used. You can see the current size with this command: :set lines columns To change the size set the 'lines' and/or 'columns' options to a new value: :set lines=50 :set columns=80 Obtaining the size works in a terminal just like in the GUI. Setting the size is not possible in most terminals. You can start the X-Windows version of gvim with an argument to specify the size and position of the window: gvim -geometry {width}x{height}+{x_offset}+{y_offset} {width} and {height} are in characters, {x_offset} and {y_offset} are in pixels. Example: gvim -geometry 80x25+100+300
*31.5* Various You can use gvim to edit an e-mail message. In your e-mail program you must select gvim to be the editor for messages. When you try that, you will see that it doesn't work: The mail program thinks that editing is finished, while gvim is still running! What happens is that gvim disconnects from the shell it was started in. That is fine when you start gvim in a terminal, so that you can do other work in that terminal. But when you really want to wait for gvim to finish, you must prevent it from disconnecting. The "-f" argument does this: gvim -f file.txt The "-f" stands for foreground. Now Vim will block the shell it was started in until you finish editing and exit. DELAYED START OF THE GUI On Unix it's possible to first start Vim in a terminal. That's useful if you do various tasks in the same shell. If you are editing a file and decide you want to use the GUI after all, you can start it with: :gui Vim will open the GUI window and no longer use the terminal. You can continue using the terminal for something else. The "-f" argument is used here to run the GUI in the foreground. You can also use ":gui -f". THE GVIM STARTUP FILE When gvim starts, it reads the gvimrc file. That's similar to the vimrc file used when starting Vim. The gvimrc file can be used for settings and commands that are only to be used when the GUI is going to be started. For example, you can set the 'lines' option to set a different window size: :set lines=55 You don't want to do this in a terminal, since it's size is fixed (except for an xterm that supports resizing). The gvimrc file is searched for in the same locations as the vimrc file. Normally its name is "~/.gvimrc" for Unix and "$VIM/_gvimrc" for MS-Windows. The $MYGVIMRC environment variable is set to it, thus you can use this command to edit the file, if you have one: :edit $MYGVIMRC If for some reason you don't want to use the normal gvimrc file, you can specify another one with the "-U" argument: gvim -U thisrc ... That allows starting gvim for different kinds of editing. You could set another font size, for example. To completely skip reading a gvimrc file: gvim -U NONE ...
Next chapter: |usr_32.txt| The undo tree Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: top - main help file


14 March 2000
Disease Outbreak Reported
The diagnosis of Lassa fever in a 50 year old British national who had been working for the peacekeeping effort in rural Sierra Leone has been confirmed by virological tests performed at the Enteric and Respiratory Virus Laboratory at the Central Public Health Laboratory, London.
The patient 's condition is reported to have improved slightly, but he remains seriously ill. Monitoring of close contacts is continuing, and will be carried out through the potential incubation period of the illness.
For further information, please see the previous report of this imported case.


Here you can configure how the names to be saved from Google meet.
For example : Suppose there is member named 'Pavan' but in sheet which will download you want it to be 'Roll.no + Name ' like '19-1204 Pavan', that can be configured here. Just enter Original name below and Alias which you want to be stored and Click 'Add'. You can even Edit, Delete those Aliases.


Apprenticeships have moved on from what they used to be and are an exciting option for both apprentice and employer. You can now employ apprentices at all different levels, from school leavers to people that want to further their careers or change career direction completely. An apprentice can be aged 16 or 100 plus!
As an employer, you can get additional help with funding an apprentice from the government.
The benefits to your business
Hiring an apprentice is a productive and effective way for any business to grow talent and develop a motivated, skilled and qualified workforce.
Employers who have an established apprenticeship programme reported that productivity in their workplace had improved by 76% whilst 75% reported that apprenticeships improved the quality of their product or service.
Other benefits that apprenticeships contribute to your business include:
- thousands of organisations are employing apprentices now
- 90% of apprentices stay on in their place of work after completing an apprenticeship
- there's a wide selection of apprenticeships available, covering lots of different job roles within a business
- you can adapt the training your apprentice receives according to the needs of your business
- an apprenticeship allows you to diversify and freshen up your workforce
- you can employ an apprentice who's 16 up to any age and from any background


jQuery.within jQuery.within
jQuery(el).within(left, top)
Helps to determine all elements that have a certain position or area in common by providing jQuery.fn.withinBox
and jQuery.fn.within
. The following example returns all div
elements on the point 200px left and 200px from the top:
$('div').within(200, 200)
Use $(el).withinBox(left, top, width, height)
to get all elements within a certain area:
$('*').withinBox(200, 200, 100, 100)
jQuery.event.drag uses $.within to determine dropable elements at the current position.
jQuery(el).withinBox(left, top, width, height)
Returns all elements matching the selector that have a given area in common: $('*').withinBox(200, 200, 100, 100)
### Example
Move the mouse in the following example and it will show the ids for div
elements within the current mouse position:
Parameters
-
left
{Number}
the position from the left of the page
-
top
{Number}
the position from the top of the page
-
width
{Number}
the width of the area
-
height
{Number}
the height of the area
-
useOffsetCache
=false
{Boolean}
Optionalcache the dimensions and offset of the elements.
Returns
{jQuery}
a jQuery collection of elements whos area overlaps the element position.


TriStateCheckbox is used to select either "true", "false" or "null" as the value.
TriStateCheckbox is defined using p-triStateCheckbox element and requires a value binding via ngModel.
TriStateCheckbox can be used in a model driven form as well.
| Name | Type | Default | Description |
|---|---|---|---|
| name | string | null | Name of the component. |
| label | string | null | Label of the checkbox. |
| disabled | boolean | false | When present, it specifies that the element should be disabled. |
| tabindex | number | null | Index of the element in tabbing order. |
| inputId | string | null | Identifier of the focus input to match a label defined for the component. |
| ariaLabelledBy | string | null | Establishes relationships between the component and label(s) where its value should be one or more element IDs. |
| style | object | null | Inline style of the component. |
| styleClass | string | null | Style class of the component. |
| readonly | boolean | false | When present, it specifies that the component cannot be edited. |
| checkboxTrueIcon | string | pi pi-check | Specifies the icon for checkbox true value. |
| checkboxFalseIcon | string | pi pi-times | Specifies the icon for checkbox false value. |
| Name | Parameters | Description |
|---|---|---|
| onChange | event.originalEvent: Original browser event event.value: Current value. |
Callback to invoke on value change. |
Following is the list of structural style classes, for theming classes visit theming page.
| Name | Element |
|---|---|
| p-chkbox | Container element |
| p-tristatechkbox | Container element |
| p-chkbox-box | Container of icon. |
| p-chkbox-icon | Icon element. |
None.


This week's goal was to build a web application that takes a user's birthday and calculates the day of the week they were born and then depending on their gender outputs their Akan Name.
Akan names are derived from Ghanian culture. Frequently in Ghana, children are given their first name as a 'day name' which corresponds to the day in the week they were born.
If you want to find out what your Akan name is, then fill in your details in the section below to find out.


Paulo Costa tweets, deletes attack on ‘p*ssy African’ Israel Adesanya
I think these guys would like to have a word with Mr. Costa.
by Jesse HollandMove over Jon Jones, there’s a new “tweet and delete” kid in town.
Ultimate Fighting Championship (UFC) middleweight title contender, Paulo Costa, probably thought he was talking tough when calling Israel Adesanya a “pussy African” on Twitter, until someone with some actual brains told him to delete it.
Ironically, “The Eraser” won’t be able to rub this out, because the Internet is forever.
Costa was expected to get the next crack at the 185-pound crown; however, bicep surgery sent him to the sidelines until further notice, prompting UFC to consider a showdown between Adesanya and longtime title contender, Yoel Romero.
Assuming that scenario plays out in early 2020, “The Eraser” will no doubt be in line for the winner, unless Jared Cannonier or Darren Till do something spectacular between now and then, which is a possibility when you consider this opportunity.
“The Last Stylebender” has yet to respond to this latest attack.


--- layout: page title: A Survey of VFP's International Features permalink: /intl-vfp/ ---
Many Visual FoxPro commands have international nuances. Keep these things in mind as you develop your international applications.
This section is a compendium of VFP's international features and dependencies. It is a long and detailed section, though fortunately many of the themes are recurring. Here is a short summary of the main themes found herein:
| The language of operating system services will vary with the localized language of the OS. |
|
| The language of native VFP services will vary with the localized language of VFP. |
|
| The language of some things in VFP cannot be controlled. |
|
| The language of third-party services cannot be predicted without experimentation. |
|
Here are a few things to keep in mind. These apply to many of the topics that follow.
| These "AS nCodePage" elements recur in many of the topics below, and they are listed here just once. Keep these factors in mind. |
|
Creates an array of information about the most recent VFP, OLE, or ODBC error.
| VFP errors vary with the localization language of VFP. | When a VFP error occurs, ArrayName[2] contains the text of the error message, which is the same as the value returned by MESSAGE() .
Internationalization Gotcha: This error message varies according to the localized version of VFP. |
| OLE error messages vary with the localization language of Windows. | When OLE errors numbered 1427 or 1429 occur, then ArrayName[2] contains the text of the VFP error message ("OLE Idispatch exception code"), and
ArrayName[3] contains the text of the OLE error message.
Internationalization Gotcha: The VFP error message varies with the localization of VFP, and the OLE error message usually varies with the localization of Windows. |
| ODBC error messages vary with the localized language of VFP. | Similarly, when an ODBC error numbered 1526 occurs, then ArrayName[2] contains the text of the VFP error message ("Connectivity error:"), and ArrayName[3]
contains the text of the ODBC error message.
Internationalization Gotcha: Both the VFP and ODBC error messages vary with the localization of VFP. |
| Obviously, you'll want to avoid passing AERROR() messages to the user unless you are sure that their workstation has the correct localized versions of Windows and VFP. |
AFIELDS()
places structural information about the current table into an array.
Of note to international developers is the following:
Internationalization Gotcha: ArrayName[6]
contains logical true if code page translation is not allowed. Think of this as a NOCPTRANS
flag for the field.
Internationalization Gotcha: ArrayName[8]
contains the field validation text, which will probably need to be localized.
Internationalization Tip: you can set the field validation text with DBSETPROP(cTableAlias,"Field","RuleText", cRuleText).
Internationalization Gotcha: ArrayName[11]
contains the table validation text, which will probably need to be localized.
Internationalization Tip: you can control the table validation text with DBSETPROP(cTableAlias,"Table","RuleText", cRuleText).
| ANSITOOEM() is for backward compatibility and for conversions with DOS. Use CPCONVERT() instead. | ANSITOOEM() converts each character of a character expression to the corresponding character in the ms-dos (oem) character set. ANSITOOEM() is
used to move data from VFP and FoxPro for Macintosh to FoxPro for ms-dos.
Internationalization Tip: this function is included for backward compatibility. Use |
| Specify the codepage of the new data when appending table data from other locales or platforms. | APPEND FROM adds records to the end of the currently selected table from another file.
Internationalization Gotcha: the optional |
If you omit AS nCodePage
, two things can happen:
SET CPDIALOG
is ON
, the table in the currently selected work area is marked with a code page. If you're appending from a table not marked with a code page, the Code Page dialog is displayed, allowing you to choose the code page
of the table from which you're appending. The current VFP code page can be determined with CPCURRENT( )
.APPEND MEMO
copies the contents of a disk file to a memo field.
Specify the codepage of the new data when appendingmemo field data from other locales or platforms.
APPEND PROCEDURES
appends stored procedures in a text file to the stored procedures snippet of the current database.
| Specify the codepage of the new data when appending DBC procedure code from other locales or platforms | Internationalization Gotcha: AS nCodePage specifies the code page of the text file from which the stored procedures are appended. VFP copies the contents of the text
file, and, as it does so, automatically converts the contents of the text file to the code page you specify |
If you omit AS nCodePage
, VFP copies the contents of the text file from which the stored procedures are appended, and, as it does so, automatically converts the contents of the text file to the current VFP code page.
The current VFP code page can be determined with CPCURRENT( )
.
AT_C() is similar to AT(), but works with single and double-byte characters.
ATCC() is like ATC(), and works with single and double-byte characters.
| There is no ATCLINEC() function in VFP as one might expect. | ATCLINE() returns the line number of the first occurrence of a character expression or memo field within another character expression or memo field, without regard for the case (upper or lower) of the characters in either
expression.
Internationalization Tip: |
| There is no ATLINEC() function in VFP as one might expect. | ATLINE() returns the line number of the first occurrence of a character expression or memo within another character expression or memo.
Internationalization Tip: |
| BROWSE without NOMENU leads to an unlocalizable "Table" menu pad. | Internationalization Gotcha: when using BROWSE without a NOMENU clause, VFP places
a "Table" menu pad on the system menu containing a number of bars (with captions like "Properties", "Font", "Go to record", etc).
The display language of this pad and its bars is a function of VFP's localization language. In international applications that use
BROWSE , make sure you make it a BROWSE...NOMENU and, if required, invoke your own supporting menu. |
| CDOW() is dependent on the VFP localization. | CDOW() returns the day-of-the-week from a given date or datetime expression.
Internationalization Gotcha: the day name returned varies with the localization of VFP. |
| Using CHR(n) instead of the character itself is a good way to prevent code page translation. | CHR() returns the character associated with the specified numeric ANSI code.
Internationalization Tip: you can use CHR() to prevent VFP's automatic code page translation. This is useful for program files which are not marked with code pages ID's. This may save you if you omit the
|
| CHRTRANC() is like CHRTRAN() and works with single and double-byte characters. | CHRTRANC() , which is similar to CHRTRAN() , replaces each character in a character expression that matches a character in a second character expression with
the corresponding character in a third character expression. As you might expect, CHRTRANC() adjusts for single-byte and double-byte characters automatically.
Internationalization Tip: to enable your application for DBCS, always use |
| The text returned from CMONTH() varies with the localized version of VFP. | CMONTH() returns the name of the month from a given date or datetime expression.
Internationalization Gotcha: the language of the returned string comes from VFP, so you cannot independently control the language of what's returned. |
| Use COMPILE...AS or SET CPCOMPILE to compile source files originating from other locales or platforms | COMPILE compiles one or more source files.
Internationalization Gotcha: the optional |
| Use AS <code page> to create a file-copy of a memo in another code page | COPY MEMO copies the contents of the specified memo field in the current record to a file.
Internationalization Gotcha: |
| COPY STRUCTURE EXTENDED exports NOCPTRANS information, and data that may need to be localized | COPY STRUCTURE EXTENDED creates a new table with fields containing the structure of the currently selected table.
Internationalization Gotcha : this new table will contain the following notable fields which have internationalization implications. |
COPY TO
creates a new file from the contents of the currently selected table.
Internationalization Gotcha: AS nCodePage
specifies the code page for the new file. VFP copies the contents of the currently selected table, and, as it copies the
data, automatically converts the data to the code page you specify for the new table or file. If possible, VFP marks the newly created table or file with the code page you specify. If you omit AS nCodePage
, the newly created table
or file is converted to the current VFP code page.
COPY PROCEDURES
copies stored procedures in the current database to a text file.
Internationalization Gotcha: the AS nCodePage
specifies the code page for the text file to which the stored procedures are copied. VFP copies the stored procedures,
and, as it does so, automatically converts the stored procedures to the code page you specify.
CPCONVERT() is used to transform character or memo data.
CPCONVERT()
converts character or memo fields or character expressions to another code page.
Internationalization Gotcha: don't forget to use CPCONVERT() when moving strings from one platform or locale to another.
Use CPCURRENT() to reckon system code page information.
In VFP, the current operating system code page if the CODEPAGE
configuration item isn't included in your configuration file. In previous versions of FoxPro, 0 is returned if the
CODEPAGE
configuration item isn't included in your configuration file.
CODEPAGE=
configuration item in CONFIG.FPW.CODEPAGE = AUTO
In VFP, CPCURRENT(1)
returns the Windows code page, regardless of your configuration CODEPAGE
setting.
CPCURRENT(2)
always returns the underlying operating system code page, regardless of your configuration CODEPAGE
setting. For example, if you're running Windows,
CPCURRENT(2)
returns the MS-DOS code page.
| CPDBF() gives table code page information. | CPDBF() returns the code page of an open table.
Internationalization Gotcha: don't assume that a table is marked with the correct code page, especially if it comes from another platform or another locale. |
| Use CPZERO.PRG to change a table's code page id. | Assuming you've installed tools, CPZERO.PRG can be found in your TOOLS\CPZERO directory. CPZERO.PRG removes the code page mark from any file that has a table file structure. After removing the mark, CPZERO applies another mark that you specify. |
Internationalization Gotcha: if tables do not have code page marks when you open them, VFP prompts you for a code page. If you specify the wrong code page, however, the data in the files won't display properly. To correct the code page, use CPZERO.
| CPZERO.PRG won't fix a corrupted table. | It is worth noting that CPZERO won't fix a file with data corruption resulting from prior automatic code page translation. |
CREATE CURSOR - SQL
creates a temporary table. The NOCPTRANS
argument, which applies when specifying field-level attributes, prevents translation to a different code page for
character and memo fields.
Internationalization Gotcha: use the NOCPTRANS
if conversion to another code page is anticipated. Note that this is more likely if a subset of the temporary table
is saved to disk.
CREATE TABLE - SQL
creates a table.
Internationalization Gotcha: the NOCPTRANS
field-level argument prevents translation to a different code page for its character and memo fields.
| If your date format doesn't match SET DATE, no error is generated, and a blank date value ( / / ) results. | CTOD() converts a character expression to a date expression.
Internationalization Gotcha: remember that the format for the character expression must conform to the date format specified by |
| Arguments passed to CTOD() are unaffected by SET MARK TO. | It is worth noting that CTOD() doesn't care about current date delimiters specified by SET MARK TO or by the "International"
page of the Options dialog, so CTOD("9/24/96") , CTOD("9-24-96") and CTOD("9.24.96") all work equally
well. |
| If your date format doesn't match SET DATE, no error is generated, and a blank value ( / / : : AM ) results. | CTOT() returns a DateTime value from a character expression.
Internationalization Gotcha: Remember that, like The proper format for cCharacterExpression is determined by the current settings of |
| Arguments passed to CTOT() are unaffected by SET MARK TO. | It is worth noting that, in spite of what the help file says, CTOT() doesn't care about current date delimiters specified by SET MARK TO
or by the format of SET HOURS ( or by what's specified in the "International" page of the Options dialog), so CTOT("9/24/96") ,
CTOT("9-24-96") and CTOT("9.24.96") all work equally well, as does CTOT("9-24-96 11:00 pm") and
CTOT("9.24.96 23:00") |
| Private datasessions are endowed with VFP default values that have nothing to do with your Regional Window's settings.
Therefore for each new data session you must SET the appropriate values. |
Some of VFP's SET commands, including most of those with international implications, are scoped to the current datasession.
Internationalization Gotcha: a problem arises when you create new Datasessions: the new Datasessions have VFP defaults, and these don't necessarily conform to the current This means that whenever a new private datasession is created, you must ensure that its Here is a complete list of |
DataSession-Scoped SET commands
SET ANSI |
SET AUTOSAVE |
SET BLOCKSIZE |
SET CARRY |
SET CENTURY |
SET COLLATE |
SET CONFIRM |
SET CURRENCY |
SET DATABASE |
SET DATE |
SET DECIMALS |
SET DELETED |
SET DELIMITERS |
SET EXACT |
SET EXCLUSIVE |
SET FIELDS |
SET FIXED |
SET LOCK |
SET MARK TO |
SET MEMOWIDTH |
SET MULTILOCKS |
SET NEAR |
SET NULL |
SET POINT |
SET REPROCESS |
SET SAFETY |
SET SEPARATOR |
SET SYSFORMATS |
SET TALK |
SET UNIQUE |
These SET commands are scoped to the datasession.
DATE()
returns the current system date.
Internationalization Gotcha: the date is formatted according to SET DATE
, SET MARK
, and
SET CENTURY.
DATETIME()
returns the current date and time as a DateTime value.
Internationalization Gotcha: the format of the DateTime value returned by DATETIME( )
depends on the current settings of
SET DATE
, SET MARK
, SET CENTURY
, SET HOURS
, and
SET SECONDS
. The format is also dependent on the settings in the International option in the Windows Control Panel.
DBGETPROP()
returns a property for the current database, or fields, named connections, tables, or views in the current database.
Internationalization Gotcha: here are localizable elements for table fields:
| CProperty | Type | Description |
| Caption | C | The field caption (read-write). |
| RuleText | C | The field rule error text (read-only). |
Here are localizable elements for views:
| cProperty | Type | Description |
| Caption | C | The field caption (read-write). |
| RuleText | C | The field rule error text (read-write). |
Here are localizable elements for table properties:
| cProperty | Type | Description |
| RuleText | C | The row rule error text (read-only). |
Here are localizable elements for views:
| cProperty | Type | Description |
| RuleText | C | The rule text expression displayed when an error occurs when data is edited in a Browse or Edit window (read-write). |
DEFINE BAR
creates a menu item on a menu created with DEFINE POPUP
.
Internationalization Gotcha: this command is notable because, in my experience, it is often involved in "hard coded" and difficult to localize situations. DEFINE BAR
has three internationally sensitive clauses: PROMPT
(what the bar displays), FONT
(which could vary with locale) and
MESSAGE
(the status bar message).
DEFINE MENU
creates a menu bar.
Internationalization Gotcha: menus are often involved in "hard coded" and difficult to localize situations. DEFINE MENU
has two internationally sensitive clauses:
the FONT
(which could vary with locale) and MESSAGE
(the status bar message).
DEFINE PAD
creates a menu title (pad) on a menu bar.
Internationalization Gotcha: menus are often involved in "hard coded" and difficult to localize situations. DEFINE MENU
has two internationally sensitive clauses:
the FONT
(which could vary with locale) and MESSAGE
(the status bar message).
DEFINE POPUP
creates a menu.
Internationalization Gotcha: menus are often involved in "hard coded" and difficult to localize situations. DEFINE POPUP
has several internationally sensitive clauses:
the FONT
(which could vary with locale); MESSAGE
(the status bar message); FOOTER
(the text at the bottom
of the popup); PROMPT FIELD
(which may bring in unlocalized text from a table); and TITLE
(on the top border of the menu).
DEFINE WINDOW
creates and specifies the characteristics of a window.
Internationalization Gotcha: hard-coded window definitions are often the source of localization difficulties. The DEFINE WINDOW
may have the following internationally
sensitive clauses: the TITLE
of the window; its FONT
(which might need to vary with locale); and the ICON
file (which may not be appropriate for all locales).
The DefOLELCID
property applies to Form and _SCREEN
objects, and specifies the default OLE Locale ID for a Form or the main VFP window.
Internationalization Gotcha: this default value determines the Locale ID for OLE Bound controls and OLE Container controls when they are placed on the form or the main VFP window.
If the default OLE Locale ID value for a Form or the main Visual FoxPro window is changed to a new value, then OLE Bound controls and OLE Container controls placed thereon afterwards use the new value.
If DefOLELCID
is set to zero for a form or the main Visual FoxPro window, SYS(3004)
determines the default Locale ID for OLE Bound controls and OLE Container
controls placed on the Form or the main VFP window.
Here is a listing of Locale Ids:
| Locale ID | Language |
|---|---|
|
1029 |
Czech |
|
1031 |
German |
|
1033 |
English (Default) |
|
1034 |
Spanish |
|
1036 |
French |
|
1040 |
Italian |
|
1045 |
Polish |
|
1046 |
Portuguese (Brazilian) |
|
2070 |
Portuguese (Standard) |
Note: the DefOLELCID
property only affects the language of the user interface, which OLE controls display, and not the language of the OLE automation commands. The OLE automation command language is affected only
by the Global LocaleID, set with SYS(3005)
.
DMY(dExpression | tExpression)
DMY()
returns a character expression in day-month-year sequence, for example "26 June 1996".
Internationalization Gotcha: DMY()
comes from VFP, and the language varies with VFP's localized language. DMY()
respects
the setting of SET CENTURY
.
DTOC()
returns a Character-type Date from a Date or DateTime expression.
Internationalization Gotcha: the date format is determined by SET CENTURY
and SET DATE
and
SET MARK
.
DTOS()
returns a character-string date in a yyyymmdd
format from a specified Date or DateTime expression.
Internationalization Gotcha: this function is not affected by SET CENTURY
.
DTOT()
returns a DateTime value from a Date expression.
Internationalization Gotcha: the format of the returned value depends on the current SET DATE
and SET MARK
settings.
| EDIT without NOMENU leads to an unlocalizable "Table" menu pad | Internationalization Gotcha: when using EDIT without a NOMENU clause,
VFP places a "Table" menu pad on the system menu containing a number of bars (with captions like "Properties", "Font", "Go to record", etc). The display language of this pad and its bars is a function of VFP's localization language. In international applications that use
BROWSE , make sure you make it a EDIT...NOMENU and, if required, invoke your own supporting menu. |
The ERROR
command generates a VFP error.
Internationalization Gotcha: if you issue an ERROR
call with an error number, like this: ERROR 101
,
the message is in VFP's localized language. You can always issue ERROR 101, "My localized Error Message"
to adorn errors with your own error message. In any event, the ERROR
command is preempted by whatever action is specified by ON ERROR
.
| VFP error messages are in VFP's localized language. | Internationalization Gotcha: error messages, which, in the absence of error handling adorn VFP's error dialog boxes and as available with MESSAGE()
and AERROR() , are in the language of VFP's localization. |
EXPORT TO
copies data from a VFP table to a file in a different format.
Internationalization Gotcha: AS nCodePage
specifies the code page for the file EXPORT
creates. VFP copies the contents of
the currently selected table and, as it copies the data, automatically converts the data to the code page you specify for the new file. If possible, VFP marks the newly created file with the code page you specify.
If you omit AS nCodePage
, no code page conversion occurs. If possible, VFP marks the newly created file with the code page of the table from which the data is copied. If nCodePage is 0, no code page conversion occurs
and the new file is not marked with a code page.
FDATE()
is a low level file function that returns the last modification date for a file.
Internationalization Gotcha: the result is in a format determined by the current settings of SET DATE
, SET MARK
,
and SET CENTURY
.
Internationalization Gotcha : depending on the localization, Fonts may be an issue. For example, the "Arial" font in the Cyrillic languages is called "Arial Cyr". Of course, in some Asian languages, there is no such thing as an Arial font.
Internationalization Tip : the best place to find locale-specific fonts is with the various localizations of Windows. If you are a member of the Microsoft Developer Network, then you may have several localized versions of Windows on CD-ROM. The advantage of using native fonts is your customers probably have them already installed, and it's one less thing to worry about.
Internationalization Gotcha: the form's Close box is localized in the language of VFP localization. This otherwise cannot be controlled.
GETCP()
prompts for a code page by displaying the Code Page dialog box, and then returns the number of the code page chosen.
Internationalization Gotcha: other than the parameters you pass, you cannot control the language displayed in this dialog. It comes from within VFP and you will need a localized version of VFP for this dialog to display properly in an alternate language.
GETDIR()
displays the Select Directory dialog box from which a directory or folder can be chosen.
Internationalization Gotcha: you cannot control the language displayed in this dialog. It comes from within VFP and you will need a localized version of VFP for this dialog to display properly in an alternate language.
The line
?GETDIR("C:\", "cDialogCaption")
makes this rather unlocalizable dialog.
The GETDIR() dialog
Internationalization Gotcha: the VFP expression builder comes from VFP and you cannot control its display language. To get a localized expression builder, you will need a localized version of VFP.
The GETEXPR TO dialog.
GETFILE()
displays the Open dialog box and returns the name of the file you chose.
Internationalization Gotcha: other than the parameters you pass, you cannot control the language displayed in this dialog. It comes from within VFP and you will need a localized version of VFP for this dialog to display properly in an alternate language.
The line
?GETFILE([cFileExtensions] ,[cDialogCaption], [cOpenButtonCaption],1)
produces this:
The GETFILE() dialog.
GETFONT()
displays the Font dialog box and returns the name of the font you choose.
Internationalization Gotcha: like many other such dialogs, this comes from VFP and the language of the dialog varies with VFP's localization.
The GETFONT() dialog.
GETPICT()
displays the Open dialog box and returns the name of the picture file you chose.
Internationalization Gotcha: other than the parameters you pass, you cannot control the language displayed in this dialog. It comes from VFP and you will need a localized version of VFP for this dialog to display properly in an alternate language.
GETPRINTER()
displays the Windows Print Setup dialog box and returns the name of the printer you select.
Internationalization Gotcha: this dialog comes from the operating system and the display language varies with its localization.
The GETPRINTER() dialog.
HOUR()
returns the hour portion from a DateTime expression.
Internationalization Gotcha: HOUR( )
returns a numeric value based on a 24 hour format, and is not affected by the current setting of SET HOURS
.
IDXCOLLATE()
returns the collation sequence for an index or index tag.
Internationalization Gotcha: IDXCOLLATE()
can be used to return the collation sequence for each tag in multiple-entry compound index files, allowing you to completely delete an index
file and rebuild it correctly, using a series of SET COLLATE
and INDEX
commands.
IDXCOLLATE()
isn't required for the proper functioning of REINDEX
, because the collation sequence information is present in existing indexes and index tags.
The Input Method Editor (IME) is a program that performs the conversion between keystrokes and ideographs or other characters, usually by user-guided dictionary lookup. IMESTATUS()
turns the IME window on or off or
returns the current IME status.
Return values for the IME status in the Japanese locale:
| Return Value | IME Status |
| 4 | Hiragana double-byte. |
| 5 | Katakana double-byte. |
| 6 | Katakana single-byte. |
| 7 | Alphanumeric double-byte. |
| 8 | Alphanumeric single-byte. |
Return values for the IME status in the Korean locale:
| Return Value | IME Status |
| 4 | Hangeul mode. |
| 5 | Junja mode (double-byte). |
| 6 | Hanja conversion mode. |
IMPORT FROM
imports data from an external file format to create a new Visual FoxPro table.
Internationalization Gotcha: AS nCodePage
specifies the code page of the imported file. Visual FoxPro copies the contents of the imported file and, as it copies the data, automatically
converts the data to the current Visual FoxPro code page.
If you omit AS nCodePage
and VFP cannot determine the code page of the imported file, VFP copies the contents of the imported file and, as it copies the data, automatically converts the data to the current Visual
FoxPro code page. If you omit AS nCodePage
and VFP can determine the code page of the imported file, VFP automatically converts the data in the imported file from the data's code page to the current VFP code page.
Internationalization Gotcha: A problem occurs when the collating sequence for an index is set to something other than MACHINE. In that case, each character in the key uses two bytes. Since the maximum index key length is 240
characters, the longest key you can use is 120 characters for non-MACHINE collate sequences. The only way around this problem is to SET COLLATE TO MACHINE
before creating that particular tag.
ISLEADBYTE()
returns logical true if the first byte of the first character in a character expression is a lead byte. ISLEADBYTE()
lets you determine if a character is a double-byte
character. If the first byte of a character is a lead byte, the character is a double-byte character. Otherwise, the character is a single-byte character.
LEFTC()
from a character expression containing, which is similar to LEFT()
, returns a specified number of characters any combination of single-byte and double-byte characters,
starting with the leftmost character.
LENC()
, which is similar to LEN()
, returns the number of characters in a character expression or memo field containing any combination of single-byte and double-byte characters.
LIKEC()
, which is similar to LIKE()
, determines if a character expression matches another character expression. The character expressions can contain any combination of single-byte
and double-byte characters.
Internationalization Gotcha: In the "old days" of FoxPro, the only way to get some sorts of information was to execute one of the LIST
commands
TO FILE
and thereafter parse the resulting text. While I can't think of a reason to do this in VFP, some reason may occur. If it does, you should know that the LIST
commands will
produce output containing text that localized according to the language of VFP.
LOCFILE()
locates a file on disk and returns the file name with its path.
Internationalization Gotcha: other than the dialog caption, you have no control over the captions in this dialog. LOCFILE()
comes from VFP and its display language
varies with VFP's localization language.
For example, the line:
?LOCFILE("cFileName", "cFileExtensions", "cDialogCaption")
yields the following dialog under Windows NT 3.51. There are many interface strings on this dialog you can't localize. You are at the mercy of the user's VFP installation.
The LOCFILE() dialog.
MDY()
returns a character expression in month-day-year sequence, for example "June 26 1996".
Internationalization Gotcha: MDY()
comes from VFP, and the language varies with VFP's localized language. MDY()
respects
the setting of SET CENTURY
.
MESSAGE()
returns the current error message as a character string.
Internationalization Gotcha: the error message is in the localized language of VFP. Note that AERROR(2)
returns the same value as
MESSAGE()
.
MESSAGEBOX()
displays a user-defined dialog box.
You can't directly localize the buttons in MESSAGEBOX(). For example, the following line yields the box below wherein the "Yes" and "No" button captions cannot be touched.
?MESSAGEBOX("cMsgText", 4, "cTitleBarText")
A MESSAGEBOX() dialog.
MODIFY COMMAND
opens an editing window so you can modify or create a program file.
Internationalization Gotcha: AS nCodePage
automatically converts accented characters in a program file created on another VFP platform. The numeric expression
nCodePage
specifies the code page of the VFP platform on which the program file was created. The file is saved in this code page unless you choose "Save As" from the File menu to save the file in a different code page.
MODIFY FILE
opens an editing window so you can modify or create a text file.
Internationalization Gotcha: AS nCodePage
automatically converts accented characters in a text file created on another VFP platform. The numeric expression
nCodePage
specifies the code page of the VFP platform on which the text file was created. The file is saved in this code page unless you choose "Save As" from the File menu to save the file in a different code page.
Opens the Query Designer so you can modify or create a query. The Query Designer is a VFP dialog whose display language varies according to the localization of VFP.
Internationalization Gotcha: AS nCodePage
specifies the code page of the query. Include AS nCodePage
if the query was created
with a code page other than the current VFP code page. When the query is opened, VFP automatically converts the query to the current VFP code page.
The query is saved in its original code page when it is closed.
If you omit the AS nCodePage
clause or nCodePage
is 0, the query is not converted to the current VFP code page.
In VFP, queries can be added to a project, and you can specify the query's code page from within the Project Container. The Project Container keeps track of the query's code page. However, if you use MODIFY QUERY
to open a query outside of the Project Container, you should include AS nCodePage
to specify the query's code page.
ODBC drivers generate ANSI SQL standard error codes, which are thereafter interpreted by VFP.
Internationalization Gotcha: the text of ODBC error messages come from VFP and will vary in language with the localized version of VFP.
OEMTOANSI()
converts each character of a character expression to the corresponding character in the ansi character set. Included for backward compatibility. OEMTOANSI()
is
used to move data from FoxPro for ms-dos to Visual FoxPro and FoxPro for Macintosh.
OLE Custom Controls come from a variety of sources and, for the most part, you'll get a mixed-bag of results when you use OLE controls in international settings.
Given that OLE controls come from many sources, it's not surprising to find that they don't all handle errors as you might hope. Some OLE controls return integer error codes for which you need to intercept and localize their messages. Other OLE controls display native error dialogs, and there is little you can do if a particular control doesn't support the current locale.
The OLELCID property of OLE Bound Controls and OLE Container Controls returns their numeric OLE Locale. This property is always read-only.
Internationalization Gotcha: the OLELCID value is determined by the value of the DefOLELCID property for the Form or the main VFP window when the OLE Bound control or OLE Container control is instanciated.
If the Form or the main Visual FoxPro window's DefOLELCID property is zero when the OLE Bound control or OLE Container control is placed on the Form or the main Visual FoxPro window, the control uses the current Visual FoxPro Locale ID as witnessed by SYS(3004). You can use the DefOLELCID property of Form objects to specify their Locale ID.
The OLELCID property only affects the language of the user interface, which OLE controls display, and not the language of the OLE automation commands. The OLE automation command language is affected only by the Global LocaleID, set with SYS(3005).
Here is a list of OLE locale id's.
| nLocaleID | Language |
|---|---|
| 1029 | Czech |
| 1031 | German |
| 1033 | English (Default) |
| 1034 | Spanish |
| 1036 | French |
| 1040 | Italian |
| 1045 | Polish |
| 1046 | Portuguese (Brazilian) |
| 2070 | Portuguese (Standard) |
This function returns useful state information about a property, event or method. Internationalization Gotcha: using nAttribute=5, you can find out if this PEM is a "Property", "Event" or "Method". This language of this string varies with the localized version of VFP.
| Menu text varies with locale. | PRMBAR(), PRMPAD() PROMPT() return text from menus.
Internationalization Gotcha: avoid using these functions in international applications because menu text will vary with the language of localization. |
| Printer settings vary from locale to locale. | PRTINFO() returns the specified printer setting.
Internationalization Gotcha: your application should anticipate a wide variety of return values because most of them will vary from locale to locale. |
PUTFILE()
invokes the Save As dialog box and returns the file name you specify.
| Many PUTFILE() interface elements cannot be translated. | Internationalization Gotcha: other than the dialog caption, you have no control over the captions in this dialog. PUTFILE() comes from
VFP and it varies with its localization language. |
For example, the following line:
?PUTFILE("cCustomText", "cFileName", "Ext")
creates this dialog. We basically can't localize this.
The PUTFILE() dialog.
RATC()
, which is similar to RAT()
, returns the numeric position of the last occurrence of a character expression or memo field within another character expression or memo field.
The character expressions or memo fields can contain any combination of single-byte and double-byte characters.
RATLINE()
returns the line number of the last occurrence of a character expression within another character expression or memo field, counting from the last line.
Internationalization Gotcha: this function works in both single-byte and double-byte character sets.
Internationalization Gotcha: unfortunately, from a localization perspective, VFP's Relational Integrity (RI) builder leaves much to be desired. The code generated by the RI builder is unsuitable for international distribution. Here's a summary of the problems:
Update and Delete triggers are problematic because procedures RIDelete
and RIUpdate
contain a test
on (UPPER(SYS(2011))="RECORD LOCKED".
This test will always return .F. if your application runs on a different localization of VFP!
As if that weren't enough, calls to the RIError
function, which may result if things don't go quite as planned, contain hard-coded error strings, like
DO rierror with -1,"Delete restrict rule violated."
And
DO rierror with -1,"Insert restrict rule violated.".
Fortunately there is a workaround (sort-of): It relies on the following bit of trivia: Whenever there is more than one instance of a function in a file or snippet, only the latest instance is seen by VFP.
Therefore, in your stored procedures, you can duplicate and enable the RIError()
, RIDelete()
, and RIUpdate()
functions, and paste them subsequent to the generated code.
RIGHTC()
, which is similar to RIGHT()
, returns the specified number of rightmost characters from a character string. The character expressions or memo fields can consist of
any combination of single-byte and double-byte characters.
SET COLLATE
specifies a collation sequence for character fields in subsequent indexing and sorting operations.
The following collation sequence options are available in VFP:
| Options | Language |
DUTCH |
Dutch |
GENERAL |
English, French, German, Modern Spanish, Portuguese, and other Western European languages |
GERMAN |
German phone book order (DIN) |
ICELAND |
Icelandic |
MACHINE |
Machine (the default collation sequence for earlier FoxPro versions) |
NORDAN |
Norwegian, Danish |
SPANISH |
Traditional Spanish |
SWEFIN |
Swedish, Finnish |
UNIQWT |
Unique Weight |
Note that when SET COLLATE TO
is set to something other than "Machine"
, each index character takes two bytes, effectively reducing the maximum index key
length from 240 to 120.
SET CPCOMPILE
globally specifies the code page for compiled programs.
Internationalization Gotcha: SET CPCOMPILE TO
without nCodePage
to reset the compilation code page to the current code page.
Use CPCURRENT()
to determine the current code page. The AS
clause in the COMPILE
command to override the
code page you specify with SET CPCOMPILE
.
| In your shipping app, make sure to SET CPDIALOG OFF. | SET CPDIALOG specifies whether the Code Page dialog box is displayed when a table is opened.
Internationalization Gotcha: |
SET CURRENCY
defines the currency symbol and specifies its position in the display of numeric, currency, float and double expressions.
Internationalization Gotcha: SET CURRENCY
is scoped to the current data session.
See DATASESSIONS
SET DATE
specifies the format for the display of date and datetime expressions.
Internationalization Gotcha: date formats vary from locale to locale. VFP offers the following choices for SET DATE
:
| Setting | Format |
| AMERICAN | mm/dd/yy |
| ANSI | yy.mm.dd |
| BRITISH/FRENCH | dd/mm/yy |
| DMY | dd/mm/yy |
| GERMAN | dd.mm.yy |
| ITALIAN | dd-mm-yy |
| JAPAN | yy/mm/dd |
| MDY | mm/dd/yy |
| USA | mm-dd-yy |
| YMD | yy/mm/dd |
SET DECIMALS
specifies the number of decimal places displayed in numeric expressions.
Internationalization Gotcha: in many countries, the unit of currency transforms in the order of hundreds or thousands to the US dollar. In these countries, displaying decimal currency units is usually undesirable. In some situations you may be asked to round all currency amounts to the nearest ten, hundred, or even thousand units.
Specifies the first day of the week.
The values nExpression
can assume and the corresponding first day of the week.
| NExpr | Day of the week |
|
1 |
Sunday |
|
2 |
Monday |
|
3 |
Tuesday |
|
4 |
Wednesday |
|
5 |
Thursday |
|
6 |
Friday |
|
7 |
Saturday |
If you omit nExpression
, the first-day-of-the-week is reset to Sunday (1). The first-day-of-the-week can also be set with the Week Starts On list box in the International tab of the Options dialog.
SET FWEEK
specifies the requirements for the first-week-of-the-year. nExpression
can be:
| nExpr | First week requirement |
|
1 |
(Default) The first week contains January 1st. |
|
2 |
The larger half (four days) of the first week is in the current year. |
|
3 |
The first week has seven days. |
If you omit nExpression
, the first-week-of-the-year is reset to 1 (the first week contains January 1st). The first-week-of-the-year can also be set with the First Week of Year list box in the International tab of
the Options dialog.
SET HELP TO
specifies a Help file.
Internationalization Tip: Multilingual applications need multilingual help. Use SET HELP TO
to point to different help files as required. To specify a default startup
Help file, use a HELP=
configuration line in CONFIG.FPW.
Specifies a delimiter to use in the display of date expressions.
Internationalization Gotcha: the date delimiter separates the day, month and year elements of a date expression. The date delimiter will vary from locale to locale.
SET NOCPTRANS
prevents translation to a different code page for selected fields in an open table.
Issue SET NOCPTRANS TO
without a set of fields to return to the default translation (established by the CODEPAGE=
configuration item) for all character
and memo fields in a table. Use SET("NOCPTRANS")
to return the fields specified in the last SET NOCPTRANS
command you issued. Use the
CHR( )
function to ensure that individual characters don't get translated.
Because Visual FoxPro can be configured to automatically translate character and memo fields into other code pages, the SET NOCPTRANS
command is available to prevent the automatic translation of fields containing
binary data. For example, a memo field may contain a Microsoft Word document. When you access the Word document, you would like the document in its original, untranslated form. Use SET NOCPTRANS
to specify that the memo field not be
translated.
You don't need to use SET NOCPTRANS
to access binary data if the character or memo field containing the binary data has not been translated. You can ensure that character and memo fields are not translated by omitting
the CODEPAGE
configuration item from your Visual FoxPro configuration file.
SET POINT TO
determines the decimal point character used in the display of numeric and currency expressions.
| SET POINT does never changes the decimal character in calculations. | Internationalization Gotcha : throughout most of North America, the point character is ".", but in most countries of the world, the point character is ",". Note that you can set the displayed decimal point to a different character, you must use a period as the decimal point in calculations. |
SET SEPARATOR specifies the character that separates each group of three digits to the left of the decimal point.
Internationalization Gotcha: throughout most of North America, the separator character is ",", but in most countries of the world, the separator character is ".".
SET SYSFORMATS
specifies if VFP system settings are updated with the current Windows system settings.
Internationalization Gotcha: by default the VFP system settings are not updated when the Windows system settings are changed.
The Windows system settings are specified in International option of the Windows Control Panel. When SET SYSFORMATS
is ON
, the following SET commands
can be used to override the current system settings. However, changing the Windows system settings when SET SYSFORMATS
is ON
overrides these SET commands.
When VFP is started, the Visual FoxPro system settings are the default settings of these SET commands. To use the Windows system settings when VFP is started, place the following line in your VFP CONFIG.FPW configuration file:
SYSFORMATS = ON
SET CENTURY
SET CURRENCY
SET DATE
SET DECIMALS
SET HOURS
SET MARK TO
SET POINT
SET SEPARATOR
SET SYSFORMATS
is scoped to the current data session.
STRCONV() is used to go to transform strings amongn-byte systems. |
STRCONV() converts a character expression to a different form. The following table lists the values of nSetting and the type of conversion performed: |
|
| nSetting | Conversion | |
|
1 |
Converts single-byte characters in cExpression to double-byte characters. | |
|
2 |
Converts double-byte characters in cExpression to single-byte characters. | |
|
3 |
Converts double-byte Hiragana characters in cExpression to double-byte Katakana characters. | |
|
4 |
Converts double-byte Katakana characters in cExpression to double-byte Hiragana characters. | |
|
5 |
Converts double-byte characters to UNICODE (wide characters). | |
|
6 |
Converts UNICODE (wide characters) to double-byte characters. | |
|
7 |
Converts cExpression to locale specific lowercase. | |
|
8 |
Converts cExpression to locale specific uppercase. |
| STUFFC() is like STUFF(), only it seamlessly handles double-byte characters. | STUFFC(), which is similar to STUFF() , returns a character string created by replacing a specified number of characters in a character expression
with another character expression. The character expressions can consist of any combination of single-byte and double-byte characters. |
| Use PRINTSTATUS() instead of SYS(13). | SYS(13) returns the status of the printer.
Internationalization Gotcha: in English versions of VFP, this return value is "READY" or "OFFLINE". If the printer is connected to a COM port, SYS(13) returns READY if the printer returns "Clear To Send Data" or "Data Set Ready". This return value comes from VFP and varies with its localization language. Fortunately, we have a language-independent workaround: use PRINTSTATUS(), which returns .T. or .F., instead of SYS(13). |
| SYS(15) is ancient history. | Translates a second character string from the first character string. Included for backward compatibility; use SET COLLATE instead. |
Included with VFP is a memory variable file called EUROPEAN.MEM that contains sample translation characters. In FoxPro for MS-DOS and VFP, EUROPEAN.MEM is located in the directory in which you install VFP. In FoxPro for Macintosh, EUROPEAN.MEM is located in the Goodies:Misc folder.
Stored in EUROPEAN.MEM is a character memory variable called EUROPEAN, for use with SYS(15) in FoxPro for MS-DOS. Another character memory variable, EUROANSI, is provided for use with SYS(15) in VFP and FoxPro for Macintosh. These memory variables can be used with SYS(15) to translate accented characters to the corresponding characters without the accents.
As an example, the following command can be used in FoxPro for MS-DOS to index a table on a field containing accented characters while preserving normal alphabetical order:
INDEX ON SYS(15, european, field) TO european
This function is primarily intended for the convenience of European users who must use accented characters. Since there are different versions of most vowels, indexing on fields containing accented characters doesn't preserve the expected alphabetical order.
| SYS(20) is ancient history too. | SYS(20) transforms a character expression containing German text to a character string. Included for backward compatibility. Use SET COLLATE instead. |
| The Print Setup language is determined by the OS | SYS(1037) invokes the Print Setup dialog.
Internationalization Gotcha: this service comes from the operating system, and will thus be in its localized language. |
| The graphics card and monitor information comes from VFP | SYS(2006) returns the type of graphics card and monitor you are using, as in "VGA/COLOR ".
Internationalization Gotcha: this result is generated by VFP and can only be localized by using a localized version of VFP. |
The lock status reported by SYS(2011) varies with VFP localization.
SYS(3004)
returns the Locale ID used by OLE automation and OLE controls.
Internationalization Gotcha: the Locale ID determines the language in which OLE automation and OLE controls exchange information.
SYS(3005)
sets the Locale ID, used by OLE automation and OLE controls. Here are the locales in VFP:
| nLocaleID | Language |
|---|---|
| 1029 | Czech |
| 1031 | German |
| 1033 | English (Default) |
| 1034 | Spanish |
| 1036 | French |
| 1040 | Italian |
| 1045 | Polish |
| 1046 | Portuguese (Brazilian) |
| 2070 | Portuguese (Standard) |
SYS(3006) sets the Language ID and the Locale ID.
SUBSTRC() is like SUBSTR(), but handles double-byte characters as well.
| ToolTips come from Windows, and there is no known way to change their font. ToolTips come from Windows, and there is no way that I know to control the Font from within Visual FoxPro. This means that apps running in Eastern Europe and oriental languages will display garbage in the tooltip window unless you are running on a localized version of windows. |
TTOC()
returns a Character value from a DateTime expression that respects SET HOURS
, SET CENTURY
and
SET DATE
so parsing this Character expression is not a good idea.
| The return value from VERSION() is localized by VFP. VERSION(3) is useful to determine the current VFP localization language. | VERSION() returns a character string containing the VFP version number you are using. Internationalization Gotcha: This string is in
the localization language of VFP. |
VERSION(3)
returns the localized VFP language, according to the following table:
| VERSION(3) | Language |
|
00 |
English |
|
33 |
French |
|
34 |
Spanish |
|
39 |
Italian |
|
42 |
Czech |
|
48 |
Polish |
|
49 |
German |
|
55 |
Portuguese |
The WAIT WINDOW
command has two things about it that merit mentioning here:
Internationalization Gotcha: possibly no other command is more prone to hard-coded literals and hard-wired syntax sentence construction than WAIT WINDOW
. I've seen
the job of ferreting-out WAIT WINDOW take more time than required to localize the entire rest of the application.
Internationalization Gotcha: there is no way to change the WAIT WINDOW
display font.
| You can make WEEK() respect the International settings by passing 0 for parameters 2 and 3 | WEEK() returns a number representing the week-of-the-year from a Date or DateTime expression. Passing 0 for nFirstWeek or
nFirstDayOfWeek causes WEEK() to fetch values from whatever is selected in the International tab in the Options dialog box. |


Hi, I installed the EmonPI system to monitor the home consumption. I am the Vrms of calibration of approximately 15V. I wanted to know if there was a way to calibrate the reading ... this drawback, of course me wrong values also on the power that I am actually using.
Hoping for your help greet and thank
Luca
Re: Vrms incorrect
The easy way is to edit your emonhub.conf file. You can do this from the web interface.
In the file, find a section like this:
[[5]]
nodename = emonpi
[[[rx]]]
names = power1,power2,power1pluspower2,vrms,t1,t2,t3,t4,t5,t6,pulsecount
datacodes = h, h, h, h, h, h, h, h, h, h, L
scales = 1,1,1,0.01,0.1,0.1,0.1,0.1,0.1,0.1,1
units = W,W,W,V,C,C,C,C,C,C,p
"vrms" is the fourth item, therefore you change the value of the 4th number in "scales". If you want to change the value you see by 10%, "scales" will become:
scales = 1,1,1,0.011,0.1,0.1,0.1,0.1,0.1,0.1,1
Re: Vrms incorrect
I thank you, I set the value as you suggested and put 0011 but the end result is that I was reading 2270V...O_O
in order to read the correct tension I had to set the value 0.0099 .... just that I noticed something, since I changed the voltage value remains stable at 227.70V, how is it possible?
Thanks in advance for all the help
Luca
Re: Vrms incorrect
You did not say what value you were reading and what the correct value was, therefore I could not calculate the correction. That is why I wrote: "IF you want to change the value you see by 10%, "scales" will become ... 0.011"
If the value does not change, I think you might also have this problem.
Re: Vrms incorrect
@ Robert Wall ... Can you confirm that this only affects the Vrms displayed and not taken into the wattage calculation?
Re: Vrms incorrect
That, the scaled value, is what emonHub passes into emonCMS. So I am reasonably certain, but not 100% sure, that you will need to scale the power and energy values likewise (assuming that your current calibration is correct, or taking that into account also if you think that too is wrong).
If you want to correct the voltage calibration at source, you will need to carry out the standard calibration procedure, but the sketch you edit is in the Raspberry Pi; compile the sketch and them load it into the emonTx inside the emonPi via the serial link. It is a complicated procedure and the instructions are in the hardware Wiki.
Re: Vrms incorrect
Yes I have corrected the voltage in the *.ino file, compiled and flashed the atmega with the altered hex but when there are updates github complains about the files containing local changes and won't update the hex. I have to delete those local files that I have changed, update to the latest, calibrate and flash again :-(
There must be an easier way...
Voltage read with a calibrated multimeter is 240V, emonpi reads 266V.
Re: Vrms incorrect
I don't understand GitHub, so I can't help you there. Bill Thomson recommended "Git Succinctly", by Ryan Hodson, but I've yet to find the time to read it!
It used to be available from https://cld.pt/dl/download/e1946c4f-499c-4961-b63a-179c2fb3526e/Livros%2520Linux/GIT_Succinctly.pdf
Which ac adapter are you using? That's possibly the reason for the high voltage.
Re: Vrms incorrect
Could you be experiencing the same issue as this thread:
http://openenergymonitor.org/emon/node/12188
Could you try an emonPi update: Admin > Update from local Emoncms


Created by Frederick Rose
We can put a description about our Idea here!
I've done this and it's amazing! I'll never forget it.
When do you think that you'll get a chance to do this? Have you already planned it?
I'm thinking about this as well.
Discussion 3 comments
Tom Jenkinson
I've done this and it's amazing! I'll never forget it.
Emily Walker
When do you think that you'll get a chance to do this? Have you already planned it?
Claire Prince
I'm thinking about this as well.


#include "graphics.h" int initwindow(int width, int height, const char* title="Windows BGI", int left=0, int top=0, bool dbflag=false, closeflag=true);
The title parameter is the title that will be printed at the top of the window (with a default of "Windows BGI".) If this is set to the empty string (no characters), then the window will be opened without a title bar or border (typically used for a popup message that the user can then close by clicking), and the user will not be able to move this window. If you want a title bar with no visible title, then set the title to a string containing one space.
The left and top parameters determine the screen coordinates of the left and top sides of the window.
The dbflag parameter determines whether double-buffering for the window is automatically turned on as described in the swapbuffers function (true means that double-buffering will be turned on).
If the closeflag parameter is true, then the user can click on the window's close button to shut down the entire program.
/* initwindow example */ #include "graphics.h" int main(void) { /* initialize graphics window at 400 x 300 */ initwindow(400, 300); /* draw a line */ line(0, 0, getmaxx(), getmaxy()); /* clean up */ getch(); closegraph(); return 0; }
/* initwindow example with two windows */ #include "graphics.h" int main(void) { int wid1, wid2; /* initialize graphics windows */ wid1 = initwindow(400, 300); wid2 = initwindow(300, 400, 200, 100); /* draw lines */ setcurrentwindow(wid1); line(0, 0, getmaxx(), getmaxy()); setcurrentwindow(wid2); line(0, 0, getmaxx(), getmaxy()); /* clean up */ getch(); closegraph(); return 0; }


The purpose of this is two-fold. First, this allows for a listing of RAMADDA servers so end users can find out about other repositories. Secondly, as part of the registration process your server will receive and store a list of all of the registered servers. You can then configure your RAMADDA server to support distributed searches across a federated network of RAMADDA servers (see below).
A RAMADDA server can also be enabled to be a registry for other servers. We term this a "registry server". This configuration is done through the Admin->Settings->Site and Contact Information page.
A registry server provides a listing of its known clients at:
https://ramadda.org/repository/registry/list
When your RAMADDA server receives a list of other RAMADDA servers as part of the registry process the server information is stored in the database. You can configure your server to provide remote search facilities on selected servers through the Admin->Remote Servers page.
When there is such a collection of servers selected the Advanced Search form will have an entry listing the servers and will allow the end user to select which, if any, of the external servers should also be searched. When the search request is sent to the initial server if there are external servers selected that search will also be applied to those servers.
The big question is how to display those search results. The easy way is simply to show an html iframe for each of the remote search servers. There are many cases where this will be effective for the end user. However, we also want to be able to aggregate the results in the context of the original server and display the results as on collection (e.g., as a THREDDS catalog, an RSS feed, etc.) In this case the original server would launch each search request in a separate thread with the result output type being set to the internal RAMADDA xml format (as opposed to getting HTML back). The XML results are then turned into RAMADDA's internal data model structures and are displayed accordingly.
https://registryserver/repository/registry/add?registry.client=https://registryclient/repositoryThe registry server will attempt to connect back to the client passing its base URL as an argument:
https://clientserver/repository/registry/info?registry.server=https://registryserver/repositoryThe client, on receipt of this request, will check if the given registry server is in its list of registry servers. If it is then it responds with an xml listing of its server information including its title (the repository title) and description (the description of its top-level folder). On a successful response from the client the server will store the new client information into its database.
If the requesting registry server is not in the list of servers held by a client then an error is returned. On a failed request the registry server will remove the client listing from the database.
A registry server stores a list of client information (base URL, title, description) in the database. At start-up and at certain intervals a registry server will run through its list of clients, executing the above registry process. It does this to keep its listing up to date and to remove any clients that are no longer running. If, after removal of a client, the client starts up again it will run through its registry process (as described above) to be reinserted into the server list.


This demo illustrates the basic functionality of the DropDownButton custom element.
Home
Solutions
Education
Financial services
Government
Manufacturing
Solutions
eLearning
Mobile
RIA
Training
Products
PC products
Mobile products
All products


Mo Dan
<EMAIL_ADDRESS>You can have the best looking app, but if it doesn't work, NO ONE is going to use it.
Lifelong learner.
6 years of interaction design experience, with my own product design methodology and practice in the company.
Self-taught HTML, learned back-end language structure and principles in the work, can communicate with product, UI and development smoothly.
Adhering to the human-centered design approach, mastering the use of SQL, Python and other analysis tools, and still learning.
Focus on sociology, biology, psychology; interested in economics, cognitive science, data Analysis and other fields.
Experiences
-
2021.8—Present Senior Interaction Designer | UED Division
上海游犀科技有限公司（原名 上海氪方网络科技有限公司）
- Mainly responsible for the interaction design of PC, H5 and App of the company's product - "KOL influence trading platform", and participated in the whole process of multiple products from 0 to 1
- Establish and implement interaction design specifications and workflow specifications
- Mentor junior interaction designers
- Work with user researchers to conduct preliminary user research and usability testing
- Lead user behavior data infrastructure, responsible for interaction design, data burial, data analysis of each operation activity, and output user behavior analysis report
- To try out innovative projects in line with the company's development direction
Performance
- Responsible for the interaction design of 3 product lines at the same time, completing the interaction design work efficiently and with high quality, ensuring the smooth work of upstream and downstream and the final launch
- In the absence of developer support, I taught myself Google Tag Manager and completed the basic work of data burial independently
- Learned Three.js in 2 weeks, and successfully presented the virtual human animation designed in the company's innovation project in the web page and implemented simple interaction
- Lead the learning environment, encourage and guide the UED department to learn the 3D modeling software Blender internally, and successfully practice it in the company's innovation projects
-
2018.10—2020.12 Interaction Designer | Efficiency and Innovation Division
瑞格丝（上海）投资有限公司
- Responsible for product requirement analysis, product research, site visit and prototype design for supply chain collaborative management platform, trade system and customs clearance and forwarding system
- Guiding the direction of the team in their work, coordinating communication between product, ui designers and developers
- Formulating interaction design specifications and guiding ui designers to develop visual design specifications
- Implement human-centered product design methodology, training and implementation
- Lead the company's data analysis efforts, build data analysis reports for all of the company's product lines using Google analytics and Data Studio, and guide the product manager team in their data analysis efforts
- Responsible for NLP research and application, Chatbot robot training, data cleaning and categorization, and workflow development
- Responsible for data validation, requirement communication, interface design and interaction design of BI side (based on Tableau) for group level data warehouse.
Performance
- Formed a set of own product design methodology, with the support of CIO, trained and guided the product manager team to practice, and achieved significant results
- Promote the establishment of data collection and data analysis of the company, using Google analytics and Data Studio to independently build data analysis reports, which are recognized by the company and form the reporting standard, providing effective help to the company management and decision-making.
- The competitive research done for the company was recognized by the group's decision makers, which helped to develop the direction of the company and was publicly recognized
- Actively learning SQL, Python for data analysis and data mining, practiced basic data crawling and data analysis using Python in a research project, and conducted training for non-programmers in the company.
- Propose and promote the practice of "out of the office, field research" and "storytelling method to cultivate empathy and enhance communication" methodology, which has achieved obvious results and has been recognized by the company
- Independently responsible for NLP research and application, Chatbot robot training, 5 functions are now online
- Responsible for all design of visual reports at group level from requirement research to final report presentation
-
2017.10—2018.08 Interaction Designer | Official Website Platform Division
游族网络
- All interaction work of the business related to the official website of the Tour
- Visual UI design advice and guidance
- Interaction requirements support for other project groups' business within the company
- User behavior and user psychology analysis
Performance
- Independently responsible for the product design and interaction design of the game community for the company's game project "Game of Thrones", which was successfully launched.
- Independently responsible for the framework construction and interaction design of the company's internal project management platform and successful launch
-
2016.10—2017.10 Interaction Designer | Product Division
爱怡康健康科技（上海）有限公司（原名 糖小护健康科技（上海）有限公司）
- Responsible for the overall structure adjustment and optimization, interaction reconstruction, and visual guidance of the patient side of WeChat
- Interaction design for the Doctor/Health manager side of the Tangxiaohu website
- Clinical follow up system, case sharing system flow charting and interaction design
- UI Visual Director, Design Management
- Assist product managers in planning new projects
- Guide and assist UI designers in organizing UI specifications
-
2015.01—2016.09 UX/UI/Graphis Designer | Development Division
上海冀创信息技术有限公司
- Responsible for 33iq app client ux, ui work, participate in pre-release functional testing, and continuously improve the user experience and new function design of the new version of the client. Currently Android and iOS versions are online and available in the app market
- Responsible for graphic design of peripheral products and advertisements
-
2013.01—2015.01 Graphic Designer
成都斑斓创意有限公司
- He is mainly responsible for advertising posters, brochures, on-site advertising, outdoor advertising such as property walls and bus stops for two projects of Vanke "Haiyue Huicheng" and "Jinku" in Chengdu.
- Participate in new project proposal complete VI, 3D rendering and other design
-
2011.01—2013.01 Product Marketing Specialist | Product Planning Department
广州埃威姆电子科技有限公司
- Creative design of advertising for all company products, album design, website advertising design
- Product photography, video post-processing
- Company promotion, promotional film editing and voiceover
- Writing promotional literature
Educations
Central South University of Forestry and Technology
Japanese Language and Literature | Bachelor 2007—2011
Skills
Axure - Proficient
Sketch - Proficient
Photoshop - Proficient
Illustrator - Proficient
Figma - Competent
SQL - Competent
Python - Novice
Blender - Competent
Unity - Competent


This is a simple one page example that uses social media wall API. The page calls the API from Javascript to load an API enabled test social wall.
Learn more


License Applications
| Applicant | Type | Status | Payment | Completion | |
|---|---|---|---|---|---|
| Medical License | New Application | 1000 AED |
10%
|
||
| Medical License | Review 1 | 1000 AED |
30%
|
||
| Nursing | PSV Completed | 1000 AED |
80%
|
||
| Dental License | New | 1000 AED |
25%
|
||
| Dental License | Review -2 | 1000 AED |
35%
|
||
| Medical License | Card Ready | 4500 AED |
90%
|


Auditor module for Kentico CMS is based on events fired by Kentico CMS and is relying on Scheduled tasks feature. Running Kentico CMS instance and having supporting features configured is essential for full function of the module.
Auditor module uses database bulk inserts to store logs in the database.
In order to install Auditor module you need to have access to file system and Kentico CMS solution in Visual Studio. Add a local NuGet package repository and install Auditor module for Kentico CMS package. You need to perform following steps:
Add NuGet package to your Kentico solution
Perform at least one request to your website - this completes the module installation
Add Auditor module license key in Module licenses application
Restart the website to initialize new license
During the installation Auditor module will create database table for audit logs. By default CMSConnectionString will be used for database connection. If you wish to store logs in different location, add another connection string with name AuditorConnectionString prior to module's installation. Also note that dbo database schema is used.
Auditor module needs to be configured and enabled before it starts auditing user actions. After installation of the module, open administration interface of Kentico CMS and log in as global administrator. Open Settings application and navigate to category AuditorActions.
After changing Auditor module settings you need to restart the application.
Auditor module stores information about users and their actions on the website. This information is very contextual. Therefore in order to display these logs most efficiently, you will find Auditor module's pages in various sections of Kentico CMS administration interface. See below for list of all pages with logs overviews.
Auditor application Displays all logs collected in the whole instance (see section 2 in image below)
Custom tables application (selected custom table)Auditor tab Displays all logs related to selected custom table.
Pages application (selected page)Auditor tab Displays all logs related to selected page.
Sites application (selected site)Auditor tab Displays all logs of actions that happened on selected site.
Users application (selected user)Auditor tab Displays all logs related to selected user.
Every overview table of Auditor pages enable additional filtering based on following data (see section 1 in image above):
User Filters logs of actions done by selected user.
Site Filters logs of actions done on selected site.
Time Filters logs of actions done between selected dates.
Object name Filters logs of actions based on audited object's name
After clicking on icon on log item row Auditor module will display dialog box with details of particular log item. It includes detailed information about:
User who performed the action (marked section 1)
Site on which the action was performed (marked section 1)
Object type and identification (marked section 2)
Changed values of manipulated object (marked section 3)
All this data helps you diagnose any changes done to your website.
For longer texts Kentico Auditor is able to display only differences between two updates which makes identifying changes a lot easier.
Actions on following objects in Kentico CMS are supported for logging:
Auditor module for Kentico stores data of all performed actions that are enabled in Settings. Over time this can be a large volume of data and therefore is not recommended to store them in the same database indefinitely.
Best practice is to set up a process to migrate data from Auditor module's database table to another server (Archive) or to delete them based on your requirements for data preservation.


JACK_SHOWTIME(1) JACK_SHOWTIME(1) NAME jack_showtime - The JACK Audio Connection Kit example client SYNOPSIS jack_showtime DESCRIPTION jack_showtime prints the current timebase information to stdout AUTHOR Paul Davis This manpage was written by Stefan Schwandter<EMAIL_ADDRESS>1.9.9 November 2012 JACK_SHOWTIME(1)


- Usage Restrictions
- deprecated
- Description
- defines the interface for creating bridges to other object models.
Because bridges sometimes can not be generated in an address space,
the implementation needs to check the address space of the caller by
comparing the machine and process ID against its own. These IDs are
provided by the UNO runtime.
All objects, whether they are part of the UNO object model or not,
are carried in an any . The representation of this object
is heavily model-dependent and has to be specified in the following list:
- UNO:
- The any carries normal UNO types, which can be any base type,
struct, sequence, enum, or interface.
- OLE:
- The any carries an
unsigned long (on 32-bit systems)
or an unsigned hyper (on 64-bit systems), which is
interpreted as a variant pointer. The any does not control the
lifetime of the represented variant. That implies that the caller
has the responsibility of freeing the OLE resources represented
by the any value.
- JAVA:
- not yet specified.
- CORBA:
- not yet specified.
Any implementation can supply its own bridges to other object
models by implementing this interface and returning the bridge
when the method is called with itself as the first parameter.
- See also
- OleBridgeSupplier
|