You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/Notes/updates.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,6 +21,8 @@ Read [**What’s new in 4D 20 R9**](https://blog.4d.com/en-whats-new-in-4d-v20-R
21
21
- New [4D AIKit component](../aikit/overview.md) enabling interaction with third-party AI APIs.
22
22
- The following VP command callbacks now wait for all 4D custom functions to complete their calculations: [VP IMPORT DOCUMENT](../ViewPro/commands/vp-import-document.md), [VP IMPORT FORM BLOB](../ViewPro/commands/vp-import-form-blob.md), [VP IMPORT FROM OBJECT](../ViewPro/commands/vp-import-from-object.md), and [VP FLUSH COMMANDS](../ViewPro/commands/vp-flush-commands.md).
23
23
- New [4D Netkit](https://developer.4d.com/4D-NetKit/) features to manage Google and Microsoft 365 calendars; ability to use the host web server for OAuth 2.0 authentication.
24
+
-[**Fixed bug list**](https://bugs.4d.fr/fixedbugslist?version=20_R9): list of all bugs that have been fixed in 4D 20 R9.
Copy file name to clipboardExpand all lines: docs/code-editor/write-class-method.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -845,7 +845,7 @@ The `<method>` tag allows you to generate and use macro-commands that execute 4D
845
845
846
846
The code of a called method is executed in a new process. This process is killed once the method is executed.
847
847
848
-
> The structure process remains frozen until the called method execution is completed. You must make sure that the execution is quick and that there is no risk of it blocking the application. If this occurs, use the **Ctrl+F8** (Windows) or **Command+F8** (Mac OS) command to "kill" the process.
848
+
> The structure process remains frozen until the called method execution is completed. You must make sure that the execution is quick and that there is no risk of it blocking the application. If this occurs, use the **Ctrl+F8** (Windows) or **Command+F8** (macOS) command to "kill" the process.
Copy file name to clipboardExpand all lines: docs/commands-legacy/append-data-to-pasteboard.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -20,7 +20,7 @@ displayed_sidebar: docs
20
20
21
21
**Note:** In the case of copy/paste operations, the pasteboard is equivalent to the Clipboard.
22
22
23
-
In *dataType*, pass a value specifying the type of data to be added. You can pass a 4D signature, a UTI type (Mac OS), a format name/number (Windows), or a 4-character type (compatibility). For more information about these types, please refer to the *Managing Pasteboards* section.
23
+
In *dataType*, pass a value specifying the type of data to be added. You can pass a 4D signature, a UTI type (macOS), a format name/number (Windows), or a 4-character type (compatibility). For more information about these types, please refer to the *Managing Pasteboards* section.
24
24
25
25
**Note for Windows users:** When the command is used with Text type data (*dataType* is "TEXT", com.4d.private.text.native or com.4d.private.text.utf16), the string contained in the BLOB parameter *data* must end with the NULL character under Windows.
Copy file name to clipboardExpand all lines: docs/commands-legacy/display-selection.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -43,7 +43,7 @@ Keep in mind that with the **DISPLAY SELECTION** command, this parameter only al
43
43
44
44
If the selection contains only one record and the first optional *\** is not used, the record appears in the input form instead of the output form. If the first optional *\** is specified, a one-record selection is displayed, using the output form. If the first optional *\** is specified and the user displays the record in the input form by double-clicking on it, the scroll bars will be hidden in the input form. To reverse this effect, pass the second optional \*.
45
45
46
-
Custom buttons may be put in the Footer or Header area of the output form in order to terminate the execution of the **DISPLAY SELECTION** command. You can use automatic Accept or Cancel buttons to exit, or use an object method that calls [ACCEPT](accept.md) or [CANCEL](cancel.md). When an output form called by the **DISPLAY SELECTION** command has no buttons, only the **Escape** (Windows) or **Esc** (Mac OS) key can be used to exit the list.
46
+
Custom buttons may be put in the Footer or Header area of the output form in order to terminate the execution of the **DISPLAY SELECTION** command. You can use automatic Accept or Cancel buttons to exit, or use an object method that calls [ACCEPT](accept.md) or [CANCEL](cancel.md). When an output form called by the **DISPLAY SELECTION** command has no buttons, only the **Escape** (Windows) or **Esc** (macOS) key can be used to exit the list.
47
47
48
48
During and after execution of **DISPLAY SELECTION**, the records that the user highlighted (selected) are kept in a set named UserSet. The UserSet is available within the selection display for object methods when a button is clicked or a menu item is chosen. It is also available to the project method that called **DISPLAY SELECTION** after the command was completed.
Copy file name to clipboardExpand all lines: docs/commands-legacy/get-document-properties.md
+13-17Lines changed: 13 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -47,18 +47,14 @@ The Time stamp project method listed below calculates the time stamp for a speci
47
47
// Time stamp { ( date ; Time ) } -> Long
48
48
// Time stamp { ( date ; Time ) } -> Number of seconds since Jan, 1st 1995
49
49
50
-
var $1;$vdDate : Date
51
-
var $2;$vhTime : Time
52
-
var $0 : Integer
50
+
#DECLARE ($vdDate : Date ; $vhTime : Time) : Integer
53
51
54
52
If(Count parameters=0)
55
53
$vdDate:=Current date
56
54
$vhTime:=Current time
57
-
Else
58
-
$vdDate:=$1
59
-
$vhTime:=$2
60
55
End if
61
-
$0:=(($vdDate-!01/01/95!)*86400)+$vhTime
56
+
return (($vdDate-!01/01/95!)*86400)+$vhTime
57
+
62
58
```
63
59
64
60
**Note:** Using this method, you can encode dates and times from the *01/01/95* at *00:00:00* to the *01/19/2063* at *03:14:07* which cover the long integer range *0* to *2^31* minus one.
@@ -70,19 +66,19 @@ Conversely, the Time stamp to date and Time stamp to time project methods listed
70
66
// Time stamp to date ( Long ) -> Date
71
67
// Time stamp to date ( Time stamp ) -> Extracted date
72
68
73
-
var $0 : Date
74
-
var $1 : Integer
75
-
76
-
$0:=!01/01/95!+($1\86400)
77
-
69
+
#DECLARE ($timeStamp : Integer) : Date
70
+
71
+
return !01/01/95!+($timeStamp\86400)
72
+
```
73
+
74
+
```4d
78
75
// Time stamp to time Project Method
79
76
// Time stamp to time ( Long ) -> Date
80
77
// Time stamp to time ( Time stamp ) -> Extracted time
For ensuring that the records have their time stamps correctly updated no matter the way they are created or modified, we just need to enforce that rule using the trigger of the table *\[Documents\]*:
@@ -103,7 +99,7 @@ Once this is implemented in the database, we have all we need to write the proje
103
99
```4d
104
100
// CREATE DOCUMENTATION Project Method
105
101
106
-
C_STRING(255;$vsPath;$vsDocPathName;$vsDocName)
102
+
C_TEXT($vsPath;$vsDocPathName;$vsDocName)
107
103
var $vlDoc : Integer
108
104
var $vbOnWindows;$vbDoIt;$vbLocked;$vbInvisible : Boolean
0 commit comments