CARA-Historie

Changes often are initiated by the programmers (p) and users (u). Here they are in short:

Short	Type	Name			Company						Nickname
DD	p	Dieter Dasberg		Creative Soft- & Hardware, Germany			dd
GH	p	Gerald Heyer		Creative Soft- & Hardware, Germany			gerry
TW	p	Tomas Wille		Creative Soft- & Hardware, Germany			
KP	p	Kàlmàn Pusztai		Creative Software, Romania				loko
AG	p	Augustin Galea		Creative Software, Romania				gusti
VD	p	Vasile Dodu		Creative Software, Romania				
OG	p	Olaf Günther 		DataSharing, Germany
JUT	p	Jens Uwe Tok		DataSharing, Germany
HB	p	Harald Bock		Bock Computer Vertriebs Gesellschaft, Germany
MB	p	Manfred Barz		Cito Data GmbH					manne
MaBa	p	Manuel Bandmann	Creative Soft- & Hardware, Germany			manu
UB	p	Ulrich Becker		WMS GmbH
DK	p	Detlef Kraus		Creative Soft- & Hardware, Germany			
VH	p	Volker Heimburger	Schütz-Messtechnik GmbH, Germany
ST	p	Stephan Tanski		Schütz-Messtechnik GmbH, Germany
DV	p	Daniel Vogel		Schütz-Messtechnik GmbH, Germany
GF	p	Gerd Flagmanski	Kebo, KELLER & BOHACEK GmbH & Co. KG 
FH	p	Fathi Husein		Creative Soft- & Hardware, Germany			
JB	p	Josef Bräuer		Creative Soft- & Hardware, Germany			vic
AW	p	Andreas Wagner	INDAPRO, Germany
ED	p	Erwin Dormann		KHW Computerservice					edo
BDL	p	Benedikt De Lauso	Creative Soft- & Hardware, Germany			arakiri
MCD	p	Marc Deusser		Creative Soft- & Hardware, Germany			mcd
IS	p	Ivo Stegmann		Novatherm GmbH
DP	p	Daniel Pfluger		dapf

PB	u	Peter Bagaric		Creative Soft- & Hardware, Germany			
MS	u	Manfred Sattler		Sattler Unternehmensberatung, Wiesbaden
RH	u	Ralph Haase    		Creative Soft- & Hardware, Germany			
DG	u	Daniel Gross   		Creative Soft- & Hardware, Germany			
RR	u	Robert Schetterer	Creative Soft- & Hardware, Germany			
					(formaly known as Robert Rügner) 
HJ	u	Heinz Jäckel		EDV-Team Weilerswist					
KPr	u	Karlheinz Praus 	Oldtimer-Veteranen-Shop				kalle
SCH	u	Stefan Christen 	GWF MessSysteme AG, Swiss				
AHa	u	Andreas Hanke		Le Rocher Weinkontor					andi
MH	u	Maria Hofmann		BMZ GmbH 						
TG	u	Thorsten Gotthardt	BMZ GmbH 						
MSch	u	Martin Schülke		Conzen GmbH 						
JS	u	Joachim Schleier	ADL GmbH						jogi
DH	u	Daniel Hohfeld 		B&S GmbH						 
BR	u	Bernhard Ritter		ric Ritter IT Consult
CG	u	Claudius Görgen	PHOS							claudi
KK	u	Karsten Kretzschmar	Frank Nozar Diamantwerkzeuge GmbH		
PW	u	Peter Weiss		Bodo Möller Chemie
HL	u	Hendik Liedmeyer	Kunsthandel Krause GmbH
Datum		(Releasestand/Änderungsnr./Initiator) Information zur Änderung oder Erweiterung

14.05.2012	(9.08.82/1282/DD) Die Befehle INI_READ_SECTION und INI_WRITE_SECTION können ab jetzt auch Zeilen verarbeiten, die länger als 255 Zeichen sind.

	The commands INI_READ_SECTION and INI_WRITE_SECTION can now process lines with more than 255 chars.

25.04.2012	(9.08.81/1281/DD) Bei CHOOSE_DIR werden ab jetzt alle verfügbaren Pfade angezeigt, wenn strRoot leer übergeben wird.

	With CHOOSE_DIR all available paths will be shown, if strRoot is empty. 

16.04.2012	(9.08.80/1280/GH) Erweiterung der CSH-Syntax zum Darstellen beliebiger Inhalte in den Browser-Zellen: [Z"ScriptName.csh"]FeldName.
	Übergibt den Inhalt von "FeldName" an die neue globale String-Variable [GLOB_CONTENT_STR] und startet das Script "ScriptName.csh". In dem Script kann der Inhalt von [GLOB_CONTENT_STR] geändert werden. Dieser Inhalt wird dann in der Zelle dargestellt.
	Das Query 
	select Name1, RecordID, [Z"MyContent.csh"][SQL_CONCATE]"RID "[SQL_COLON_REPLACE]RecordID) from adressen
	Ruft das Script "MyContent.csh" für jede Zelle auf. Das Script könnte (extrem einfach) z.B. so aussehen: 
	SCRIPT_BEGIN
	  CALC [GLOB_CONTENT_STR] AS PART([GLOB_CONTENT_STR],2,' ')
	SCRIPT_END	

	Extend of the CSH-Syntax for displaying any content in a browser or grid-cell: [Z"Script.csh"]FName..
	This will transfer the content of "FName" to the new global string-variable [GLOB_CONTENT_STR] and starts the Script "Script.csh". This script may change the content of the variable [GLOB_CONTENT_STR]. This content will be shown in the cell.
	The query 
	select Name1, RecordID, [Z"MyContent.csh"][SQL_CONCATE]"RID "[SQL_COLON_REPLACE]RecordID) from adressen
	Calls the script "MyContent.csh" for any cell. The script possibly (extreme simple) may be: 
	SCRIPT_BEGIN
	  CALC [GLOB_CONTENT_STR] AS PART([GLOB_CONTENT_STR],2,' ')
	SCRIPT_END	

24.03.2012	(9.08.79/1279/BDL) Neuer Applikations-INI-Datei-Schlüssel für die Sektion [DocumentManager]: DocMgrDateListShowOnTimer=1 (default). 
	Ist der Wert TRUE (1), wird die Liste der Termine gleich angezeigt, wenn ein Termin fällig ist und das Icon der Termine wird rot gefärbt. 
	Ist der Wert FALSE (0), wird die Liste der Termine nicht angezeigt, wenn ein Termin fällig ist aber das Icon der Termine wird rot gefärbt. 

	New application-INI-file-key for section [DocumentManager]: DocMgrDateListShowOnTimer=1 (default).
	If the value is TRUE (1), the list of dates is shown immediately, if a date is pending and the icon of the dates will be colored red.
	If the value is FALSE (2), the list of dates will not be shown, if a date is pending but the icon of the dates will be colored red.

14.03.2012	(9.08.78/1278/DD) Blobs und Memos werden ab jetzt in Browser und Grids (bis zu einer Länge von 16k) angezeigt.

	Blobs and memos will be shown in browsers and grids (up to a maxima size of 16k) from now on.

06.02.2012	(9.08.77/1277/DD) Bei eingeschaltetem Entwicklermodus wirft ab jetzt die Initialisierungsroutine der Maske die gefundenen Daten aus.

	With developer-mode on, the mask-initialization fires all data found, from now on.

31.01.2012	(9.08.76/1276/DD) Die Farben Schwarz, Weiß und Gelb konnten mittels des Befehls FIELD_FLAG_ON_OFF nicht gesetzt werden. Der Fehler ist behoben. Siehe Änderung 9.06.43/1043/VD vom 22.01.2009.

	The colors black, white and yellow couldn't be set with the command FIELD_FLAG_ON_OFF. This error has been removed. See change 9.06.43/1043/VD from 22.01.2009.

23.01.2012	(9.08.75/1275/GH) Der Wert für EPSILON wurde von 0.01 auf 0.0015 herabgesetzt.

	The value for EPSILON has been reduced from 0.01 to 0.0015.

20.01.2012	(9.08.74/1274/HB) Der Befehl EXPORT exportiert ab jetzt auch nur dann versteckte Felder, wenn der Benutzer den entsprechenden Level hat. Siehe Änderung 9.07.50/1150/PW vom 10.03.2010.

	The command EXPORT does export hidden fields only, if the user has the equivalent user-level. See change 9.07.50/1150/PW from 10.03.2010.

20.01.2012	(9.08.73/1273/VD) Nach der letzten Änderung ließ sich der SEND-Button (zum Verschicken von fax, E-Mail oder zum Aufruf des Chat) und der DOOR-Button (zum Verlasssen des Dialoges) nicht mehr auslösen. Der Fehler ist behoben.

	After the last change, the send-button (for sending fax, e-mail or calling the chat-dialog) and the door-button (for leaving the dialog) couldn't be executed. This error has been removed.

11.01.2012	(9.08.72/1272/HB) Es können nur noch Funktionen vom User in Masken aufgerufen werden, für die auch die entsprechenden Icons in der Kopfleiste der eingeblendet sind. Der Befehl MASK_COMMAND ist von dieser Einschränkung nicht betroffen.

	User may only call functions in dialogs, that have a related Icon in the  button-panel. This restriction has no effect on the command MASK_COMMAND.

11.01.2012	(9.08.71/1271/DD) Überarbeitung der Syska-2012-OFCK-Schnittstelle für die Version 9.4 der OFCK93.DLL.

	Upgrading to Version 9.4 of the OFCK-Interface of the Syska-2012-Fibu for the OFCK94.DLL.

09.11.2011	(9.08.70/1270/DD) Die integrierte Bibliothek “MiTeC System Information Component Suite“ wurde auf die Version 10.9.0 umgestellt. 

	The integrated library “MiTeC System Information Component Suite“ has been updated to version 10.9.0. 

27.10.2011	(9.08.69/1269/DD) Erweiterung des Befehls EXECUTE:
	EXECUTE [Query / Browser], [boolRes] {, boolExitOnError {, strErrorMsg {, boolLeaveWaitWinOpen {, boolJustDescription} {, boolPlainExecute}}}}
	Wenn der Parameter boolPlainExecute = TRUE ist, wird das Query ohne irgendwelche Interpretationen an den SQL-Server versendet.
	
	Extend of the command EXECUTE:
	EXECUTE [Query / Browser], [boolRes] {, boolExitOnError {, strErrorMsg {, boolLeaveWaitWinOpen {, boolJustDescription} {, boolPlainExecute}}}}
	If the parameter boolPlainExecute is TRUE, the query will be send to the SQL-server withoit any interpretation.

27.10.2011	(9.08.68/1268/DD) Neuer Befehl: LIST_STR_CONCAT [list], str2Add, numPart {, boolAdd2Front}. 
		Baut str2Add an den numPart-en String der Tabelle. Wenn boolAdd2Front = TRUE ist, wird str2Add nicht hinten, sondern vorne angebaut. Man kann für numPart auch den Wert [LIST_ITEM_ACTUAL] übergeben.

			New command: LIST_STR_CONCAT [list], str2Add, numPart {, boolAdd2Front}
			Adds str2Add to the numPart line of the list. If boolAdd2Front = TRUE, str2Add will be concatenated to 
			the front of the line, instead of the end of the line.  Instead of numPart als the value 
			[LIST_ITEM_ACTUAL] may be used.

27.10.2011	(9.08.67/1267/DD) Neuer Befehl: LIST_STR_REPLACE [list], str2Find, str2Replace, numPart. 
		Ersetzt im numPart-en String der Tabelle den Wert str2Find durch str2Replace. Man kann für numPart
	 auch den Wert [LIST_ITEM_ACTUAL] übergeben.

			New command: LIST_STR_REPLACE [list], str2Find, str2Replace, numPart 
			Replaces str2Find in then numPart-string of the kist by str2Replace. Instead of numPart als the value 
			[LIST_ITEM_ACTUAL] may be used.

10.10.2011	(9.08.66/1266/DD) Erweiterung der Änderung 9.06.00/1000/DD vom 03.06.2008: Das Suchen in einem Feld mit der Option NUMSETxxx, wird auch dann mit den FirstChars erweitert, wenn der Suchstring nicht mit einem Jokerzeichen beginnt und der bzw. die FirstChars nicht den Beginn des eingegebenen Suchwertes zu finden sind. 
	
			Extend of change 9.06.00/1000/DD from 03.06.2008: The search-value of a field with the option 
			NUMSETxxx will be extended by adding the FirstChars of the number-circle-definition to the start of 
			the search-string, also if it is not starting with a wild-card-character.

10.10.2011	(9.08.65/1265/DD) Beim Suchen in der Maske wurde beim Ändern des Suchtextes (z.B. das Anhängen eines Sternchens um eine Wildcardsuche zu initiieren) ein Refresh auf die gesamte Maske  ausgeführt. Dies bezieht sich ab jetzt nun nur noch auf das betroffene Eingabefeld. 
	
			If the search-value of a mask has been changed (e.g. by adding a trailing "*" for the wild-card-search) 
			a refresh upon the complete mask was done. This will only affect the input-field from now on.

22.09.2011	(9.08.64/1264/DD) Beim Anmelden der internen Query-Variablen wird der Rec-Change-Hook ab jetzt auch nur noch mit der entsprechenden Variable assoziiert. Hier waren versehentlich, durch Copy & Paste mehrere interne Variablen mit verbunden. 
	
			On setting the  query-variables the rec-change-hook will only be associated to its own variable, from 
			now on. Here were some wrong connections coming from copy & paste.

08.09.2011	(9.08.63/1263/DD) Der Befehl LIST_2_LINKS speichert jetzt auch die Zeilenumbrüche.
	
			The command LIST_2_LINK is saving the line-feeds also.

05.08.2011	(9.08.62/1262/DD) Neuer Befehl LIST_2_LINKS [listSource], [listDest] {, [listEmoticons]}.
	Es werden die Zeilen der listSource daraufhin untersucht, ob sich darin eine URL (html://) enthalten ist, und ersetzt den Link durch den entsprechenden HTML-Verweis. Das gleiche gilt für Links des Typs "erp://" (diese werden im Chat-Tool / SendManager.csh verwendet).
	Wenn die listEmoticons übergeben wird, muss diese folgenden Zeilenaufbau haben:
	"happy01×:-)×;-)¦emoicon_happy_01.gif": 	Hier wird "(happy01)" und ":-)" und ";-)" durch das Bild 
						"emoicon_happy_01.gif" ersetzt.
	Trennzeichen "¦" = ASCII-0166 und "×" = ASCII-0215, diese Zeichen kommen in "normalen" Emoiticons nicht vor.
	Das jeweils erste Wort der Zeile wird IMMER in runden Klammern gesucht  "(happy01)".
	Wenn der Name einer Bilddatei eines Emoticons ohne Pfadangabe ist, wird der Pictures-Pfad als Vorgabe verwendet. Es findet keine Überprüfung statt, ob die Bilddatei des Emoticon vorhanden ist oder nicht.
	Darüberhinaus wird versucht Telefonnummern innerhalb des Textes zu erkennen und ebenfalls mit einem Link vom Typ "call://nummer" zu versehen.
	Jede Zeile, die untersucht wurde, wird an die listDest angefügt. listDest wird nicht geleert beim Start der Routine.
	Dieser Befehl ist insbesondere auf die Verwendung im Chat-Tool / SendManager.csh abgestimmt. Dort dient er zum extrem schnellen Aufbau der Chat-Historie.	

	New command LIST_2_LINKS [listSource], [listDest] {, [listEmoticons]}.
	All lines of listSource will be investigated if they contain  an URL ("html://") and replaces the URL with 
	the correct HTML-link. The same will be done for links of the tye "erp://" (these are used by the chat-
	tool / SendManager.csh).
	If the listEmoticons is given, the lines must have the following stucture:
	"happy01×:-)×;-)¦emoicon_happy_01.gif": 	Here "(happy01)" and ":-)" and ";-)" are replaced by a link
						to the picture "emoicon_happy_01.gif".
	The separater "¦" = ASCII-0166 and "×" = ASCII-0215, this chars are not occurring in "normal" emoiticons.
	The first word of the line will ALWAYS be searches with round brackets "(happy01)".
	If the filename of a picture-file from an emoticon has no path, the picture-path will be used as default. The filename will not be checked for existence. 
	Above that every line will be investigated to find telephone-numbers and replace them by links of the type "call://number".
	Every line that has been investigated will be appended to listDest. listDest will not be cleared at the 	start of the routine.
	This command has been especially adjusted for the usage in the chat-tool / Sendmanager.csh. It is used for a very fast mounting of the chat-history.

28.07.2011	(9.08.61/1261/KPr) Neuer Schalter für die Applikations-INI-Datei, Sektion [Config]: SendManagerPopUp=1 (default=1) Soll der Chat-Dialog automatisch angezeigt werden? Wenn nicht wird lediglich das Send-Icon mit einem roten Punkt versehen. Dieser Schlüssel kann von jedem Benutzer separat in seinem Werkzeugkasten eingestellt werden.
	
	New key for the application-INI-file, section [Config]: SendManagerPopUp=1 (default=1). Shell the 
	chat-dialog automatically be shown? If not simply the send-icon will be marked by a red dot. This key 
	can separately be configured  by the user in the tool-box.

28.07.2011	(9.08.60/1260/DK) Zwei neue Optionen für die Browser- und Grid-Flags:
	[BROWSER_FLAG_SCROLL_H_NO]	versteckt den horizontalen Scrollbar 
	[BROWSER_FLAG_SCROLL_V_NO]	versteckt den vertikalen Scrollbar 

	Two new options for the browser- and grid-flags:
	[BROWSER_FLAG_SCROLL_H_NO]	hides the horizontal scrollbar 
	[BROWSER_FLAG_SCROLL_V_NO]	hides the vertical scrollbar 

21.07.2011	(9.08.59/1259/DD) Neuer Schalter für die Applikations-INI-Datei, Sektion [Config]: ResetMaskSend2Chat=0 (default=0). Setzt in allen Masken den Standardwert für den Sende-Knopf auf "Chat". Das kann man ein paar Tage angeschaltet lassen und danach wieder zurücknehmen, denn dann sind ja alle Masken wieder auf "Chat" gestellt. Danach kann der User dann wieder schalten und walten wie er will (mit der mittleren Maustaste den Standardwert verändern).
	
	New key for the application-INI-file, section [Config]: ResetMaskSend2Chat=0 (default=0). Sets the 
	standard-value for the send-button in all masks to "chat". This key can be switched on for a few days 
	and then be switched off again, because all masks will be reseted to chat than. After that the user may 
	switch to his own default by using the middle mouse-key.

21.07.2011	(9.08.58/1258/KK) Das Kontextmenü für Memofelder wurde erweitert um die die Punkte "Alle markieren", "Kopieren" und "Einfügen".
	
	The context-menu for memo-fields in masks has been extended by the items "select all", "copy" and 
	"paste".

19.07.2011	(9.08.57/1257/DD) Die Library MySQLDAC_Full wurde auf den Stand 2.7.6 gebracht.
	
	The library MySQLDAC_Full has been brought to V. 2.7.6.

19.07.2011	(9.08.56/1256/JB) Beim Lösen eines RECORD_LOCK werden nun auch der LockEvent und die LockClause mitberücksichtigt..
 
	In case of releaseing a record with RECORD_LOCK .

19.07.2011	(9.08.55/1255/DD) Der Inhalt der Variable CARA_VERSION wurde überarbeitet.
 
	The content of the variable CARA_VERSION has been reviewed.

18.07.2011	(9.08.54/1254/JB) Es wurden zwei neue Compiler-Direktiven für das Laden der CARA.EXE im 
			Netzwerk und von removeable Devices eingebaut:
			{$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP}
			{$SetPEFlags IMAGE_FILE_NET_RUN_FROM_SWAP}
			Dadurch wird die Datei "an einem Stück" in den RAM geladen.

			There are two new compiler-directives added for the loading of the CARA.EXE within a network or 
			from a removeable device:
			{$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP}
			{$SetPEFlags IMAGE_FILE_NET_RUN_FROM_SWAP}
			So the file will be loaded "in one piece".

15.07.2011	(9.08.53/1253/DD) Vier neue Konstanten, die als strAddress an den NAVIDATE Befehl übergeben 
			werden können:
			[NAVIGATE_PAGE_SETUP]		Zeigt den Dialog zum Festlegen des Seitenlayouts
			[NAVIGATE_PRINT_DIRECT]	Druckt den Seiteninhalt direkt aus (ohne Dialog)
			[NAVIGATE_PRINT_DIALOG]	Druckt den Seiteninhalt mit Druckerdialog
			[NAVIGATE_PRINT_PREVIEW]	Zeigt die Druckvorschau
	
	Four new constands that can be passed as strAddress to a NAVIGATE command:
			[NAVIGATE_PAGE_SETUP]		Shows the dialog for the page layout
			[NAVIGATE_PRINT_DIRECT]	Prints the page directly to the printer (without dialog)
			[NAVIGATE_PRINT_DIALOG]	Prints the page but first show the printer dialog
			[NAVIGATE_PRINT_PREVIEW]	Shows the print preview

15.07.2011	(9.08.52/1252/DD) Zwei neue optionale Parameter für den Befehl NAVIGATE.
	NAVIGATE 'strAddress' or [strList] {, 'CompleteScript.csh' or 'strFileName4Save' {, boolClearIECache {, boolForceEndSession}}}
	       or	  [mask], 'strField', 'strAddress' or [strList] {, 'strFileName4Save' {, boolClearIECache {, boolForceEndSession}}}
	Wenn boolClearIECache TRUE ist, werden alle temporären Internetfiles gelöscht.
	Wenn boolForceEndSession TRUE ist, wird die bestehende Session beendet.
 
	Two new optional parameter for the command NAVIGATE:
	NAVIGATE 'strAddress' or [strList] {, 'CompleteScript.csh' or 'strFileName4Save' {, boolClearIECache {, boolForceEndSession}}}
	       or	  [mask], 'strField', 'strAddress' or [strList] {, 'strFileName4Save' {, boolClearIECache {, boolForceEndSession}}}
	If boolClearIECache is TRUE, the temporary internet-files will be deleted.
	If boolForceEndSession is TRUE, the actual session will be terminated.

10.07.2011	(9.08.51/1251/DD) Neue Optionen für den Befehl VIEW_INFO:
	VIEW_INFO [browser] {,[MaskDoc2Right] {,strQueryID {,numX,numY,numW,numH {, boolSetFocus}}}}
	Wenn man beim Öffnen des Views eine Maske als Parameter übergibt, wird (allerdings nur beim ersten Öffnen) die VIEW_INFO rechts an das Maskenfenster gedockt. Die Breite entspricht dem neuen optionalen Parameter numW. Wenn keine Breite angegeben wird, wird die Breite auf 20 Einheiten gesetzt. Als strQueryID  muss QUERY_ID des Browsers übergeben werden, weil damit die Koordinaten in die Stations-INI-Datei geschrieben werden. Wenn keine Maske übergeben wurde, kann man auch direkt die Koordinaten der VIEW_INFO mit den Parametern numX, numY, numW und numH angeben. Der Parameter boolSetFocus darf erst verwendet werden, wenn die VIEW_INFO bereits geöfnet ist und sorgt dafür, dass die VIEW_INFO den Focus erhält.

	Some new Options for the command VIEW_INFO:
	VIEW_INFO [browser] {,[MaskDoc2Right] {,strQueryIDStr {,numX,numY,numW,numH {, boolSetFocus}}}}
	If a mask ist passed as a parameter, then the VIEW_INFO will be docked to the right of the mask (but only the first time, when its opened).  The width can be defined with the new parameter numW. If numW is not given, the value is set to 20 by default. strQueryID must be the QUERY_ID of the browser, it will be used to stare the coordinates in the station-ini-file. If no mask is given, the coordinates for the first opening can be given through the new optional parameters numX, numY, numW and numH. The parameter boolSetFocus may only be used after the VIEW_INFO is already open, it will give the focus to the VIEW_INFO.

10.07.2011	(9.08.50/1250/HB) Die Eingabe-Maske von nummerischen Feldern in den Maskendefinitionsdateien können nun, neben den bisherigen Möglichkeiten '####.[FLOAT_DIGITS_xxxx]' auch beliebige Variablen enthalten, die ersetzt werden. 
	Z.B. CALC [MyInputMsk] AS '#####.###'  und dann in der Maskendefinitionsdatei so verwenden '[MyInputMsk]' 

	The input-masks of numeric fields in mask-definintion-files may contain, beneath the already existing option '####.[FLOAT_DIGITS_xxxx]',  any variable, that will be replaced.
	e.g. CALC [MyInputMsk] AS '#####.###'  and then use it inside the mask-definition-file like this '[MyInputMsk]' 

05.07.2011	(9.08.49/1249/DD) Erweiterung der Änderung 9.08.47/1247/HB: das SendManagerLinkScript wird ab jetzt auch ausgeführt, wenn man rechts auf den Speicher- oder Säubern- oder Hilfe-Knopf klickt.

	Extension of change 9.08.47/1247/HB: the SendManagerLinkScript will also be executed, if a right click has been made on the save or clear or help-button.

04.07.2011	(9.08.48/1248/DD) Neuer optionaler Parameter für den Befehl LIST_FILE_WRITE [list], [result], 'filename' {, boolSaveAsUTF8 }. Wenn boolSaveAsUTF8 = TRUE ist, wird jede Zeile der Liste im UTF8-Format in die Datei geschrieben.

	New optional parameter for the command LIST_FILE_WRITE [list], [result], 'filename' {, boolSaveAsUTF8 }. If boolSaveAsUTF8 = TRUE every line of the list will be written in UTF8-format to the file.

04.07.2011	(9.08.47/1247/HB) Neuer INI-Datei-Schlüssel in der Sektion [Config] SendManagerLinkScript= hier kann der Name einer Script-Datei angegeben werden, die ausgeführt wird, wenn ein User mit der rechten Maustaste auf den Suchknopf klickt. Dann wird ein Link auf den aktuell geladenen Datensatz in die Zwischenablage kopiert, den man im  SendManager (Chat-Tool) verwenden kann, um diesen zu versenden. 

	New INI-file-key for section [Config] SendManagerLinkScript= here a name of a script can be given that will be executed when a user right-clicks the search-button. Then a link will be created and stored in the clipboard, it can be send by the send-manager (chat-tool).

03.07.2011	(9.08.46/1246/DD) Memo-Felder werden ab jetzt ohne die durch wordwarp erzeugten Zeilenumbrüche geladen.

	Memo-fields will be loaded from the database without linefeeds that are coming from wordwarp.

30.06.2011	(9.08.45/1245/DD) Neuer optionaler variabler boolean Parameter für den Befehl:
	PRINT_OUT [print], num{, optimized{, x, y{, [boolCapturePrintDialog]}}}
	[boolCapturePrintDialog] wird nur dann TRUE, wenn der Benutzer aus der Vorschau heraus gedruckt hat UND die Druck-Variable mit dem Parameter bool_capture_dialog_print = TRUE definiert wurde (siehe vorhergehende Änderung 9.08.44/1244/DD).

	New optional variable parameter for the command 
	PRINT_OUT [print], num{, optimized{, x, y{, [boolCapturePrintDialog]}}}
	[boolCapturePrintDialog] will only be returned TRUE if the user has printed from out of the printer-preview AND the print-variable has been defined with the parameter bool_capture_dialog_print = TRUE (see previous change 9.08.44/1244/DD).

30.06.2011	(9.08.44/1244/DD) Neuer optionaler Parameter für Variablen vom Typ VAR_PRINT.
	VAR_PRINT name{,num_with{,num_height{,num_orientation{,bool_capture_dialog_print}}}}
	Wenn bool_capture_dialog_print TRUE ist, wird der Standardknopf zum Ausdrucken aus dem Vorschaudialog versteckt und ein anderer Knopf ist zum Drucken wird dem User angeboten. Diesen Druckknopf kann die Engine überwachen und dem Script mitteilen, ob dieser verwendet wurde. Das dient dazu, dass man im Script "wissen" kann, ob der Benutzer den angezeigten Text gedruckt hat oder nicht. Dies ist beispielsweise wichtig, wenn man ein DMS mit Druckdaten beliefern will, aber nur, wenn auch wirklich etwas ausgedruckt wurde.

	New optional parameter for the creation of a variable of type VAR_PRINT.
	VAR_PRINT name{,num_with{,num_height{,num_orientation{,bool_capture_dialog_print}}}}
	If bool_capture_dialog_print is TRUE, teh standard-button for printing will be hidden in the printer-preview and another button will be shown for the user to select a printer. This special button can be watched by the the engine, that can tell a script if the user used the print-button. This is useful to "know" inside a script, if the user really pressed the print button in case of a preview. This may be especially useful in case one should deliver the printouts to a DMS - but only, if really soemthing has been printed.

30.06.2011	(9.08.43/1243/DD) In der CARA-Engine wird ab jetzt kein automatischer Seitenumbruch mehr durch die VPE stattfinden. Dadurch kann ab jetzt die Seitenlänge und Breite exakt angegeben werden. Das erlaubt auch das exakte Speichern von PDF-Dateien für das DMS.

	The CARA-Engine will not perform any automatic page-break by the VPE anymore. So the page height and page width can be set exactly. This e.g. allows to save exact PDF-files for the DMS.

30.06.2011	(9.08.42/1242/DD) Um auch Langtexte direkt aus einem CARA-Query heraus speichern zu können, wurden viele String-Bearbeitungsroutinen überarbeitet.

	For saving long texts with a CARA-query, many string-calculation-routines have been reviewed.

26.06.2011	(9.08.41/1241/VD) Neue Option [TREE_ITEM_GET_NODE_4_RECID] für den Befehl 
			TREE_ITEM [Mask],'TreeFieldID',ActionID,[Result],[ItemID],[RecordID]...
			 Wenn [RecordID] mit einem Suchwert gefüllt wird, dann wird in [ItemID] der Index der Tree-Node 
			zurückgegeben.

	New option [TREE_ITEM_GET_NODE_4_RECID] for the command
			TREE_ITEM [Mask],'TreeFieldID',ActionID,[Result],[ItemID],[RecordID]...
			 If [RecordID] is filled with a search value, then [ItemID] will return the index of the tree-node.

25.06.2011	(9.08.40/1240/DD) Wenn der INI-Dateischlüssel SendMaTimerTicks < 1000 ist, wird der Timer (prüfen, ob ein chat vorliegt) nicht mehr ausgeführt (weil das dann ja weniger als eine Sekunde ist). Danach wird er bei jedem Timer-Schuß jeweils eine Sekunde länger, bis er bei einer Minute angekommen ist. Sobald jedoch ein Chat eintrifft, startet der Timer wieder bei der Einstellung, die in der INI-Datei hinterlegt ist. 

	If the INI-file-key SendMaTimerTicks is less than 1000, the timer (checking for chats) will not fire anymore (because it's lower than one second). After each time the timer fired (and no chat has been found), the timer will be set longer for one second until it reached one minute. As soon as a chat comes in, the timer will be reset to the INI-file-setting.

17.06.2011	(9.08.39/1239/DD) Neuer Befehl GET_HARDWARE_INFO [boolRes], [listInfo]
	[boolRes] ist TRUE, wenn die Systemabfrage erfolgreich ausgeführt werden konnte.
	An [listInfo] werden die Hardware-Informationen angehängt. Die Liste wird zuvor NICHT gesäubert.
	Siehe Beispiel-Script "GetHardwareInfo.csh".

	New command GET_HARDWARE_INFO [boolRes], [listInfo]
	[boolRes] is TRUE if the system-information has been retrieved successfully.
	The hardware-information will be appended to [listInfo]. The list will NOT be cleared.
	See example-script "GetHardwareInfo.csh".

07.06.2011	(9.08.38/1238/DD) Beim Alloziieren von Datenbank--Variablen werden ab jetzt alle Parameter getrimmt (außer dem Passwort). Bei MySQL-Verbindungen werden Host und Port-Nummer nicht nur an die Database-Parameter angehängt, sondern auch in die spezifischen Variablen abgefüllt.

	The allocation of the database-variables has been changed. All parameters (except the password) will be trimmed. For MySQL-connections: Host and port-number will not only be added to the database-parameters, the specific object-vars will also be filled with it.  

07.06.2011	(9.08.37/1237/DD) Neuer Befehl PRINT_LOAD [print], 'strFilename', [boolRes]
	Mit diesem Befehl läd man eine Datei (mit dem Namen 'strFilename') vom Typ *.vpe (ab VPE 5.x auch *.xml), die zuvor mit der VPE gespeichert wurde, in die Print-Variable [print]. Es können damit keine Dateien vom Typ *.pdf geladen werden! Die Print-Variable sollte zuvor geleert werden. Wenn die Datei erfolgreich geladen wurde, wird [boolRes] TRUE zurück gegeben, anderenfalls ist das Ergebnis FALSE.

	New command PRINT_LOAD [print], 'strFilename', [boolRes]. 
	This command loads a file (with the filename 'strFilename') of type *.vpe (since VPE 5.x also *.xml),  that previously has been saved with the VPE, into the print-variable [print]. It can't load files of type *.pdf! The print-variable should be cleared before. If the operation was successful [boolRes] will returned with the value TRUE otherwise FALSE.  

26.05.2011	(9.08.36/1236/HB) Die Mask-Option BOOKMARKS hat ein eigenes, neues "normales" Icon: signup.bmp und signupg.bmp, signup24.bmp und signup24g.bmp sowie signup32.bmp und signup32g.bmp und ein "aktives" Icon: signupred.bmp und signupredg.bmp, signupred24.bmp und signupred24g.bmp sowie signupred32.bmp und signupred32g.bmp.
	Wenn die Masken-Option gesetzt ist schiebt sie ein Icon in die Icon-Zeile ein, das neben dem Favoritenknopf eingeblendet ist und das Einfügen, Löschen und Anzeigen der Lesezeichen erlaubt. Folgenden drei neue Schlüssel für die Applikation-INI-Datei, Sektion [Config] können angegeben werden:
	BookmarksInsertScript=BookmarksInsert.csh	Erweitert oder Löscht aus der die Liste der 
							Lesezeichen. (Strg + B oder Links-Click auf das 
							Icon)
	BookmarksShowScript=BookmarksShow.csh	Zeigt die Lesezeichen an. (Rechts-Click auf das 
				Icon)
	BookmarksCheckScript=BookmarksCheck.csh	Prüft, ob zu einem bestimmten Datensatz ein 
				Lesezeichen gesetzt wurde. 
				In diesem Script kann man die neue globale 		Variable [BOOKMARKS_ID] setzten und mit der 		RecordID des Lesezeichens selbst füllen. So 		"weiß" die Engine, ob ein Lesezeichen verfügbar 		ist und kann das "aktive" Icon einblenden.
	Die Parameter, die an diese Scripte weitergegeben werden, sind die gleichen, wie bei GlobalIconScript.

	The Mask-Option BOOKMARKS has its own, new "normal" icon: signup.bmp and signupg.bmp, signup24.bmp and signup24g.bmp as well as signup32.bmp and signup32g.bmp and also an "active" ICON: signupred.bmp and signupredg.bmp, signupred24.bmp and signupred24g.bmp and signupred32.bmp and signupred32g.bmp
	If this mask-option is set, it inserts an icon into the icon-panel, beneath the favorites-button. It allows to insert, delete and show bookmarks. Three bew keys for the applikation-INI-file, section [Config] may be given:
	BookmarksInsertScript=BookmarksInsert.csh	Extends or shrinks the bookmark-list (Ctrl + B or 
							a left-click upon the icon)
	BookmarksShowScript=BookmarksShow.csh	Shows the bookmark-list. (right-click on the icon)
	BookmarksCheckScript=BookmarksCheck.csh	Checks, if a given record has a bookmark. 
				In this script the new global variable 
				[BOOKMARKS_ID] can be set and return the 
				recordid of the bookmark-record itself. So 	
				the engine "knows" if there is a bookmark and 
				shows the "active" icon.
	The parameters that are passed to the script are the same as those of the GlobalIconScript.

11.05.2011	(9.08.35/1235/KK) Neuer Applikations-INI-Datei-Schlüssel für die Sektion [Config]: Exports2TempFolder=0 (default 0=FALSE, 1=TRUE) 
	Wenn dieser Schlüssel auf FALSE steht, werden alle Datenexporte (aus Browsern und Grids) in das PrintSet-Verzeichnis geschrieben (wie bisher). 
	Wenn der Schlüssel auf TRUE steht, werden die Datenexporte in das User-Temp-Verzeichnis geschrieben. 
	Damit ist es möglich die Exportdateien der Benutzer untereinander zu verbergen und somit können Unbefugte auch nicht an die Datenexporte gelangen, zu denen sie ansonsten keinerlei Berechtigungen haben - denn im PrintSet-Verzeichnis hat ja jeder Benutzer volle Lese- und Schreibrechte.
	 	
	New application-INI-file key for section [Config]: Exports2TempFolder=0 (default 0=FALSE, 1=TRUE). 
	If this key is set to FALSE, all data-exports (from browsers and grids) will be saved to the printset-folder (as usual).
	If this key is set to TRUE, all data-exports will be saved to the users-temp-folder.
	By this the export-files of the users can be hidden among each other and unauthorized persons may not reach export-files which they can't process with their user-rights - because inside the printset-folder everyone has full read- and write-rights. 

06.05.2011	(9.08.34/1234/DD) Neuer Applikations-INI-Datei-Schlüssel für die Sektion [Config]: HelpScript=. Hier kann ein Script angegeben werden, das ausgeführt werden soll ANSTELLE der bisherigen Help-Optionen. Wenn dieser Schlüssel gesetzt ist, sind alle anderen bzw. herkömmlichen oder "althergebrachten" Einstellungen wirkungslos. Dem Script werden zwei Parameter übergeben: 
	PAR_STR1 = Standardhilfe die der Programmierer oder die CARA-Engine vorsehen
	PAR_STR2 = Masken-Dateiname|MaskenXRef|ScriptName
	 	
	New application-INI-file key for section [Config]: HelpScript=. If a script-file-name is given here then it will be executed instead of all other option so far. If this key is set, all other resp. usual or "traditional" settings are without effect. The Script receives two parameter:
	PAR_STR1 = standard help that is recomended by the user or the CARA-Engine 
	PAR_STR2 = mask-file-name|mask-Xref-name|script-name

28.04.2011	(9.08.33/1233/GH) Durch den SQLStreamSave hervorgerufenen Fehler, dass bei veralteter Tabellenstruktur das Programm beim Start hängenbleibt, ist behoben.
 	
	The error that the programm stalls while starting in case of an outdated table-structure of the table streamsave and switched on INI-file-key SQLStreamSave won't longer occur from now on.

21.04.2011	(9.08.32/1232/DD) Erweiterung der Änderung 9.08.23/1223/DD vom 01.04.2011. Der Applikations-INI-Datei-Schlüssel der Sektion [Config]: CheckLocksTimeFlag kann nun auch die Binärflagge 8 annehmen: 
	1 = keine Meldung, wenn andere Sessions aufgrund der aktuellen Zeit "rausgeworfen" werden.
	2 = Zeitprüfungsrahmen größer
	4 = Soll nicht geprüft werden ob die Uhr während der Laufzeit verstellt wurde?
	8 = Laufen auf dem Rechner Server-Jobs: sollen keine Systemzeit bezogenen Fehlermeldungen erscheinen? Es wird natürlich geprüft, ob tatsächlich Server-Jobs über Timer getriggert laufen. Wenn nein, ist die Flagge wirkungslos.

	Extend of change 9.08.23/1223/DD from 01.04.2011: the application-INI-file key for section [Config]: CheckLocksTimeFlag may also hold the binary-flag 8:
	1 = no message if other sessions will be "thrown out" due to the actual time
	2 = time-checking-frame longer / bigger
	4 = Should not be checked wether the clock-settings have been changed while runtime?
	8 = Are server-jobs running: shall no station-time related error-messages be shown? If there are no server-jobs running (triggert by a timer), this flag will be ignored.

18.04.2011	(9.08.31/1231/DD) Neuer Parameter für die Zeilen der Menü-Datei einer CARA-Anwendung.
	Der 8. Parameter ist eine Zahl, die den DMS-Index benennen kann. 
		Jedem Menüpunkt kann ein DMS-Index zugeordnet werden. Dieser DMS-Index verweist auf 
		die Dokumentenart, der der Menüpunkt im DMS entspricht. Damit beim Aufruf des DMS 	gleich
	angegeben werden kann, was angezeigt werden soll. Der DMS-Index wird in der Datei 
	CARA2DMSFlags.txt gezeigt. Im Script kann der aktuelle DMS-Index stets aus der Variable [ACT_DMS_IDX] (VAR_NUM) abgerufen werden
	
	New parameter for the lines of the menu-file in CARA-applications. The 8th parameter is a number and sets the DMS-index. Every menu-item can be associated to a DMS-index. The DMMS-index is related to a document-type in the DMS. So the DMS can be called with the correct document-type. The DMS-index is managed in the file CARA2DMSFlags.txt. Inside the scripts the DMS-index can always be read out of the variable [ACT_DMS_IDX] (VAR_NUM).

18.04.2011	(9.08.30/1230/DD) Die Liste der Rechte des angemeldeten Benutzers, zu den im Menü gekennzeichneten DMS-Menüpunkten gehören wird beim Programmstart in die Tabelle "dmsrights" gespeichert. Dabei enthält jeder Datensatz den DMS-Index und die DMS-Rechte-Flagge. Diese kann sich folgendermaßen zusammensetzten:
	DMS_RIGHT_READ_LEVEL_0 	(1)	
	DMS_RIGHT_READ_LEVEL_1 	(2)
	DMS_RIGHT_READ_LEVEL_2 	(4)
	DMS_RIGHT_READ_LEVEL_3 	(8)
	DMS_RIGHT_WRITE		(16)
	DMS_RIGHT_DELETE		(32)
	DMS_RIGHT_INSERT		(64)
	Diese Rechte ergeben sich automatisch aus den Rechten, die dem User bei dem entsprechenden Menüpunkt im Rechtesystem zugeordnet wurden. 
 	
	New command DMS_RIGHTS_2_LIST [aList]. With this command the binary-rights-flags that are related to menu-items that have been associated to an DMS-index are stored in a list. Every line holds the DMS-index and with a comma separated the DMS-right-flag. This can be constructed out of these values:
	DMS_RIGHT_READ_LEVEL_0 	(1)	
	DMS_RIGHT_READ_LEVEL_1 	(2)
	DMS_RIGHT_READ_LEVEL_2 	(4)
	DMS_RIGHT_READ_LEVEL_3 	(8)
	DMS_RIGHT_WRITE		(16)
	DMS_RIGHT_DELETE		(32)
	DMS_RIGHT_INSERT		(64)
	This rights are a result of the rights the user has been given in rights-system of the CARA-application. The list of the rights of the user that is actually logged in will be saved to the table dmsrights while the start of the application.

18.04.2011	(9.08.29/1229/DD) Neuer Applikations-INI-Datei-Schlüssel für die Sektion [DocumentManager]: DocMgrReplacedByDMS=0 (default). Ist der Wert FALSE (0), wird der interne Dokumentenmanager verwendet (so bisher). Wenn der Wert TRUE (1) gesetzt wird, soll das DMS-System anstelle des Dokumentenmanagers verwendet werden. Die Einstellung kann aus der Script-Variable vom Typ VAR_BOOL [DOCU_MGR_REPLACED_BY_DMS] ausgelesen werden (aber nicht zur Laufzeit geändert werden). Der Dokumentmanagerknopf wird damit zum Startknopf für das DMS. Die Eigenschaft DMS in der Kopfzeile der Masken-Definition wird damit unterdrückt, weil sie in diesem Fall nicht mehr benötigt wird (9.08.16/1216/DD vom 11.03.2011).
	 	
	New application-INI-file key for section [DocumentManager]: DocMgrReplacedByDMS=0 (default).
	If this value is FALSE (0) the internal document-manager will be used - as it was usually up to now. If the value is TRUE (1) the DMS should be used instead of the internal document-manager. This setting is stored in the variable [DOCU_MGR_REPLACED_BY_DMS] (type VAR_BOOL, it can't be changed while run-time). The document-manager-button will then be the start-button for the DMS. The property DMS that can be set in the header-line of a mask-description-file will be suppressed, because it is not needed in this case (9.08.16/1216/DD from 11.03.2011).

04.04.2011	(9.08.28/1228/DD) Durch den SQLStreamSave hervorgerufenen Fehler (Listenindex überschreitet das Maximum) werden ab jetzt nicht mehr auftreten.
 	
	Errors thrown by SQLStreamSave (Listindex exceeded maximum) won't longer occur from now on.

04.04.2011	(9.08.27/1227/DD) Mit dem INII-Datei-Schlüssel SQLStreamSave kann man ab jetzt speziell ausschließlich freie SQL-Interface überwachen.
 	
	With the INI-file-key SQLStreamSave only the free-SQL-interface may be observed.

04.04.2011	(9.08.26/1226/DD) Erweiterung der Änderung 7.00.04/450/TW vom 11.02.2002: Der Wert des Schlüssels TimeStampChange wird ab jetzt auch beim setzten des Zeitprüfungsrahmens berücksichtigt.
	
	Extend of change 7.00.04/450/TW from 11.02.2002: The value of the key TimeStampChange will be used while setting the time-frame from now on.

01.04.2011	(9.08.25/1225/DD) Erweiterung der Änderung 9.08.08/1208/JB vom 21.02.2011: Im Query-Konfigurator wird die Überschrift der Abfrage ab jetzt ohne den Inhalt der Variable [GLOB_APP_INFO] angezeigt und gespeichert.
	
	Extend of change 9.08.08/1208/JB from 21.02.2011: In the query-configuration-dialog the headline of the query will be show and saved without the contents of the variable [GLOB_APP_INFO] from now on.

01.04.2011	(9.08.24/1224/PW) Erweiterung der Änderung 9.07.92/1192/PW vom 18.11.2010: Klickt man die in der Maskenstatuszeile angezeigte RecordID mit der linken Maustaste an, erscheint ein Kontextmenü in dem man "kopieren" wählen kann um die RecordID zu kopieren. Der Rechtsklick funktioniert weiterhin wie gehabt.
	
	Extend of change 9.07.92/1192/PW from 18.11.2010: Clicking the RecordID in mask-status-bar with the left mouse-key will show a context-popup-menu where "copy" may be choosen to copy the RecordID to the clipboard. The right-click works as usual.

01.04.2011	(9.08.23/1223/DD) Neuer Applikations-INI-Datei-Schlüssel für die Sektion [Config]: CheckLocksTimeFlag=0 (default). Es handelt sich um eine Binärflagge, die additiv folgende Optionen tragen kann:
	1 = keine Meldung, wenn andere Sessions aufgrund der aktuellen Zeit "rausgeworfen" werden.
	2 = Zeitprüfungsrahmen größer
	4 = Soll nicht geprüft werden ob die Uhr während der Laufzeit verstellt wurde?

	New application-INI-file key for section [Config]: CheckLocksTimeFlag=0 (Default). This is a binary flag that may hold any sum of the following options:
	1 = no message if other sessions will be "thrown out" due to the actual time
	2 = time-checking-frame longer / bigger
	4 = Should not be checked wether the clock-settings have been changed while runtime?

01.04.2011	(9.08.22/1222/DD) Wenn eine Session in der Tabelle "lockrecs" registriert wird (LockEvent=1000), steht ab jetzt im Feld "EventFlag" des Datensatzes die verwendetet CARA-Engine-Version gespeichert.
	
	If a session is registered in the table "lockrecs" (LockEvent=1000) the feld "EventFlag" will contain the CARA-Engine-Version from now on.

31.03.2011	(9.08.21/1221/DD) Ab jetzt wird beim Setzen des Zeitprüfungsrahmens immer dann dem User eine Frage gestellt, wenn 20% der bereits eingeloggten Stationen durch seine Systemzeit abgemeldet würden. Dies wird auch in der Tabelle "changes" unter dem TableName "timeframe" protokolliert.
 	
	Setting the timeframe will cause a user-request if more than 20% of the actual running stations will be thrown out through the system-time of the station that tries to log in. This will be protocoled in the table "changes" with the tablename "timeframe".
 
30.03.2011	(9.08.20/1220/JB) Mit dem INII-Datei-Schlüssel SQLStreamSave kann man ab jetzt speziell nur die Lockrecs und auch speziell das freie SQL-Interface überwachen.
 	
	With the INI-file-key SQLStreamSave the table lockrecs may be watched separately as well as the free-SQL-interface.

30.03.2011	(9.08.19/1219/DD) Der Zeitprüfungsrahmen wird von nun an nicht mehr als überschritten gemeldet wenn die letzte Zeitprüfung mehr als 3 Minuten zurückliegt.
 	
	The time-check-frame will no longer be reported as exceeded if the last time-check was done more than 3 minutes ago.

28.03.2011	(9.08.18/1218/DD) Erweiterung der Tabelle QFilterI. Dadurch können nun im entsprechenden Dialog Filter auch per "OR" verknüpft werden.
 	
	Extend of the table QFilterI. By this filters may also be linkted with "OR" in the related user dialog.

17.03.2011	(9.08.17/1217/DD) Erweiterung des Befehls MASK_BLOCK [mask], boolBlockIt{, boolButtonsOnly}
	Der neue Parameter boolButtonsOnly blockt lediglich alle Knöpfe der Maske (inkl. Icon-Leiste). Somit verliert die Anwendung ggf. nicht den Focus, wenn man die ganze Maske blockt.
 	
	Extend of the command MASK_BLOCK [mask], boolBlockIt{, boolButtonsOnly}
	The new parameter boolButtonsOnly only blocks all buttons of the mask (incl. Icon-Panel). So the application doesn't lose the focus if the mask is blocked.

11.03.2011	(9.08.16/1216/DD) Neue Option für Masken: DMS. Sie schiebt ein ICON in die Icon-Zeile ein, das hinter dem Document-Manager-Icon eingeblendet ist und das DMS (Dokumenten-Management-System oder auch DokumentenArchiv) öffnet. Ein Linksklick öffnet das DMS zum "Sichten", ein Rechtsklick zeigt ein Kontextmenü an, in dem man zwischen "Sichten" und "Bearbeiten" wählen kann.

	Das Bearbeiten und Sichten des DMS wird durch Scripte gesteuert. Diese können mit den folgenden zwei neue Schlüssel für die Applikation-INI-Datei, Sektion [Config] angegeben werden:
	DMSViewScript=			Dieses Script sollte das DMS so aufrufen, dass die zum aktuellen 				Menüpunkt gehörende Dokumente angezeigt werden. 
	DMSEditScript=			Dieses Script sollte das DMS so aufrufen, dass die zum aktuellen 				Menüpunkt gehörende Dokumente angezeigt und auch bearbeitet 
					werden können. 
	Die Parameter, die an diese Scripte weitergegeben werden, sind die gleichen, wie bei GlobalIconScript.

	New option for masks: DMS. This inserts an INCON behind the Document-Manager-Icon into the icon-list of the mask. With a left click on the button the DMS (Document-Management-System or Document-Archive) is opened to view the related files of the actual dialog. With a right click a context menu will be opened that allows the user to choose  between "view" and "edit" of the DMS. The view and the edit-call of the DMS are done by scripts that can be named through the two new keys for the application-INI-File, section [Config:
	DMSViewScript=			This script should call theDMS to show the documents related to 
					the actual dialog. 
	DMSEditScript=			This script should call theDMS to show the documents related to 
					the actual dialog and also allow editing within the DMS.
	The parameters that are passed to the script are the same as those of the GlobalIconScript.

08.03.2011	(9.08.15/1215/DD) Neuer Befehl 
	LIST_STR_2_LIST_STR [listSource], [listDest], numLineSource, numLineDest
	Schreibt den numLineSource-ten String der Liste [listSource] in den numLineDest-ten String der Liste [listDest] egal wie lang der String ist. 
	numLineSource kann als [LIST_ITEM_ACTUAL] übergeben werden. 
	numLineDest kann als [LIST_ITEM_UNDEFINED] übergeben werden. 
	Wenn numLineSource größer als die maximale Anzahl der Strings in [listSource] ist, dann wird numLineSource auf den String der Liste gestellt. 
	Wenn numLineDest größer als die maximale Anzahl der Strings in [listDest] ist, dann wird numLineDest auf den String der Liste gestellt. Wenn numLineDest als [LIST_ITEM_UNDEFINED] übergeben wird, wird er String an das Ende der Liste angefügt.

	New command LIST_STR_2_LIST_STR [listSource], [listDest], numLineSource, numLineDest
	Writes then numLineSource-th string of the list [listSource] into the numLineDest-th string of the list [listDest] no matter how long the string is. 
	numLineSource may be given as [LIST_ITEM_ACTUAL]. 
	numLineDest may be given as [LIST_ITEM_UNDEFINED]. 
	If numLineSource is higher than the maximal amount of strings in [listSource], then numLineSource will be set to the last string of the list. 
	If numLineDest is higher than the maximal amount of strings in [listDest], then numLineDest will be set to the last string of the list. If numLineDest is given as [LIST_ITEM_UNDEFINED] then the string will be added to the end of the list.

07.03.2011	(9.08.14/1214/DD) Neuer Befehl PRINT_SAVE [print], 'strFilename', [boolRes]
	Speichert einen Druck als Datei. Mögliche Datei-Erweiterungen sind dabei:
	.VPE (VPE Datentyp zum Ablegen von Drucken, die mit deren Viewer auch gesichtet werden können)
	Ab VPE6 gehen auch noch die folgenden Datei-Erweiterungen: .PDF, .HTM und .XML

	New command: PRINT_SAVE [print], 'strFilename', [boolRes].
	Saves a print-out in a file. Possible file-extensions are:
	.VPE (VPE-file-type to save a print-out that can be shown with the VPE-Viewer)
	With VPE6 and higher also the following file-extensions are possible: .PDF, .HTM and .XML

06.03.2011	(9.08.13/1213/VD) Nach einem Doppelklick in ein Datums- oder Zeit-Feld wird von nun an auch der PostEdit-Hook angesteuert.

	After a double-click into a date- or time-field the post-edit-hook will be executed afterwards from now on.

05.03.2011	(9.08.12/1212/HB) Neue Query- und Browser-Variable vom Typ VAR_STR [query!VIEW_HEAD_LINE] um die Überschrift eines Browsers anzugeben.

	New query- and browser-variable of type VAR_STR [query!VIEW_HEAD_LINE] to define the headline of a browser.

03.03.2011	(9.08.11/1211/HB) Neue Befehle:
	VIEW_INFO [browser]
		Zeigt den [browser] in einem modalen Fenster an, dass nicht geschlossen werden kann
	END_VIEW schließt das VIEW_INFO - Fenster.

	New commands:
	VIEW_INFO [browser]
	Shows then browser in a modal window that could not be closed.
	END_VIEW closes the VIEW_INFO - window.

02.03.2011	(9.08.10/1210/VD) Das Bearbeiten und Speichern der Farbstes funktioniert nun ohne, dass beim Öffnen des Dialogs alle Farben auf Standard zurückgesetzt werden.

	Editing and saving of color-sets will work without resetting the colors to default on showing the dialog from now on.

22.02.2011	(9.08.09/1209/DD) Sorry, hier war eine minimale Änderung, die ich aber vergessen habe zu dokumentieren und auch im Augenblick nicht erinnere...

21.02.2011	(9.08.08/1208/JB) Neue gloable Variable von Typ VAR_STR [GLOB_APP_INFO]. Wenn dieser String irgendwelche Daten enthält, wird er in der Titelzeile von jedem Masken- und Browserfenster mit angezeigt.

	New global variable of type VAR_STR [GLOB_APP_INFO]. If this string contains any data, it will be displayed at the end of every mask- and browser-window-headline.

17.02.2011	(9.08.07/1207/DD) Der DELETE_DIR Befehl entfernt ggf. den Backslash am Ende der Verzeichnisangabe.

	The DELETE_DIR command removes the trailing backslash of the dir-name - if eeded.

17.02.2011	(9.08.06/1206/MaBa) Nach einem FILE_LIST wird ab jetzt der Lese-Handle freigegeben um zu vermeiden, dass das Verzeichnis anschließend noch "in Benutzung" geflaggt ist.

	After the FILE_LIST command the read-handle will be released to avoid that the directory is flagged as "in use".

14.02.2011	(9.08.05/1205/DD) Wenn in einem UNION-Query nach dem UNION kein FROM gefunden werden konnte, ging die Engine in eine  Endlosschleife, wenn VirtualDelete eingeschaltet war. Der Fehler ist behoben.

	If a UNION-query doesn't contain a FROM after the UNION and VirtalDelete was switched on, the engine loops endlessly. This error has been removed.

11.02.2011	(9.08.04/1204/MaBa) Beim Aufruf des EXTERN-Befehls wurden die Zeilen der Parameterliste mit CRLF aneinandergereiht. Diese "Sonderzeichen" werden von nun an vor der Parameterübergabe herausgefiltert..

	When calling the EXTERN command the lines of the parameter-list where concatinated with a CRLF. This "special chars" will be filtered out in future.

10.02.2011	(9.08.03/1203/MaBa) Neue globale Variable "WIN_IS_64BIT" vom Typ VAR_BOOL. Sie gibt an, on das OS 64bit verwendet oder nicht.

	New global variable of type VAR_BOOL "WIN_IS_64BIT". It returns wether the OS is running with 64bit or not.

04.02.2011	(9.08.02/1202/DD) Scripte die aus einer HTML-Startseite aufgerufen werden sollen, können ab jetzt nicht nur die Endung ".csh.htm" haben, sondern auch ".csh.html".

	Scripts that are called from out of a HTML-start-page can not only have the file-extension ".csh.htm" but also ".csh.html".

04.02.2011	(9.08.01/1201/DD) Veränderung der Syska-2011a-OFCK-Schnittstelle: die DLL wird erst verzögert zum Programmstart geladen. Dadurch kann der Kontakt zur SQL-FiBu problemlos aufgenommen werden. Vor dieser Änderung konnte nur zur klassischen Euro-FiBu verbunden werden. 

	Change of the Syska-2011a-OFCK-Interface: the DLL will be loaded later, after the program-start. This provides an unproblematic connect to the SQL-FiBu. Before this update only the classic Euro-FiBu was connected.

04.02.2011	(9.08.00/1200/VD) Zwei neue Befehle zum Debuggen DEBUG_ALL_ON und DEBUG_ALL_OFF. Mit dem Befehl DEBUG_ALL_ON werden die Befehle DEBUG_ON und DEBUG_SQL_ON gleichzeitig ausgeführt und mit DEBUG_ALL_OFF werden natürlich die Gegenbefehle DEBUG_OFF und DEBUG_SQL_OFF gleichzeitig ausgeführt.

	Two new commands for debugging: DEBUG_ALL_ON and DEBUG_ALL_OFF. The command DEBUG_ALL_ON is like  DEBUG_ON and DEBUG_SQL_ON executed in one step and DEBUG_ALL_OFF does exactly the opposite and is like DEBUG_OFF and DEBUG_SQL_OFF in one step.

20.01.2010	(9.07.99/1199/DD) Neue Masken-Variable vom Typ VAR_BOOL [mask!MASK_IS_BROWSER] (Vorgabe = FALSE). Wenn diese Variable auf TRUE gesetzt wird, dann geht die CARA-Engine davon aus, dass die Maske lediglich einen Internet-Browser (NAVIGATE) zur Verfügung stellt und man kann mit ESC die Maske jederzeit schließen. Wenn man diese Variable nicht auf TRUE stellt, kann man das Fenster nur mit den Windows-Dialogelementen (z.B. mit der Maus oben rechts auf das [X] klicken) schließen. Da Benutzer einer CARA-Anwendung aber gewöhnt sind ein Fenster mit ESC schließen zu können, ist es sinnvoll diese Möglichkeit zu haben.

	New mask-variable type VAR_BOOL [mask!MASK_IS_BROWSER] (default = FALSE).If this variable is set to TRUE, the CARA-engine estimates that a mask is showing only an internet-browser (NAVIGATE) and then the user may close the window by typing the escape-key. If the variable is not set to TRUE the window may only be closed with the standard-windows-dialog-elements (e.g. a mouse-click to the [X] in the upper right corner). But users of CARA-applications are used to close windows with the ESC-key so it is useful to have this option.

17.01.2010	(9.07.98/1198/MB) Der Aufruf von dem Befehl EXTERN mit der Option [EXTERN_HIDE] führt dazu, dass bei Command-Line-Anwendungen kein Fenster mehr zu sehen ist.

	Calling an command-line-application with the command EXTERN and the option [EXTERN_HIDE] will not show any window anymore.

20.12.2010	(9.07.97/1197/DH) Schlug die Volltextsuche zweimal hintereinander fehl, kam es gelegentlich zu einem Ausnahmefehler. Der Fehler wurde behoben.

	If the full-text-search failed twice, sometimes an error-exception occurred. This error has been removed.

17.12.2010	(9.07.96/1196/DD) Neue Befehle für die OFCK-Schnittstelle zur Syska-SQL-Fibu (mehr Infos sind in der Syska-Dokumentation): 
	OFCK_SQL_EXIT [numRes] {1=ok}
	OFCK_SQL_IN_USE [numRes] {1=yes, 0=no}
	OFCK_SQL_INIT [numRes] {1=ok}, strDatabase, strDataHost, strUserName, strPassword{, numPort(Standard=3306){, boolShowDialog}}	

	New commands for the OFCK-interface of the Syska-SQL-Fibu (more information are available in the syska-documentation):
	OFCK_SQL_EXIT [numRes] {1=ok}
	OFCK_SQL_IN_USE [numRes] {1=yes, 0=no}
	OFCK_SQL_INIT [numRes] {1=ok}, strDatabase, strDataHost, strUserName, strPassword{, numPort(Standard=3306){, boolShowDialog}}	

04.12.2010	(9.07.95/1195/DD) Überarbeitung der Syska-2011a-OFCK-Schnittstelle für die Version 9.3 der OFCK93.DLL.

	Upgrading to Version 9.3 of the OFCK-Interface of the Syska-2011a-Fibu for the OFCK93.DLL.

26.11.2010	(9.07.94/1194/HB) Mit einem “Rechtsklick” auf einen Spaltenkopf von Browsern und Grids ist es ab jetzt möglich den Punkt "Filtern" zu wählen. Dann geht ein Dialog mit den DISTINCT Feldinhalten der Spalte auf und man kann wie bei der MS-Excel-Filter-Methode aus wählen, welche Daten man angezeigt bekommen möchte.

	With a right click on a column header of a grid or browser the item "filtering" can be chosen in the context menu. A dialog will be opened that displays the DISTINCT field values of the column and similar to the filter function of MS-Excel the data will be displayed.

24.11.2010	(9.07.93/1193/GH) Erweiterung der CSH-Syntax zum rechtbündigen Darstellen von String-Feldern. 
	Wenn ein String rechtsbündig ausgegeben werden soll, kann dies per CSH-Syntax ab jetzt festgelegt werden, jedoch NICHT in dem Segment für die Maske (z.B. bei Dezimalzahlen M"3") sondern wird direkt im Bezeichner der Überschrift mit einem Pipe-Zeichen getrennt angegeben:
	Beispiel: [N"Nachname|R"]Name1 --> der String wird rechtsbündig dargestellt.

	Extension of the CSH-Syntax for displaying string-fields right adjusted.
	If a string should be displayed right adjusted the CSH-Syntax can be used, but NOT in the segment for the mask (e.g. for floating-point-numeric M"3"), instead it is directly in the header info separated by a pipe-sign:
	Example: [N"last name|R"]Name1 --> the string will be displayed right adjusted.

18.11.2010	(9.07.92/1192/PW) Neuer Applikations-INI-Datei-Schlüssel für die Sektion [Config]: ShowRecordID=0 (default). Der Schlüssel wird auch separat in die Stations-INI-Datei eingetragen und nach dem ersten Aufruf der Engine muss der Wert dort geändert werden. Der Wert kann im Werkzeugkasten geändert werden. Wenn dieser Schlüssel TRUE (=1) ist, dann wird in jeder Maske unten im Statuspanel die aktuell geladene RecordID gezeigt und man kann mit einem Rechtsklick in die Zwischenablage kopiert werden.

	New application-INI-file key for section [Config]: ShowRecordID=0 (Default). This value will be copied to the station-INI-file after the first start of the engine and has to be changed there. The value may also be changed with the tool-box. If the key is TRUE (=1) the actual loaded RecordID will be displayed in the bottom-panel of the mask an can be copied to the clipboard with a right click on it. 

10.11.2010	(9.07.91/1191/DD) Erweiterung der Änderung 9.07.83/1183/DD vom 01.10.2010 (UseDB4Translation): Alle Zeichenketten, die innerhalb von Scripten bearbeitet oder aufgerufen werden, werden NICHT übersetzt. Aus einem einfachen "CALC [ThisStr] AS CON([ThisStr],[ThatStr])" wurde durch Übersetzten ein funktional nicht mehr einsetzbarer SQL-String. Bei allen anderen Übersetzungsmethoden bleibt alles wie gehabt.

	Extend of change 9.07.83/1183/DD from 01.10.2010 (UseDB4Translation): all strings, that are used or changed from inside a script, will NOT be translated anymore. Translation produced a technically unusable result with an operation like this "CALC [ThisStr] AS CON([ThisStr],[ThatStr])". All other translation-methods will not be affected by this.

07.11.2010	(9.07.90/1190/DD) Die Library MySQLDAC_Full wurde auf den Stand 2.7.5 gebracht.
	
	The library MySQLDAC_Full has been brought to V. 2.7.5.

25.10.2010	(9.07.89/1189/ HB) Neuer Befehl FIELD_COORD_SET [mask],'field',floatX,floatY,floatW,floatH
	Setzt die Koordinaten eines Masken-Dialog-Elementes neu. Wenn einer der Werte negativ ist, wird er nicht gesetzt.
	
	New command FIELD_COORD_SET [mask],'field',floatX,floatY,floatW,floatH 
	sets the coordinates of a mask-dialog-element. I a value is negative, it will not be set.

25.10.2010	(9.07.88/1188/HB) Das Druckvorschaufenster kann ab jetzt mit ESC geschlossen werden.

	The print-preview-window can be closed with ESC from now on.

20.10.2010	(9.07.87/1187/DD) Der Befehl EXPORT mit dem Parameter [EXP_SAVE] führt ab jetzt dazu, dass der gesamte Befehl im Hintergrund ausgeführt wird. So kann man beispielsweise jedes beliebige Query mit folgender Sequenz in eine CSV-Datei exportieren:
          	LOCAL_BROWSER LocB
          	LOCAL_BOOL    LocRes
          	QUERY [LocB]
            	  SELECT Name1, Ort, PLZ FROM adressen WHERE RecordID > 100 
          	END_QUERY                                                  
          	EXECUTE [LocB],[LocRes]
          	IF [LocRes]
            	  GET_DATA [LocB],[LocRes]
            	  IF [LocRes]
                 CALC [EXP_FILE_NAME] AS CON([PRINTSET_PATH],'test.csv')
                 CALC [EXP_FILE_TYPE] AS [EXP_FILE_TYPE_CSV]
                 EXPORT [LocB], '', [EXP_SAVE]
            	  END_IF
          	END_IF
	
	If the command EXPORT is called with the parameter [EXP_SAVE] the complete process will be executed in the background. So any query can be (e.g.) exported to a csv-file like the example shown above.

19.10.2010	(9.07.86/1186/DD) Neuer Applikations-INI-Datei-Schlüssel für die Sektion [SQL]: StringLenDivisor=1                        (default). Wenn (z.B. bei einer MySQL-Datenbank) die Feldlänge der Strings aus der Datenbank aufgrund z.B. von UTF8 mit der doppelten oder dreifachen Länge zurückgeliefert werden, dann kann mit diesem Wert angegeben werden, wie die Länge zu teilen ist um den wahren Wert zu erhalten.
	
	New key for the applikation-INI-file, section [SQL]: StringLenDivisor=1 (default). If (e.g. with a MySQL-database) the field-length of string-fields is returned with the double or third length (e.g. in case of the usage of UTF8) then this value can be used to divide the string length. 

11.10.2010	(9.07.85/1185/DD) Neuer Applikations-INI-Datei-Schlüssel für die Sektion [Config]: PrintPreviewScale=1.0 (default). Der Schlüssel wird auch separat in die Stations-INI-Datei eingetragen und nach dem ersten Aufruf der Engine muss der Wert dort geändert werden. Ab VPE 5.x gilt: Dieser Wert speichert den Zoomfaktor der zuletzt im Druckvorschaufensters eingestellt war. Dieser Wert wird dann zum Anzeigen des nächsten Dokumentes verwendet.

	New key for the applikation-INI-file, section [Config]: PrintPreviewScale=1.0 (default). The key will be saved to the station-INI-file as well, after the first start of the engine, it has to be changed there too. From VPE 5.x it is: This is the value of the zoom-factor that has been used in the print-preview-window at last. This value will be used for the preview of the next document.

08.10.2010	(9.07.84/1184/DD) Die Kontextmenüs von Browser und Grid wurden anders sortiert: wenn ab jetzt eine User-, Insert- oder Delete-Icon erlaubt wurden, werden die entsprechenden Punkte ganz oben eingeblendet.
	
	The context-menus of browsers and grids have been sorted differently: if a user-, insert- oder delete-icon is allowed, the related items will be shown on top of the menu from now on.

01.10.2010	(9.07.83/1183/DD) Neuer Applikations-INI-Datei-Schlüssel für die Sektion [Config]: UseDB4Translation=0 (default). Wenn beim Einloggen eine Sprache gewählt wurde, die [LANGUAGE_ID] größer 0 ist (0=Defaultsprache), dann wird (wenn dieser Schlüssel auf 1=TRUE stehet) in der Tabelle "trala" nach der Übersetzung gesucht.
	Dabei gilt: 	TableName	=	"system_translation"
			FieldName	=	"headers" oder "message"
			LanguageIdx	=	[LANGUAGE_ID]
			TransValue	=	"der übersetzte Text"
			RelrecID		=	Index des Textes unter dem gleichen Index findet man die 
						Übersetzungen der anderen Sprachen

	New key for the applikation-INI-file, section [Config]: UseDB4Translation=0 (default). if someone logs into the application and chooses a language with a [LANGUAGE_ID] bigger than 0 (0=default language), the table "trala" will be uses for tarnslation (if this key is set to 1=TRUE).
	It is: 		TableName	=	"system_translation"
			FieldName	=	"headers" or "message"
			LanguageIdx	=	[LANGUAGE_ID]
			TransValue	=	"translated text"
			RelrecID		=	Index of the text. With index the translated values of the 
						other languages can be found.

30.09.2010	(9.07.82/1182/DD) Neue Mask-Optionen SCALEH1.0 und SCALEV1.0: damit kann man die Darstelllung aller Felder innerhalb einer Maske insgesamt kleiner oder größer machen. SCALEV0.8 (scale vertically)  bewirkt, dass alle Felder und Labels und auch der Platz zwischen den Feldern in der Maske nur mit 80% der normalen Höhe angezeigt werden. SCALEH0.8 (scale horizontally)  bewirkt, dass alle Felder und Labels und auch der Platz zwischen den Feldern in der Maske nur mit 80% der normalen Breite angezeigt werden.
 
	New mask-options SCALEH1.0 und SCALEV1.0: can be used to scale up or down the size of the fields and labels (and the space between them) inside a mask. SCALEV0.8 (scale vertically)  makes, that all fields and labels (and the space between then) of a mask are shown with 80% of their normal height. SCALEH0.8 (scale horizontally) makes, that all fields and labels (and the space between then) of a mask are shown with 80% of their normal width. 

29.09.2010	(9.07.81/1181/MSch) Erweiterung der Möglichkeiten zur Einstellung der Bildschirmauflösung im Werkzeugkasten: man kann ab jetzt auch die Schriftgröße skalieren. Das ist z.B. brauchbar, wenn man die Gesamtdarstellung der Anwendung nicht kleiner machen möchte, jedoch die Schrift selber z.B. eine Stufe kleiner stellen möchte, damit längere Label besser zu lesen sind. Dazu gehört auch der Applikations-INI-Datei-Schlüssel in der Sektion [Config] FontDisplay=100 (default), der bei abweichender Einstellung in die Stations-INI-Datei übernommen wird.
	
	Extension of the options for the screen resolution settings in the toolbox: from now on also the font size may be scaled. This is useful if the main resolution should not be scaled down, but the font should be one step smaller, so longer labels may be better readable. Additionally a new application-INI-file-key for section [config] is available: [Config] FontDisplay=100 (default), this key will be also saved to the station-INI-file, if the user made changes.	

21.09.2010	(9.07.80/1180/DK) Erweiterung der Änderung 7.00.04/450/TW vom 11.12.2002: die globale Systemvariable [TIME_STAMP_CHANGE] kann ab jetzt zur Laufzeit verändert werden. 
	
	Extend of change 7.00.04/450/TW from 11.12.2002: the global system-variable [TIME_STAMP_CHANGE] can be changed while runtime from now on.

24.08.2010	(9.07.79/1179/VD) Wenn Daten per Import in die Datenbank eingefügt wurden und dabei das Feld "IDUser" der importierten Datensätze mit dem Wert 0 gefüllt wurde, dann wurde beim Anzeigen des Datensatz-Status mit Strg+F12 irgend eine beliebige Adresse als "Anleger" angezeigt. Der Fehler wurde behoben.
	
	If data have been inserted into the database via an import and the field "IDUser" of the imported records has been filled with 0, the display of the record-status with Ctrl+F12 showed a random address as the "creator". This error has been removed.	

13.08.2010	(9.07.78/1178/GF) Der "alte" Listengenerator funktioniert nun auch unter VPE5 und VPE6.
	
	The "old" list-generator works with VPE5 and VPE6 now.

10.08.2010	(9.07.77/1177/PW) Beim Drucken eines Beleges eines gelöschten Datensatzes, der mittels VirtualDelete sichtbar gemacht wurde, schlug der Befehl "NOTE_READ" fehl, wenn die Notiz ebenfalls gelöschte Daten beinhaltete. Der Fehler wurde behoben.
	
	Printing a document based on a deleted record, that has been made visible through VirtualDelete, stalled the engine by a failure of NOTE:READ if a note contained deleted data as well. This error has been removed.

05.08.2010	(9.07.76/1176/MCD) Source-Dateien können ab jetzt auch UTF8 codiert sein.
	
	Source-files may be UTF8 coded from now on.

05.08.2010	(9.07.75/1175/DD) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [Config]: ShowIconDeleteLast=0 (Default). Soll das Icon zum Löschen von Datensätzen oben links in der Maske, rechts vom Speicher-ICON angezeigt werden (wie bisher immer = 0) oder ganz rechts neben dem Hilfe-ICON (=1) um die Benutzer vor dem versehentlichen Anklicken des Icons zu bewahren?

	New key for the applications-INI-file, section [Config]: ShowIconDeleteLast=0 (default). Shall the icon for deletion be shown in the upper left part of the dialog-mask, right beneath the save-icon (as is has been until now = 0) or shall it be shown at the very right position beneath the help-icon (=1) to prevent users from clicking on it by accident?

29.07.2010	(9.07.74/1174/DD) Die Post- und Pre-Edit-Routinen waren gegeneinander nicht "thread save". Der Fehler wurde behoben.
	
	The post- and pre-edit-routines haven't been thread save against each other. This error has been removed.

21.07.2010	(9.07.73/1173/DD) Die Library für den SSH-Tunnel wurde auf die Version 1.7.2 angehoben.
	
	The SSH-tunnel-library has been updated to version 1.7.2.

20.07.2010	(9.07.72/1172/GH) Das direkte Ansteuern von Group-Boxen und Radio-Groups innerhalb einer Eingabemaske mittels eines vorbelegten Buchstabens im Bezeichner der Box (z.B. ALT+D "springt" zur Box mit dem Bezeichner "A&dressen") ging seit der Änderung 9.00.43/891/DD vom 26.06.2007 nur noch, wenn der Globalvariable [MASK_CUT_WIN_MESSAGES] abgeschaltet war. Der Fehler ist nun behoben.

 	Jumping directly to a group-box or radio-group within an input-mask by a predefined hotkey in the box-name (e.g. ALT+D jumps to the box with the name "A&ddresses") was not working since change 9.00.43/891/DD from 26.06.2007 if the global variable [MASK_CUT_WIN_MESSAGES] was set to TRUE. This error has been removed.

07.07.2010	(9.07.71/1171/DD) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [Config]: ShowChangesScript= (Default). Das hier angegebene Script wird ausgeführt wenn in einer Maske die Taste ALT+F12 angeklickt wird und die Änderungshistorie eines Datensatzes angezeigt werden soll. Ist dieser Schlüssel leer bzw. wenn das angegebene Script nicht existiert, wird die Anzeige von der Engine mit einem Standard-View angezeigt. In der Dokumentation der CARA-Engine existiert Beispiel-Script "ShowChanges.csh".

 	New key for the applications-INI-file, section [Config]: ShowChangesScript= (default). The given script will be executed, if a user types ALT+F12 in a dialog od the application to show the changes-history of a record. If this key is empty or the given script doesn't exist, the engine shows a standard-view. In the documentation of the CARA-Engine the example-script "ShowChanges.csh" is availiable.

07.07.2010	(9.07.70/1170/DD) Bei der Untersuchung, ob der Feldinhalt eines String-Dialogfeldes geändert wurde, wird die Einstellung [SQL_BCK_SLSH_INTRO_SPEC_CHAR] ab jetzt berücksichtigt.

 	While compareing the field-contens of string-dialog-fields for the saving of the changes, the setting of the key [SQL_BCK_SLSH_INTRO_SPEC_CHAR] will respected.

16.06.2010	(9.07.69/1169/VD) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [SQL]: BlankReplace=¯ (Default, char #175). In Query, in denen ein Feldname Leerzeichen enthalten soll, muss das BlankReplace-Zeichen verwendet werden, sonst schlägt der SQL-Parser fehl.
	Beispiel: 
	SELECT P.Stufe, (SELECT¯SUM(G.Brutto)¯FROM¯Rechnung¯G¯WHERE¯G.Kennung="G"),…

 	New key for the applications-INI-file, section [SQL]: BlankReplace=¯ (default, char #175). In querys that are containing fieldnames with blanks the BlankReplce-sign must be used, otherwise the sql-parser will fail.
	E.g.: SELECT P.Stufe, (SELECT¯SUM(G.Brutto)¯FROM¯Rechnung¯G¯WHERE¯G.Kennung="G"),…

11.05.2010	(9.07.68/1168/HL) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [Config]: FullTextSearchSeparate=0 (Default). NUR wenn dieser Schlüssel gesetzt ist, wird die Volltextsuche so ausgeführt, wie es in der letzten Änderung (9.07.67/1167/DD) angegeben wurde. Diese Option kann jetzt auch individuell pro Station im Werkzeugkasten eingestellt werden.

 	New key for the applications-INI-file, section [Config]: FullTextSearchSeparate =0 (default). ONLY if this key is set to 1 the fulltext-search will be executed like it is described in the last change (9.07.67/1167/DD). This option can be set individual for each station in the toolbox.

10.05.2010	(9.07.67/1167/DD) Bei der Volltextsuche wird ab jetzt jeder Teil des Suchstrings, der durch Leerzeichen oder das Joker-Zeichen “*“ abgeteilt ist, separat gesucht. Damit ist die Reihenfolge der Teilstrings unwichtig und es gibt auch dann einen Treffer, wenn ein Feld nur einen Teil des Suchstrings enthält. 

	While full-text-search every part of the search-string that is separated by a blank or the wildcard “*” will be searches separately. So the order of the string parts doesn’t matter anymore and there will be also a matching if a field does only contain a part of the search-string.

05.05.2010	(9.07.66/1166/HB) Erweiterung der CSH-Syntax zum farblichen Hervorheben einzelner Felder. 
	Die Syntax entspricht exakt dem farblichen Hervorheben ganzer Zeilen nur anstelle des Erkennungsbuchstabens „C“ zum Einschalten der farblichen Hervorhebung wird das „I“ (i) verwendet und zum Abschalten wird anstelle des „T“ hier das „J“ verwendet.
	Beispiel: [I3A>="4" JA<"4.3"]Preis --> alle Preise von 4,00 bis 4,30 werden mit Farbe 3 markiert.

	Extension of the CSH-Syntax for highlighting / coloring of single fields.
	The syntax is exactly the same way as the highlighting / coloring of complete rows but instead of using the “C” to switch on the a color the “I” (i) has to be used and for switching off instead if the “T” the “J” has to be used.
	Example: [I3A>="4" JA<"4.3"]price --> all prices from 4,00 to 4,30 will be colored with the color no.3.

05.05.2010	(9.07.65/1165/PW) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [Config]: UpdateDataStructure=0 (ab jetzt Default). Wenn dieser Schlüssel gesetzt ist, wird bei JEDEM Start der Engine geprüft, ob die neuesten Felder der Systemtabellen in der Datenbank sind. Das kostet, gerade bei Tabellen mit vielen Datensätzen, viel Zeit. Falls dieser Schlüssel auf 0 gesetzt wurde, muss man beim Einspielen einer neuen Engine wenigstens ein Mal so starten, dass der Schlüssel auf 1 steht.

 	New key for the applications-INI-file, section [Config]: UpdateDataStructure=0 (default from now on). If this key is set to 1 the data-structure of all system-tables will be checked on every application start. This may take some time especially if these tables hold a lot of records. If this key is set to 0 one has to take care if the engine has been changed and it has to be started at least once with this key set to 1.

04.05.2010	(9.07.64/1164/DK) Beim Anzeigen von LIST-Variablen mittels des Befehls LIST_DISPLAY wird ab jetzt der Font „Courier New“ verwendet, dadurch wird z.B. auch das Sonderzeichen „€“ ordentlich angezeigt.

 	The font Courier New will be used for showing the contents of LIST-variables through the command LIST_DISPLAY so special chars like “€” will be displayed correctly.  

03.05.2010	(9.07.63/1163/SCH) Zwei neue globale Variablen: [MSG_2_LOG] und [MSG_LOG]
	Wenn die boolean Vriable [MSG_2_LOG] auf TRUE gesetzt wurde, werden alle Meldungen die mit dem Befehl MESSAGE angezeigt werden sollten in die Liste [MSG_LOG] umgelenkt und nicht mehr angezeigt. Damit lassen sich Scripte, die normalerweise als Dialog laufen schnell zu Scripten für Hintergrundarbeiten umbauen, da alle unterbrechenden Meldungen nicht mehr angezeigt werden.
	Die Liste enthält mit Semikolon getrennt folgende Angaben bereit:
	Date;Time;Script;Proc;User;Type;Head;Info;
	Die Liste wird zwischenzeitlich (alle 1000 Zeilen) und beim Verlassen des Programms in den PRINTSET-Ordner als Datei mit dem Namen “MsgLog_“ + Station-INI-FileName + die Extension “.csv“ gespeichert. Die Liste wird an die Datei angehängt, wenn sie bereits existiert. Die Datei kann z.B. mit MS-Excel eingesehen werden.

	Two new variables: [MSG_2_LOG] und [MSG_LOG]
	If the boolean variable [MSG_2_LOG] is TRUE all information that should be shown with the command MESSAGE will be redirected to the list [MSG_LOG] and not displayed to the user. So scripts that are normally presenting messages can easily be rewritten to act as a background task that is not interrupted by any messages. 
	The list contains with semicolon separated the following information:
	Date;Time;Script;Proc;User;Type;Head;Info;
	The list will be saved meanwhile (all 1000 lines) and on program-exit into the PRINSET-folder as a file with the name “MsgLog_“ + Station-INI-FileName + and the extension “.csv“. The file will be appended if it already exists. It can be view afterwards with e.g. MS-Excel.

03.05.2010	(9.07.62/1162/DD) Neuer Befehl: 
	CHOOSE_DIR [boolRes], [strPathName], strRoot, strHeader, numOptions
	Erlaubt das Auswählen eines Verzeichnisses. 
	[boolRes] gibt zurück ob der Benutzer erfolgreich ein Verzeichnis ausgewählt hat. 
	[strPathName] ist zugleich das Startverzeichnis und enthält abschließend den Namen des ausgewählten Verzeichnisses.
	strRoot ist das Laufwerk in dem gestartet werden soll (z.B. “c:\“). Falls dieser String leer ist, wird das Laufwerk aus [strPathName] extrahiert.
	strHeader ist die Überschrift des Dialogs.
	numOptions kann sich zusammensetzten aus:
	[CHOOSE_DIR_NEW_FOLDER]	Soll der User auch neue Verzeichnisse anlegen dürfen?
	[CHOOSE_DIR_SHOW_EDIT]	Soll ein Eingabefeld unterhalb des Auswahlfensters 
						eingeblendet werden?
	[CHOOSE_DIR_SHOW_SHARE]	Sollen auch Freigaben gezeigt werden?
	[CHOOSE_DIR_NEW_UI]	Soll das neue Dialoglayout verwendet werden?
	[CHOOSE_DIR_SHOW_FILES]	Sollen auch Dateien angezeigt werden?
	[CHOOSE_DIR_VALIDATE_DIR]	Soll ggf. die Eingabe des Benutzers überprüft werden?

	New command: CHOOSE_DIR [boolRes], [strPathName], strRoot, strHeader, numOptions
	This command allows to choose a folder.
	[boolRes] returns if the user successfully has chosen a folder. 
	[strPathName] is as well the starting directory as it holds the result-folder.
	strRoot the starting drive name (like “c:\“) if this string is empty it will be extracted from [strPathName].	strHeader is the header-text of the dialog.
	numOptions can be combined by the following options:
	[CHOOSE_DIR_NEW_FOLDER]	May the user create new folder?
	[CHOOSE_DIR_SHOW_EDIT]	May the user have an input-field for the folder?
	[CHOOSE_DIR_SHOW_SHARE]	May shares be shown too?
	[CHOOSE_DIR_NEW_UI]	May the new dialog-design be shown?
	[CHOOSE_DIR_SHOW_FILES]	May files be shown too?
	[CHOOSE_DIR_VALIDATE_DIR]	May the users input be verified?

25.04.2010	(9.07.61/1161/HB) Neuer Befehl: 
	DATABASE_CHANGE [boolRes], 'strDBName', 'strAlias', 'strUser', 'strPwd', 'strHost', 'strPort', 'strCharSet', 'strCollation'
	Wechselt die System-Datenbank. Es ist zu bedenken, dass die Datenbankstruktur der Datenbanken gleich sein sollte (sie wird nicht erneut eingelesen) und auch, dass die gleichen Benutzerrechte weiterhin gelten (auch sie werden nicht erneut eingelesen).

	New command:
	DATABASE_CHANGE [boolRes], 'strDBName', 'strAlias', 'strUser', 'strPwd', 'strHost', 'strPort', 'strCharSet', 'strCollation'
	Changes the system-database. Please note that the database-structure of the used database should be equal (it will not be read again) and also, that the same user-rights are continued to be used (they will not be read again too). 

21.04.2010	(9.07.60/1160/GH) Erweiterung des Befehls LIST_SORT um einen neuen optionale Parameter:
	LIST_SORT [list] {, numPart, strDelim {, boolDesc}}
	Wenn boolDesc = TRUE ist wird die Liste absteigend sortiert. Um ganze Zeilen (also nicht Teilstrings) zu sortieren, einfach numPart = 0 und strDelim = ‘‘ setzten.

	Extension of the command LIST_SORT by two new optional parameter: 
	LIST_SORT [list] {, numPart, strDelim {, boolDesc}}
	If boolDesc = TRE the list will be sorted descending. To sort complete lines (instead of string parts) just set numPart = 0 andstrDelim = ‘’. 

21.04.2010	(9.07.59/1159/DD) Die letzte Einstellung der Lage und Größe des Druckvorschaufensters wird ab jetzt gespeichert und beibehalten.
	
	The last position and size of the print-preview window will be saved and restored from now on.

20.04.2010	(9.07.58/1158/IS,VD,DD) Der Befehl MEMO_GET wurde bei Texten mit mehr als 255 Zeilen falsch ausgeführt weil zum Zählen der Zeilen eine Byte-Variable verwendet wurde. Der Fehler wurde behoben.
	
	The command MEMO_GET have been executed wrong in case of texts with more than 255 lines because a byte-variable has been used for counting. The error has been removed.

14.04.2010	(9.07.57/1157/IS,VD,DD) Die Befehle NOTE_WRITE und MEMO_SET wurden bei Texten mit mehr als 255 Zeilen falsch ausgeführt weil zum Zählen der Zeilen eine Byte-Variable verwendet wurde. Der Fehler wurde behoben.
	
	The command NOTE_WRITE and MEMO_SET have been executed wrong in case of texts with more than 255 lines because a byte-variable has been used for counting. The error has been removed.

13.04.2010	(9.07.56/1156/DK) Beim Start des Programms wird ab jetzt überprüft, ob eventuell von Dualmonitorbetrieb auf Einzelmonitor umgeschaltet wurde. Wenn ja, werden die Koordinaten zurückgesetzt und die Anwendung mit einer Meldung beendet. Beim erneuten Start sind dann alle Fensterpositionen wieder im Ursprungszustand.
	
	On start of the program a check will be done, if the application has been running with many monitors or not. If a change has been made, the coordinates will be rest and the application stop with a warning-message. All windows-positions will be reseted on the next start.

13.04.2010	(9.07.55/1155/MCD) Die Fehlermeldungen beim Start des Programms, die durch ältere Menü-Definitionen hervorgerufen werden, werden ab jetzt nicht mehr angezeigt.
	
	The error-messages that are shown while startup and are caused by older menu-definition-files are no longer shown.

13.04.2010	(9.07.54/1154/HB) Neuer Schlüssel für die Applikations-INI-Datei Sektion [Config], der auch separat in die Stations-INI-Datei eingetragen wird und nach dem ersten Aufruf der Engine dort geändert werden muss: PrintPreviewWinWidth=853. Damit kann die Breite des Druckvorschaufensters festgelegt werden.
	
	New key for the application-INI-file, section [Config], that also will be stored in the station-INI-file and has to be changed there after the first start of the engine: PrintPreviewWinWidth=853. This defines the width of the print-preview-window.

15.03.2010	(9.07.53/1153/DD) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [Config]: ShowShootdown=0 (Default). Wenn hier der Wert 1 angegeben wird, dann wird beim Beenden der Anwendung jeder Schritt einzeln angezeigt. Beim Wert 2 wird jeder zweite Schritt angezeigt. Beim Wert 3 wird nur noch bei wenigen Schritten angehalten. Beim Wert 4 wird nur noch bei den wichtigsten Punkten angehalten. Dies dient zur Analyse von Systemen, bei denen sich die Engine beim Beenden „aufhängt“.

	New key for the application-INI-file, section [Config]: ShowShootdown=0 (Default).
	If the value given is 1, every step of the shoot-down of the engine will be shown. With value 2 every second step will be shown. With value 3 only a few hold and stop points are set. With the value 4 only the main points will be shown. This is useful to analyze systems that stalls while the engine is shooting down. 

11.03.2010	(9.07.52/1152/DK) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [Config]: MaskFieldDblQuoteReplace= (Default=leer). Wenn hier ein Wert angegeben wird, werden Maskenfelder vom Typ String vor der Weitergabe an ein Query nach der Eingabe von doppelten Anführungszeichen (“) durchsucht und durch eben diesen Wert ersetzt. Die Angabe des Wertes muss in ASCII-Werten die mit Rauten (#) getrennt sind erfolgen. Z.B. #39#39

	New key for the application-INI-file, section [Config]: MaskFieldDblQuoteReplace= (Default=empty).
	If a value is given here, in all mask-fields of type string the occurrence of a double-quote will be replaced by exactly this value before they are transferred to a query. The value has to be given in ASCII values that are separated with #-signs. E.g. #39#39 

11.03.2010	(9.07.51/1151/DD) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [Config]: VPEBarCodeAutoChecksum=0 (Default). Der Inhalt dieses Schlüssels wird an die neue globale Variable [VPE_BARCODE_AUTO_CHECKSUM] vom Typ VAR_BOOL weitergegeben. Diese Variable kann zur Laufzeit verändert werden. Dieser Schlüssel ist nur für VPE5 und höher sinnvoll.
	Wenn [VPE_BARCODE_AUTO_CHECKSUM] = TRUE ist, werden beim Ausdruck von Barcodes, die eine Prüfziffer enthalten können, die entsprechenden Prüfziffern automatisch generiert.

	New key for the application-INI-file, section [Config]: VPEBarCodeAutoChecksum =0 (Default). The value of this key is passed through to the new global script-variable [VPE_BARCODE_AUTO_CHECKSUM] of type VAR_BOOL. This variable can be modified while runtime. This key is only useful for VPE5 or higher.
	If [VPE_BARCODE_AUTO_CHECKSUM] is TRUE while printing barcodes that may contain a checksum, the checksum will be automatically generated.

10.03.2010	(9.07.50/1150/PW) Zwei neue Applikations-INI-Datei-Schlüssel für die Sektion [Config]:
	Level4Mandant (default = 9000) und Level4Export (default = 9500)
	Level4Mandant erweitert die Änderung 9.07.10/1110/MSch vom 14.10.2009. Wenn die Mandanten-Box in einem Anwendungsfenster zu sehen ist, kann hiermit eingestellt, welchen Level der Benutzer haben muss, um diese bedienen zu dürfen.
	Level4Export: Wenn ein Benutzer unter diesem Level liegt, kann er bei allen Exporten aus Girds oder Browsern heraus nur noch SICHTBARE Felder exportieren. Wer über dem Level liegt, exportiert automatisch auch die unsichtbaren Felder mit. 

	Two new application-INI-file keys for the section [Config]:
	Level4Mandant (default = 9000) and Level4Export (default = 9500)
	Level4Mandant extends change 9.07.10/1110/MSch from 14.10.2009. If the mandant-box is shown in an application-window, the user only is able to access it, if his user-level is equal or higher as the value given here.
	Level4Export: If a level of a user is lower than the value given here, he only can export VISIBLE fields from out of grids or browsers with the export-tool. Users with an equal or higher level are exporting the invisible fields automatically too. 

06.03.2010	(9.07.49/1149/VD) Das Kalendarfenster ist ab jetzt größenverstellbar und wird Initial auf jeden Fall so geöffnet, dass es ohne Scrollbars gezeigt wird.

	The calendar window is resizeable from now on and will be opened initially without scroll bars.

06.03.2010	(9.07.48/1148/HB) Neue Möglichkeiten und zwei weitere optionale Parameter für den Befehl 	
	FILE_DOWNLOAD 'strURL'|[listURL], 'filename' {, [boolRes]{, numTimeOut{, numSSLVersion:1,2,3}}}
	Der erste Parameter kann von nun an auch als Liste übergeben werden. Alle Zeilen der Liste werden dann hintereinander gehängt und dann als URL verwendet. Dadurch kann dieser Wert auch länger als 255 Zeichen sein.
	Wenn die URL mit “https“ beginnt, wird versucht eine SSL-Verbindung herzustellen. Auf dem Rechner muss dann aber OpenSSL installiert sein. Das kann man hier kostenlos herunterladen: http://www.slproweb.com/products/Win32OpenSSL.html
	Wenn numTimeOut > 0 ist wird die Zeit in Millisekunden als Timeout für die Serveranfrage verwandt.
	Wenn numSSLVersion > 0 ist, die die hinterlegte SSL-Version am Web-Server erwartet. Hier wird per Vorgabe versucht sowohl Version 2 als auch Version 3 vorzufinden.

	New possibilities and two new optional parameters for the command
	FILE_DOWNLOAD 'strURL'|[listURL], 'filename' {, [boolRes]{, numTimeOut{, numSSLVersion:1,2,3}}}
	The first parameter may be given as a list from now on. All lines of the list will directly be concatenated and used as the URL. So this value may hold longer string than 255 chars.
	If the URL starts with “https” CARA will try to establish a SSL connection. On the executing computer OpenSSL must be installed for that. This can freely be downloaded from this URL http://www.slproweb.com/products/Win32OpenSSL.html
	If numTimeOut >0 the time in milliseconds will be used for the server-request.
	If numSSLVersion > 0 the given SSL version will be expected at the server. Per default CARA will try to connect either with version 2 or 3.

05.03.2010	(9.07.47/1147/HB) Neue Möglichkeiten für den Befehl SHELL_EXECUTE:
	SHELL_EXECUTE 'operation', 'filename'|[listFilename], 'params'|[listParas], 'directory', numOption
	Der zweite und dritte Parameter kann von nun an auch als Liste übergeben werden. Alle Zeilen der Liste werden dann hintereinander gehängt und dann ausgeführt. Dadurch können diese Werte auch länger als 255 Zeichen sein. 

	New possibilities for the command SHELL_EXECUTE:
	SHELL_EXECUTE 'operation', 'filename'|[listFilename], 'params'|[listParas], 'directory', numOption
 	The second and the third parameter may be given as a list from now on. All lines of the list will directly be concatenated and then executed. So these two values may hold longer strings than 255 chars.

04.03.2010	(9.07.46/1146/DD) Folgende globale (numerische) Konstanten für weitere Barcodetypen sind ab jetzt in der VPE5 und VPE6 Version verfügbar. 
	Hinweis: unter VPE5 und VPE6 ist die Barcode-Checksummenprüfung strenger, d.h. wenn bisher ein CODE39 problemlos gedruckt wurde, kann es gut sein, dass ab jetzt ein CODE39EXT verwendet werden muss.
	[BCT_2OF5MATRIX]
	[BCT_CODE11]
	[BCT_CODE128]
	[BCT_CODE128A]
	[BCT_CODE128B]
	[BCT_CODE128C]
	[BCT_CODE39EXT] 
	[BCT_CODE93EXT]
	[BCT_EAN128]
	[BCT_EAN2]
	[BCT_EAN5]
	[BCT_IDENTCODE]
	[BCT_INTELLIGENT_MAIL]
	[BCT_ISBN]
	[BCT_ISBN5]
	[BCT_LEITCODE]
	[BCT_MSI]
	[BCT_PZN]
	[BCT_RM4SCC]
	[BCT_TELEPENA] 

	The following global (numeric) constants are available for new barcode-types that could be printed with VPE5 and VPE6.
	Note: the barcode-checksum-verification under VPE5 and VPE6 is more restrictive that means, if a CODE39 did work without problems until now, a CODE39EXT may be used from now on.
	[BCT_2OF5MATRIX]
	[BCT_CODE11]
	[BCT_CODE128]
	[BCT_CODE128A]
	[BCT_CODE128B]
	[BCT_CODE128C]
	[BCT_CODE39EXT] 
	[BCT_CODE93EXT]
	[BCT_EAN128]
	[BCT_EAN2]
	[BCT_EAN5]
	[BCT_IDENTCODE]
	[BCT_INTELLIGENT_MAIL]
	[BCT_ISBN]
	[BCT_ISBN5]
	[BCT_LEITCODE]
	[BCT_MSI]
	[BCT_PZN]
	[BCT_RM4SCC]
	[BCT_TELEPENA] 

25.02.2010	(9.07.45/1145/DD) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [Config]: VPEConvEmbeddedFlags=0 (Default). Der Inhalt dieses Schlüssels wird an die neue globale Variable [VPE_CONV_EMBEDDED_FLAGS] vom Typ VAR_BOOL weitergegeben. Diese Variable kann zur Laufzeit verändert werden.
	Wenn [VPE_CONV_EMBEDDED_FLAGS] = TRUE ist, werden in den Embedded-Print-Flags, die an die VPE mittels der Befehle PRINT_STR, PRINT_BOX und PRINT_LIST gesendet werden können, Angaben zur PenSize = PS gesucht und deren Größenangaben von Pixel auf 1/100mm umgestellt. So wird z.B. aus [N PS 1 B] dann [N PS 0.01 B].
 
	New key for the application-INI-file, section [Config]: VPEConvEmbeddedFlags=0 (Default). The value of this key is passed through to the new global script-variable [VPE_CONV_EMBEDDED_FLAGS] of type VAR_BOOL. This variable can be modified while runtime.
	If [VPE_CONV_EMBEDDED_FLAGS] is TRUE, the embedded-print-flags which could be sending to the VPE via the commands PRINT_STR, PRINT_BOX and PRINT_LIST will be modified. All definitions of the pensize = PS will be searched and sizes given in pixel will be recalculated to 1/100mm. 
	E.g. [N PS 1 B] will be changed to [N PS 0.01 B].

25.02.2010	(9.07.44/1144/DD) Neue globale Variable [VPE_VERSION] vom Typ VAR_STR. Folgende Werte können angezeigt werden:
	‘2‘ = Standardversion
	‘5‘ = VPE 5.x
	‘6‘ = VPE 6.x
 
	New global variable of type VAR_STR: [VPE_VERSION]. The following values are possible:
	‘2‘ = Standardversion
	‘5‘ = VPE 5.x
	‘6‘ = VPE 6.x

20.02.2010	(9.07.43/1143/HB) In Maskendefinitionen können ab jetzt die ITEM-Optionen (Parameter 7 in den ITEM-Zeilen) Script-Variablen enthalten.
 
	The mask-definitions may contain script-variables in the ITEM-line-options (parameter 7 of the item-line).

16.02.2010	(9.07.42/1142/DP) Der Befehl EXIT_WHILE funktionierte nicht, innerhalb geschachtelter WHILE-Schleifen. Der Fehler wurde behoben. (Seltsam, dass das in den ganzen 14 Jahren, seit es diesen Befehl gibt, nicht zutage trat…)
 
	The command EXIT_WHILE didn’t work inside nested WHILE-loops.  This error has been removed. (Funny that this error hasn’t occurred within the last 14 years, since this command exists...)

14.02.2010	(9.07.41/1141/DD) Die Mask-Option FAVORITES hat ein eigenes, neues ICON: favorites.bmp und favoritesg.bmp, favorites24.bmp und favorites24g.bmp sowie favorites32.bmp und favorites32g.bmp
 
	The Mask-Option FAVORITES has its own, new icon: favorites.bmp and favoritesg.bmp, favorites24.bmp and favorites24g.bmp as well as favorites32.bmp and favorites32g.bmp

14.02.2010	(9.07.40/1140/DD) Zwei neue globale Variablen:
	[SQL_CHARACTER_SET]	enthält den Wert des Schlüssels DataConnectionCharacterSet= der 
					Applikations-INI-Datei 
	[SQL_COLLATION] 		enthält den Wert des Schlüssels DataConnectionCollation= der 
					Applikations-INI-Datei 

	Two new global variables:
	[SQL_CHARACTER_SET]	contains the value of the key DataConnectionCharacterSet= in the
					application-INI-file
	[SQL_ COLLATION]		contains the value of the key DataConnectionCollation= in the
					application-INI-file

09.02.2010	(9.07.39/1139/HB) Neue Option für Masken: FAVORITES. Sie schiebt ein ICON in die Icon-Zeile ein, das vor dem Suchknopf eingeblendet ist und die Liste der Favoriten zeigt. Diese Liste baut sich automatisch auf, wenn der Benutzer eine Suche durchgeführt hat. Das Erweitern der Favoritenliste und das Anzeigen der Favoriten wird durch Scripte gesteuert. Diese können mit den folgenden zwei neue Schlüssel für die Applikation-INI-Datei, Sektion [Config] angegeben werden:
	FavoritesInsertScript=FavoritesInsert	Erweitert die Liste der Favoriten. 
	FavoritesShowScript=FavoritesShow	Zeigt die Favoriten an. In diesem Script kann man die neue globale Variable [FAVORITES_ID] setzten und mit der RecordID des Datensatzes füllen, der gewählt wurde – so kann die Engine diesen Datensatz anschließend in die Maske laden.
	Die Parameter, die an diese Scripte weitergegeben werden, sind die gleichen, wie bei GlobalIconScript.

	New option for masks: FAVORITES. This inserts an INCON in front of the search-icon into the icon-list of the mask. With a click on the button under then icon the favorites can be shown. The lists is automatically extended with the records the user loads into the mask. The extend of the favorites and the display are done by scripts that can be named through the two new keys for the application-INI-File, section [Config:
	FavoritesInsertScript=FavoritesInsert	Extends the list of favorites	
	FavoritesShowScript=FavoritesShow	Shows the favorites. Inside this script the new global variable of type VAR_FLOAT [FAVORITES_ID] can be used to signal the engine which record the user has chosen. This will be load into the mask afterwards.
	The parameters that are passed to the script are the same as those of the GlobalIconScript.

09.02.2010	(9.07.38/1138/JB) Neue Schlüssel für die Applikation-INI-Datei, Sektion [Config] (nur für die Verbindung mit einem MySQL-Server)
	DataConnectionCharacterSet=latin1
	DataConnectionCollation=latin1_german1_ci

	New keys for the application-INI-File, section [Config] (only for the connection with a MySQL-server):
	DataConnectionCharacterSet=latin1
	DataConnectionCollation=latin1_german1_ci

03.02.2010	(9.07.37/1137/DD) Variablen vom Typ VAR_PRINT (und GLOBAL_PRINT bzw. LOCAL_PRINT) können ab jetzt einen weiteren Parameter haben: 
	VAR_PRINT name{,num_with{,num_height{,num_orientation}}}
	num_orientation kann folgende Werte anehemen:
	[PRINT_PAGE_PORTRAIT]	(1)   die Seite wird im Hochformat ausgegeben
	[PRINT_PAGE_LANDSCAPE]	(2)   die Seite wird im Querformat ausgegeben

	The variable of type VAR_PRINT (and GLOBAL_PRINT or LOCAL_PRINT) may have another parameter from now on: VAR_PRINT name{,num_with{,num_height{,num_orientation}}}
	num_orientation may have the following values:
	[PRINT_PAGE_PORTRAIT]	(1)   page format = portrait
	[PRINT_PAGE_LANDSCAPE]	(2)   page format = landscape

03.02.2010	(9.07.36/1136/DD) VPE kann (wenn man eine entsprechende Lizenz hat, siehe Änderung 9.07.08/1108/DD  vom 06.10.2009) ab jetzt mit Version 6 betrieben werden. Es bedarf einer speziellen Engine!

	VPE can be used with version 6 (if one has a license, see change 9.07.08/1108/DD from 06.10.2009). A special compiled engine is needed!

03.02.2010	(9.07.35/1135/DD) Das Zeitformat wird nun ebenfalls zur Laufzeit interpretiert (wie das Datumsformat in der unmittelbar vorausgehenden Änderung).

	The time-format will be interpreted while runtime as well (as in the change of the date-format right before this change).

01.02.2010	(9.07.34/1134/DD) Auf Rechnern mit dem Betriebssystem Windows 7  kann u.U. das Datumsformat das seitens der Datenbank zurückgegeben wird (unerklärlicherweise) NICHT mit dem übereinstimmen, dass normalerweise zu erwarten wäre. Um solcher Art „Seltsamkeiten“ vorzubeugen, wird das Datum jeweils nach der Rückgabe interpretiert und somit korrekt weiterverarbeitet.

	Some computers with the OS Windows 7 are (unexplainable) not returning the date-format expected from the database. To avoid oddities like this, each date will be interpreted to be correctly processed afterwards.

28.01.2010	(9.07.33/1133/HB) Beim Wählen mittels der TAPI werden ab jetzt nur noch die Ziffern der Telefonnummer und, falls vorhanden, das führende „+“ Zeichen an die Schnittstelle weitergeleitet.

	If TAPI is used to dial out, only the digits of the telephone-number and (if present) the leading “+” character will be send to the interface.

28.01.2010	(9.07.32/1132/DD) Die Library MySQLDAC_Full wurde auf den Stand 2.7.3 gebracht.
	
	The library MySQLDAC_Full has been brought to V. 2.7.3.

27.01.2010	(9.07.31/1131/DD) Neuer Befehl MASK_NOTES [mask]. Mit diesem Befehl kann das Zeigen von „NoteShow-Immernotizen“ aufgerufen werden. Normalerweise erfolgt das Zeigen dieser Notizen automatisch nach dem Auslösen einer Suche (wie in der letzten Änderung beschrieben) – aber hiermit kann man auch in Fällen, bei denen im Hintergrund Daten geladen wurden, die Notizen zeigen lassen.

	New command MASK_NOTES [mask]. This command shows the NoteShow-DemadNotes. Usually these notes are shown automatically after a serach (see the last change) – but with this command also in cases like oading data in the baground the notes can be shown.

25.01.2010	(9.07.30/1130/IS) Notizen, die per NoteShow angezeigt werden sollen, werden ab jetzt auch dann schon angezeigt, wenn sich die Maske noch im Neuanlagemodus befindet. Voraussetzung dafür ist, dass das Füllen der Maske mittels des Auslösens einer Suche stattfand. Also entweder manuell durch den Benutzer oder aber mittels MASK_COMMAND (Search).

	Notes which should be displayed via NoteShow will be shown even if the mask is in the mode “create new record”. For this, it is required that the mask is filled through a search. That means either manually from a user or by the MASK_COMMAND (search).

20.01.2010	(9.07.29/1129/DD) Neuer INI-Dateischlüssel für die Sektion [Config] und Werkzeugkasten Option: ShowDemandNotesNo=0 (Vorgabe). Sollen Immernotizen NICHT angezeigt werden? (Das schaltet beispielsweise ein Außendienstmitarbeiter ein, damit seine Kunden, die ihm ggf. über die Schulter schauen, nicht den Inhalt von Immernotizen lesen können.)

	New INI-file-key for section [Config] and new Option for the tool-box: ShowDemandNotesNo=0 (default). Shell demand-notes be displayed? (A representative will switch this “on”, if he is at a customer who is “looking over his shoulder” and should not read the demand-notes.) 

06.01.2010	(9.07.28/1128/DD)  Ergänzung der Änderung (9.06.56/1056/DD). Neben der Option „mask vals“ des Entwicklermenüs in den Masken gibt es nun noch einen weiteren Punkt der „mask dump“. Während bei „mask vals“ nur die Felder mit ihren IDs in die Zwischenablage kopiert werden, wird bei „mask dump“ der Variablen-Inhalt der gesamten Maske (inklusive der internen Maskenvariablen) wie bar dem Befehl „VARS“ in den Monitor geschrieben.

	Extend of change (9.06.56/1056/DD). Additionally to the option „mask vals“ in the developer-menu of the dialog-masks the option “mask dump” is available. With “mask vals” only the mask-fields with their IDs are copied to the clipboard. “mask dump” puts out the complete mask-variable to the monitor (including the internal mask-variables) like the command “VARS” does.

08.12.2009	(9.07.27/1127/DD) Neue Query- und Browservariable vom Typ VAR_STR :
		[query oder browser!VIEW_ACT_FIELD_NAME] – enthält den Feldnamen des Feldes, dass vom Benutzer zuletzt fokussiert wurde (auf dem z.B. doppelt geklickt wurde).

	New variable of type VAR_STR: [query or browser!VIEW_ACT_FIELD_NAME] – contains the name of the last focused field (e.g. the field the user double clicked).

03.12.2009	(9.07.26/1126/DD) Beim Befehl QUERY_2_LIST wird ab jetzt versucht den Query-String in Zeilen mit maximal 100 Zeichen zu übergeben.

	QUERY_2_LIST will return the query-string in lines with about 100 chars (if possible).

03.12.2009	(9.07.25/1125/DD) Beim Erstellen des Suchquerys einer Maske (MASK_STMNT) wird ab jetzt hinter jeder Bedingung ein Zeilenumbruch forciert die Volltextsuche sehr langer Suchbegriffe zu unterstützen.

	While generating the search-query for a mask (MASK_STMNT) each clause will be a in a separate line to support very long search-values.

03.12.2009	(9.07.24/1124/DD) Erweiterung der CSH-Syntax zur Formatierung von Zahlenfeldern in einer Datenliste: M“K2“ gibt 2 Nachkommastellen aus und die Zahl wird mit einem Schrägstrich als Dezimalkomma abgebildet. Folgende Kombinationen sind möglich: M“K0“, M“K1“, M“K2“, M“K3“ etc. Jedoch ist die einzig sinnvolle Version M“K2“.  Beispiel: 31.09 würde dann so dargestellt: 31/09

	Extend of the CSH-Syntax for formatting number-fields in data-lists: M”K2” will show a number-value with 2 decimal digits and a slash as a comma. The following combinations are allowed: M“K0“, M“K1“, M“K2“, M“K3“ etc. But the only useful version seems to be M“K2“.
	Example: 31.09 would be shown as 31/09

02.12.2009	(9.07.23/1123/HB) Erweiterung der CSH-Syntax zur Formatierung von Zahlenfeldern in einer Datenliste: M“T2“ gibt 2 Nachkommastellen aus und die Zahl wird mit einem Dezimalkomma und Tausenderpunkten abgebildet. Folgende Kombinationen sind möglich: M“T0“, M“T1“, M“T2“, M“T3“ etc. 	Beispiel: 1009282.82 würde dann so dargestellt: 1.009.282,82

	Extend of the CSH-Syntax for formatting number-fields in data-lists: M”T2” will show a number-value with 2 decimal digits and a comma as the decimal-point and point-separators for the thousands. The following combinations are allowed: M“T0“, M“T1“, M“T2“, M“T3“ etc.
	Example: 1009282.82 would be shown as 1.009.282,82

02.12.2009	(9.07.22/1122/HB) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [Config]: TreeMenuStyle=0 (Vorgabe) oder 1 oder 2. 
	Wenn das Menü als Tree angezeigt wird und dieser Wert 0 ist, wird das Menü normal angezeigt.
	Wenn dieser Wert 1 ist, werden im Menü alle Hauptmenüpunkte in Fettschrift angezeigt.
	Wenn dieser Wert 2 ist, werden im Menü alle Hauptmenüpunkte und alle Punkte, die ein Untermenü haben, in Fettschrift angezeigt.

	New key for the application-INI-file, section [Config]: TreeMenuStyle =0 (default) or 1 or 2.
	If the menu is shown as a tree and this value is 0, the menu will be shown normal.
	If this value is 1, all main-menu-items will b shown bold.
	If this value is 2, all main-menu-items and all items with a submenu will be shown bold.

30.11.2009	(9.07.21/1121/DD) Gelegentlich wurde durch QUERY_2_LIST eine mehr als 255 Zeichen lange Zeile an die Liste weitergegeben, dies wird ab jetzt vermieden.

	Sometimes QUERY_2_LIST sends strings to the list with more than 255 characters. This will not be done anymore.

23.11.2009	(9.07.20/1120/JB) Erweiterung der Optionen, die mit der Änderung 8.09.07/764/DD vom 08.05.2006 kam:
Der Schlüssel der Appliktions-INI-Datei, Sektion [Config]: PanelOptionsOff=0 (DEFAULT) kann nun auch mit dem Wert 64 den neuen MegaSearchButton abschalten.
	Mit dem neuen Knopf kann das neue Script „MegaSearchDialog.csh“ (dies ist in der Dokumentation unter „/examples/megasearch“ zu finden) gestartet werden. Wenn man zuvor in den Tabellenfeldern (Achtung: eine neue Version des Tabellenfeld-Dialog ist unter „/examples/tablefld/“ zu finden!) hinter den Stringfeldern der Tabellendefinitionen angekreuzt hat, dass das Feld bei der MegaSearch-Suche zu berücksichtigen ist. Die  MegaSearch-Suche durchsucht dann alle entsprechend gekennzeichneten Felder und wirft die Ergebnisse aus. Sucht man beispielsweise einen Beleg mit der Nummer „2009001112“, werden alle Datensätze mit diesem Wert angezeigt.		

	Extend of change 8.09.07/764/DD from 08.05.2006: The application-INI-file-key PanelOptionOff=0 (DEFAULT) in section [config] can switch off the display of the new MegaSearch-button in the main window of the application.
	With the new button the new script “MegaSearchDialog.csh” (it can be found in the documentation in the folder “/examples/megasearch/”) can be started. Before doing this the tablefield-definition should be maintained and the new check-boxes that declare a field to be part of the MegaSearch must be set. After that all fields, that are marked to be part of the MegaSearch will be search for a given matchcode.
	If for example the value „2009001112“ should be searched – all records containing it, will be displayed.   

18.11.2009	(9.07.19/1119/DD) Die Library für den SSH-Tunnel wurde auf die Version 1.7.0 angehoben.
	
	The SSH-tunnel-library has been updated to version 1.7.0.

13.11.2009	(9.07.18/1118/DD) In den QFiltern kann ab jetzt, wenn ein Filter als Standard definiert wurde, mit einer CheckBox bestimmt werden, ob die Maskensuche beim Öffnen und bei jedem Säubern der Maske automatisch ausgeführt werden soll. Dies gilt natürlich nur, solange der Filter geladen ist.  

	From now on, a new checkbox “execute” can be set in the QFilter-dialog if a filter is defined to be standard. If this checkbox is set the mask-search will automatically be executed when the mask is opened or if the mask is cleared.

11.11.2009	(9.07.17/1117/DD) Neuer INI-Dateischlüssel für die Sektion [Config] und Werkzeugkasten Option: ScriptDebugItems=1 (Vorgabe). Soll im Entwicklermodus bei Masken angezeigt werden, wenn doppelte Item-IDs vergeben wurden?

	New INI-file-key for section [Config] and new Option for the tool-box: ScriptDebugItems=1 (default). Should a message be thrown while developer-mode if a mask has double item-ids?

10.11.2009	(9.07.16/1116/DD) Überarbeitung der Syska-OFCK-Schnittstelle für die Version 9.2 der OFCK92.DLL.

	Upgrading to Version 9.2 of the OFCK-Interface of the Syska-Fibu for the OFCK92.DLL.

04.11.2009	(9.07.15/1115/DD) Ab jetzt kann in der Rechtevergabe pro Menüpunkt festgelegt werden, ob ein Mitarbeiter QFilter auswählen und getrennt davon ob er QFilter definieren darf.

	The user-right-module allows to give the right for the selection of qfilter and separately for the definition of qfilter for each menu-item from now on.

03.11.2009	(9.07.14/1114/DD) Wenn ein Script in den versteckten Rechten KEINEERLEI Rechte bekam, wurden die Rechte des aufrufenden Scriptes verwandt (insofern es sich um ein Script handelte, das aus einem anderen Script heraus aufgerufen wurde). Dieser Fehler ist behoben: das Script bekommt dann natürlich auch keine Rechte.

	If a script hasn’t ANY rights in the hidden rights, than the rights of the calling script were taken (if the script was called from out of a script). This error has been removed: the script wouldn’t get any rights than of course.

28.10.2009	(9.07.13/1113/DK) Die vor drei Tagen eingeführten „QFilter“ konnten nicht korrekt auf „privat“ gestellt werden. Der Fehler wurde behoben. Der Supervisor sieht allerdings weiterhin alle QFilter einer Maske. 

	The new “QFilter” couldn’t be set to “privat” correctly – this error has been removed. The supervisor will still see all QFilter of a mask.

27.10.2009	(9.07.12/1112/DK) Ab jetzt werden Notizen die mit dem Befehl NOTE_SHOW in der Form „ReadOnly“ angezeigt werden sollen und keine Zeilen enthalten nicht mehr angezeigt.

	If a note shall be shown readonly with the command NOTE_SHOW it will not be shown if the note contains no text from now on.

25.10.2009	(9.07.11/1111/HB) Wenn die zwei neuen Tabellen „QFilterH“ und „QFilterI“ verfügbar sind, wird ab jetzt unten links in der Maske eine neue Drop-Down-Box zu sehen sein. Klickt man auf den Knopf neben dieser Box wird das Script „QFilterH.csh“ ausgeführt. Hier kann man nun einen Namen für eine Abfrage angeben (z.B. „Artikel mit Bestand“ oder „Kunden des Vertreters Meier“), speichern und mit einem Doppelklick zur Definition gelangen. Die Definition erlaubt die Angabe von Suchfiltern zur Einschränkung der Daten die in der Maske angezeigt werden können. Wird ein solcher Filter dann später in der Maske gewählt, wird er zusätzlich in jede Maskenabfrage mit eingebunden. Zur Weitergabe der Masken-Tabellen an das Script QFilterH.csh wurde eine neue globale Variable vom Typ VAR_LIST verfügbar gemacht: [QFILTER_TABLES]. Wird in einer Maske die neue Masken-Option QFILTER angegeben, ist die Box NICHT zu sehen und es können keine Filter gewählt oder angelegt werden.

	If the two new tables „QFilterH“ and „QFilterI“ are available, a new drop-down-box will be shown in the lower left corner of a mask. If the button beneath the box is clicked the new script “qfilterh.csh” will be executed. In the new dialog a name for a query-filter can be given (e.g. “available Articles” or “Customers of representative Miller”), saved and with a double-click the definition dialog will be opened. If such a filter is later chosen in the mask, all mask-query will additionally have this filters. For passing through the tables of a mask a new global variable of type VAR_LIST has been created: [QFILTER_TABLES]. If the new mask-option QFILTER is set in a mask-header-definition, the new filter-box will NOT be shown and filters can’t be chosen or defined.

14.10.2009	(9.07.10/1110/MSch) Die Mandanten können ab jetzt nur noch von Usern umgeschaltet werden, deren Userlevel > 9000 ist.

	The mandands may only be switched if the user-level of the user is > 9000.

13.10.2009	HINWEIS: durch diverse Tests konnte ich nun endlich herausfinden, dass der Betrieb der CARA-Engine auf einem Windows Server 2008 64Bit nur dann erfolgen kann, wenn im Server-Manager unter „Features“ der Punkt „Desktopanwendungen“ installiert wurde. Außerdem muss der Systempfad in den Umgebungsvariablen (Arbeitsplatz / Eigenschaften / Gerätemanager / Erweitert) um den Pfad „C:\Program Files\Internet Explorer\“ erweitert werden. Darüber hinaus muss man eine CARA-Engine verwenden die mit der VPE 5 Druckengine (oder besser) kompiliert wurde. Die VPE 5 muss aus lizenzrechtlichen Gründen explizit gekauft werden. Die Cara-Version mit der „alten“ VPE startet nicht auf dem Server. 

11.10.2009	(9.07.09/1109/DD) Ich habe an diesem Tag eine Änderung gemacht – erinnere aber nicht mehr welche. Wenn es mir einfällt schreibe ich es hier hin.

06.10.2009	(9.07.08/1108/DD) Wenn jemand die neueste Version der VirtualPrintEngine (VPE) benutzen möchte, so ist dies ab jetzt möglich. Dazu muss man jedoch aus Lizenzgründen bei der Fa. IDEAL-Software (http://www.idealsoftware.com/) eine Professional-Version kaufen (der aktuelle Preis ist zurzeit 998€ [06.10.2009]). Mit dieser Version erhält man Lizenzdaten, die in die neuen INI-Datei-Schlüssel VPESerial1=VPE-XXXXX-XXXX und VPESerial2=XXXX-XXXX der Sektion [Config] der Applikations-INI-Datei eingetragen werden können.
	Zur Verwendung der neuen VPE (aktuell ist zurzeit Version 5 [06.10.2009]) benötigt man eine spezielle Version der CARA-Engine, die man bei uns anfordern kann. Diese funktioniert jedoch nur mit einer neuen Version der VPE. In der Standardversion der CARA-Engine wird kostenlos die Version 2.2 der VPE mitgeliefert.
	HINWEIS: alle bisherigen Funktionen (die den VPE-Druck betreffen) der CARA-Engine werden wie bisher angesprochen. ABER: bei den „embedded Printflags“ hat sich eine Änderung ergeben. Dabei ist wichtig, dass die PenSize (PS) bei VPE5 nicht mehr in Punkten sondern in 1/10 mm angegeben werden muss. Also nicht mehr [PS 2] sondern [PS 0.1] (ansonsten wird der „Strich“ 2 cm dick sein). 

	From now on is it possible to use a newer version of the VirtualPrintEngine (VPE) if someone likes to do so. Therefore a professional-license has to be brought from IDEAL-Software (http://www.idealsoftware.com/)  (the actual price for VPE5 is 998€ [06.10.2009]). With this version license-data will be send that can be placed in the two new application-INI-file-keys for section [Config]: VPESerial1=VPE-XXXXX-XXXX und VPESerial2=XXXX-XXXX.
	For the usage of a newer VPE (the actual version is 5 [06.10.2009]) a special CARA-Engine is needed which can be retrieved from CSH. But this version only works with a new VPE. The standard-version of the CARA-Engine comes free with a VPE version 2.2.
	NOTE: all existing functions of the CARA-Engine (regarding the VPE printing) can be treated as usual. BUT: in case of the “embedded printflags” a difference has to be made. It is important that PenSize (PS) is measured in 1/10 mm instead of points with VPE5. So you must define [PS 0.1] instead of [PS 2] (otherwise the pen-stroke would be 2 cm thick!)

05.10.2009	(9.07.07/1107/GF) Wenn beim Befehl PRINT_PIC die Bilddatei nicht gefunden werden kann, wird der Befehl sofort verlassen und kein Versuch unternommen einen „leeren“ Bereich zu drucken.

	If a picture-file could not be found while using the command PRINT_PIC the further execution of the command will be aborted – that means that an “empty” area will not be printed anymore.

24.09.2009	(9.07.06/1106/DD) Ein neuer Menüpunkt hatte bislang stets „Leserecht mit Level1“. Dies wurde geändert. Ab jetzt hat ein solcher Menüpunkt keinerlei Rechte.

	A new menu-item got per default the right “read allowed with level 1”. This has been changed. New menu-items will have no rights at all from now on.

24.09.2009	(9.07.05/1105/JB) Das im Werkzeugkasten befindliche Tool „TimeStamps“ funktionierte nicht mehr korrekt. Der Fehler wurde behoben.

	The tool “TimeStamps” from the toolbox wasn’t working correctly anymore. This error has been removed.

08.09.2009	(9.07.04/1104/GH) Zwei neue boolean Felder in die Document-Manager-Items eingefügt:
	DocMgrI.erledigt und DocMgrI.Termin.

	Two new fields in table docmgri introduced: “erledigt” and “Termin” (both of type boolean).

03.09.2009	(9.07.03/1103/MH) Immernotizen können nun auch wieder mit ESC verlassen werden.

	The display of demand-notes may be terminated by ESC again from now on.

03.09.2009	(9.07.02/1102/DD) Die gestrige und letzte Änderung (9.07.01/1101/GH) hatte leider noch einen Fehler: Wenn ein Reload mittels eines zuletzt ausgeführten Query gemacht wurde und dieses Query durch CONCAT verbundene Felder enthielt und der verwendete SQL-Server als Feldseparator beim CONCAT ein Komma benötigt (z.B. MySQL), dann wurden die Felder der Maske anschließend fehlerhaft abgefüllt, weil sich die Feldbezeichnerliste gegenüber den Feldwerten um die Anzahl der im CONCAT verwendeten Kommata verschoben hat. Dieser Fehler wurde behoben, indem der Reload sich von nun an auf das Original-Query bezieht (wenn eines verfügbar ist) und nicht auf das zuletzt ausgeführte und bereits interpretierte.

	The latest change form yesterday (9.07.01/1101/GH) unfortunately had an error. If a reload was made by using the latest executed query and the query contained fields that are combined by CONCAT and the used SQL-server needs comma to separate the concatenated fields (like MySQL), then the fields were not correctly passed through to the mask because the field-description-list was displaced to the field-value-list by the amount of commas that have been used in the CONCAT. This error has been removed by using the original-query (if available) instead of the last and already interpreted one.

02.09.2009	(9.07.01/1101/GH) Beim Übernehmen von Daten aus einer Liste in eine Maske wird, wenn in dem beteiligten Query eine RecordID benannt wurde, der Datensatz schnell nochmal mit den aktuellen Daten im Hintergrund neu geladen. 
	Da man auch aus einer Spinner-Liste Daten holen kann und diese manchmal stundenlang von Benutzern nicht aktualisiert werden, kann es vorkommen, dass die in die Maske geladenen Daten schon gar nicht mehr aktuell sind. 
	Diese neue Änderung kostet einen Bruchteil einer Sekunde Zeit, ist aber auf jeden Fall ein sicherer Weg immer die aktuellsten Daten in der Maske zu haben.
	Diese neue Option ist per Vorgabe ab dieser Version angeschaltet. Es gibt jedoch einen neuen Applikations-INI-Datei-Schlüssel für die Sektion [Config] (DataReload4Masks=1) mit dem man dieses Verhalten an- und abschalten kann.

	While taking over data from a list to a mask, and a RecordID has been named in the involved query, the record will be loaded fast and new in the background.
	Because data can be retrieved from out of a spinner-list, that sometimes has not been refreshed for hours by the user, it is possible, that the loaded data is not representing the current state of the record in the data-table.
	This new change costs a fraction of a second, but it is the best way to load the most current data to a mask.
	This new option is switched to TRUE per default from this version of the engine on. But there is also a new application-INI-file-key for the section [Config] (DataReload4Masks=1) which could be used to switch this option on and off.

01.09.2009	(9.07.00/1100/TG) Bei Notizen kann nun ein Gültigkeitsdatum eingegeben werden. Wenn die Gültigkeit einer Immer-Notiz (oder einer Notiz, die per NoteShow zur Immer-Notiz gemacht wurde) abgelaufen ist, wird sie nicht mehr angezeigt. Außerdem kann eine verantwortliche Person für eine Notiz benannt werden.

	Notes can have an experation-date from now on. If the note has expired, a demand-note (or a note  that has been made to a demand-note by using NoteShow) will not be shown any longer. Also a responsible person for a note can be set.

14.08.2009	(9.06.99/1099/TG) Es gibt einen neuen Wert, den man den Optionen des Befehls LIST_DISPLAY hinzufügen kann: [TEXT_DISP_OPT_WARNING], dann wird der Hintergrund des Textes rot angezeigt.

	A new value for the options of the command LIST_DISPLAY is available: [TEXT_DISP_OPT_WARNING], with this, the background of the text will be shown red.

13.08.2009	(9.06.98/1098/DD) Die NoteShow wird nur noch durchgeführt, wenn mindestens eine beschriebene Zeile gezeigt werden kann.

	The NoteShow will only be done, if on filled line could be found at last.

12.08.2009	(9.06.97/1097/DD) Der Datensatz mit der RecordID 0 in den Lockrecs enthält ab jetzt in dem Feld UserSIDShort das Stationskürzel gefolgt von einem Leerzeichen und dem SID-Kürzel. Damit kann man von nun an schneller die Station finden, die den Zeitrahmen zuletzt gesetzt hat.

	The record with the recorded 0 in the lockrecs-table holds the station-short-value and the SID-short-value with a blank as the delimiter in the field UserSIDShort from now on. So the station and the user that sets the time-frame can be found much faster.

07.08.2009	(9.06.96/1096/DD) Erweiterung der letzten Änderung: jetzt können auch beliebig viele NoteShow-Events pro Script definiert werden.

	Extension of the last change: from now on, any number of Note-Show-events per script can be defined.

05.08.2009	(9.06.95/1095/DD) Mittels der neuen Tabelle „noteshow und dem gleichnamigen Script, dass man ab jetzt in der Dokumentation der CARA-Engine unter „cara\utilities\document\examples\noteshow\“ zu finden ist, kann man angeben, in welchem Script welche Notiz wie eine Immernotiz angezeigt werden soll. Dadurch kann man praktische jede Notiz zu einer Immernotiz machen, und zusätzlich auch noch genau bestimmen, wo sie überhaupt gezeigt werden soll. Dadurch werden häufige Immernotiz-Anzeigen vermieden, die nicht in sinnvollem Zusammenhang geschehen würden.

	With the new table “noteshow” and the script of the same name, that is available in the cara-engine-documentation under “cara\utilities\document\examples\noteshow\”, is it possible to define, in which script which note should be shown like a demand-note. So, nearly every note can be made to a demand-note and additionally one can define where it should be shown. Hereby many demand-note-displays are avoided that could happen in a less useful context. 

05.08.2009	(9.06.94/1094/DD) Neue Script-Variable [SCRIPT_NAME], enthält den Dateinamen der Scriptdatei.

	New script-variable [SCRIPT_NAME], contains the filename of the scriptfile.

24.07.2009	(9.06.93/1093/VH) In den Maskendefinitionsdateien kann in den Zeilen, die für die Modusbox bestimmt sind (LIST_TEXT mit ItemID=0) am Ende des Textes mit einem Pipezeichen (|) getrennt der Benutzerlevel angegeben werden, den der Benutzer durch sein Rechtemodell mindestens haben muss, um den entsprechenden Modus aufrufen zu können. Beispiel: TEXT    'Archiv|3'

	At the end of the lines for the modus-box (LIST_TEXT with ItemID=0) of the mask-definition-file, the right-model-level that the user needs to be allowed to select the line, can be added, separated through a pipe-sign (|). Example: TEXT    'Archiv|3'

22.07.2009	(9.06.92/1092/DD) Im Werkzeugkasten gibt es  nun den neuen Punkt „Freie Suchbedingungen“. Wenn diese Option aktiviert ist, werden neben allen String- und Zahlenfeldern der Eingabemasken winzige Knöpfe eingeblendet, die es ermöglichen einen Dialog zu öffnen, mit dem man detailliert die Abfragebedingungen des jeweiligen Feldes angeben kann. 
	Diese Option verlangsamt das Öffnen der jeweiligen Dialoge. Daher sollte dies nur eingeschaltet werden, wenn es unbedingt benötigt wird. Sie sollte nicht zur „Standard-Einstellung“ gemacht werden.
		Diese Option ist mit dem neuen Applikation-INI-Datei-Schlüssel in der Sektion [Config] vorbelegbar: FreeSearch=1 (Vorgabewert ist 0). Die Einstellung im Werkzeugkasten wird in die Stations-INI-Datei übernommen, damit dies jeder Benutzer individuell wählen kann.

	In the toolbox is a new item “free search”. If this option is activated, beneath all string- and number-fields of the masks a very small button will be displayed which allows to open a dialog for detailed query-definition.
	With this option set, all dialog-masks will open much slower. The option should only be used for special requests. It is not useful as a “standard-option”.
	This option can be predefined with the new application-INI-file-key in section [Config]: FreeSearch=1 (default is 0). The setting of the toolbox will be stored in the station-INI-file, so every user may choose individually.

21.07.2009	(9.06.91/1091/DD+JB) Nachdem ein Datensatz mit dem Befehl RECORD_LOCK gelockt wurde, wird von nun an sofort anschließend geprüft, ob dieser Lock auch nur ein einziges Mal in der Tabelle „lockrces“ vorhanden ist. Sollte dies nicht der Fall sein, wird der Lock sofort wieder aufgehoben. Die Prüfung erfolgt unter Berücksichtigung der, mit Änderung 9.06.90/1090/GH+DD vom 13.07.2009 eingeführten, strLocClause.
	Falls ein segmentierter Index auf die Feldkombination „TableName + RelRecID“ gelegt wurde, um doppelte Locks zu verhindern, kann dieser Index nun bedenkenlos wieder entfernt werden.
	
	Immediately after a record has been locked with the command RECORD_LOCK, the engine checks if this lock does exist only one time in the table “lockrecs”. If this isn’t the case, the lock will be canceled right away. The check will be done with regarding the strLocClause which was introduced with change 9.06.90/1090/GH+DD from 13.07.2009.
	If a segmented index has been defined over the combination of “TableName + RelRecID”, it can be removed without scruple now.

16.07.2009	Es ist eine weitere CARA-Engine für den nativen Zugriff auf SQLite Datenbanken ist von nun an verfügbar.
	
	A new CARA-Engine for native access to SQLite databases is available from now on.

13.07.2009	(9.06.90/1090/GH+DD) Erweiterung des Befehls RECORD_LOCK um einen optionalen Parameter:
			RECORD_LOCK 'tablename',float,boolLockYesUnlockNo,[boolRes]{,boolHaveMsg{,numEvent{,‘strLockClause‘}}}
	Mit strLockClause kann der Programmierer die where-Bedingung der Abfrage erweitern, die überprüft ob ein Datensatz bereits gelockt ist.  Damit können Ausnahmen definiert werden. 
	Beispiel: "AND LockEvent <> 10". Wichtig ist, dass das "AND" in strLockClause mit angegeben werden muss. Da aus Geschwindigkeitsgründen nur die Tabelle "lockrecs" befragt wird, können natürlich auch nur Felder der "lockrecs"-Tabelle zur Definition einer Ausnahme herangezogen werden.
	Vier neue global Konstanten wurden für Benennung der bisher existierenden 4 Standard-Lock-Events verfügbar gemacht: 
	[LOCK_EVENT_UNDEFINED]
	[LOCK_EVENT_MASK]
	[LOCK_EVENT_SCRIPT]
	[LOCK_EVENT_SESSION]   
	
	Extend of the command RECORD_LOCK by one optional parameter.
			RECORD_LOCK 'tablename',float,boolLockYesUnlockNo,[boolRes]{,boolHaveMsg{,numEvent{,‘strLockClause‘}}}
	With strLockClause the programmer may add a where-clause to the query that checks if a record is already locked.  This allows to declare exceptions for the locking-routine. 
	Example: "AND LockEvent <> 10". It is important to have the "AND" within strLockClause! By execution-improvement reasons only the table “lockrecs” will be checked for existing locks. So only fields of the table “lockrecs” may be used to define the exception of course.
	Four new global constants for naming the 4 existing standard-lock-events are made available:
	[LOCK_EVENT_UNDEFINED]
	[LOCK_EVENT_MASK]
	[LOCK_EVENT_SCRIPT]
	[LOCK_EVENT_SESSION]   

09.07.2009	(9.06.89/1089/DD) Die Höhe von Masken wird durch Felder, die aufgrund des Rechtelevels ausgeblendet werden, nicht mehr verändert, wenn man im Werkzeugkasten den Schlüssel „Fenster Breite und Höhe speichern“ eingestellt hat.
	
	The height of dialog-masks will no longer be changes by fields, that are hidden by right-model cases, if the key “save window width and height” in the tool-box is set.

09.07.2009	(9.06.88/1088/DD) Neue globale Konstante vom Typ CONST_NUM WIN_7.
	
	New global const, type CONST_NUM WIN_7.

09.07.2009	(9.06.87/1087/KPr) Erweiterung der Änderung 9.06.27/1027/TG vom 21.11.2008: im Werkzeugkasten gibt es  nun den neuen Punkt „Liste sortieren Cursor oben“. Wenn diese Option aktiviert ist, wird nach dem Umsortieren der Liste der Daten-Cursor immer auf dem ersten Datensatz stehen. Diese Option ist mit dem neuen Applikation-INI-Datei-Schlüssel in der Sektion [Config] vorbelegbar: ListSortCursorPos1=1 (Vorgabewert ist 0). Die Einstellung im Werkzeugkasten wird in die Stations-INI-Datei übernommen, damit dies jeder Benutzer individuell wählen kann.

	Extend of change 9.06.27/1027/TG from 21.11.2008: in the toolbox is a new item “list sort cursor on top”. If this option is activated, the data-cursor will be set to the first record after a resort of a list. This option can be predefined with the new application-INI-file-key in section [Config]: ListSortCursorPos1=1 (default is 0). The setting of the toolbox will be stored in the station-INI-file, so every user may choose individualy.

08.07.2009	(9.06.86/1086/DD) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [Config]: ManyRightModels=0 (NEIN, Vorgabe) oder 1 (JA). 
	Mit diesem Schlüssel kann bestimmt werden ob ein (und nur ein) bestimmtes Rechtemodell pro User verwendet werden kann oder können dem User mehrere Modelle zugeordnet werden, deren Rechte sich "aufsummieren"? 
	Wenn der Schlüssel = 1 ist, kann man Rechtemodelle wie „Rollen“ definieren und dem User mehrere Rollen zuordnen.

	New key for the application-INI-file, section [Config]: ManyRightModels=0 (NO, default) or 1 (YES).
	With this key is it possible to define, if each user may have one (and only one) right-model or if the ser may be related to many models and the rights of the models are “added”.
	With the key = 1, right-models can b defined as “roles” and a use may “act” in many roles.

08.07.2009	(9.06.85/1085/DD) In dem Dialog, in dem man die Benutzerrechtedaten eines Users editieren kann, wird man von nun an nach dem Beenden der Rechtemodell-Zuordnungs-Liste mit der ESC-Taste gefragt, ob man die Rechtemodellzuordnung des Users zurücksetzten (also = 0 setzten) möchte. 

	Inside the dialog that defines the user-right-details of a user, will cause the closing of the right-model-list with the ESC-key the raise of the question if one would like to reset the right-model-relation to zero.

08.07.2009	(9.06.84/1084/DD) Neue globale Variable [MAIN_MENU_FILE] gibt den Dateinamen des Menüs der Anwendung zurück. 

	New global Variable [MAIN_MENU_FILE] returns the filename of the menu of the application.

08.07.2009	(9.06.83/1083/DD) Ab jetzt feuert der Timer für Termine des Dokumenten- und Termin-Managers nur noch, wenn ein „echter“ Benutzer angemeldet ist, bei „super“ wird die Liste nicht mehr gezeigt. Dies ist besonders in Netzwerken mit vielen Benutzern sinnvoll, ansonsten springt die Liste alle Minute auf wenn man als Supervisor angemeldet ist.

	From now on, the timer for the document- and dates-manager will only fire if a “real” user is logged in, otherwise e.g. for the user “super” the list will not be shown. This is useful for networks with many usrs where the list pops up every minute.

23.06.2009	(9.06.82/1082/DD) Beim Neuzeichnen von Masken mit Elementen die die Eigenschaft „CLIENT“ haben, konnte es bei entsprechender Bildschirmauflösungseinstellung manchmal dazu kommen, dass sich die Maske „selbständig“ verkleinerte. Dieser Fehler, der sich aufgrund von Rundungsproblemen ergab, ist behoben: das Verkleinern der Maske muss ab jetzt immer mindestens 4 Pixel umfassen, ansonsten wird es unterdrückt.

	While redrawing a mask- window with dialog-elements with the client-property and an appropriate display-solution-setting the mask shrink “autonomous” sometimes. This error occurred because of rounding-problems and it has been removed: the shrinking of the mask has to be bigger than 4 pixels, otherwise it will be inhibited.

22.06.2009	(9.06.81/1081/DD) Die integrierte Bibliothek “MiTeC System Information Component Suite“ wurde auf die Version 10.8.6 umgestellt. 
	Information: Diese Bibliothek ist nun nicht mehr im offenen Handel, da sie veräußert wurde, bestehende Kunden bekommen jedoch weiterhin kostenlos Updates.

	The integrated library “MiTeC System Information Component Suite“ has been updated to version 10.8.6. 
	Information: This library has been sold and is not longer available in open trade but existing customers will still get updates for free.

22.06.2009	(9.06.80/1080/DD) Die Library MySQLDAC_Full wurde auf den Stand 2.7.2 gebracht.
	
	The library MySQLDAC_Full has been brought to V. 2.7.2.

02.06.2009	(9.06.79/1079/GH) Erweiterung der Änderung 9.03.06/929/GH vom 20.09.2009 und 9.01.12/903/GH vom 07.08.2007:
	LIST_STR_FIND [list], 'str' {, [boolRes]|[numRes] {, strOp, {numPart, strDelim {, [destList] {, boolParts, strParts, strPDlim}}}}
	Der dritte Parameter kann ab jetzt vom Typ VAR_BOOL oder vom Typ VAR_NUM sein. 
	Wenn [boolRes] vom Typ VAR_BOOL ist, wird der Wert TRUE, wenn der Suchstring gefunden werden konnte und FALSE wenn kein Treffer erfolgte.
	Wenn [boolRes] vom Typ VAR_NUM ist, gibt der Wert die Zeilennummer des ersten Suchtreffers zurück, wenn der Suchstring gefunden werden konnte und „0“ wenn kein Treffer erfolgte.

	Extend of change 9.03.06/929/GH from 20.09.2009 and 9.01.12/903/GH from 07.08.2007:.
	LIST_STR_FIND [list], 'str' {, [boolRes]|[numRes] {, strOp, {numPart, strDelim {, [destList] {, boolParts, strParts, strPDlim}}}}
	The third parameter can be of type VAR_BOOL or VAR_NUM from now on.
	If [boolRes] is a VAR_BOOL type, the value is TRUE, if the search-string could be found and FALSE if no match occurred.
	If [boolRes] is a VAR_NUM type, the value is the line-number of the first match, if the search-string could be found and a “0” if no match occurred.

20.05.2009	(9.06.78/1078/JB) Neuer Applikations-INI-Datei-Schlüssel für die Sektion [Config]: CaInFilePath=.
	Wenn hier ein Pfad eingegeben wird, dann wird nicht das Temporärverzeichnis des Users zur Ablage der Dateien vom Typ *.cain und *.cado verwendet, sondern dieser Ordner. 
	ACHTUNG: Die CaIn-Dateien sollten pro Rechner in einem separaten Ordner liegen, sonst werden die CaDo-Dateien immer nur für den ersten Rechner, der von der Cali.exe über die CaIn-Datei in dem Ordner gefunden wird erzeugt. Dann macht ein Rechner die Arbeit aller anderen. 
	Diese Änderung wurde eingeführt, um speziell Cara-Anwendungen die Serverjobs erledigen steuern zu können. Wenn z.B. der CaLi-Aufrufer nicht der gleiche User ist, wie der, in dessen Namen die Cara-Anwendung gestartet wurde (dann hat der CaLi-User keine Schreibberechtigung in dem Temp-Ordner des Cara-Users). Es ergeben sich auch neue Freiheitsgrade für  hybride Umgebungen (Linux/Windows). 
	Wenn der Pfad geändert wurde, dann müssen auch alle CaLi-Aufrufe um einen Parameter erweitert werden: “setcalipath:PfadDerAuchInDerApplikationINIDateiAngegebenWurde“ – sonst „finden“ sich cali und cara nicht mehr gegenseitig. (Cali.exe muss dann die Version 1.0.0.1 haben.)

	New application-INI-file-key for section [Config]: CaInFilePath= 
	If this key is set, files of the type *.cain and *cado will be saved to this folder instead of the users temp folder. 
	ATTENTION: The CaIn-files should be saved to a separate folder for each computer, otherwise the CaDo-files, that are produced by the Cali.exe will always put the jobs to the first found computer – and this will do all the work for all the other computers too.
	This change has been made, to control especially CARA-applications better that are executing server-jobs and where the user that calls the cali.exe is not the same, who started the CARA-application (because the CaLi-user would not be allowed to write files to the CARA-users temp folder). Also this new enhancement helps to get a better degree of freedom for configuring hybrid systems (Linx/Windows).
	If the path has been changed, then all cali-files must be enhanced by one new parameter: “setcalipath:TheSamePathTahtHasBeenUsedInsideTheCaraApplicationINIFile” – otherwise cali and cara will not “find” each other. (Cali.exe must be at last version 1.0.0.1.)

14.05.2009	(9.06.77/1077/VH) Erweiterung der Änderung 8.08.00/750/DD vom 03.04.2006: Der 6. Parameter im VIEW einer Masken-Feld-Definition gibt einen Script-Namen angibt für die Übersetzung an:
	VIEW '', '40', 'NAME2', 1170100, '', 'test.csh'
	Dieser Parameter kann nun noch erweitert werden: VIEW '', '40', 'NAME2', 1170100, '', 'test.csh|101'
	Wobei die Zahl, die mit einem Pipe-Zeichen vom Scriptnamen getrennt ist, den Index des Langtextes angibt, auf den sich eine Langtextübersetzung bezieht. In diesem Beispiel also auf den Langtext mit dem Index 101.
	Folgendes geht natürlich auch, wenn an das Vorgabescript nutzen möchte: 
	VIEW '', '40', 'NAME2', 1170100, '', '|101'
	Der Index wird als RECORD_ID2 an das Übersetzungsscript weitergegeben.

	Extension of change 8.08.00/750/DD from 03.04.2006: The sixth parameter in the VIEW-line of a mask-field-definition holds the script-name for the translation-script (if different to the default one):
	VIEW '', '40', 'NAME2', 1170100, '', 'test.csh'
	This parameter can be extended from now on: VIEW '', '40', 'NAME2', 1170100, '', 'test.csh|101'. Where the number, that is separated by a pipe-character from the script-name, gives the index of the note, that should be translated (if needed). In this case the note, with the index 101 should be translated.
	The following definition does also work: VIEW '', '40', 'NAME2', 1170100, '', '|101'
	The index will be given to the script as RECORD_ID2.

14.05.2009	(9.06.76/1076/DD) Das Überprüfen aller möglichen Parameter einer Masken-Zeile in einer Maskendefinitionsdatei wird ab jetzt abgebrochen, wenn der erste nicht angegebene Parameter gefunden wird. Dadurch sollten Masken ganz allgemein etwas schneller öffnen. Wirklich bemerkbar macht es sich bei Masken mit besonders vielen Feldern.

	The checking of all possible parameter of a line from a mask-definition-file will be aborted, if the first undefined parameter has been found. Hereby all masks should load and open a little bit faster. Only in masks with a lot of fields, this will be really mentionable.

13.05.2009	(9.06.75/1075/DD) Im Werkzeugkasten gibt es ab jetzt einen neuen Punkt „Crypt / Decrypt“. Dieser öffnet das neue Script „CryptDecrypt.csh“ (cara/utilities/document/examples/) und man kann dort einen Text eingeben, den man ver- und entschlüsseln kann. Es werden alle gängigen Methoden angezeigt: Crypt / Decrypt, Invertieren, ASCII<>ORD (Nummern), ANSI<>OEM, ASCII<>HTML, ASCII<>UTF8 und ASCII<>EBCDIC

	New item for the tool-box “Crypt / Decrypt“. This opens the script “CryptDecrypt.csh” (cara/utilities/document/examples/) and a given text can be converted in different ways: Crypt / Decrypt, inverting, ASCII<>ORD (numbers), ANSI<>OEM, ASCII<>HTML, ASCII<>UTF8 und ASCII<>EBCDIC

06.05.2009	(9.06.74/1074/DD) Ab jetzt werden alle Fehler einer Maskendefinitionsdatei im Monitor ausgegeben und nicht mehr in Message-Boxen. Darüber hinaus werden ab jetzt auch doppelt vergebene  Item-IDs als Warnung ausgegeben.

	From now on, all error-messages of a mask-definition-file will be thrown into the monitor and not longer be shown in message-boxes. Additionally all double used Item-IDs will cause a warning.

24.04.2009	(9.06.73/1073/DD) Beim Start der MySQL-Engine wird ab jetzt 8 Sekunden lang versucht die Datenbankverbindung herzustellen. Bei einem Fehlschlag wird der Prozess 4 Mal wiederholt. Erst nach dem letzten Fehlschlag wird ein Fehler angezeigt. Dies erlaubt es, wenn der erste Versuch fehlschlug und zu einer Erweiterung der Firewall-Ausnahmen aufforderte, nach dem Erteilen der Firewall-Ausnahme weiter durchzustarten, ohne, dass die Engine sich „aufhängt“.

	From now on, the MySQL-engine will try to establish a database-connection for 8 seconds. If an error occurs this process will be continued four times. Only after the last try an Error-Message will be displayed. This allows, if the first try failed and lead to a request to expand the firewall-rules, to connect after the new firewall-exception has been defined, without hanging the engine up.

26.04.2009	(9.06.72/1072/JB) Neue Script-Variable (nicht global): [ACT_READ_ONLY] und neue Masken-Variable [mask!MASK_IS_READONLY]. Wenn man z.B. ein Record-Locking nicht durchführen kann, aber die Maske „Readonly“ zeigen möchte, setzt man das Script mit der Variable [ACT_READ_ONLY] auf TRUE und, falls in dem Script eine oder mehrere Masken geöffnet sein sollten, alle Masken mit der Masken-Variable [mask!MASK_IS_READONLY] auf TRUE. Danach können keine Speicher- und Lösch-Aktionen aus der Maske mehr aufgerufen werden. Das Script gibt seinen „Zustand“ an alle aus ihm selbst aufgerufenen Unterscripte weiter, dort ist dann automatisch alles auf Readonly gestellt. In der Statusleiste der Maske wird dann „NUR LESEN“ angezeigt.
	Im „readonly“ Modus wird der Befehl RECORD_LOCKING immer mit dem Resultat „TRUE“ durchgeführt, das Locking selbst aber nicht mehr ausgeführt.
	Hier ein Code-Schnippsel, der zeigt, wie man das neue Feature verwenden kann befindet sich in der Dokumentation: ...\cara\Utilities\document\examples\LockAuftrag.csh

	New script-variable (not global): [ACT_READ_ONLY] and new mask-variable [mask!MASK_IS_READONLY]. If it is not possible to lock a record, but the mask should be shown “readonly”, the script-variable [ACT_READ_ONLY] can b set to TRUE, and, if the script opened one or more masks, the mask-variable(s) [mask!MASK_IS_READONLY] (of all opened masks) have to be set to TRUE too. After that, no save- and no delete-actions can be done. The script itself gives its “property” (readonly) to every script, that is called from it. Also all masks of the sub-scripts are automatically set to readonly.
	While the “readonly” mode is running, the command RECORD_LOCKING will always return the result TRUE and the locking itself will not be done.
	A code-example that shows, how to use this new feature can be found in the documentation: ...\cara\Utilities\document\examples\LockAuftrag.csh

24.04.2009	(9.06.71/1071/DD) Nochmalige Änderung für den Applikations-INI-Schlüssel SQLStreamSave= .
	Sorry! Ich hätte mir die Sache vorher mal genau überlegen sollen. Aber jetzt ist es erstmal fertig und auch ausbaufähig. SQLStreamSave ist nun eine Binär-Flagge, die sich aus folgenden Flaggen zusammenbauen lässt:
	00000 =	Keine Protokollierung der SQL-Anweisungen
	00001 =	Protokollierung in die Datenbank
	00002 =	Protokollierung in eine CSV-Datei pro Station im Printset-Verzeichnis und dort im 
		Unterverzeichnis SQLStreamSave. Pro Start der Engine entsteht eine Datei, deren Name mit 
		dem Datum und der Zeit beginnt.
	00004 =	Speichert keine SELECT-Querys. Dadurch werden nur Datenveränderungen gestreamt.
	00008 =	Speichert keine Änderungen der Tabelle "changes".
	00016 =	Speichert keine Änderungen der Tabelle "choicer" (das ist bei Anwendungen mit Mandanten 
		sinnvoll).
	00032 =	Speichert keine Änderungen der Tabelle "suids".
	00064 =	Speichert keine UPDATES der Tabelle "lockrecs".
	00128 =	Speichert keine Änderungen der Tabelle "lockrecs".
	00256 =	Speichert keine Mandant-Flaggen-Änderungen (das ist bei Anwendungen mit Mandanten 
		sinnvoll).
	00512 =	Speichert keine Änderungen der Tabelle "applog".

	Again a change of INI-File-Key SQLStreamSave=. Sorry! I should have thought about it first. But now it’s ready so far and also expandable. SQLStreamSave is now a binary-flag, that can be constructed with the following flags:
	00000 =	no protocol of the SQL-querys
	00001 =	protocol into the database
	00002 =	protocol into CSV-file per station in the printset-folder, and there into a subdirectory, named 
		“SQLStreamSave“. For each start of the engine a file will be created. The filename starts with 
		the date and time of the creation.
	00004 =	no protocol of SELECT-querys (only data-changes will be saved).
	00008 =	no protocol for the table "changes".
	00016 =	no protocol for the table "choicer" (this is useful for mandant-applications).
	00032 =	no protocol for the table "suids".
	00064 =	no protocol for UPDATES of the table "lockrecs".
	00128 =	no protocol for the table "lockrecs".
	00256 =	no protocol for mandant-flag-changes (this is useful for mandant-applications).
	00512 =	no protocol for the table "applog".

24.04.2009	(9.06.70/1070/JB) Nochmalige Änderung für den Applikations-INI-Schlüssel SQLStreamSave= .
	SQLStreamSave=4 ist wie SQLStreamSave=3, speichert jedoch Änderungen an der Tabelle „changes“.

	Again a change of INI-File-Key SQLStreamSave=. SQLStreamSave=4 is like SQLStreamSave=4, but querys, regarding the table “changes” will not be protokolled.

24.04.2009	(9.06.69/1069/DD) Nochmalige Änderung für den Applikations-INI-Schlüssel SQLStreamSave= .
	0 = Nein, 1 = in die Datenbank, 2 = in eine CSV-Datei pro Station im PrintSet-Path und dort im Unterverzeichnis „SQLStreamSave“, wobei ab jetzt nicht mehr pro Station eine Datei, sondern pro Start der Anwendung eine Datei entsteht. Der Dateiname startet mit der Angabe von Datum und Zeit.
	SQLStreamSave=3 ist wie SQLStreamSave=2, speichert jedoch keine SELECT-Anweisungen. Dadurch werden nur Datenveränderungen gestreamt.

	Again a change of INI-File-Key SQLStreamSave=. 0 = no, 1 = into the database, 2 = into a csv-file in the printset-path and here in a subdirectory “SQLStreamSave”, where every start of the engine produces a new file. The filename starts with the date and time of the creation.
	SQLStreamSave=3 is like SQLStreamSave=2, but no SELECT-querys are saved. Hereby only data-changings are streamed.

23.04.2009	(9.06.68/1068/JB) Änderung für den Applikations-INI-Schlüssel SQLStreamSave= .
	0 = Nein, 1 = in die Datenbank, 2 = in eine CSV-Datei pro Station im PrintSet-Path.

	Change of INI-File-Key SQLStreamSave=. 0 = no, 1 = into the database, 2 = into a csv-file in the printset-path.

23.04.2009	(9.06.67/1067/JB) Wenn ein Datensatz innerhalb einer Session bereits gelockt ist, wir ab jetzt eine entsprechende Information im Monitor gezeigt. Das Ergebnis bleibt weiterhin TRUE.

	If a record should be locked twice within a session, a monitor-info will be displayed from now on. The result still will be TRUE.

23.04.2009	(9.06.66/1066/DD) Neuer optionaler Parameter für den Befehl 
	RECORD_LOCK	 strTable,floatID,boolLockYesUnlockNo,[boolRes]{,boolHaveMessage{,numEvent}}.
	Normalerweise wird aus einem Script automatisch der Event = 2 (SCRIPT_LOCK) und aus einer Maske Event = 1 (MASK_LOCK) übergeben. Wenn man abweichende Meldungen haben möchte, kann man den LockEvent hier mit numEvent übergeben, im Choicer mit der Listenummer 1001 im Feld "Auswahl" beschreiben und das Feld "Wert1" mit numEvent füllen (der Event muss einen Wert >=10 und < 1000 haben). Die Engine gibt den Auswahl-Text dann aus.

	New optional parameter for the command
	RECORD_LOCK	 strTable,floatID,boolLockYesUnlockNo,[boolRes]{,boolHaveMessage{,numEvent}}.
	If a scrip calls this command, the event is normally 2 (SCRIPT_LOCK) and from out of a mask, the event is normally. If a different message should be shown, the event can be given here. Its description must be defined in the field “Auswahl” of the choicer with the Listenummer = 1001, the numEvent value must be stored in the field “Wert1” (this value must be >=10 and < 1000). The engine returns the “Auswahl”-text in case of errors. 

16.04.2009	(9.06.65/1065/DD) Wenn MultiScreen für eine Applikation eingeschaltet ist und ein Monitor abgezogen wurde, werden alle Fensterposition zur Laufzeit wieder in den Auslieferungszustand zurückgesetzt.

	If an application runs with MultiScreen and a monitor has been disconnected, all window-positions are reset to the default while runtime.

15.04.2009	(9.06.64/1064/DK) Bei Applikationen, die eine Stations-INI-Datei verwenden, kann man ab jetzt sowohl im Login-Dialog, als auch im Hauptfenster der Applikation die Tastenkombination Strg+# verwenden, um, ohne jede Rückfrage, die Fensterpositionen der Anwendung zurückzusetzten, danach sind dann alle Fenster wieder an den Auslieferungspositionen.

	In case of applications, that are using a station-INI-file, pressing the key Ctrl+# in the login-dialog or in the main-window of the application, causes a rest of all window-positions to their original positions, after that all windows are back to their default positions.

07.04.2009	(9.06.63/1063/MB) Zwei neue INI-Datei-Schlüssel, Sektion [Config], als Erweiterung der Änderung 9.06.12/1012/DD vom 26.09.2008:
	ClrMaskOnList=1 (delauft) oder 0		- Dies ist die Vorbelegung für den Inhalt der Maskenvarianble [mask!MASK_CLEAR_ON_LIST]. Diese Einstellung ist für alle Masken im Programm die Vorgabe. Natürlich kann man den weiterhin Inhalt der Variablen jederzeit im Script verändern.
	ClrMaskOnSpinner=1 (default) oder 0	- Dies ist die Vorbelegung für den Inhalt der Maskenvarianble [mask!MASK_CLEAR_ON_SPINNER]. Diese Einstellung ist für alle Masken im Programm die Vorgabe. Natürlich kann man den weiterhin Inhalt der Variablen jederzeit im Script verändern.

	Two more INI-file-keys, section [Config], as an extension of change 9.06.12/1012/DD from 26.09.2008:
	ClrMaskOnList=1 (delauft) oder 0		- This is the predefinition for the value of the mask-variable [mask!MASK_CLEAR_ON_LIST]. This setting is the default for all masks of the program. The value of the variable can still be changed in the scripts at any time of course.
	ClrMaskOnSpinner=1 (delauft) oder 0	- This is the predefinition for the value of the mask-variable [mask!MASK_CLEAR_ON_SPINNER]. This setting is the default for all masks of the program. The value of the variable can still be changed in the scripts at any time of course.

03.04.2009	(9.06.62/1062/DD) NAVIGATE Dialogelemente werden ab jetzt nur noch neu gezeichnet, wenn sie auch auf eine Seite verweisen.

	NAVIGATE dialog elements will only be drawn if they are linked to a page, from now on.

03.04.2009	(9.06.61/1061/KP) Die Masken-Option FORCE_FILTER ging im Zusammenhang mit Relational-Suchfeldern nicht mehr, der Fehler wurde behoben.

	The mask-option FORCE_FILTER wasn’t working together with relational-serch-fields any more, this error has been removed.

02.04.2009	(9.06.60/1060/DD) Im Werkzeugkasten hat der Punkt „Script-Files“ wurde verändert. Nur, wenn dieser Punkt eingeschaltet ist, kann man ab jetzt im Debug-Menü der Masken die File-List abrufen. Dann werden alle Dateinamen inklusive deren Pfade der Script-, Include-, Mask-, SQL- Hilfe- und CaDo-Dateien im Speicher gesammelt, die nach dem Einschalten von der Engine geladen wurden. Wenn die Liste aufgerufen wird, wird sie im Monitor angezeigt und im danach gesäubert. 

	The item “Script-Files” in the tool-box has been changed. Only, if this item is checked, the file-list of the debug-menu in the masks can be retrieved. Then all filenames including their paths of the Script-, Include-, Mask-, SQL- Help- and CaDo-files will be gathered, after the item has been checked in the tool-box. If the list is called, it will be shown in the monitor and after that cleared.

02.04.2009	(9.06.59/1059/JB) Im Werkzeugkasten sind die Punkte „ASCII Import“ und „Gelöschte Daten“ nur noch erreichbar, wenn der Benutzerlevel >= 10000 ist.

	In the tool-boy the items “ASCII Import” and “Deleted Data” can only be seen and accessed, if the user-level is >= 10000.

01.04.2009	(9.06.58/1058/JB) Neuer optionaler Parameter für den Befehl
	LOGIN_DIALOG [strRes] {, strHeader {, strWhereClause {, boolForceSuper }}}.
	Wenn boolForceSuper=TRUE ist, muss sich der Supervisor (super) anmelden.

	New optional parameter for the command 
	LOGIN_DIALOG [strRes] {, strHeader {, strWhereClause {, boolForceSuper }}}.
	If boolForceSuper is TRUE, the supervisor (super) has to login.

31.03.2009	(9.06.57/1057/DD) Wenn der Entwicklermodus eingeschaltet ist, kann man in Eingabemasken mit einem Rechtsklick auf ein eines der Monitor-Icons (SQL oder SCRIPT) einen neuen Punkt wählen: „Script“. Damit kann man sofort von dort aus ein Script aufrufen und ausführen lassen.

	If the developer-mode is switched on and a dialog-masked is opened, a right-click to one of the monitor-icons (SQL or SCRIPT) will show a new item: “Script”. With this a script can be directly called and executed.

26.03.2009	(9.06.56/1056/DD) Wenn der Entwicklermodus eingeschaltet ist, kann man in Eingabemasken mit einem Rechtsklick auf ein eines der Monitor-Icons (SQL oder SCRIPT) einen neuen Punkt wählen: „mask vals“. Damit werden alle Felder (ID, Name, Typ und Wert) der Maske in die Zwischenablage kopiert.

	If the developer-mode is switched on and a dialog-masked is opened, a right-click to one of the monitor-icons (SQL or SCRIPT) will show a new item: “mask vals”. With this item all fields of the mask (ID, name, type and value) will be copied to the clipboard.

26.03.2009	(9.06.55/1055/DD) Wenn der Entwicklermodus eingeschaltet ist, kann man in Eingabemasken mit einem Rechtsklick auf ein eines der Monitor-Icons (SQL oder SCRIPT) einen neuen Punkt wählen: „record ID“. Hier kann man einen Tabellennamen und RecordID einfügen (mit Koma getrennt), der gesamte zugehörige Datensatz wird anschließend in die Zwischenablage geladen. Als Vorgabe sind automatisch die Daten der Maske vorgegeben.

	If the developer-mode is switched on and a dialog-masked is opened, a right-click to one of the monitor-icons (SQL or SCRIPT) will show a new item: “record ID”. Separated by a comma, a table-name and a record-id can be given here. The complete record will then be loaded into the clipboard. The default values are the one from the mask.

26.03.2009	(9.06.54/1054/DD) Beim Auslesen verschiedene Hardware-Konfigurationen konnte es beim Start der Cara-Engine zu einem Ausnahmefehler kommen. Dieser Fehler wurde behoben.

	Reading some different hardware-configuration could have caused an exception. This error has been removed.

22.03.2009	(9.06.53/1053/JB) Das Umstellen des Standarddruckers wird ab jetzt maximal eine Sekunde lang an alle anderen Applikationen im Windows gesendet. Sollte die Message „hängen“ bleiben oder aus einem anderen Grund nicht „zurückkehren“, wird das System nach einer Sekunde wieder freigegeben.

	Changing the standard-printer will only be notified for one second to all other windows-applications from now on. If the message “hungs” or will not be returned anyhow, the system will be released after one second at last.

03.03.2009	(9.06.52/1052/JB) Neuer Befehl GET_IMAGE_INFO strFileName, [strRes]
	strFileName ist der Deteiname der Bilddatei. In strRes wird derzeit nur die Breite und Höhe der Bilddatei in der Form “ W160H139“ zurück gegeben. W=Width in Pixel und H=Height in Pixel.

	New command GET_IMAGE_INFO strFileName, [strRes]. strFileName is the filename of the image-file. The return-value of strRes actually only gives the width and height (in pixel) of the image back in the following way “W160H139”.

03.03.2009	(9.06.51/1051/AH) Neue Masken-Optionen FTS_NOTES, FTS_NOTE1 oder FTS_NOTE2. Es macht nur Sinn FTS_NOTES oder eine, bzw. beide anderen Optionen zu wählen. Wenn FTS_NOTES gesetzt wird, werden im Falle einer Volltextsuche aus einer Maske heraus auch alle dem Datensatz zugeordneten Notizen mit durchsucht. Entsprechendes gilt, wenn FTS_NOTE1 und/oder FTS_NOTE2 gesetzt wurde, dann werden jeweils nur Text1 und/oder Text2 der zugordneten Notizen mit durchsucht. Zur Laufzeit kann diese Option mit den folgenden Konstanten in der [mask!MASK_FLAG] gesetzt werden: [MASK_FLAG_FTS_NOTES], [MASK_FLAG_FTS_NOTE1] und/oder [MASK_FLAG_FTS_NOTE2].

	New mask-options FTS_NOTES, FTS_NOTE1 or FTS_NOTE2. It is only useful to use FTS_NOTES or one or both other options. If FTS_NOTES has been set, in case of a full-text-search out of a mask-dialog, all related notes will also be investigated. Equally, if  FTS_NOTE1 and/or FTS_NOTE2 has been set, the related notes of text1 and/or text2 will be investigated. While runtime, this options can be modified through the [mask!MASK_FLAG], setting with one of the following constants: [MASK_FLAG_FTS_NOTES], [MASK_FLAG_FTS_NOTE1] and/or [MASK_FLAG_FTS_NOTE2].

17.02.2009	(9.06.50/1050/DD) Der CALC-Befehl H2ASCII, der HTML kodierten Text in ASCII umwandelt, kann ab jetzt nicht nur HTML-Replacements, sondern auch die dezimalen umwandeln. 
	Beispiel: &pound; = £ und ab jetzt auch &#163; = £

	The CALC-command H2ASCII, that converts HTML coded text to ASCII, will replace not only the HTML-codes, it will also replace the decimal codes, from now on.
	Example: &pound; = £ und ab jetzt auch &#163; = £

17.02.2009	(9.06.49/1049/DD) Ein neuer optionaler Parameter für den Befehl LIST_TAG_GET.
	LIST_TAG_GET [list], 'tag', [numCursorPos], [strVal|listVal], [boolRes] {, [strValAttr|listValAttr]}
	Wenn ein String [strValAttr] oder eine Liste [listValAttr] an diesen Befehl mit übergeben werden, werden ggf. vorhandene Attribute an diese Variable weitergegeben.

	New optional parameter for the command LIST_TAG_GET.
	LIST_TAG_GET [list], 'tag', [numCursorPos], [strVal|listVal], [boolRes] {, [strValAttr|listValAttr]}
	If a string [strValAttr] or a list [listValAttr] is also given to the command, possibly available attributes of the tag are given to this variable.

11.02.2009	(9.06.48/1048/DD) Die Masken-Flagge MASK_FLAG_ICON_DOC_MGR kann ab jetzt auch während der Laufzeit an- und ausgeschaltet werden.

	The mask-flag MASK_FLAG_ICON_DOC_MGR can be changed while runtime from now on.

31.01.2009	(9.06.47/1047/KK) Zwei neue Schlüssel für die Applikations-INI-Datei, Sektion [Config]:
	LoginMaxRetries=3 maximale Anzahl der Login-Versuche, bevor die Engine beendet wird. Kleiner als 2 lässt sich der Schlüssel nicht einstellen. Default ist 3.
	LoginResetAfterDeny=0, 0=nein (default) oder 1=ja. Wenn mit ein und demselben Benutzer LoginMaxRetries Fehleingaben beim Einloggen gemacht wurden, dann wird der Benutzer gesperrt.

	Two new keys for the application-INI-file, section [Config]: LoginMaxRetries=3, max. login-tries before the engine will be shut down. Default is 3, lower than 2 isn’t possible.
 	LoginResetAfterDeny=0, 0=no (default) or 1=yes. If LoginMaxRetries login-tries have been made with the same user-name, the user will be locked.

30.01.2009	(9.06.46/1046/DD) Das Script, das mit dem INI-Datei-Schlüssel DocMgrDateListScript4Show definiert werden kann, wird ab jetzt mit einer 1 im fünften Parameter aufgerufen, wenn der Termin-Timer gefeuert hat und das Script aufrief. Wenn der User das Script aufruft, ist dieser Parameter 0.

	The script, that could be defined with the INI-file-key DocMgrDateListScript4Show, will be called with a 1 in the fifth parameter, if the timer fired and called it, otherwise, if the user called the script, the fifth parameter will be 0.

28.01.2009	(9.06.45/1045/JB) Beim Beenden der CARA-Engine wird ab jetzt die Anzahl der am PC angeschlossenen Monitore gespeichert. Wenn diese Anzahl beim nächsten Neustart abweicht, werden alle Bildschirmeinstellungen auf den Hauptbildschirm zurückgesetzt (falls die Anwendung auf einem anderen Monitor, als dem Hauptbildschirm lief).

	On a shut-down of the CARA-engine, the amount of monitors, that are connected to the PC will be saved. If this amount differs to the amount of monitors on the next start, all screen-settings will be reset to the main-screen (if the application was running on a secondary screen).

23.01.2009	(9.06.44/1044/GH) Die String-Berechnungsmethode „PART“ wurde erweitert. Der Aufruf ist weiterhin gleich: CALC [Res] AS PART([SourceStr], numPart, strDelim).
	Wenn numPart negativ übergeben wird, werden alle Teile einschließlich dem numParten Teil zusammen zurückgegeben. Man bekommt also den [SourceStr] bis einschließlich numPart zurück (stets mit einem strDelim abgeschlossen).
	Diese Erweiterung gilt auch für die String-Berechnungsmethode „REVERSE_PART“.

	The string-calculation-method „PART“ has been extended. The syntax is still the same
	CALC [Res] AS PART([SourceStr],numPart,strDelim).
	If numPart is negative, all parts including the numPart part will be returned. So the whole [SourceStr] up to and including the numPart part will be returned (always with a strDelim at the end).
	This extension also works with the string-calculation-method „REVERSE_PART“.

22.01.2009	(9.06.43/1043/VD) Die Fontfarbe eines Knopfes kann ab jetzt mit dem Befehl FIELD_FLAG_ON_OFF geändert werden. Beispiel:
	FIELD_FLAG_ON_OFF [WorkMask],'BB_TEST','[FIELD_FLAG_RED]','',TRUE
	Das TRUE am Ende des Befehls weist die Engine an eine erweiterte Form des Befehls auszuführen.

	The font-color of a button can be changed with the command FIELD_FLAG_ON_OFF from now on. Exampe: FIELD_FLAG_ON_OFF [WorkMask],'BB_TEST','[FIELD_FLAG_RED]','',TRUE
	The TRUE at the end of the command forces the engine to execute an extended form of that command.

22.01.2009	(9.06.42/1042/DD) Wenn der Entwicklermodus eingeschaltet ist, kann man in Eingabemasken mit einem Rechtsklick auf ein eines der Monitor-Icons (SQL oder SCRIPT) einen neuen Punkt wählen: „load ID“. Hier kann man eine RecordID einfügen, deren zugehöriger Datensatz wird anschließend in die Maske geladen wird.

	If the developer-mode is switched on and a dialog-masked is opened, a right-click to one of the monitor-icons (SQL or SCRIPT) will show a new item: “load ID”. This can be used to insert a RecordID. The related record will then be loaded into the mask.

22.01.2009	(9.06.41/1041/TG) Neuer Applikations-INI-Datei-Schlüssel “AutoScreenScaleing=0“ in Sektion [Config] und/oder im Programm im Werkzeugkasten den Schalter “Bildschirm automatisch anpassen“ setzten. Dieser Schalter ist für jede Station separat einstellbar. Wenn der Schalter TRUE ist, werden die Einstellungen für die Darstellung (beim Start der Anwendung) automatisch angepasst, wenn sich die Bildschirmauflösung des Computers geändert hat. Das ist z.B. für Laptops sinnvoll, die an einer Dockingstation mit einer anderen Auflösung betrieben werden, als ohne. Wenn eine solcher Einsatz geplant ist, sollte die Einstellung „Fenster-Höhe + Breite speichern“ im Werkzeugkasten NICHT gewählt sein, weil sonst die Dialog-Fenster nicht automatisch angepasst werden.

	New application-INI-file-key for section [Config] with the name “AutoScreenScaleing=0“ may be set, as well as the option in the tool-box “automatic screen scaling”. This option can be set separately for each station. If the key is TRUE, the settings for the display will be automatically configured (with the application-start), if the screen-solution of the computer has been changed. This is useful e.g. if a laptop is running with on a docking-station with a different screen-solution than without. If such is usefull, the key “save window height + with” should not be used inside the tool-box.

22.01.2009	(9.06.40/1040/DD) Der Datenbank-Feldtypen ftVarBytes wird ab jetzt genauso wie ftBlob, und ftWideMemo wie ftMemo behandelt. Damit können die Inhalte der Felder dieser Datentypen (z.B. unter ADO) in Listen-Variablen gelesen werden.

	The database field-types ftVarBytes will be handled like ftBlob abd ftWideMemo like ftMemo. So the contents of fields of this data-types (e.g. under ADO) can be read into list-variables.

11.12.2008	(9.06.39/1039/DD) Wenn ab jetzt mit NOTE_WRITE eine Notiz gespeichert wird und die Notiz keinerlei Zeilen enthält, wird die Notiz gelöscht.

	Saving an empty note with NOTE_WRITE will delete the Note from now on.

04.12.2008	(9.06.38/1038/DD) Alle LIST_TAG_xxxx Befehle verarbeiten nun auch Tags vom Format <tag />.
	Beispiel-Script: list_tag_get__simple_7.csh

	All LIST_TAG_xxxx commands can process tags with the format <tag /> from now on.
	Example-script: list_tag_get__simple_7.csh

04.12.2008	(9.06.37/1037/DD) Wird eine Liste mit LIST_FILE_READ gelesen und die Zeichen in der Datei sind im UTF8-Format kodiert (die ersten drei Zeichen der Datei sind dann “ ï»¿“) – wird die Liste bereits beim Einlesen nach ANSI umgeformt. Wenn die Liste später wieder mit LIST_FILE_WRITE gespeichert wird (und zwischendurch NICHT mit LIST_CLR bereinigt wurde), werden die Daten beim Schreiben wieder nach UTF8 zurück gewandelt.

	If a list is filled with LIST_FILE_READ and the file is UTF8-encoded (then the first three chars are “ï»¿”) – the data will be transformed to Ansi while reading. If the list will be written back with LIST_FILE_WRITE (and the list has NOT been cleared with LIST_CLR in between) the data will be transformed back to UTF8 while writing.

02.12.2008	(9.06.36/1036/DD) Neuer Befehl: 
	LIST_TAG_INSERT [listXML], [numCursorPos], [strVal|listVal], [boolRes].
	Setzt einfach den gesamten Inhalt vom String [strVal]) oder der Liste [listVal] an der [numCursorPos] in die [listXML] ein. [numCursorPos] wird nicht verändert. Es ist wichtig, ggf. benötigte Tag-Start und das Tag-Ende Sequenzen mit in den String bzw. die Liste einzubauen. An [boolRes] kann man ablesen, ob der Befehl korrekt ausgeführt wurde.
	Beispiel-Script: list_tag_get__simple_6.csh

	New command: LIST_TAG_INSERT [listXML], [numCursorPos], [strVal|listVal], [boolRes].
	Simply inserts the complete contents of [strVal] or [listVal] at the [numCursorPos] into the [listXML]. [numCursorPos] will not be modified. Make shure to add a tag-start and tag-end sequence into the string or the list if necessary. [boolRes] returns, if the command has been executed correct.
	Example-script: list_tag_get__simple_6.csh

02.12.2008	(9.06.35/1035/DD) Neuer Befehl: 
	LIST_TAG_DELETE [listXML], 'tag', [numCursorPos], [boolRes].
	Sucht in der Liste [listXML] das nächste Vorkommen des 'tag' beginnend an der Position [numCursorPos] und entfernt den gesamten Tag (nicht nur den Inhalt). An [boolRes] kann man ablesen, ob der 'tag' gefunden wurde. [numCursorPos] wird jeweils hinter den 'tag' gesetzt, wenn dieser gefunden wurde. Durch nochmaliges Aufrufen des Befehls kann der nächste Tag gelöscht werden.
	Beispiel-Script: list_tag_get__simple_6.csh

	New command: LIST_TAG_DELETE [listXML], 'tag', [numCursorPos], [boolRes].
	Searches the 'tag' in the [listXML] starting at [numCursorPos] and removes the whole tag (and not only the contents). [boolRes] shows, if the tag has been found. [numCursorPos] will always be positioned behind the 'tag', if it could be found. By calling the command again and again, the delete can be continued.
	Example-script: list_tag_get__simple_6.csh

02.12.2008	(9.06.34/1034/DD) Neuer Befehl: 
	LIST_TAG_SET [listXML], 'tag', [numCursorPos], [strVal|listVal], [boolRes].
	Sucht in der Liste [listXML] das nächste Vorkommen des 'tag' beginnend an der Position [numCursorPos] und ersetzt den Wert durch den String ([strVal]) oder die Liste ([listVal]). An [boolRes] kann man ablesen, ob der 'tag' gefunden wurde. [numCursorPos] wird jeweils hinter den 'tag' gesetzt, wenn dieser gefunden wurde. Durch nochmaliges Aufrufen des Befehls kann der nächste Wert ersetzt werden.
	Beispiel-Script: list_tag_get__simple_6.csh

	New command: LIST_TAG_SET [listXML], 'tag', [numCursorPos], [strVal|listVal], [boolRes].
	Searches the 'tag' in the [listXML] starting at [numCursorPos] and replaces its value either through the string ([strVal]) or the contents of the list ([listVal]). [boolRes] shows, if the tag has been found. [numCursorPos] will always be positioned behind the 'tag', if it could be found. By calling the command again and again, the replace can be continued.
	Example-script: list_tag_get__simple_6.csh

28.11.2008	(9.06.33/1033/DD) Erweiterung der Formatierungsmöglichkeiten von Fließkommazahlen. Bei Angabe einer negativen Anzahl von Dezimalstellen, werden nur so viele Nachkommastellen zurückgegeben, wie tatsächlich benötigt werden. Dies gilt natürlich für alle Ausgabevarianten der Fließkommazahlen. 
	Beispiele: 
	CALC [TmpFloat] AS 123.00
	CALC [TmpStr] AS [TmpFloat|R0,-2] liefert in [TmpStr] den Wert “123“

	CALC [TmpFloat] AS 123.05
	CALC [TmpStr] AS [TmpFloat|R0,-2] liefert in [TmpStr] den Wert “123,05“ 

	CALC [TmpFloat] AS 123.20
	CALC [TmpStr] AS [TmpFloat|R0,-2] liefert in [TmpStr] den Wert “123,20“

	Extension for the formatted output of floating-point-numbers. If the amount of decimal-digits is given negative, only the needed digits behind the floating-point will be returned. This works for all the different output-formatting-variants of floating-point-variables. E.g.:
	CALC [TmpFloat] AS 123.00
	CALC [TmpStr] AS [TmpFloat|R0,-2] returns in [TmpStr] the value “123“

	CALC [TmpFloat] AS 123.05
	CALC [TmpStr] AS [TmpFloat|R0,-2] returns in [TmpStr] the value “123,05“ 

	CALC [TmpFloat] AS 123.20
	CALC [TmpStr] AS [TmpFloat|R0,-2] returns in [TmpStr] the value “123,20“

26.11.2008	(9.06.32/1032/IS) Neuer INI-Datei-Schlüssel in der Sektion [Config]: TAPIDialPrefix=none (Vorgabe).
	Der Schlüssel wird nach dem ersten Start an die Stations-INI-Datei weiter gegeben. So dass man diese Parameter auch pro Station einstellen kann. Der Prefix wird nur dann der Telefonnummer vorangestellt, wenn die Nummer NICHT mit einem „+“ beginnt (und wenn der Prefix weder leer noch gleich „none“ ist). 

	New INI-file-key for section [config]: TAPIDialPrefix=none (default). The key will be transferred to the station-II-file, right after the first start. The prefix will be placed in front of the telephone-number, if it doesn’t start with a “+” (and if the prefix is different to “none” or “”).

25.11.2008	(9.06.31/1031/DK) Erweiterung der Möglichkeiten des Befehls NAVIGATE. Wenn man bei der  Zieldatei der Option [NAVIGATE_SAVE] die Dateiendung “.xml“ verwendet, wird versucht den Browser-Inhalt zur XML-Datei zu konvertieren und zu speichern.

	Extension of the command NAVIGATE. If the destination file of the option [NAVIGATE_SAVE] has the file-extension “.xml”, the engine will try to convert the browser-contents to an XML-file.

21.11.2008	(9.06.30/1030/DK) Neuer Befehl: 
	LIST_TAG_COUNT [listXML], 'tag', [numCursorPos], [numRes].
	Sucht in der Liste [listXML] beginnend an der Position [numCursorPos], wie häufig der 'tag' zu finden ist. Das Resultat wird in [numRes] zurückgegeben. [numCursorPos] zeigt danach auf das letzte Vorkommen des 'tag'.
	Beispiel-Scripte: list_tag_get__simple_1.csh and list_tag_get__simple_2.csh

	New command: LIST_TAG_COUNT [listXML], 'tag', [numCursorPos], [numRes].
	Searches the 'tag' in the [listXML] starting at [numCursorPos] and returns the amount of occurrences in [numRes]. Afterwards [numCursorPos] will point to the last occurrence of the 'tag'.
	Example-scripts: list_tag_get__simple_1.csh and list_tag_get__simple_2.csh

21.11.2008	(9.06.29/1029/DK) Neuer Befehl: 
	LIST_TAG_GET [listXML], 'tag', [numCursorPos], [strVal|listVal], [boolRes].
	Sucht in der Liste [listXML] den 'tag' beginnend an der Position [numCursorPos] und gibt den Wert an einen String ([strVal]) oder eine Liste ([listVal]) weiter. Wenn der Rückgabewert leer ist, kann man an [boolRes] ablesen, ob der 'tag' gefunden wurde. [numCursorPos] wird jeweils hinter den 'tag' gesetzt, wenn dieser gefunden wurde. Durch nochmaliges Aufrufen des Befehls kann immer weiter gesucht werden.
	Beispiel-Scripte: list_tag_get__simple_1.csh and list_tag_get__simple_2.csh

	New command: LIST_TAG_GET [listXML], 'tag', [numCursorPos], [strVal|listVal], [boolRes].
	Searches the 'tag' in the [listXML] starting at [numCursorPos] and returns the value either to a string ([strVal]) or a list ([listVal]). If the return-value is empty, [boolRes] shows, if the tag has been found. [numCursorPos] will always be positioned behind the 'tag', if it could be found. By calling the command again and again, the search can be continued.
	Example-scripts: list_tag_get__simple_1.csh and list_tag_get__simple_2.csh

21.11.2008	(9.06.28/1028/DD) Im Falle der Benutzung eines Feldnamens, der das reservierte Wort GROUP enthält, werden ab jetzt auch WHERE-Bedingungen korrekt an das Query angefügt.

	In case a field-name containing the reserved word GROUP, a where-clause will be appended correctly to the query from now on.

21.11.2008	(9.06.27/1027/TG) Beim Umsortieren eines Browsers oder eines Grids bleibt der Daten-Cursor ab jetzt auf dem Datensatz, der vor dem Umsortieren den Focus hatte, wenn ein RecordID-Feld als Bezugsfeld im Query enthalten ist.

	When changing the sort-order of a browser or a grid, the data-cursor will stay on the record, that has the focus before changing the sort, if a recorded-field is in the field-list of the query.

17.11.2008	(9.06.26/1026/DD) Das Hervorheben der Icons von Document- und Note-Manager mittels eines Ausrufungszeichens neben dem Icon entfällt ab jetzt.

	Highlighting the document- and note-manager icons by adding an exclamation mark will not be done any longer.

17.11.2008	(9.06.25/1025/DD) Die Library DelphiSpeedUpV278D2007 wurde in das Projekt eingebaut. Die Masken bauen sich jetzt schneller auf.

	The library DelphiSpeedUpV278D2007 has been implemented into the project. Masks are shown faster now.

15.11.2008	(9.06.24/1024/CG) Die Meldung, dass eine Maske modifiziert worden sei, kommt nur noch, wenn dies auch der Fall ist.

	The message, that a mask has been modified, will only occur, if this case is really true.

11.11.2008	(9.06.23/1023/DD) Das gab es in dieser Dokumentation auch noch nicht. Ein Feature, das zuvor implementiert wurde muss zurückgenommen werden. Die Änderung 9.06.22/1022/BR vom 06.11.2008 ist ersatzlos wieder aus dem Programm heraus genommen worden, da zum einen die Funktion mit der rechten Maustaste verfügbar ist und zum anderen der Linksklick mit einem Doppelklick „kollidiert“ und daher störend auf den Programmablauf unter Windows XP wirkt, es kommt dann die Fehlermeldung „Aus einem sichtbaren Fenster kann kein modales gemacht werden“.  

	Here comes a novelty in this documentation. A feature, that has been implemented before, has to be removed. Change 9.06.22/1022/BR from 06.11.2008 has been deleted without replacement, because the function is available with the right mouse click and the left mouse click collides with the double-click and leads to a malfunction under Windows XP: the error “A visible window can’t be changed to modal” occurred.

06.11.2008	(9.06.22/1022/BR) Ein “normaler“ Linksklick auf einen Spaltenkopf in einem Grid oder einem Browser sortiert die Liste sofort fallend nach dem zugrunde liegenden Feld.

	A “normal” left-click upon a column-header in a grid or browser will sort the list immediately descending by the linked field.

06.11.2008	(9.06.21/1021/BR) Das Springen zum nächsten Schnellsuchtreffer kann von nun an auch mit der Taste F3 in Grids (Masken) und Browsern vorgenommen werden (bisher war in Grids die Taste F3 mit dem Insert-Icon verbunden, das wurde nun ersetzt um eine Windows konforme Tastenbelegung herzustellen).

	Jumping to the next fast-search-match can be done with the key F3 from now on (either in grids/masks and browsers). Up to this change the key F3 in grids was doing the same as a click to the insert-icon (if available) – this has been replaced by the search-function, to have a windows-conform key-usage.

06.11.2008	(9.06.20/1020/HB) Die TAPI-Schnittstelle und auch die CTI schickt ab jetzt auch einen Anruf los, wenn das Feld den String “FUNK“ enthält.

	The TAPI-interface and the CTI will call out, if a field-name contains the string “FUNK”.

06.11.2008	(9.06.19/1019/DD) Wenn DATA_2_MASK mit dem 3. Parameter boolExtractRecID = FALSE aufgerufen wird, wird keine Immer-Notiz angezeigt.

	Using the command DATA_2_MASk with the 3rd parameter set to FALSE, no demand-note will be shown.

06.11.2008	(9.06.18/1018/TG+DD) Erweiterung der Schnellsuche in Browsern und Grids. Zunächst wurde die CSH-Syntax erweitert: mit [S] kann man dem SQL-Interpreter anzeigen, dass ein Feld für die Schnellsuche verwendet werden können soll. Mit einem Rechtsklick auf den Spaltenkopf eines Grids oder Browsers kann man ab jetzt darüberhinaus auch noch die Option “Schnellsuche erweitern“ auswählen, dies zeigt dem SQL-Interpreter ebenfalls an, dass das Feld für die Schnellsuche verwendet werden kann. Innerhalb der Schnellsuche können von nun an nicht nur die im ORDER BY aufgeführten Felder verwendet werden, sondern auch die, die als Schnellsuchfelder über den oben genannten Weg gekennzeichnet wurden. 
	Schließt man von nun an die Eingabe einer Schnellsuche mit STRG+Enter ab, schränkt die Suche NICHT mehr die Anzahl der angezeigten Datensätze ein, sondern der Daten-Cursor springt zu dem ersten Treffer (wie bei einer STARTING WITH Angabe). Mit einem Rechtsklick auf das Schnellsuche-Symbol kann man dann weiter zum nächsten Treffer springen. Wenn kein Treffer mehr erzielt werden kann, springt der Daten-Cursor an den Anfang der Liste. 
	Diese Art der Suche bezieht sich immer auf das letzte eingegebene Feld oder, wenn man die Eingabe der Schnellsuche nicht mit STRG+Enter abgeschlossen hat, auf das Feld, an dessen Ende sich ein “~“-Zeichen befindet. Neben dem Rechtsklick auf das Schnellsuche-Symbol kann man auch mit einem Rechtsklick in die Daten-Liste das Kontextmenü der Browser bzw. Grids aufrufen und dort den Punkt “weiter suchen“ auswählen.

	Expansion of the fast search in browsers and grids. At first, the CSH-syntax was enhanced. With [S] the interpreter can be forced that a field can be used for fast search. By clicking the right mouse button in the head of a column of a grid or a browser the option ”enhanced fast search“ is now also available.  This option also shows the SQL-interpreter that the field can be used for the fast search. Within fast search not only fields from ORDER BY queries can be used, instead fields which are marked the new way are also useable.
	By ending the entry of a fast search witch CTRL+Enter, the search will not limit the shown records; instead the cursor will jump to the first entry (similar to STARTING WITH). With a right-click on the fast search button you can go on to the next hit. After the last hit, the cursor will jump back to the first entry of the list.
	This kind of search is always related to the last entered field, or, if the fast search wasn´t ended with CTRL+Enter, with the field that ends with a „~“. Beside right-clicking the fast search button a right-click in the record list opens the context menu of browsers or grids and the menu item „search on“  can be chosen.

27.10.2008	(9.06.17/1017/DD) Mit der Tastenkombination STRG+R kann man ab jetzt den Taschenrechner innerhalb einer Eingabemaske aufrufen. Wenn man den Rechner mit „OK“ abschließt, ist das Ergebnis in der Zwischenablage.

	With CTRL+R the calculator can be called from out of a mask. If the calculator is closed with “ok”, the result is pushed to the clipboard.

27.10.2008	(9.06.16/1016/DD) Neuer Punkt im GRID-Kontext-Menü: Markiere Alles. Wenn man mit der rechten Maustaste auf ein Grid klickt und in dem Grid das Markieren von Zeilen erlaubt ist, kann man ab jetzt auch den Kontext-Menüpunkt „Markiere Alles“ finden.

	New item for the grid-context-menu: mark all. If the right mouse key is clicked on a grid where selection is allowed, the new item “mark all” can be used.

15.10.2008	(9.06.15/1015/DD) Der Aufruf des Notizmanagers aus einem Grid heraus, feuert ab jetzt auch den MASK_HOOK_NOTEMGR_EXIT. Außerdem wird die Fehlermeldung, dass eine Tabelle u.U. nicht genügend für ein „Refresh“ indiziert sei, unterdrückt.
	
Calling the note-manager from out of a grid will fire the MASK_HOOK_NOTEMGR_EXIT. Additionally the error-message, that is fired in case of a not complete indexed table, will be suppressed.

14.10.2008	(9.06.14/1014/DH) Neuer Applikations-INI-Datei-Schlüssel “CalculateOnDblClick=0“ in Sektion [Config] und/oder im Programm im Werkzeugkasten den Schalter “Taschenrechner bei Doppelklick“ setzten. Dieser Schalter ist für jede Station separat einstellbar. Wenn der Schalter TRUE ist, kann man mittels eines Doppelklicks auf ein Zahlen-Feld innerhalb eines Eingabedialogs (Maske) einen Taschenrechner starten.
	
New application-INI-file-key for section [Config] with the name “CalculateOnDblClick=o“ may be set, as well as the option in the tool-box “Calculater on double click”. This option can be set separately for each station. If the key is TRUE, a double-click on a mask-field with a number will directly start a calculator.

26.09.2008	(9.06.13/1013/DD) Der Notizmanager öffnet sich bei der Eingabe on Notizen mit einer ID > 10000 so, dass die Text-Auswahl auf der linken Fensterseite nicht mehr angezeigt wird.
	
If the note-manager is opened it an ID > 10000, the note-text-list on the left side of the screen will not longer be shown.

26.09.2008	(9.06.12/1012/DD) Neue boolean Masken-Variable [mask!MASK_CLEAR_ON_LIST] (default = TRUE). Wenn der User das „Zurück zur Liste-Symbol“ betätigt und einen neuen Datensatz in die Maske lädt, wird (falls die Variable TRUE ist) vor der Übergabe der Daten an die Maske ein „MaskClear“ ausgeführt. Das Gleiche gilt für die neue boolean Masken-Variable [mask!MASK_CLEAR_ON_SPINNER] (default = TRUE). Wenn der User ein anderes Symbol des Spinners (als das der Liste) betätigt und einen neuen Datensatz in die Maske lädt, wird (falls die Variable TRUE ist) vor der Übergabe der Daten an die Maske ein „MaskClear“ ausgeführt.
	
New boolean mask-variable [mask!MASK_CLEAR_ON_LIST] (default = TRUE). If the user clicks the “back to list – icon” and chooses a new record, a “MaskClear” will be performed before the data are given to the mask (if the variable is set to TRUE). The same logic is valid for the new boolean mask-variable [mask!MASK_CLEAR_ON_SPINNER] (default = TRUE). If the user clicks any other icon of the spinner (except the list-symbol), a “MaskClear” will be performed before the data are given to the mask (if the variable is set to TRUE).

06.09.2008	(9.06.11/1011/DD) Das beim Programmstart angelegte CaIn-File wird ab jetzt mit exklusivem Zugriff geöffnet und auch dann, wenn das Anlegen der Datei zunächst auf dem System mit dem Zugriffsfehler 32 (wahrscheinlich nur auf Vista) bemängelt wird, wird der versucht damit weiter zu arbeiten. Der Fehler tritt nur gelegentlich auf und en Weiterarbeiten und Ignorieren des Fehlers führte zu keinerlei Problemen.
	
	Creating a CaIn-file on an application start will be done with exclusive file access to that file from now on. The system sometimes fires a DOS-error 32 (most likely only on VISTA) but the engine will still try to work with the CaIn-file. The error occurred only occasionally and continuing didn’t cause any problems.

06.09.2008	(9.06.10/1010/DD) Die Library MySQLDAC_Full wurde auf den Stand 2.6.3 gebracht.
	
	The library MySQLDAC_Full has been brought to V. 2.6.3.

29.08.2008	(9.06.09/1009/DD) Das Anfügen von WHERE-Clauses an ein synthetisches Query schlug fehl. Der Fehler ist behoben.
	
	Adding a where-clause to a synthetic build query failed. The error has been removed. 

24.08.2008	(9.06.08/1008/DD) In der Tabelle “lockrecs” wurde ein neues Feld mit dem Namen “UserSIDShort“ hinzugefügt. 
	WICHTIG: VOR dem Einspielen der neuen Engine erst die Applikation starten und die Tabelle mittels des Befehls “TABLE_2_ASCII lockrecs“ auslesen. Beim Start mit der neuen Engine wird dann das Feld automatisch angefügt. Dann bitte die Tabelle leeren mit dem Befehl “delete from lockrecs“ und anschließend die Daten wieder einlesen, mit dem Befehl “ASCII_2_TABLE lockrecs“.
	
	The table “lockrecs” got a new field: “UserSIDShort“.
	ATTENTION: BEFORE starting with the new engine, start your application and save the lockrecs-data with the command “TABLE_2_ASCII lockrecs”. Then start with the new engine, the new field will be inserted automatically. Then clean the table with the command “delete from lockrecs” and then insert the data again with the command “ASCII_2_TABLE lockrecs”.

24.08.2008	(9.06.07/1007/DD) Neuer Befehl PHONE_CALL strNum {, strName}.
	Mit diesem Befehl kann man sowohl aus der CTI-Version der Engine als auch aus der Standard-Version heraus (wenn dort der Schlüssel “TAPIInterfaceAvail=1“ eigenschaltet ist) einen Anruf an die übergebene strNum mit optionaler Anzeige des strName starten.  
	
	New comand PHONE_CALL strNum {, strName}. With this command the given “strNum” will be dialed out and optional the “strName” will be displayed. This will work with the CTI-version of the engine as well as with the standard-version, if the key “TAPIInterfaceAvail=1“ is set. 

24.08.2008	(9.06.06/1006/DD) Es gibt ein neues kleines Hilfsprogramm zur CARA-Engine mit dem Namen “tapicall.exe“ mit dem man testen kann, ob eine Telefonnummer direkt über die TAPI-Schnittstelle des Computers angesprochen werden kann (insofern ein entsprechender Treiber installiert wurde). Wenn dies der Fall ist, kann man den neuen Applikations-INI-Datei-Schlüssel “TAPIInterfaceAvail=1“ und/oder im Programm im Werkzeugkasten den Schalter “TAPI-Schnittstelle vorhanden“ setzten. Dieser Schalter ist für jede Station separat einstellbar. Im Script stellt die neue globale boolean Variable [TAPI_INTERFACE_AVAIL] diese Information zu Verfügung. Wenn der Schalter TRUE ist, kann man mittels eines Doppelklicks auf ein Telefonnummern-Feld innerhalb eines Eingabedialogs (Maske) einen Anruf zu der angezeigten Nummer starten. 
	
	A new little utility-program with the name “tapicall.exe” for the CARA-engine is available. It allows to verify the possibility of dialing out a number through the TAPI-interface of the computer (if a TAPI-driver is installed). If the test has been executed successfully, the new application-INI-file-key for section [Config] with the name “TAPIInterfaceAvail=1“ may be set, as well as the option in the tool-box “TAPI-Interface available”. This option can be set separately for each station. Inside the script-language the new variable [TAPI_INTERFACE_AVAIL] is delivering this information. If the key is TRUE, a double-click on a mask-field with a telephone-number will directly start to dial out.

24.08.2008	(9.06.05/1005/DD) Alle Veränderungen von SQL-WHERE-Bedingungen innerhalb der CARA-Engine und auch durch den Befehl QUERY_ADD_WHERE werden ab jetzt am ENDE der Where-Bedingung angefügt. Dadurch werden die SQL-Abfragen in der Regel schneller ausgeführt.
	
	All changes of a SQL-where-clause within the CARA-engine and also those done with the command QUEY_ADD_WHERE will add the clause to the end of the where-clause. This will normally speed up the execution of the SQL-statements. 

24.08.2008	(9.06.04/1004/DD) Die CSH-Syntax “STARTING WITH“ funktionierte bei LargeInt-Feldern nicht korrekt. Der Fehler wurde behoben.
	
	The CSH-syntax “STARTING WITH” didn’t work correct with LageInt-fields. This error has been removed.

24.08.2008	(9.06.03/1003/DD) Zwei neue globale string Variablen: [APPLICATION_USER_NAME] und [APPLICATION_MACHINE_NAME].
	
	Two new global string variables: [APPLICATION_USER_NAME] and [APPLICATION_MACHINE_NAME].

24.08.2008	(9.06.02/1002/DD) Neuer Applikations-INI-Datei-Schlüssel für die Sektion [Config]: CheckDatesTimerInterval=60000 (default). Dieser legt die Zeit in ms fest, die vergeht, bis die Termine geprüft werden. Neue globale nummerische Variable, mit der man diesen Wert zur Laufzeit ändern kann [CHECK_DATES_TIMER_INTERVAL].
	
	New applicaltion-INI-file-key for section [Config]: CheckDatesTimerInterval=60000 (default). This defines the time between the checking of the calendar of a user. New gobal numeric variable, that allows to modify this value while runtime [CHECK_DATES_TIMER_INTERVAL].

24.08.2008	(9.06.01/1001/DK) Die Systemfehlermeldungen 301, 302 und 307 werden bei Verwendung des Befehls FILE_DOWNLOAD ab jetzt unterdrückt. Diese Fehler treten auf, wenn eine Datei im Internet nicht gefunden werden kann oder während des Wartens auf den Download ein Timeout auftrat auch, wenn der Timeout aufgrund von Weiterleitungen ausgelöst wurde.
	
	The system-errors 301, 302 and 307 will be suppressed in case of using the command FILE_DOWNLOAD from now on. These errors occurs if a file could not be found in the internet or in case of a timeout while waiting for the download, also, if the timeout is caused by rerouting.

03.06.2008	(9.06.00/1000/DD) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [Config]:
	FastSearchInSetOfNumbers=1 (default). Wenn dieser Wert gesetzt ist und in einer Nummernkreisdefinition das Feld “FirstChars“ (das mit dieser Neuerung ebenfalls neu eingeführt wurde) ein (oder mehrere) Zeichen enthält und in einem Benutzerdialog das zugehörige Belegnummernfeld die (ebenfalls mit dieser Neuerung neu eigeführte) Feldoption “NUMSETxxx“ (wobei “xxx“ der KreisID des Nummernkreises entsprechen muss) angegeben wurde, dann werden im Falle einer Suche mit einer WildCard am Beginn des Suchtextes die “FirstChars“ vor dem ersten WildCard platziert. Da diese Art Suche sehr häufig eingesetzt wird, kann so der SQL-Server stets auf den zum Belegnummernfeld gehörenden Index zurück greifen und dies erhöht die allgemeine Arbeitsgeschwindigkeit erheblich.

	Dieser Schalter kann während der Laufzeit im Werkzeugkasten an- und abgeschaltet werden. Diese Einstellung wird jedoch beim Beenden der Anwendung NICHT gespeichert. Der zugehörige Eintrag im Werkzeugkasten lautet “Schnellsuche in Nummernkreisen“.

	So wird die Nummernkreistabelle erweitert:
	ALTER TABLE nummern ADD FirstChars [SQL_DEFINE_STRING] (41) [SQL_DEFINE_STRING_END];
	UPDATE nummern SET FirstChars = "";
	
	Beispiel: Im Nummernkreis 11 (Fertigungsauftragsnummer) der IDEAL-Anwendung im neuen Feld “FirstChars“ ein “F“ eingeben (wenn dies, wie es meist der Fall ist, auch als Fester-Startwert in der gleichen Nummernkreisdefinition angegeben wurde).
	Dann in dem zugehörigen Feld der Maskendatei “ 250.msk“ die neue Option “NUMSETxxx“ setzten:
	ITEM 2500102, 'STRING', 15.00, 2.00, 18.00, 1.00, 'NUMSET11'
	Wenn nun der Benutzer zum Suchen eines Fertigungsauftrages “*2008*“ eingibt, muss der SQL-Server auf der Festplatte einen temporären Index erstellen. Das kostet Zeit. Mit der neuen Option wird aus dem Suchtext automatisch “F*2008*“ (das “F“ aus dem Feld “FirstChars“ des Nummernkreises 11 wird vorangestellt) – dadurch kann der SQL-Server den passenden Index verwenden und das ganze geht erheblich schneller.

	New key for the application-INI-file, section [config]:
	FastSearchInSetOfNumbers=1 (default) – this key may be changed while runtime, using the toolbox. The related toolbox item is named “Schnellsuche in Nummernkreisen“ (searching fast in sets of numbers). The settings of the toolbox will NOT be saved while the application is terminated.
	
	Needed: extending the table “nummern“ for the definition of sets of numbers:
	ALTER TABLE nummern ADD FirstChars [SQL_DEFINE_STRING] (41) [SQL_DEFINE_STRING_END];
	UPDATE nummern SET FirstChars = "";
	
	This new field has to be introduced to the definition-user-dialog, too. See the documentation “…\examples\Nummernkreise_SetsOfNumbers\” (mask and sql-statement).

	Also available: new option for mask-fields “NUMSETxxx” (where “xxx” is the number of a “KreisID” in a record of the table “nummern”).

	Many searches of the users in fields of sets of numbers are like this “*search-text*”. By starting the search-text with a wildcard, the SQL-server can’t use the related index and must sort the field in memory or (worst case) on disk. This costs a lot of time and power on the server. To avoid this waste of engergie and time this new technique will do the following:
	If the user starts the search-text with a wildcard and FastSearchInSetOfNumbers is TRUE and the field “FirstChars” of the table “numbers” is filled with one or more chars, this chars will be placed in front of the search-text if the related field in the user-dialog-mask has the new option “NUMSETxxx” (where “xxx” is the number of a “KreisID” in a record of the table “nummern”). Then SQL-Server can use the index and everything is running much faster.

03.06.2008	(9.05.27/999/DD) Trotz der Ankündigung in Version 9.05.19/991/DD vom 05.05.2008 lief das Puffern und Zurückgeben der Einstellungen für Mandant, VirtualDelete, SuperUniqueRecordIDs, SetUser4AllUpdates und SetTime4AllUpdates nicht korrekt. Der Fehler ist nun endlich behoben.
	
	Even though version 9.05.19/991/DD from 05.05.2008 should buffer and reset the values for Mandant, VirtualDelete, SuperUniqueRecordIDs, SetUser4AllUpdates and SetTime4AllUpdates properly, there were still errors. These errors have been removed finally.

02.06.2008	(9.05.26/998/DD) Um festzustellen, ob die Tabelle “changes“ in der Anwendung existiert, wurde bisher das folgende Query verwandt: “SELECT count(RecordID) FROM changes“ – das führt jedoch gelegentlich zu hohen Wartezeiten (z.B. bei MySQL mit der Sorage-Engine “InnoDB“), wenn die Tabelle sehr viele Datensätze enthält. Diese Query wurde durch folgendes erstezt, damit die Abfrage schneller ist: “SELECT RecordID FROM changes WHERE RecordID = 0“. Dies setzt voraus, dass in der Tabelle “changes“ AUF JEDEN FALL das 0-Record enthalten sein muss!
	
	To verify the existence of the table “changes“, the following query has been used: “SELECT count(RecordID) FROM changes“ – this courses a lot of time in some cases (e.g. on MySQL with storage engine “InnoDB”), if a big amount of records are in the table. The query has been replaced by this one: “SELECT RecordID FROM changes WHERE RecordID = 0“. This REQUIRES the existence of the 0-Record in the table “changes”!

29.05.2008	(9.05.25/997/DD) Neuer optionaler Parameter für den Befehl LIST_STR_2_LIST:
	LIST_STR_2_LIST [list],[listDest],strDelim,numLines{,num/[LIST_ITEM_ACTUAL]{,boolAddDelimToEndIfMissing}}
	Wenn der Parameter boolAddDelimToEndIfMissing “TRUE” ist, wird hinter dem letzten Element des Quellstrings ein Delimiter angefügt, falls ein solcher Delimiter fehlen sollte, damit kann man auch den letzten „Part“ des Strings auslesen und erhält so auch die letzte Zeile der Zielliste.

	New optional parameter for the command LIST_STR_2_LIST:
	LIST_STR_2_LIST [list],[listDest],strDelim,numLines{,num/[LIST_ITEM_ACTUAL]{,boolAddDelimToEndIfMissing}}
	If the parameter boolAddDelimToEndIfMissing is TRUE, a delimiter will be added behind the last element of the source string, if the delimiter is missing, this allows reading out also the last part of the string and the last line of the destination list will be retrieved also.

29.05.2008	(9.05.24/996/DD) Neuer optionaler Parameter für den Befehl LIST_STR_PART:
	LIST_STR_PART [list],[strRes],numPart,strDelim {,num or [LIST_ITEM_ACTUAL] {, boolAddDelimToEndIfMissing}}
	Wenn der Parameter boolAddDelimToEndIfMissing “TRUE” ist, wird hinter dem letzten Element des Quellstrings ein Delimiter angefügt, falls ein solcher Delimiter fehlen sollte, damit kann man auch den letzten „Part“ des Strings auslesen.

	New optional parameter for the command LIST_STR_PART:
	LIST_STR_PART [list],[strRes],numPart,strDelim {,num or [LIST_ITEM_ACTUAL] {, boolAddDelimToEndIfMissing}}
	If the parameter boolAddDelimToEndIfMissing is TRUE, a delimiter will be added behind the last element of the source string, if the delimiter is missing, this allows reading out also the last part of the string.

29.05.2008	(9.05.23/995/DD) Neuer optionaler Parameter für den Befehl LIST_2_LIST_STR:
	LIST_2_LIST_STR [listSource],[listDest],strDelim, num o. [LIST_ITEM_UNDEFINED] {, boolDoNotAddDelim2End}
	Wenn der Parameter boolDoNotAddDelim2End “TRUE” ist, wird hinter dem letzten Element des Zielstrings kein Delimiter angefügt.

	New optional parameter for the command LIST_2_LIST_STR:
	LIST_2_LIST_STR [listSource],[listDest],strDelim, num or [LIST_ITEM_UNDEFINED] {, boolDoNotAddDelim2End}
	If the parameter boolDoNotAddDelim2End is TRUE, no delimiter will be added behind the last element of the destination string.

28.05.2008	(9.05.22/994/HB) Neuer Befehl: CALENDAR [aDate]: öffenet den Kalender und gibt das Datum modifiziert zurück, wenn der Benutzer nicht abgebrochen hat.

	New command CALENDAR [aDate]: opens the calendar and returns the modified date-variable, if the user doesn’t cancel.  

08.05.2008	(9.05.21/993/DD) Das Fenster zur Anzeige der RecordID, UpdateTime und DeleteID wird ab jetzt immer ganz oben links auf dem Bildschirm eingeblendet.

	The window for displaying the RecordID, UpdateTime and DeleteID of a data-record, will be placed to the most upper left position on the screen from now on.  

06.05.2008	(9.05.20/992/DD) Die Ausgabeform des Befehls SHOW_VAR wurde geändert, außerdem kann man jetzt auch SHOW_VAR [List], SHOW_VAR [Query] oder SHOW_VAR [Maks] ausführen und bekommt dann die Liste der Untervariablen bzw. den Inhalt angezeigt.

	The output of the command SHOW_VAR has been modified and additionally it is possible to use SHOW_VAR [List], SHOW_VAR [Query] or SHOW_VAR [Masks], this will show the sub-variables or the content of the variables.  

05.05.2008	(9.05.19/991/DD) Das Puffern der globalen Einstellungen von Mandant, VirtualDelete, SuperUniqueRecordIDs, SetUser4AllUpdates und SetTime4AllUpdates vor dem Öffnen des freien SQL-Interface wird ab jetzt nach dem Schließen des Dialogs korrekt zurückgegeben.

	The buffering of the global settings of Mandant, VirtualDelete, SuperUniqueRecordIDs, SetUser4AllUpdates and SetTime4AllUpdates before opening the free SQL-interface will be reseted correctly after closing the dialog.

05.05.2008	(9.05.18/990/HB) Beim Doppelklick in das Eingabefeld eines GET_TIME-Dialoges wird ab jetzt genau wie in den Dialogmasken, die Digitaluhr gezeigt.

	With a double-click into the entry-field of a GET_TIME-dialog the digital-watch will be popped up, like the behaviour in the dialog-masks.

05.05.2008	(9.05.17/989/HB) Beim Doppelklick in das Eingabefeld eines GET_DATE-Dialoges wird ab jetzt genau wie in den Dialogmasken, der Kalender gezeigt.

	With a double-click into the entry-field of a GET_DATE-dialog the calendar will be popped up, like the behaviour in the dialog-masks.

05.05.2008	(9.05.16/988/DD) Neuer Befehl
	LIST_MOVE [list],numIdxSource,[numRes],Opt{,boolBefore{,strCompVal{,strOp{,numPart,strDelim}}}}
	Mit diesem Befehl können Listenzeilen verschoben werden. 
	numIdxSource	gibt den Index der Zeile an, die verschoben werden soll
	[numRes]		gibt Auskunft darüber ob die Zeile verschoben wurde, es kann folgende 
					Werte annehmen:
					[LM_RES_NOTHING]	Die Zeile wurde nicht verschoben
					[LM_RES_UP]	Die Zeile wurde Richtung Listenanfang
						verschoben.
					[LM_RES_DOWN]	Die Zeile wurde Richtung Listenende 
						verschoben.	
	Opt				gibt an, wohin verschoben werden soll:
					[LM_TO_TOP]	An den Listenanfang
					[LM_TO_END]	An das Listenende
					[LM_FIND_POS]	Durch die Angabe weiterer Parameter wird
						ein Wert gesucht wohin die Zeile geschoben
						werden soll.
					Ein Wert >=0 	Eine exakte Angabe der Zeile, in die 
						Verschoben werden soll. Sollte die Angabe
						Zu groß sein, wird an das Listenende 
						Verschoben.
	boolBefore		gibt an, ob vor die Zielzeile verschoben oder in die Zielzeile (Standard) 
					verschoben wird. Sollte der Wert < 1 werden wird an den Listenanfang 
					verschoben.

	Wenn Opt = [LM_FIND_POS] ist, kann man verlangen, dass die Zeile so verschoben wird, dass sie einer Bedingung entspricht, dies geschieht mittels der folgenden Parameter:
	strCompVal		der Wert, der gesucht werden soll. Wenn dieser Wert leer ist, wird der 
					entsprechende Wert aus der Zeile entnommen, die verschoben werden soll. 
	strOpt				Vergleichsoperator ‘=‘, ‘>=‘, ‘<=‘, ‘<>‘, ‘>‘, ‘<‘, ‘>>‘ (like) oder ‘<<‘ (not like).
	numPart		Wenn dieser Wert angegeben wird, wird nicht der gesamte String 
					verglichen, sondern der hier angegebene Teil der durch strDelim getrennt 
					wird.
	strDelim			Ist der Seperator, mit dem die Teilstrings unterschieden werden können.
	Siehe Beispieldatei “ListMove.csh“

	New command:
	LIST_MOVE [list],numIdxSource,[numRes],Opt{,boolBefore{,strCompVal{,strOp{,numPart,strDelim}}}}
	With this command list-lines can be moved. 
	numIdxSource	Index oft he line that shoould be moved
	[numRes]		returns how the move has been done:								[LM_RES_NOTHING]	Line was not moved
					[LM_RES_UP]	Line was moved to the start of the list
					[LM_RES_DOWN]	Line was moved tot he end oft he list 
	Opt				defines where the line should be moved to:
					[LM_TO_TOP]	To the start of the list
					[LM_TO_END]	To the end of the list
					[LM_FIND_POS]	By some other parameters the destination line 
						can be searched.
					Ein Wert >=0 	The exact index of a line, where the move 
						should go to. If this value is too big, the line 
						will be moved to the end of the list.
	boolBefore		defines if the line should be placed before the destination line or at the 
					destination-line (default). If the destination-index will be < 1, the line will be 
					moved to the start of the list.
	If Opt = [LM_FIND_POS] the line can be moved by matching conditions, given by the following parameters: 
	strCompVal		The value that should be searched, if this value is empty, the search-value 
					will be taken out of the source-line, that has to be moved.
	strOpt				compare-operator ‘=‘, ‘>=‘, ‘<=‘, ‘<>‘, ‘>‘, ‘<‘, ‘>>‘ (like) or ‘<<‘ (not like).
	numPart		If this value is given, only a part of the line will be compared instead of the 
					complete line.
	strDelim			Seperator used to get the numPart of the line.
	See examplefile “ListMove.csh”

05.05.2008	(9.05.15/987/DD) Erweiterung des Befehls LIST_SORT um zwei neue optionale Parameter:
	LIST_SORT [list] {, numPart, strDelim}
	Wenn numPart angegeben ist, wird nach dem numPart-en Teilstring, der durch den strDelim getrennt wird, aufsteigend sortiert.

	Extension of the command LIST_SORT by two new optional parameter: 
	LIST_SORT [list] {, numPart, strDelim}
	If numPart ist given, the list will be sorted by the part-string of the list-lines, that are separated by strDelim.

01.05.2008	(9.05.14/986/DD) Erweiterung der Möglichkeiten für die Option “FONTCOLOR“ in den ITEM-Zeilen der Masken-Definitionsdateien: neben den Standardfarben können ab jetzt auch frei definierte Farbwerte hexadezimal (wie bei HTML) angegeben werden; z.B. FONTCOLOR $0575BA.

	Extension for the option “FONTCOLOR” in ITEM-lines of mask-definition-files: additional to the standard-colours HTML-colors can be free defined in hex-format; e.g. FONTCOLOR $0575BA.

24.04.2008	(9.05.13/985/DD) Die integrierte Bibliothek “MiTeC System Information Component Suite“ wurde von der Version 10.8.1 auf die Version 10.8.2 umgestellt.

	The integrated library “MiTeC System Information Component Suite“ has been updated from version 10.8.1 to version 10.8.2.

23.04.2008	(9.05.12/984/DD) Die Library MySQLDAC_Full wurde auf den Stand 2.6.2 gebracht.
	
	The library MySQLDAC_Full has been brought to V. 2.6.2.

15.04.2008	(9.05.11/983/GH) Neue Feldoption für Fließkommazahlen-Felder: In der Maskendefinitionsdatei kann ab jetzt in der ITEM-Zeile des Feldes in den Optionen (7. Parameter) das Wort “CALWEEK“ (Kalenderwochenfeld) verwendet werden. Wenn diese Option gesetzt wird und keine Nachkommastellen für die Kalenderwoche eingegeben wurden, wird das aktuelle Jahr automatisch eingefügt.

	New field-option for floating-point-values in the ITEM-line of a mask-definition-file (parameter 7). The word “CALWEEK” (calendar-week-field) indicates, that if no value for the year is given, the digits of the actual year will automatically be inserted into the field.

10.04.2008	(9.05.10/982/VD) Script-Variablen die in Masken-Definitions-Dateien für die Vorgabewerte von STRING- und LIST_TEXT-Feldern verwandt wurden, wurden entweder nicht interpretiert oder nur in Großbuchstaben zurückgegeben. Der Fehler ist behoben.

	Script-variables in mask-definition-files used as default-values of STRING- or LIST_TEXT-fields were not interpreted or returned uppercase. This error has been removed.

02.04.2008	(9.05.09/981/JB) Neuer Befehl:
	MEMO_CURSOR_POS [mask], 'strMemoVarName', numOpt, [numLine], [numColumn]
	Dieser Befehl erlaubt es die Cursor-Position in einem Memo-Feld (mit dem Namen 'strMemoVarName') der [mask] zu setzten und auch auszulesen. Die erste Zeile des Textes hat die Nummer 1. Das erste Zeichen einer Zeile hat die Nummer 1.
	Folgende Werte kann numOpt annehmen:
	[MCP_GET_ACT]		Liest die aktuelle Cursorposition in die Variablen [numLine] u. [numColumn]
	[MCP_SET_ACT]		Setzt den Cursor an die Position, die durch die Variablen [numLine] und  
				[numColumn] bestimmt wird.
	[MCP_SET_MAX]	Setzt den Cursor an das Ende des Textes.

	New command:
	MEMO_CURSOR_POS [mask], 'strMemoVarName', numOpt, [numLine], [numColumn]
	This command allows to set or get the cursor-position of a memo field (with the name 'strMemoVarName') of the [mask]. The first line of a text has the number 1. The first char of a line has the number 1.
	The following values are possible for numOpt:
	[MCP_GET_ACT]		Reads out the cursor-position to the variables [numLine] und [numColumn]
	[MCP_SET_ACT]		Sets the cursor-position, using the values of the variables [numLine] and  
				[numColumn].
	[MCP_SET_MAX]	Sets the cursor to the end of the text.

27.03.2008	(9.05.08/980/DD) Im freien SQL-Interface können ab jetzt VirtualDelete und SuperUniqueRecordIDs an und abgeschaltet werden. Beim Öffnen des Dialogs werden diese Schlüssel automatisch abgeschaltet und beim Schließen wieder auf den davor gültigen Zustand zurück geschaltet.

	The free SQL-Interface has two more icons for switching VirtualDelete and SuperUniqueRecordIDs on and off. On opening the dialog this keys will be switched off automatically and on closing the keys will be reset to the former state.

14.03.2008	(9.05.07/979/DK) Das Focusieren nicht aktiver Fensterelemente wird ab jetzt in einer versteckten Exception behandelt und nicht mehr an den User weitergegeben.

	Focusing not active Dialogelements will be handled in a hidden exception from now on.

19.02.2008	(9.05.06/978/DD) Zwei neue Masken-Hooks:
	[mask!MASK_HOOK_PRE_RESTORE] und [mask!MASK_HOOK_POST_RESTORE]
	auch für die in den Masken enthaltenen Grids:
	[mask!MASK_HOOK_GRID_PRE_RESTORE] und [mask!MASK_HOOK_GRID_POST_RESTORE]
	und natürlich auch einen für die Browser:
	[browser!BROWSER_HOOK_RESTORE]
	Wenn VirtualDelete eingeschaltet ist und die gelöschten Daten angezeigt werden sollen, wird automatisch der Delete-Knopf zum Restore-Knopf. Wenn der User diesen Knopf dann betätigt, wird sofort der zur Engine gehörende automatische Restore der Daten angestoßen – es sei denn, die o.g. Hooks wurden definiert. Die GRID-Hooks und der Browser-Hook sind natürlich nur nötig, wenn dort auch explizit DELETE erlaubt wurde. 
	ACHTUNG: Wenn ein Delete-Hook definiert wurde, um die Engine davon abzuhalten selber das Delete durchzuführen, dann ist es hochgradig ratsam auch ein eigenes Restore zu definieren!!!!

	Two new mask-hooks:
	[mask!MASK_HOOK_PRE_RESTORE] and [mask!MASK_HOOK_POST_RESTORE]
	also fort he grids within the masks:
	[mask!MASK_HOOK_GRID_PRE_RESTORE] and [mask!MASK_HOOK_GRID_POST_RESTORE]
	and one for the browsers of course:
	[browser!BROWSER_HOOK_RESTORE]
	If VirtualDelete is switched on and showing deleted data is switched on too, the delete-button automatically is showed as the restore-button. If the user clicks this button the internal restore routine will be started automatically – except one of the hooks named above has been defined. The grid-hooks and the browser-hook are only needed, if delete has explicit been allowed. 
	ATTENTION: If a delete-hook has been defined to avoid the engines own deletion-method, then it’s absolutely advisable to also define an own restore-hook!!!

19.02.2008	(9.05.05/977/KPr) Das Anzeigen gelöschter Daten ist ab jetzt nur noch möglich, wenn der User mindestens den Level 10000 hat (wie es beim „super“-User z.B. der Fall ist).

	Showing deleted data is only possible for users with user-level 10000 or higher from now on (like it is for the “super”-user e.g.).

15.02.2008	(9.05.04/976/DD) Das kurzfristige Anzeigen des Button-Panels während eines Mask-Hooks, obwohl der Button-Panel ausgeblendet sein sollte, wurde abgestellt.

	Setting the button-panel visible for a very short time, while a mask-hook, even though the panel should be invisible, has been suppressed.

15.02.2008	(9.05.03/976/JB) Mit der Tastenkombination ALT+F11 kann man ab jetzt einen Eingabedialog auf Vollbild stellen und auch wieder zurück stellen. Der Befehl MASK_UPDATE wurde um einen dritten optionalen Parameter erweitert: 
	MASK_UPDATE [mask] {, boolUnmodify {, boolProtectAll {, numFullScreen}}}
	Wenn der Parameter numFullScreen 0 ist, wird die Maske so belassen, wie sie ist; mit dem Wert 1 wird sie auf Vollbild und mit dem Wert 2 auf normale Darstellung eingerichtet.
	Neue Option für Masken FULL_SCREEN, wenn diese Option gesetzt ist, wird die Maske im Vollbild-Modus geöffnet und kann auch nicht mit ALT+F11 umgeschaltet werden. Neue globale, numerische Konstante [MASK_FLAG_FULL_SCREEN], mit der die neue Option in [mask!MASK_FLAG] zur Laufzeit umgeschaltet werden kann.

	Pressing the keys ALT+F11 toggles the full-screen-mode of dialog-masks. Additionally the command MASK_UPDATE has a third optional parameter:
	MASK_UPDATE [mask] {, boolUnmodify {, boolProtectAll {, numFullScreen}}}
	If the parameter numFullScreen is set to 0 the dialog-mask will stay unchanged, 1 will switch to full-screen-mode and 2 will switch to normal-mode. 
	New mask-option FULL_SCREEN: if this option is set, the mask will be opened in full-screen-mode an can’t be toggled with ALT+F11. New numeric global constant [MASK_FLAG_FILL_SCREEN], which can be used to toggle this new option within [mask!MASK_FLAG] while runtime.

12.02.2008	(9.05.02/975/DD) VirtualDelete ist jetzt auch für die Schnellsuche in Browsern und Grids geeignet.

	VirtualDelete is now also for the fast-search in browsers and grids possible.

12.02.2008	(9.05.01/974/DD) Neue Variable vom Typ VAR_STR [SQL_COLON_REPLACE]: diese Variable gibt den Inhalt des Applikations-INI-Datei-Schlüssels “ColonReplace“ in der Sektion [SQL] wieder und kann ebenfalls zur Laufzeit verändert werden.

	New variable of type VAR_STR [SQL_COLON_REPLACE]: this variable holds the value oft he application-INI-file-key “ColonReplace” of section [SQL] and can be modified while runtime.

04.02.2008	(9.05.00/973/GH+DD) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [Config: VirtualDelete= 
	Wenn VirtualDelete =1 gesetzt ist, sollte vorher das Script “VirtualDelete.csh“ ausgeführt worden sein, damit in allen “CARA-Tabellen“ die Felder VirtualDelID und VirtualDelUserIdx angefügt werden. Anschließend werden alle DELETE–Statements der Engine in UPDATE–Statements umgewandelt und alle SELECT-Statements so umgewandelt, dass sie automatisch nur noch Datensätze berücksichtigen, die als „nicht gelöscht“ gekennzeichnet sind. Dieser Schlüssel kann während der Laufzeit mit der neuen boolean Variable [VIRTUAL_DELETE] verändert werden. Außerdem kann mit der neuen boolean Variable [VIRTUAL_DELETE_SHOW], die auch im Werkzeugkasten (pro Station individuell) ein- und ausgeschaltet werden kann, dafür gesorgt werden, dass man die gelöschten Datensätze “sehen“ kann. Folgende Systemtabellen sind vom virtuellen Löschen ausgenommen: "lockrecs", "rightmod", "rightpos", "slctlsth", "slctlsti", "prnlisth", "prnlisti" und "suids". Wobei ein Löschversuch auf der Tabelle "suids" in jedem Fall zu einem Fehler führt. Aus der Tabelle "suids" wird nicht gelöscht. Wenn [VIRTUAL_DELETE] und [VIRTUAL_DELETE_SHOW] gleichzeitig wahr sind, kann der User keine Daten über eines der Userinterfaces löschen oder speichern, er befindet sich dann im "gelöschte Daten Sichtungsmodus". Ein angestoßenes Script wird in diesem Falle jedoch an entsprechenden Aktionen NICHT gehindert. 
	Ein weitere neuer Schlüssel für die Applikations-INI-Datei, Sektion [Config] erweitert die Funktionalität der Engine für diese neue Option: VirtualDeleteUseDef=. Falls der Schlüssel VirtualDelete=1 ist bzw. [VIRTUAL_DELETE]=TRUE ist, kann mit diesem Schlüssel verlangt werden, dass das virtuelle Löschen nur auf die Tabellen angewandt werden soll, für die in der Tabelle "tablefld" das boolean Feld "VirtualDelete" auf TRUE gesetzt wurde.

	New key for the application-INI-file, section [Config]: VirtualDelete=. 
	If the key is set VirtualDelete=1, previous the script “VirtualDelete.csh” should have been executed, it will add the new system fields “VirtualDelID” and “VirtualDelUserIdx” to all tables. Afterwards all DELETE-statements of the engine will be changed to UPDATE-statements and all SELECT-statements will be transformed, so, that only records will be shown, which are not marked as “deleted”. This key can be changed while runtime by the new boolean variable [VIRTUAL_DELETE]. Additionally the “deleted records” can be “shown” by switching the new boolean variable [VIRTUAL_DELETE_SHOW], this variable can also be changed by the user in the tool-box (for each station separately). The following system-tables are excluded by the engine: "lockrecs", "rightmod", "rightpos", "slctlsth", "slctlsti", "prnlisth", "prnlisti" and "suids". Any attempt to delete a record from the table “suids” will fail. From the table “suids” a deletetion is not possible. If [VIRTUAL_DELETE] and [VIRTUAL_DELETE_SHOW] are both true, the user can not delete or save any data through the user-interface: the user than is in the mode “view deleted records”. A script will STILL be able to do savings or deletions.
	Another new key for the application-INI-file, section [Config], extends the possibilities for this new option: VirtualDeleteUseDef=. If the key VirtualDelete=1 or the variable [VIRTUAL_DELETE]=TRUE, this key can be used to force the engine only to use virtual delete upon tables, that are marked “VirtualDelete” in the “tablefld” interface.

02.02.2008	(9.04.11/972/JB) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [Config:
	SuperUniqueRecordIDScriptName= Wenn SuperUniqueRecordID=1 ist, kann man hier einen Scriptnamen angeben. Dann wird die Prüfung des SuperUniqueRecordID bei einem Insert in die Datenbank an das hier angegebene Script übertragen. Die Stringvariable [SQL_INSERT_LAST_TABLE] hält beim Aufruf dieses Scriptes den Namen der Tabelle, für die das Insert gemacht werden soll und die float Variable [SQL_INSERT_LAST_RECID] die RecordID des Datensatzes. Beide Variablen können zur Laufzeit verändert werden. Sollte die Prüfung fehlschlagen, MUSS die Variable [SQL_INSERT_LAST_RECID] = 0 gesetzt werden. So "weiß" die Engine, dass die Prüfung fehlschlug. Dieses Script kann man z.B. nutzen, wenn man eine einzige "suids" Tabelle in verschiedenen Niederlassungen auf einem Zentralserver verwenden möchte. Dann kann man in dem Script auf die Fremd-Datenbank mit der "SuperSuperUniqueRecordID" zugreifen. Siehe Beispielscript "suidscheck.csh".

	New key for the application-INI-file, section [Config]: SuperUniqueRecordIDScriptName=. If the key is set SuperUniqueRecordID=1 a script-name can be given here. The checking of the “suids” table will then be transferred to this script. The string-variable [SQL_INSERT_LAST_TABLE] then holds the name of the table into which the insert should be done and the float variable [SQL_INSERT_LAST_RECID] holds the recorded. If the checking fails, the variable [SQL_INSERT_LAST_RECID] must be set to 0. So the eingine “knows” that the checking failed. This script can be used e.g. if one likes to have a single “suids” table between some branches with a central server. Then this script can check opon a foreign database to have a "SuperSuperUniqueRecordID". See script-example “suidscheck.csh”.

02.02.2008	(9.04.10/971/VH) Erweiterung der Tabelle “applog“ um einige Felder. Ab jetzt werden folgende Informationen gespeichert (wenn APPLICATION_ID > 0 ist):
	Zeitpunkt des Ein- und Ausloggens der Station	RecordID
	User-Idx						IDUser
	Level des Users					LevelUser
	der aktuell gewählte Mandant			Mandant (als Nummer, nicht als binary Flag)
	die StationsID					StationID
	MitarbeiterID					UserID
	das Stationskürzel				StationIDShort
	das UserSID-Kürzel				UserSIDShort
	die CARA-Version				CaraVersion
	der Applikationsname				AppName
	die lizensierte Version				LicensedVersion

	Extend of the table “applog” by some fields. The following information will be saved from now on (if APPLICATION_ID > 0):
	Time and date of log in or log out of the station	RecordID
	User-Idx						IDUser
	Level of the users					LevelUser
	the acutual mandant				Mandant (as a number, not as a binary flag)
	StationsID					StationID
	UserID						UserID
	Station short					StationIDShort
	UserSID short					UserSIDShort
	CARA version					CaraVersion
	Applicationname					AppName
	the licensed version				LicensedVersion

02.02.2008	(9.04.09/970/JB) Neue Variable vom Typ VAR_FLOAT [APPLICATION_ID]: diese Variable gibt den Inhalt des Applikations-INI-Datei-Schlüssels “ApplicationID“ (Änderung 8.10.01/775/DD vom 13.06.2006) wieder und kann ebenfalls zur Laufzeit verändert werden.

	New variable of type VAR_FLOAT [APPLICATION_ID]: this variable holds the value oft he application-INI-file-key “ApplicationID” (change 8.10.01/775/DD from 13.06.2006) and can be modified while runtime.

02.02.2008	(9.04.08/969/JB) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [Config]:
	SuperUniqueRecordID=0 (Default) oder 1. Wenn dieser Schlüssel gesetzt ist, muss die Tabelle “suids“ existieren und das Script “suids.csh“ sollte ausgeführt worden sein. Danach wird die CARA-Engine dafür sorgen, dass neuen RecordIDs aller Tabellen zusammen unique sind.
	Neue Variable vom Typ VAR_BOOL [SUPER_UNIQUE_RECORDID], die es erlaubt, die Einstellung dieses Applikations-INI-Datei-Schlüssels während der Laufzeit zu verändern.

	New key for the application-INI-file, section [Config]: SuperUniqueRecordID=0 (Default) or 1.
	If this key is set, the table “suids” must exist and the script “suids.csh” should have been executed. Afterwards the CARA-engine will provide that all new RecordIDs of the application will be unique over all tables.
	New variable of type VAR_BOOL [SUPER_UNIQUE_RECORDID] that allows to modify the setting of this application-INI-file-key while runtime.

02.02.2008	(9.04.07/968/JB) Neuer Befehl GET_TABLE_LIST [listVar].
	Gibt in der VAR_LIST [listVar] die Liste aller Tabellennamen in der korrekten Groß- und Kleinschreibung einer Applikation zurück. Die Liste wird zuvor NICHT geleert. Die Tabellennamen werden einfach an die Liste angehängt.
	
	New command GET_TABLE_LIST [listVar].
	Returns in VAR_LIST [listVar] the list of all table-names of an application in correct case-sensitive form. The list will not be cleared. The table-names are simply added to the list.

22.01.2008	(9.04.06/967/DD) Änderung, die nur bei Verwendung des Betriebssystems WINDOWS VISTA wirkt: Der Befehl CHOOSE_FILE wurde, so geändert, dass der vorgegebene Dateiname für das Öffnen einer Datei leer gemacht wird, bevor der Dialog geöffnet wird. Dadurch werden die Dateien des gesuchten Typs erst sichtbar.
	
	Update just working with OS Windows VISTA: the command CHOOSE_FILE has been changed for opening a file: the filename will be made empty before the dialog is opened, therefore the files of the searched type are visible.

22.01.2008	(9.04.05/966/DD) Neue globale Variable vom Typ VAR_NUM SYSTEM_VERSION sie enthält die Version des Betriebssystems z.B. WIN_VISTA. 
	
	New global variable, type VAR_NUM SYSTEM_VERSION, is holding the version of the operatins-system, e.g. WIN_VISTA.

16.01.2008	(9.04.04/965/DD) Das Interpretieren von Boolean-Variablen mit eingekapselten Variablen (Var in Var) schlug fehl. Der Fehler wurde behoben. Aufgefallen ist es bei dem Beispiel [SQ!Art[ActIdx]FF] – obwohl alles korrekt war, führte dies zu dem Fehler “unbekannte Variable SQ!Art[ActIdx]FF“… (Wie ein solcher Fehler so lange unerkannt bleiben konnte, ist mir echt ein Rätsel!)
	
	Interpreting a boolean variable with an inherited variable (var in var) failed. This error has been removed. The error occurred with this example [SQ!Art[ActIdx]FF] – even though everything was correct, the error “unknown variable SQ!Art[ActIdx]FF” was fired… (I am really wondering how an error like this hasn’t been investigated for such a long time!) 

20.12.2007	(9.04.03/964/DD) Auf der Suche nach dem Fehler “ein deaktiviertes Feld kann den Focus nicht erhalten“, wurde nun das Fokusieren des aktuellen Feldes beim Neuzeichnen der Maske abgeschaltet.
	
	Searching the error “a deactivated field can not get the focus“, setting the focus to the actual field, while painting the mask has been disabled.

20.12.2007	(9.04.02/963/DD) Der Katalog für die Interpretation der phonetische Suche kann ab jetzt in der Applikations-INI-Datei hinterlegt werden.  Die Sektion [Phonem] kann in der Datei INI-File-Keys.txt eingesehen werden.
	
	The catalog for the interpretation of the phonetic search can be placed inside the application-INI-file from now on. The section [Phonem] can be viewed in the file INI-File-Keys.txt.

14.12.2007	(9.04.01/962/DD) Das Speichern aus einer Eingabemaske mit phonetischer Suche schlug fehl: der Fehler wurde behoben. 
	
	Inserting data from out of an input-mask with phonetic-search failed: this error has been removed.

11.12.2007	(9.04.00/961/DD) Die phonetische Suche wurde implementiert. 
	“Phonetische Suche“ ist die Möglichkeit, ähnlich klingende Worte unabhängig von deren Schreibweise finden zu können. Wenn man z.B. nach dem Namen “Haynrich“ sucht, kann man ihn auch finden, wenn man folgende Suchbegriffe verwendet: “Heinrich“, “Hainrych“, “Haynrich“, “Heynrych“ etc…
	Um phonetische Suche in einer Maske ausführen zu können, muss zu jedem Feld indem auf diese Weise gesucht werden können soll, ein Pendant existieren, indem der phonetische Kürzel gespeichert wird. Wenn also z.B. in dem Feld“Suchbegriff“ der Tabelle “adressen“ phonetisch gesucht werden können soll, muss auch ein Feld mit genau dem Namen “SuchbegriffPhntc“ existieren. Die Engine hängt einfach das Kürzel “Phntc“ an den Feldnamen und erwartet (ohne Überprüfung), dass ein Feld mit dem Namen existiert. Wenn ein solches Feld nicht existiert, wird beim Suchen in der Maske ein Fehler auftreten.
	Um ein Feld für die phonetische Suche zu kennzeichnen, wird in der Maskendefinitionsdatei in der ITEM-Zeile des Feldes in den Optionen (7. Parameter) das Wort “PHONETIC“ eingebaut. Wenn in einer Maske so ein Feld gefunden wird, wird in der Statuszeile der Maske ein “P“ in einem kleinen Statussegment angezeigt. Dies zeigt an, dass phonetisch gesucht wird. Mit der Tastenkombination “ALT+F7“ kann dies an- und abgestellt werden. Im Werkzeugkasten der Anwendung kann man einstellen, ob die phonetische Suche beim Öffnen einer (solchen) Maske automatisch an- oder abgestellt sein soll. Dies wird auch in der Stations-INI-Datei individuell abgelegt.
	Mit dieser Änderung ist auch eine neue Berechnungsmethode für Strings verfügbar:
	CALC [Str1] AS PHONETIC([Str1]) gibt die phonetische Schreibweise eines Strings aus.
	In dem Beispielscript “SetAdressenPhonetic.csh“ kann man sehen, wie z.B. die Adressen des IDEAL-Programms auf phonetische Suche umgestellt werden können.
	Die phonetische Suche kann mit folgenden Suchmethoden der Engine verwendet werden: 
	Strg+F, +-Suche, Volltextsuche.
	Wenn man z.B. die Adressen der Anwendung IDEAL auf phonetische Suche umstellt, muss man natürlich ALLE Masken gleichzeitig umstellen, denn bei jedem Speichervorgang werden auch die phonetic-Felder neu erzeugt und gespeichert – was ansonsten unterbleiben würde.

	The phonetic search has been implemented. 
	“Phonetic search” is the possibility to find words that sounds similar but are written different. E.g. if the name “Meyer” should be searched, it is also possible to use the following match-codes: “Mayer”, “Mayr”, “Maier”, “Mair”, “Meier” etc…   
	To have phonetic search in a mask, each field that should be used for it, must have a pendant with the same name, ending with “Phntc“. E.g. if the field “matchcode” should be used for phonetic search, the field “matchcodePhntc” must also exist in the data-table. If the field does not exist, the engine will cause an error, because no error-checking will be done on this.
	To make a field to a phonetic search field, the word PHONETIC must be added to the 7th parameter of the ITEM-line in the mask-definition-file. If one or more fields of this type can be found in a mask-definition, a small status-bar-segment will be displayed, containing a “P” to signalize, that the phonetic search is working. This can be switched on and off by pressing the key “CTRL+F7”. Also a presetting for this kind of masks can be done in the tool-box. The setting will also be stored individually in the station-INI-file.
	With this change also a new calculation-method for strings is available:
	CALC [Str1] AS PHONETIC([Str1]) returns the phonetic form of a string.
	The example-script “SetAdressenPhonetic.csh“ shows how the address-table of the IDEAL-program could be updated to phonetic search.
	The phonetic search can be used with the following search-methods: ctrl+F, +-search, full-text-search
	If the addresses of the IDEAL-program have been updated to phonetic search, all masks must be changed at the same time, because all inserts and updates from out of the mask will update the phonetic fields also – this should not be missed.

04.12.2007	(9.03.40/960/DD) Nach der Änderung 9.03.31/951/DD vom 31.10.2007 wurde der Fokus des eines Feldes z.B. im SHOW_HOOK gesetzt – bevor die Maske sichtbar war. Dies führte zu dem Fehler “…ein deaktiviertes oder verstecktes Feld kann nicht den Focus erhalten…“. Der Fehler wurde behoben.

	Since change 9.03.31/951/DD from 31.10.2007 the focus of a field has been set e.g. in the SHOW_HOOK – before the mask was visible. This fired the error “…a deactivated or hidden field could not be focused…”. This error has been removed.

28.11.2007	(9.03.39/959/DD) Im Notizmanager wird ab jetzt die Zeilen- und Spaltennummer der aktuellen Eingabeposition in der Statuszeile angezeigt.

	The line- and column-number of the cursor-position in the note-manager will be displayed in the status-bar from now on.

11.11.2007	(9.03.38/958/DD) An die Tabelle DocMgrH wurde ein neues Feld angefügt (FolderInfo, VAR_STR). Das Feld wird beim Start der neuen Engine automatisch in die Datenbank eingefügt.

	New field for the table DocMgrH (FolderInfo, VAR_STR) it will automatically be inserted with the start of the new engine.

10.11.2007	(9.03.37/957/DD) An die Tabelle DocMgrI wurde ein neues Feld angefügt (TakeNotice, VAR_BOOL). Das Feld wird beim Start der neuen Engine automatisch in die Datenbank eingefügt.

	New field for the table DocMgrI (TakeNotice, VAR_BOOL) it will automatically be inserted with the start of the new engine.

09.11.2007	(9.03.36/956/DD) Leider habe ich die Engine gerade an alle Entwickler versendet und noch einen Bug gefunden, der sich beim Beheben des letzten Fehlers eingeschlichen hat. Im MASK_BLOCK wurden manche MASK_COMMANDS nicht mehr ausgeführt. Dies ist jetzt wieder möglich.

	Unfortunatly I just spread the engine to all developers. But a bug made ist way in, on removing the privious mentioned bug. While MASK_BLOCK some MASK_COMMANDS couldn’t be executed anymore. This is possible again.

09.11.2007	(9.03.35/955/DD) Beim Befehl MASK_BLOCK konnte man per Tastatur noch jeweils genau das nächste Feld noch editieren und darin die Funktionstasten nutzen. Dieser Fehler ist behoben.

	After the command MASK_BLOCK the user could always edit the very next field and also use the function-keys. This Error has been removed.

08.11.2007	(9.03.34/954/DD) Das Auswählen der Mandanten-Einstellungen über die assoziierte ID schlug fehl, wenn eine Mandaten-Adress-ID in der INI-Datei mit mehreren Mandanten verlinkt wurde. Von nun an wird zunächst versucht die ID beim aktuellen Mandanten zu finden, wenn dies nicht klappt, wird die ID bei 1 beginnend gesucht und beim ersten Treffer wird der dazugehörige Mandant aktiviert.

	Selecting the mandant-setting by using the associated ID was wrong, if a mandant-address-ID had been linked to more than one mandant in the INI-file. From now on it will be tried to find the related ID in the actual chosen mandant, if this does not match, the ID will be searched in the mandant list, starting by 1 and the first match will activate the related mandant.

06.11.2007	(9.03.33/953/DD) Globale, anwendungsübergreifende Module können ab jetzt in jeder Maske aufgerufen werden, wenn der neue INI-Datei-Schlüssel, der Sektion [Config] GlobalIconScript= mit einem Scriptnamen gefüllt wird. Man kann das globale Icon jedoch auch ausblenden, in dem man in der Masken-Kopf-Zeile das neue Schlüsselwort GLOBAL verwendet. Durch klicken des Icons wird das in der INI-Datei angegebene Script ausgeführt. Als Parameter werden folgende Werte übergeben:
	RECORD_ID1	Masken-Record-ID
	RECORD_ID2	Masken-Record-Flag
	PAR_STR3	Scriptname, aus welchem heraus das Globalscript aufgerufen wird
	PAR_STR4	Tabellenname, der für die Daten der Maske verwendet wird
	PAR_STR5	XReferenz, der für die Tabelle der Maske verwendet wird
	PAR_STR6	Modulpfad aus dem heraus das Maskenscript aufgerufen wurde
	PAR_STR7	Variablenname der Maske in ihrem Script

	From now on it is possible to have global, application crossing modules that can be called from out of any mask, if the new INI-file-key for section [Config] GlobalIconScript= has been filled with a script-name. The “global icon” can explicit be hidden by using the new keyword “GLOBAL” in the mask-header-line. By clicking the global icon the given script will be executed. The following parameter will be passed to the script:
	RECORD_ID1	Mask-Record-ID
	RECORD_ID2	Mask-Record-Flag
	PAR_STR3	Script-name from which the global script has been called
	PAR_STR4	Table-name that is used for the data of the calling mask
	PAR_STR5	X-reference that is used for the table of the calling mask
	PAR_STR6	Module-path of the calling script (if avail)
	PAR_STR7	Variable-name of the calling mask in the calling script

31.10.2007	(9.03.32/952/DD) Das automatische Fokussieren eines Feldes ohne ID wird ab jetzt unterdrückt.

	Giving the focus to a field without ID will be suppressed from now on.

31.10.2007	(9.03.31/951/DD) Neuer Befehl MASK_BLOCK [mask], boolBlockIt.
	Wenn boolBlockIt TRUE ist, blockiert dieser Befehl eine Maske komplett für jegliche Eingabe durch den User. Wenn boolBlockIt FALSE ist, steht die Maske wieder für Eingaben zur Verfügung. 
	ACHTUNG:	Die Maske kann dann auch nicht mehr geschlossen werden. 
			Außerdem muss man den Block aufheben, wenn man ein anderes Feld fokussieren 
			möchte.

	New command MASK_BLOCK [mask], boolBlockIt. 
	If boolBlockIt is TRUE, this command blocks all user-inputs for the mask. I boolBlockIt is FALSE, the mask is open for user-inputs again.
	ATTENTION:	The mask can’t even be closed.
			If the focus should be moved to another field, the block must be removed first.

22.10.2007	(9.03.30/950/DD) Neuer Befehl UNIX_2_ DATE_TIME [numUnixTS], [ADate], [ATime] {, boolUseBias}.
	Entpackt den übergebenen Unix-TimeStamp in die übergebene Datums- und Zeit-Variable. Wenn boolUseBias TRUE ist, dann wird die aktuelle Zeitzone berücksichtigt.

	New command UNIX_2_DATE_TIME [numUnixTS], [ADate], [ATime] {, boolUseBias}. Unpacks the given unix-timestamp into the date and time-variable. If boolUseBias is TRUE, the actual time-zone will be used.

22.10.2007	(9.03.29/949/DD) Neuer Befehl DATE_TIME_2_UNIX [ADate], [ATime], [numRes], boolUseBias.
	Packt das übergebene Datum und die übergebene Zeit in die Variable [numRes] in Form eines Unix-TimeStamps. Wenn boolUseBias TRUE ist, dann wird die aktuelle Zeitzone berücksichtigt.

	New command DATE_TIME_2_UNIX [ADate], [ATime], [numRes], boolUseBias. Packs the given date and time into a unix-timestamp. If boolUseBias is TRUE, the actual time-zone will be used.

22.10.2007	(9.03.28/948/HB) 11ter Parameter für die Masken-Definitionszeile “ITEM“:.
LevelProtect (Zahl)	Ein User, dessen Rechtelevel für den aktuellen Menüpunkt großer oder 
			gleich diesem Wert ist, kann das Feld sehen und bearbeiten, für
andere wird das Feld protected. 
					Default ist dieser Wert 0 und muss auch nicht angegeben werden.
		Mit dieser Änderung wurde auch das Rechtesystem so erweitert, dass der Level für die Protected-
Felder unabhängig von dem der Hidden-Felder gesetzt werden kann.

	11th parameter for the mask-definition-line “ITEM”:
	LevelProtect (number)	If a users right-level of the actual menu-item is bigger or equal to the value 
				given here, he can see and edit the field, otherwise it will be protected.
				The default-value is 0 but it must not be set.
	With this change also the right-system has been enhanced. The level for protected fields can be set separately from the hidden-field level.

22.10.2007	(9.03.27/947/MB) Seit der Änderung 8.11.50/829/DD vom 12.09.2006 wurden die mit der mittleren Maustaste festgelegten Standard-Einstellungen für Drucken oder Senden nicht gespeichert. Der Fehler wurde behoben.

	Since change 8.11.50/829/DD from 12.09.2006 the middle mouse-key could be used to set the standard for sending or printing, but it wasn’t saved. This error has been removed.

18.10.2007	(9.03.26/946/DD) Neuer Punkt im GRID-Kontext-Menü: Markieren. Wenn man mit der rechten Maustaste auf ein Grid klickt und in dem Grid das Markieren von Zeilen erlaubt ist, kann man ab jetzt auch den Kontext-Menüpunkt „markieren“ finden.

	New item for the grid-context-menu: mark row. If the right mouse key is clicked on a grid where selection is allowed, the new item “mark row” can be used.

17.10.2007	(9.03.25/945/DD) Neue Konstante [WIN_2003], die ab jetzt auch mittels des Befehls GET_EXTERN_DEVICE zurückgegeben wird, wenn man den Optionalen Parameter [sys] setzten lässt und auf einem Windows-2003-System arbeitet. Siehe Änderung 8.02.04/573/HB vom 25.03.2004.

	New constant [WIN_2003], it will returned, by calling the command GET_EXTERN_DEVICE, retrieving the optional parameter [Sys] and is running on a Windows-2003 system. See change 8.02.04/573/HB from 25.03.2004.

11.10.2007	(9.03.24/944/GH) Neuer Schlüssel für die Application-INI-Datei, Sektion [Config]: AdvanceOnEnterButton=0 (default). Dies erweitert die Änderung 9.03.15/938/JS vom 03.10.2007, da diese Änderung zu Fehlverhalten führte. Der Schalter kann auch individuell im Werkzeugkaten gesetzt werden er heißt dort “Weiter mit Enter bei Knöpfen“. Wenn dieser Schalter gesetzt ist und “Nächste Zeile mit Enter“ nicht gesetzt ist, wird nach dem Abarbeiten des Button-Hooks das zuletzt aktuell gesetzte Feld den Fokus erhalten. Wenn keine Verlegung des Focus im Button-Hook erfolgte, wird der Knopf selbst den Focus behalten. Wenn “Nächste Zeile mit Enter“ gesetzt ist, wird danach zum nächsten Dialogelement weitergeleitet, wenn der Knopf nach dem Button-Hook immer noch den Focus hat (d.h. wenn im Button-Hook der Focus nicht auf ein anderes Dialog-Element gesetzt wurde).
		
	New key for the application-INI-file, section [Config]: AdvanceOnEnterButton=0 (default). This enhances change 9.03.15/938/JS from 03.10.2007, which led to some unwanted behaviors of the engine. This key can be set individually in the toolbox and is named “Weiter mit Enter bei Knöpfen“ (“go on with “enter” in case of buttons). If this key is set and “Nächste Zeile mit Enter” (AdvanceOnEnter) is not set, the last field that has been set to “actual” will get the focus after the button-hook has been processed. If the focus hasn’t been changed by the button-hook, the button itself will get the focus. If AdvanceOnEnter is set to TRUE, the focus will also be moved to the next field, if the button still has the focus after the button-hook (in case the button-hook didn’t move the focus to another dialog-element).

11.10.2007	(9.03.23/943/DD) Wenn im Rechtemodell das Lesen der Immer-Notiz (oder einer anderen, direkt anzuzeigenden Notiz) nicht gestattet ist, wird diese ohne jede Meldung einfach nicht mehr angezeigt. Der Benutzer bekommt also gar nicht mit, dass er etwas nicht lesen darf.
		
	If the user-right-model of an user does not allow to read a always-note (or any other directly shown note), it will simply be not shown, without any comment. The user will not even take notice of not being allowed for reading a specific note.

08.10.2007	(9.03.22/942/DD) Wenn man mittels des Befehls QUERY_SET_DATABASE ein Masken-Query auf eine Fremddatenbank umlenkt, werden von nun an auch alle Updates, Inserts und Deletes, die von den Maskenfunktionen ausgeführt werden, auf der Fremddatenbank ausgeführt. Änderungsprotokollierungen in der Tabelle Changes finden jedoch weiterhin auf der Standard-Datenbank statt. Auch die Notes und DocMgr-Funktionen finden weiterhin auf der Standard-Datenbank statt.
		
	If a mask-query has been redirected to a foreign database by using the command QUERY_SET_DATABASE, the mask-functions update, insert and delete will be processed on the foreign database too, from now on. The protocol of the changes will still be made on the standard-database. Also the note-manager and the document-manager will still be processed on the standard-database.

04.10.2007	(9.03.21/941/DD) In den Feldoptionen eines Masken-Items kann ab jetzt folgendes angegeben werden: FONTNAMECourier_New wobei FONTNAME das Schlüsselwort ist und z.B. “Courier_New“ der Fontname. Bitte keine Leerzeichen im Fontnamen verwenden. Folgende Zeichen werden zu Leerzeichen umgewandelt “#“, “@“, “_“. Folgende Zeichen werden als Ende der Angabe für den Fontnamen gewertet: “,“ , “;“ , “ “ , “-“ , “ ‘ “.
		
	The field-options for mask-items have been extended by the following possibility: FONTNAMECourier_New where FONTNAME is the keyword and e.g. “Courier_New” is the font-name. Please do not define blanks in font-names. The following sings will be changed into blanks: “#“, “@“, “_“. The following sings will be interpreted as the end of a font-name: “,“ , “;“ , “ “ , “-“ , “ ‘ “.

04.10.2007	(9.03.20/940/DD) Umstellung des integrierten SendManagers (Chat-Tool) auf Script-Basis.
	Mit dem neuen INI-Datei-Schlüssel in der Sektion [Config] SendManagerScript= kann der Name einer Script-Datei angegeben werden, die ausgeführt wird, wenn der Chat-Button ausgelöst wurde.
	Mit dem neuen INI-Datei-Schlüssel in der Sektion [Config] SendMaTimerTicks= kann die Zeit in Millisekunden angegeben werden, nach der jeweils in der Datenbank geprüft wird, ob für den aktuellen User Nachrichten vorliegen. Wenn SendMaTimerTicks=0 ist, wird der SendManager nicht geprüft. Sollten Nachrichten für einen User vorliegen, wird das Script ausgeführt, das mit dem oben genannten Schlüssel SendManagerScript= angegeben wurde.
		
	Redesing of the integrated SendManager (chat-tool) to a script-based one. 
	With the new application-INI-file-key in section [Config] SendManagerScript= a script can be named, that should be executed in case of pressing the chat-button. 
	With the new application-INI-file-key in section [Config] SendMaTimerTicks= the time in ms can be defined, after which th database is checked for new messages for an user. If  SendMaTimerTicks=0, the SendManager-Timer will not be executed. If a user got messages, the script named by the obove mentioned key SendManagerScript= will be executed.

04.10.2007	(9.03.16/939/DD) Neuer Befehl SWITCH_USER [boolRes], floatRecID.
	Setzt den aktuellen Anwendungs-Benutzer auf den Benutzer, dessen Datensatz mit floatRecID in der Benutzer-Tabelle gefunden werden kann. Wenn floatRecID den Wert 0 enthält, wird auf den Administrator umgestellt. In [boolRes] wird zurückgegeben, ob der User umgestellt werden konnte.	
	Beispiel-Script: SwitchUser.csh
	
	New command SWITCH_USER [boolRes], floatRecID.
	Switches the actual application-user to the one defined through the record with the floatRecID in the user-table. If floatRecID is 0, the user will be switched to the administrator. [boolRes] returns, if the user has successfully been changed.
	Example-Script: SwitchUser.csh

03.10.2007	(9.03.15/938/JS) Wenn im Werkzeugkasten „Nächste Zeile mit Enter“ („Advance on Enter“) gesetzt ist, wird von nun an auch nach dem Auslösen eines Knopfes zum nächsten Dialogelement weitergeleitet. Die geschieht (leider) auch, wenn der Knopf mittels der Maustaste ausgelöst wurde.
	
	If “Advance on Enter” is checked in the toolbox, triggering a button will lead to the next dialog-element from now on. This (unfortunately) happens also, if the button has been triggered by a mouse-click.

03.10.2007	(9.03.14/937/JS) Wenn man mittels Doppelklick in einem Datums- oder Zeitfeld den Kalender oder die Uhr aufgerufen hatte, wurde der Focus nicht auf dem aufrufenden Feld belassen. Der Fehler wurde behoben. 
	
	Calling the calendar or the watch by double clicking a date- or time-field, the field itself lost the focus. This error has been removed.

02.10.2007	(9.03.13/936/DD) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [Config]:
	NavigateTimerInterval=0 (Default). Damit lässt sich bestimmen, ob und mit welchem Abstand die Seite, die im Hauptfenster angezeigt wird, erneut geladen wird. Die Zeiteinheit wird in Millisekunden gemessen. Der Timer wird nicht ausgeführt, wenn der Intervall auf 0 gesetzt wurde, wenn der Application-Style nicht HTML ist oder wenn UseMainWindow FALSE ist.
	
	New key for the application-INI-file, section [Config]:
	NavigateTimerInterval=0 (Default). This defines the time in milli-sec, that will be passed until the navigate-controle (internet-browser) in the main-window will be refreshed. The timer will not be executed if the interval has been set to 0, if the ApplicationStyle is not HTML or if UseMainWIndow is set to FALSE.

28.09.2007	(9.03.12/935/DD) Nach der Änderung 9.03.05/928/DD vom 16.09.2007 wurde fehlerhafter Weise versucht, nicht vorhandene Script-Dateien trotzdem zu laden. Dieser Fehler wurde beseitigt. 
	
	Even though a script-file could not be found, it was tried to load it since change 9.03.05/928/DD from 16.09.2007. This error has been removed.

28.09.2007	(9.03.11/934/DD) Das Warten auf ein Fremdprogramm, das mit dem Befehl EXTERN aufgerufen wurde, wird ab jetzt sofort unterbrochen, wenn der Befehl CARA_HALT ausgelöst wurde. 
	
	Calling the command CARA_HALT will also stop the waiting for external programs, called by the command EXTREN. 

25.09.2007	(9.03.10/933/DK) Die Benennung des Programms mit einem Namen, der deutsche Umlaute enthielt für dazu, dass das Programm nicht gestartet werden konnte. Dies lag daran, dass der Name, bereinigt von Sonderzeichen, zum Alloziieren des Menü-Objektes verwandt wurde und dort leider auch keine deutschen Umlaute gestattet sind. Der Fehler ist behoben. 
	
	Giving a program a name with special international characters, avoided the start of the program. The name was used to allocate the menu-object, and this kind of chars are not allowed therefore. This error has been removed. 

21.09.2007	(9.03.09/932/DD) Erweiterung des Befehls LIST_APPEND um 5 neue, optionale Parameter:
	LIST_APPEND [list], 'str' {, [boolRes] {, boolOnlyIfNotFound, {, strOp, {numPart, strDelim}}}}.
	Wenn [boolRes] übergeben wird, wird dessen Wert TRUE, wenn der String angefügt wurde und FALSE, wenn dies nicht der Fall war. 
	Wenn boolOnlyIfNotFound TRUE ist, wird ‘str‘ nur angefügt, wenn dieser selbst nicht in den bereits vorhandenen Zeilen der Liste gefunden werden kann. Der Vergleichsoperator für die Suchfunktion kann mittels strOp angegeben werden. Es kann sich um einen der folgenden Werte handeln: ‘=‘, ‘>=‘, ‘<=‘, ‘<>‘, ‘>‘, ‘<‘, ‘>>‘ (like) oder ‘<<‘ (not like). Wenn numPart und strDelim zusätzlich auch noch übergeben werden, wird die Suche lediglich im numParten, durch strDelim separierten, Teilsting der Listen-Zeile ausgeführt.

	Extend of command LIST_APPEND by 5 new, optional parameters:
	LIST_APPEND [list], 'str' {, [boolRes] {, boolOnlyIfNotFound, {, strOp, {numPart, strDelim}}}}.
	[boolRes] will be set to TRUE, if ‘str’ has been added to the list, otherwise it will be set to FALSE.
	If boolOnlyIfNotFound is TRUE, ’str‘ will only be added to the list, if it could not be found in the list-lines. The compare-operator can be set by strOp (delault is ‘=’), the following values are allowed: ‘=‘, ‘>=‘, ‘<=‘, ‘<>‘, ‘>‘, ‘<‘, ‘>>‘ (like) or ‘<<‘ (not like). If numPart and strDelim are given too, the search will only be made within the numPart part (separated by strDelim) of the list-lines. 

20.09.2007	(9.03.08/931/DD) Es gibt eine neue Methode zum Untersuchen und Verfolgen von Scripten. Dabei werden lediglich die geladenen Dateien aufgelistet. Dazu gibt es im Werkzeugkasten einen neuen Punkt “Script-Files“, im Script kann dieser Modus auch mit den Befehlen DEBUG_ON und DEBUG_OFF an und aus gestellt werden. In der Applikation-INI-Datei kann dies in der Sektion [Config] mit dem Schlüssel ScriptDebugFiles= geschehen.

	A new form for monitoring a script is available. Hereby only the filenames (with the module-name, if used)  that are called are listed in the monitor window. In the tool-box a new entry can be found, to switch this mode on and off “Script-Files“, within a script the mode can also be switched by using the new commands DEBUG_ON and DEBUG_OFF. In the application-INI-file, section [Config] the key ScriptDebugFiles= can be used.

20.09.2007	(9.03.07/930/DD) Die integrierte Bibliothek “MiTeC System Information Component Suite“ wurde von der Version 10.8.0 auf die Version 10.8.1 umgestellt.

	The integrated library “MiTeC System Information Component Suite“ has been updated from version 10.8.0 to version 10.8.1.

20.09.2007	(9.03.06/929/GH) Erweiterung der Änderung 9.01.12/903/GH vom 07.08.2007:
	LIST_STR_FIND [list], 'str' {, [boolRes] {, strOp, {numPart, strDelim {, [destList] {, boolParts, strParts, strPDlim}}}}
	Hier ist jetzt ab jetzt ein weiterer Parameter vom Typ VAR_BOOL eingeschoben worden. Diese Änderung ist nicht abwärtskompatibel! Wir gehen jedoch davon aus, dass außer Gerry diese Option noch niemand genutzt hat und diese Erweiterung äußerst nützlich ist. 
	[boolRes] wird dann TRUE, wenn der Suchstring gefunden werden konnte und FALSE wenn kein Treffer erfolgte.

	Extend of change 9.01.12/903/GH from 07.08.2007:
	LIST_STR_FIND [list], 'str' {, [boolRes] {, strOp, {numPart, strDelim {, [destList] {, boolParts, strParts, strPDlim}}}}
	A new parameter of type VAR_BOOL has been inserted. This change is not downwards compatible! But we are agreeing, that only Gerry used the “old” new features, and that the new parameter is extremely useful. 
	[boolRes] will be TRUE in case, the search-string could be found, otherwise a FALSE will be returned. 

16.09.2007	(9.03.05/928/DD) Scripte, die in Modulpfaden gefunden wurden, vererben den Pfad an alle untergeordneten Scripte, Masken, Querys und Include-Dateien. Sollte ein untergeordnetes Script nicht im Modulpfad gefunden werden, so werden auch dessen untergeordnete Dateien nicht weiter im Modulpfad gesucht.

	Script, that are found within a module-path, transmit this path to all descendent files like querys, masks, include-files and scripts. If a descendent script could not be found within the module-path, all files, that are descendents from this script, are not longer searched in the module-path.

16.09.2007	(9.03.04/927/HB) Seit der Änderung 9.01.17/908/HB vom 16.08.2007 wurden Datei-Pfade im Zusammenhang mit dem Befehl “EXECUTE_FILE“ im SQL-Interface nicht richtig interpretiert. Der Fehler wurde behoben. Außerdem werden Dateinamen in Modul-Pfaden ab jetzt erst NACH dem Special-Pfad und ggf. nach dem Standard-Pfad gesucht, so dass auch Modul-Anpassungen im Special-Pfad untergebracht werden können, die Standard-Applikation jedoch Vorrang vor den Modulen hat.

	Path-names have been interpreted wrong in the SQL-Interface, using the command “EXECUTE_FILE”, since change 9.01.17/908/HB from 16.08.2007. This error has been removed. Additionally filenames will be searched in module-paths AFTER they have been searched in the special-path and if necessary in the standard-paths, so module-customizations can be stored in the special-path but the standard-application will be higher rated then the modules.

16.09.2007	(9.03.03/926/GH) Folgende neue Variablen vom Typ VAR_LIST sind verfügbar:
	[mask!MASK_QUERY_ERROR_LIST], [mask!MASK_VIEW_ERROR_LIST] und 
	[query oder browser!QUERY_ERROR_LIST]. Diese zeigen den jeweils letzten Fehler eines Querys an. Die Variablen sind “read only“. Vor dem Ausführen eines Querys wird die Liste jeweils entleert.
	Beispiel in der Dokumentation “GetAndShowAQuerysErrorList.csh“

	The following list of new variables of type VAR_LIST is available: 
	[mask!MASK_QUERY_ERROR_LIST], [mask!MASK_VIEW_ERROR_LIST] and 
	[query or browser!QUERY_ERROR_LIST]. These lists contains always the very last error-description of a query. The variables are “read only” and will be cleared before each query-execution.
	Example within the documentation “GetAndShowAQuerysErrorList.csh“

14.09.2007	(9.03.02/925/DD) Ab jetzt können in Query-Definitionen auch Variablen vom Typ VAR_LIST eingebaut werden. In einer Zeile mit einer List-Variable darf nur die List-Variable selbst vorkommen. Die einzelnen Zeilen der List-Variable dürfen selbst auch Variablen beinhalten, jedoch keine List-Variablen.

	Query-definitions may contain variables of type VAR_LIST from now on. A line, that contains a list-variable, should hold only the list-variable itself. In each line of the list also variables may occur, but no list-variables again. 

 
13.09.2007	(9.03.01/924/HB) Neuer Befehl:
	QUERY_FIELD_LINK [query], 'strQFName', [mask], 'strMFName', boolFTS, boolDelLink.
	Verlinkt ein Query-Feld mit einem Masken-Feld. Es wird davon ausgegangen, dass die verlinkten Felder vom Typ VAR_STR sind. Wenn im Masken-Feld Daten eingegeben werden und das Query „aktiv“ ist, werden die Eingabewerte zur Laufzeit als Suchfilter verwendet. 
	[query] ist die Query-Variable in der sich zur Laufzeit das Feld mit dem Namen strQFName befindet.
	[mask] ist die Masken-Variable in der sich zur Laufzeit das Feld mit dem Namen strMFName befindet.
	Wenn boolFTS TRUE ist, wird der eingegebene Text irgendwo im Query-Feld vermutet, anderenfalls wird davon ausgegangen, das der Text des Query-Feldes so beginnt.
  	Wenn boolDelLink TRUE ist, wird die Verlinkung aufgehoben.
	In der Dokumentation ist ein Beispiel im Ordner “Zuwachssuche“.

	New command: 
	QUERY_FIELD_LINK [query], 'strQFName', [mask], 'strMFName', boolFTS, boolDelLink.
	Links a query-field to a mask-field. Both fields should be of type VAR_STR. If data are typed into the mask-field and the query is “active”, the input-data will be used as a filter while runtime.
	[query] is the query-variable that contains the field strQFName while runtime.
	[mask] is the mask-variable that contains the field strMFName while runtime.
	If boolFTS is TRUE, the input-data may be anywhere within the text of the query-field, otherwise the text of the query-field should start like the input-data.
	If boolDelLink is TRUE, the link will be removed.
	The documentation contains a folder named “Zuwachssuche” (growing-search).

 
05.09.2007	(9.03.00/923/DD) Der Dokumenten- und Termin-Manager wurde aus der Engine entfernt und komplett in Scripten abgebildet. Diese Scripte können im Unter-Verzeichnis “DocMgr“ in der CARA-Dokumentation gefunden werden. Die Tabellen “docmgrh“ und “docmgri“ wurden jeweils um ein Feld erweitert. Diese Felder werden von der neuen Engine automatisch beim Start hinzugefügt.
	Die folgenden neuen globalen Variablen sind verfügbar und gehören zu den passenden Applikations-INI-Datei-Schlüsseln der Sektion [DocumentManager]:
	
	Variablenname (VAR_STR)	INI-Datei-Schlüssel
	_______________________________________________________________________
	DOCU_MGR_EXE_AUTO_PROCESSES_SCRIPT	DocMgrExeAutoProcessesScript
						Mit welchem Script werden beim 
						Programmstart die automatischen Prozesse 
						abgearbeitet. Dies wurde bisher von der 
						Engine ausgeführt.
	
	DOCU_MGR_ITEM_F_USER_TIMER_SCRIPT	DocMgrItemFUserTimerScript
						Welches Script soll bei dem Aufruf des 
						Befehls ITEM_F_USER_TIMER ausgeführt 
						werden? Dies wurde bisher von der 
						Engine ausgeführt.

	DOCU_MGR_ITEM_2_USER_TIMER_SCRIPT	DocMgrItem2UserTimerScript
						Welches Script soll bei dem Aufruf des 
						Befehls ITEM_2_USER_TIMER ausgeführt 
						werden? Dies wurde bisher von der 
						Engine ausgeführt.

	DOCU_MGR_MAIN_SCRIPT	DocMgrMainScript
						Das Script, das den kompletten Dokumenten-
						Manager ersetzt und auch im Falle des 
						Aufrufes der Befehle 
						DOCUMENT_CREATE und 
						DOCUMENT_DIRECT ausgeführt wird.
						Wenn dieses Script beendet wird, sollte in der 
						Variable 
						[DOCU_MGR_SCRIPT_RESULT_STR] der 
						Wert der RecFlag des Datensatzes stehen, zu 
						dem der DocMgr aufgerufen wurde.

	DOCU_MGR_DATE_LIST_SCRIPT_4_CHECK	DocMgrDateListScript4Check
						Welches Script soll bei dem Überprüfen der 
						offenen Termine des Dokumenten-Managers 
						ausgeführt werden? Dies wurde bisher von 
						der Engine ausgeführt.
						In der Variable 
						[DOCU_MGR_DATE_LIST_UNCHECKED]
						sollte nach dem Aufruf dieses Scriptes die 
						Anzahl der noch nicht zur Kenntnis 
						genommenen Termine stehen.
						In der Variable 
						[DOCU_MGR_DATE_LIST_COUNT]
						sollte nach dem Aufruf dieses Scriptes die 
						Anzahl der Termine des Benutzers stehen.
						Dieses Script wird stets automatisch von der 
						Engine aufgerufen und ersetzt eine zuvor in 
						der Engine befindliche Funktion.

	DOCU_MGR_DATE_LIST_SCRIPT_4_SHOW	DocMgrDateListScript4Show
						Welches Script soll bei dem Anzeigen der 
						offenen Termine des Dokumenten-Managers 
						ausgeführt werden? Dies wurde bisher von 
						der Engine ausgeführt. Dieses Script bezieht 
						sich auf die Variable 
						[DOCU_MGR_DATE_LIST_UNCHECKED].
						Es wird automatisch von der Engine 
						aufgerufen, wenn die Anzahl der nicht zur 
						Kenntnis genommenen Termine > 0 ist.

	The document- and date-manager has completely been removed from the engine and moved to scripts. These scripts can be found in the sub-folder “DocMgr” within the CARA-documentation. The tables “docmgrh“ and “docmgri“ have been extended by one field each. This field will be added automatically from the new engine on startup.
	The following new global variables are available and are related to application-INI-file-key of the section [DocumentManager]:
	
	Variable-name (VAR_STR)	INI-file-key
	_______________________________________________________________________
	DOCU_MGR_EXE_AUTO_PROCESSES_SCRIPT	DocMgrExeAutoProcessesScript
						Which script should be used on startup, for
						executing the automatic-processes. This has 
						been a part of the engine since today.

	DOCU_MGR_ITEM_F_USER_TIMER_SCRIPT	DocMgrItemFUserTimerScript
						Which script should be used if the command
						ITEM_F_USER_TIMER should be executed?
						This has been a part of the engine since 
						today.

	DOCU_MGR_ITEM_2_USER_TIMER_SCRIPT	DocMgrItem2UserTimerScript
						Which script should be used if the command
						ITEM_2_USER_TIMER should be executed?
						This has been a part of the engine since 
						today.

	DOCU_MGR_MAIN_SCRIPT	DocMgrMainScript
						This script replaces the complete 
						Document-Manager, it will also be called in 
						case of the commands 
						DOCUMENT_CREATE and 
						DOCUMENT_DIRECT.
						After the execution of this script, the variable 
						[DOCU_MGR_SCRIPT_RESULT_STR] 
						should hold the value of the RecFlag of the 
						record that called the DocMgr.
						
	DOCU_MGR_DATE_LIST_SCRIPT_4_CHECK	DocMgrDateListScript4Check
						Which script should be used to check the 
						unnoticed and unclosed dates of a user? 
						Since now, this function was embedded in the 
						engine. The variable
						[DOCU_MGR_DATE_LIST_UNCHECKED]
						should hold the value of unnoticed dates of 
						the user. The variable 
						[DOCU_MGR_DATE_LIST_COUNT]
						should hold the value of unclosed dates of 
						the user. This script will be automatically 
						called by the engine and replaces the former 
						enclose function.
.
	DOCU_MGR_DATE_LIST_SCRIPT_4_SHOW	DocMgrDateListScript4Show
						Which script should be used show the 
						unclosed dates of a user in the DocuMgr. This 
						script will be automatically called by the 
						engine and replaces the former enclose 
						function. The script uses the variable
						[DOCU_MGR_DATE_LIST_UNCHECKED].
						The script will only be executed the value of 
						this variable is > 0.

05.09.2007	(9.02.12/922/DD) Das Speichern von String-Masken-Feldern, die ein Backslash enthielten führte zu Fehlern bei Datenbanken, die mittels des Backslash ein Sonderzeichen einleiten. Dieser Fehler wurde behoben. Ebenso können Records mittels des Befehls NEW_RECORD, die solche Felder enthielten jetzt ebenfalls fehlerfrei kopiert werden. Wenn solche Felder gespeichert wurden entstanden gelegentlich versehentlich Einträge in der Tabelle “changes“ – auch dieser Fehler wurde behoben.

	Saving a string-mask-field that contains a backslash in a database that uses backslashes to introduce a special-char caused an error. This has been corrected. Copying a record, using the NEW_RECORD command led to an error too, for the same reason. This has been corrected too. In such cases also the table changes got new entries by accident. This error has been removed.

05.09.2007	(9.02.11/921/DD) Neuer Hook für Masken [mask!MASK_HOOK_DROP] und neue Variable für Masken [mask!MASK_DROP_LIST]. Wenn man Dateien in einem Explorer markiert und auf eine Maske zieht, werden Dateinamen in der Liste [mask!MASK_DROP_LIST] abgelegt (die Liste wird bei jedem “Drop“ geleert). Nach dem Drop wird die Routine [mask!MASK_HOOK_DROP] aufgerufen. Wenn der Hook nicht gesetzt wurde, bleibt der Vorgang wirkungslos.

	New hook for masks [mask!MASK_HOOK_DROP] and new variable for masks [mask!MASK_DROP_LIST]. If files are marked within the explorer and dragged and dropped to the mask, the list [mask!MASK_DROP_LIST] will contain the filenames of the files. The list will be cleared before a drop. The routine [mask!MASK_HOOK_DROP] will be called in case of a drop. If the hook isn’t defined, the action will have no effect.

05.09.2007	(9.02.10/920/DD) Unter VISTA wurden die Fenster-Rahmen-Breiten nicht korrekt erkannt. Daher wurden die Einstellungen der Notiz-Fenster-Breiten aus den TableFld-Definitionen um 8 Pixel zu schmal interpretiert, wenn das neue transparente Design in VISTA gewählt wurde. Dieser Fehler wurde behoben.

	The thickness of the window-frame under VISTA has not been calculated correct, if the new transparent design has been chosen. So the width of the note-manager-window, that can be defined in the tableflds has been interpreted wrong by 8 pixel. This error has been removed.

05.09.2007	(9.02.09/919/DD) Das Kontextmenü, das im Fenster des Befehls LIST_DISPLAY mit der rechten Maustaste geöffnet werden kann, wurde so erweitert, dass es dort einen zusätzlichen Punkt “alles kopieren“ gibt. Dies vereint die Schritte “alles markieren“ und “kopieren“. Außerdem wurde im Monitor im entsprechenden Menü der Punkt “copy all, clear, close“ der die Schritte “alle markieren“, “kopieren“, “säubern“ und “schließen“ angefügt.

	The context-menu that opens with a right-click into the window, that is shown with the command LIST_DISPLAY, has been extended by the item “copy all”. This is the union of the steps “mark all” and “copy”. Additionally a relating item has been inserted to the monitor context menu “copy all, clear, close”. This is the union of the steps “mark all”, “copy”, “clear” and “close”.

05.09.2007	(9.02.08/918/DD) Im Datei-Auswahl-Dialog wurden unter VISTA keine Dateien des vorgegebenen Dateityps angezeigt. Dieser Fehler wurde behoben.

	The file-open-dialog did not show files of the default file-type under VISTA, when it was opened. This error has been removed.

05.09.2007	(9.02.07/917/DD) Zu den bereits seit dem 12.12.2006 in Änderung 8.12.09/846/DD bekannten Farb-Namen wurde noch die Farbe “WINDOW” hinzugefügt. Diese gibt die im aktuell gewählten Windows-Design verfügbare Fenster-Hintergrundfarbe zurück. 

	Since change 8.12.09/846/DD from 12.12.2006 the color-names, that can be used are known. These names have been extended by the color “WINDOW”. This color returns the window-background-color of the actual chosen windows-design.

05.09.2007	(9.02.06/916/DD) Neuer Befehl SET_COLOR [Mask],’FieldName’,‘ColorName’. Damit kann man bei EIngabe-Dialogelementen (String/Longint/Extended/Date/Time/CheckBox/RadioBox/Memo) zur Laufzeit die Farbe wechseln. Diese Farbe wird durch das Säubern der Maske nicht zurückgesetzt. 

	New command SET_COLOR [Mask],’FieldName’,‘ColorName’. This allows to change the background color of dialog-elements (String/Longint/Extended/Date/Time/CheckBox/RadioBox/Memo) while runtime. The color will not be reset when the mask is cleared.

05.09.2007	(9.02.05/915/DD) Wenn im Befehl DATA_2_MASK der Bool-Wert ExtractRecID (FALSE) angegeben wurde, wurde dies überhaupt nicht berücksichtigt. Der Fehler wurde behoben.

	If the bool-value ExtractRecID was set to FALSE within the command DATA_2_MASK, this was without any effect. This error has been removed.

24.08.2007	(9.02.04/914/BDL) Die Font-Größe und der Font-Name des Monitors können nun getrennt in der Applikations-INI-Datei in der Sektion [Config] mit den Schlüsseln MonitorFontSize= und MonitorFontName= angegeben werden. Wenn keine Angabe für die MonitorFontSize erfolgt, wird die Größe wie bisher mit dem Applikations-Font bestimmt. Ein gute Einstellung ist z.B. MonitorFontSize=8 und MonitorFontName=Courier New.
	
	The font-size and font-name of the monitor can be seperatly defined in the application-INI-file in section [Config] with the keys MonitorFontSize= and MonitorFontName= from now on. If the MonitorFontSize isn’t defined, the size and font will be taken from the application-settings, as it has been in former times. 
	A good setting would be e.g. MonitorFontSize=8 and MonitorFontName=Courier New.

20.08.2007	(9.02.03/913/DD) Diverse Tastatur-Belegungsänderungen: In Browsern und Grids, in denen Selektieren erlaubt ist, kann ab jetzt mit STRG+A die gesamte Liste selektiert bzw. deselektiert werden. In Masken und Browsern wurde die Taste Strg+A (User Aktionen und Informationen) auf Strg+I verlegt. Im SQL-Interface wurde Strg+A zum Selektieren aller Statements verwendet und die Ausführung aller Statements ab jetzt mit Strg+W ermöglicht. Das An- und Abschalten des SQL- und Script-Monitors ist ab jetzt nicht mehr mit Strg-Tasten möglich – es wurde ohnehin nie genutzt.
	
	Some changes for the key-usage: Within browsers and grids, where selection is allowed, the whole list may be selected or deselected with ctrl+a. Within masks and browsers the User-Action and Information is moved from ctrl+a to ctrl+i. In the sql-interface ctrl+a is now used to select all statements and the execution of all statements is moved to ctrl+w. From now on it is not possible to switch the sql- and script-monitor on and off with ctrl-keys – is has not been used anyway.

20.08.2007	(9.02.02/912/DD) Wenn ein User beim Einloggen in die Anwendung die Drop-Down-Box zur Auswahl seines Namens nutzen konnte, wurde sein Name nicht in der Datei usrlg.dat protokolliert (wenn der Schlüssel UserLoginFile=1 ist). Dieser Fehler wurde behoben. Außerdem wird ab jetzt das verwandte Passwort in verschlüsselter Form mit in die Datei gespeichert.
	
	If a uses logged into the aplication, using the drop-down-box for choosing his name, the name wasn’t protocoled in the file usrlg.dat (if the key UserLoginFile was set to 1). This error has been removed. Additionally the used password will be cryptic written to the protocol from now on.

20.08.2007	(9.02.01/911/GH) Wenn in einem QUERY_HOOK_REC_CHANGE ein weiteres Grid aktualisiert wurde und man auf dem Ausgangs-Grid mit dem Maus-Rad navigierte oder einfach an verschiedenen Stellen hinein klickte, wurde der Hook nach dem ersten Mal nicht mehr ausgeführt, obwohl der Datensatz gewechselt wurde. Der Fehler wurde so behoben, dass alle Maus-Rad-Bewegungen in Pfeil-Tasten-Bewegungen umgelenkt werden und das Grid beim Hinein-Klicken wieder zum aktuellen Grid wird. 

	If a QUERY_HOOK_REC_CHANGE has been used to actualize another grid and the mouse-wheel was used to navigate in the starting-grid or a mouse-klick was made to different lines, the hook wasn’t executed anymore after the first execution. This error has been removed by redirecting the wheel-movements into arrow-keys and making the grid to the actual grid on simple line-clicks. 

17.08.2007	(9.02.00/910/DD) Neue Browser- bzw. Query-Variable [query!VIEW_REC_CHANGE_TIME]. Wenn diese Variable einen Wert > 0 enthält, ist das die Zeit in Millisekunden, die verstreichen muss, bevor der Rec-Change-Hook ausgeführt wird. Damit kann man z.B. erreichen, dass das Scrollen durch die Daten eines Grids trotz eines RecChange-Hooks erheblich schneller geht. Denn nur dann, wenn die Zeit komplett verstrichen ist, wird der Hook ausgeführt, anderenfalls wird einfach weiter gescrollt. 
	Mit dem neuen Applikations-INI-Datei Schlüssel DefaultRecChgTime= in der Sektion [Config] kann dieser Wert Programmweit vorbelegt werden. Ein guter Wert ist z.B. 200.

	New variable for a query or browser [query!VIEW_REC_CHANGE_TIME]. If this value is > 0, the given time in milli-secs will be waited before the  RecChange-Hook will be executed. So scrolling in grids gets much faster, because the hook will only be executed if the time has been passed, otherwise the scrolling will simply be continued.
	With the new application-INI-file-key DefaultRecChgTime= in the section [Config] this value may be pre-set for the whole application. A good value would be e.g. 200.

16.08.2007	(9.01.18/909/DD) Neuer Schlüssel für die Applikations-INI-Datei DoNotChangeDefPrinter=0. Wenn dieser Schlüssel den Wert 1 hat, wird beim Befehl PRINT_SET, wenn dieser mit dem Parameter NoVPE=TRUE aufgerufen wird, das Wechseln des Standard-Druckers nicht ausgeführt. Dieser Schlüssel kann auch über den Werkzeugkasten gesetzt werden und wird User-Spezifisch in der Stations-INI-Datei gespeichert. Dies wurde notwendig, weil es Rechner gibt, die sich bei dem Befehl “SendMessage“ auf der Windows-System-Ebene aufhängen. 

	New key for the application-INI-file DoNotChangeDefPrinter =0. If this key is set to 1, the change of the default printer will not be done from out of the command PRINT_SET, if the command has been called with the parameter NoVPE=TRUE. This key may also be set in the tool-box and will also be saved to the station-INI-file. This option has become necessary, because of some machines that stalled by calling the windows-system-routine “SendMessage”.

16.08.2007	(9.01.17/908/HB) Neue Sektion für die Applikations-INI-Datei: [Modules]. In dieser Sektion können weitere Special-Verzeichnisse benannt werden, in denen VOR den Standard-Verzeichnissen gesucht wird. Jedes Verzeichnis wird wie bei der Angabe des Special-Verzeichnisses behandelt. Wenn ein Verzeichnis nicht gefunden werden kann, wird es aus der Liste entfernt, um einen schnelleren Programmablauf zu gewährleiten. Beispiel:
	[Modules]
	001=Fertigung
	002=FiBu

	New section for the application-ini-file: [Modules]. Within this section more special-paths can be named, that are searched before the standard-paths. Each path will be treated as the special-path. If a path can’t be found while startup, it will be thrown out of the list, to ensure a faster program execution. Example:
	[Modules]
	001=Fertigung
	002=FiBu

15.08.2007	(9.01.16/907/DD) In der ADO-Version der Engine werden die Strings in neu angelegten Tabellen als WideStrings interpretiert und vom System mit Leerzeichen zurückgegeben. Vermutlich werden sie bis zur maximalen Länge aufgefüllt. Deswegen gibt es nun einen neuen INI-Datei-Schlüssel für die Sektion [SQL]: TrimStrings=0 (default) oder 1. Wenn TrimStrings=0 ist, reagiert die Engine wie bisher und übergibt die Strings unverändert, anderenfalls werden die Strings von führenden und folgenden Leerzeichen befreit. Darüber hinaus gibt es ab jetzt eine neue Browser-Flag, die es erlaubt, diese Option während der Laufzeit an oder ab zu schalten: BROWSER_FLAG_TRIM_STRINGS. Diese Flagge ist Teil der VIEW_FLAG eines jeden Querys oder Browsers.

	The ADO-version of the engine returned strings of tables that have been created under ADO as WideStrings, with trailing blanks. Probably the strings have been filled to their maximal length. So a new key for the INI-file, section [SQL] has been made: TrimStrings=0 (default) or 1. If TrimStrings=0, the engine behaviors as usual, otherwise all strings will be trimmed from leading and trailing blanks. Beyond that, a new browser-flag is available, to switch this option on and off while runtime: BROWSER_FLAG_TRIM_STRINGS. This flag is part of the VIEW_FLAG of any query or browser.

15.08.2007	(9.01.15/906/DD) Die integrierte Bibliothek “MiTeC System Information Component Suite“ wurde von der Version 10.7.0 auf die Version 10.8.0 umgestellt.

	The integrated library “MiTeC System Information Component Suite“ has been updated from version 10.7.0 to version 10.8.0.

15.08.2007	(9.01.14/905/DD) Die Library MySQLDAC_Full auf den Stand 2.6.0 gebracht.
	
	The library MySQLDAC_Full has been brought to V. 2.6.0.

09.08.2007	(9.01.13/904/DD) Zwei neue Berechnungsmethoden für den Befehle CALC…AS…: 
	CALC [S] AS H2ASCII(S) 
	Gibt den String S der Zeichen im HTML-Format enthält in ASCII aus. So werden die HTML-Kürzel wieder in Sonderzeichen verwandelt.

	CALC [S] AS A2HTML(S)
	Gibt den String S der Zeichen im ASCII-Format enthält in HTML aus. So werden Sonderzeichen in HTML-Kürzel gewandelt.

	Two more methods for the command CALC…AS…:
	CALC [S] AS H2ASCII(S) 
	Returns the string S, containing characters as HTML-shortcuts in ASCII-format.

	CALC [S] AS A2HTML(S)
	Returns the string S, containing characters ASCII-format as a string, where international-characters are replaced by HTML-shortcuts.

07.08.2007	(9.01.12/903/GH) Erweiterung des Befehls um sieben optionale Parameter
	LIST_STR_FIND [list], 'str' {, strOp, {numPart, strDelim {, [destList] {, boolParts, strParts, strPDlim}}}}

	Wenn strOp leer ist, wird “=“ als Operator verwendet, andere mögliche Operatoren sind “>“, “<>“, “<“, “>=“, “<=“, “>>“ (like) und “<<“ (not like).

	numPart und strDelim beziehen sich auf einen Teilstring, der durch strDelim abgegrenzt werden kann.

	Wenn [destList] angegeben wird, wird das Ergebnis an diese Liste angehängt. [destList] wird NICHT bereinigt. Das Ergebnis wird einfach hinten angehängt. Wenn keine Angabe für [destList] gemacht wird, bildet der jeweils erste Treffer in der Liste das Ergebnis.

	Wenn boolParts=TRUE ist, werden nur die Teile, die in strParts angegeben sind an die Zielliste weitergegeben, wobei diese Teile wiederum mit dem Delimiter strPDelim getrennt werden.

	Beispiel 1: LIST_STR_FIND [aList],‘‘,‘<>‘,4,‘|‘,[dList],TRUE,’1,4’,’,’
	Hierbei wird in [aList] untersucht, ob der vierte durch ein Pipe-Zeichen getrennte Teil nicht leer ist. Aus allen Zeilen, in denen das zutrifft wird dann der erste und vierte Teil der Zeile aus [aList] mittels eines Kommas getrennt zusammengebaut und an [dList] angefügt.	

	Beispiel 2: LIST_STR_FIND [aList],‘Test*‘,‘>>‘,4,‘|‘,[dList]	
	Alle Zeilen, die in [aList] gefunden werden können, bei denen der vierte Teilstring der Zeile mit dem Wort “Test“ beginnt, werden an [dList] angefügt.

	Beispiel-Datei: document\examples\lists\TestListStrFind.csh

Extend for a command by seven new parameter:
	LIST_STR_FIND [list], 'str' {, strOp, {numPart, strDelim {, [destList] {, boolParts, strParts, strPDlim}}}}
If strop is empty, “=” will be used as the operator, other possible operators are “>“, “<>“, “<“, “>=“, “<=“, “>>“ (like) and “<<“ (not like).

numPart and strDelim are reducing the search to the part of the line in [list], that is separated by strDelim.

If [destList] is given, the result will be appended to this list. [destList] will not be cleared before the result is appended. If [destList] is not given, the first match of the search will be the result.

	If boolParts is TRUE, only the parts of the line in [list] will be exported to the [destList], that are defined in strParts, where all this parts are connected by using the delimiter strPDelim.

	Example 1: LIST_STR_FIND [aList],‘‘,‘<>‘,4,‘|‘,[dList],TRUE,’1,4’,’,’
	A match is, if the forth part of a string in [aList] that is seperated by the pipe-sign is not empty. From such a line the first and forth part will be connected to a result-string, using the delimiter strPDelim and appended to [dList].	

	Example 2: LIST_STR_FIND [aList],‘Test*‘,‘>>‘,4,‘|‘,[dList]	
	All lines from [aList] where the fourth part is starting with the word “Test“ will be appended to [dList].

	Example-Script: document\examples\lists\TestListStrFind.csh

07.08.2007	(9.01.11/902/DD) Neuer Befehl zum Bearbeiten von Listen und deren Strings:
	LIST_2_LIST_STR [list], [listDest], strDelim, num or [LIST_ITEM_UNDEFINED]
	Baut den Inhalt der Liste [List] mit strDelim getrennt zusammen in einen String der [listDest]. Wenn [num]= [LIST_ITEM_UNDEFINED] ist, wird an [listDest] eine Zeile angehängt, anderenfalls wird genau die angegebene Zeile gefüllt.
	
	New command to manage lists and their strings:
	LIST_2_LIST_STR [list], [listDest], strDelim, num or [LIST_ITEM_UNDEFINED]
	Implodes a [list] to a line into the destination list. The lines are separated by strDelim. If [num]= [LIST_ITEM_UNDEFINED] a new line will be appended to the destination list, otherwise exactly the given line will be redefined.

06.08.2007	(9.01.10/901/MB) Das Druckvorschaufenster ist jetzt immer breit genug für die Darstellung einer DIN A4-Seite.  

	The print-preview-window-default-width is set to fit for the display of a A4 page from now on.

03.08.2007	(9.01.09/900/DD) Der Fehler, dass in der BSD und Delphi2007-Version JPG-Dateien nicht mehr angezeigt werden konnten ist behoben.  

	Viewing a jpg-picture-file was not possible under the cara-versions compiled with BDS and Delphi2007. This error has been removed.

03.08.2007	(9.01.08/899/DD) Die Registrierung der Datei-Erweiterungen .cara, .car und .cali muss ab jetzt mit dem Easy-Setup-Programm vorgenommen werden. Dadurch kann die Engine unter Windows-Vista auch normal, d.h. nicht im Adminitrator-Modus gestartet werden. Auch die Drag- & Drop-Funktion im Docu-Manager funktioniert dann wieder normal, denn Drag- & Drop ist unter Vista nur noch bei Applikationen gleicher Sicherheitseinstufung gestattet. Das Easy-Setup-Programm wurde entsprechend erweitert. Es steht jetzt in der Version 2.1.0 bereit.  

	The registration of the file-extensions .cara, .car and .cali have to be done with the Easy-Setup-Program from now on. Therefore the engine may be started without administrator-mode under Windows-Vista. Also the drag- & drop-function within the docu-manager will work again, because under Vista only applications with the same security level may exchange data via drag- & drop. The Easy-Setup-Program has been extended and is now available in version 2.1.0.

03.08.2007	(9.01.07/898/MSch) Der aktive Reiter eines Registers kann ab jetzt farblich hervorgehoben werden. Die Farbe ist auch in den Browser- und Gridfarben des Werkzeugkastens einstellbar. Der Vorgabewert ist “rot“.  

	The active tab of a tab-register can be highlighted through a color. The color can be set in the Browser- and Grid-Colors in the Toolbox. The default value is “red”.

02.08.2007	(9.01.06/897/MSch) Im Kontext-Menü von Browsern und Grids ist ab jetzt die Option “Fixierte Spalten“ vorhanden. Damit kann man die Anzahl der Spalten, die an der linken Seite des Browsers / Grids fixiert sein sollen angeben, damit diese bei einem Scroll in horizontaler Richtung nicht verschoben werden. Dies ist eine Erweiterung der Änderung 8.06.38/682/DD vom 18.07.2005. Zusätzlich kann nun in der CSH-Syntax der Querys der Wert F“x“ für die fixierten Spalten angegeben werden, wobei x für die Anzahl der zu fixierenden Spalten steht. 

	The context-menus of browsers and grids has been extended by the option ”fixed columns“. The amount of fixed columns on the left side of the browser / grid can be easily set. This columns won’t be moved in case of a horizontal scroll. This extends change 8.06.38/682/DD from 18.07.2005. Also the csh-syntax of a query can be used to set this value, with F”x” the fixed columns can be set, where “x” is the amount of columns.

01.08.2007	(9.01.05/896/DD) Der Fehler, dass Query-Felder vom Typ Large-Integer nicht richtig an Script-Variablen übergeben wurde, ist behoben.
	
	Large-Integer query-data-fields have been evaluated wrong while passing the data through to script 
	variables. This error has been removed.

01.08.2007	(9.01.04/896/DD) Die Library MySQLDAC_Full auf den Stand 2.5.7 gebracht.
	
	The library MySQLDAC_Full has been brought to V. 2.5.7.

30.07.2007	(9.01.03/895/DK) Der Fehler 404 wird bei dem Datei-Download ab jetzt ignoriert. Dafür wurde der Befehl FILE_DOWNLOAD um einen weiteren, optionalen Parameter erweitert:
	FILE_DOWNLOAD ’strURL’, ’strFilename’ {, [boolRes]}
 	[boolRes] wird nur dann TRUE, wenn tatsächlich Daten in die Datei mit dem Namen [strFilename] geschrieben wurden.

	The error 404 will be ignored in case of a download. Therefore the command FILE_DOWNLOAD has got a new parameter: FILE_DOWNLOAD ’strURL’, ’strFilename’ {, [boolRes]}
	[boolRes] will only get TRUE, if data have been written to the file with the filename given in [strFilename].

18.07.2007	(9.01.02/894/DD) Die Druckvorschau wird ab jetzt immer so dargestellt, als wäre der Parameter Optimized TRUE übergeben worden. Man kann dies natürlich abschalten, indem man dort absichtlich FALSE einsetzt. Dadurch wird die Druckvorschau nun auch auf Windows-VISTA korrekt angezeigt.

	The print-preview window will be shown as if the parameter optimized has been set to TRUE. This can of cause be switched off, by setting this parameter to FALSE. So the preview-window will be shown correct on Windows-VISTA too.

18.07.2007	(9.01.01/893/DD) Neuer Schlüssel für die Applikations-INI-Datei MainTreeIsRight=0. Wenn dieser Schlüssel den Wert 1 hat, wird das Baum-Menü auf der rechten Seite dargestellt (wenn das Baum-Menü überhaupt verwendet wird). Dieser Schlüssel kann auch über den Werkzeugkasten gesetzt werden und wird User-Spezifisch in der Stations-INI-Datei gespeichert.

	New key for the application-INI-file MainTreeIsRight=0. If this key is set to 1, the tree-menu will be displayed on the right side of the screen. This key may also be set in the tool-box and will also be saved to the station-INI-file.

17.07.2007	(9.01.00/892/DD) Umstellung der Entwicklungsumgebung auf Delphi 2007. Folgende Librarys wurden dabei ebenfalls auf den neuesten Stand gebracht: MySQLDAC_Full auf den Stand 2.5.6, ZipTV auf den Stand 07,  MiTeC System Information Component Suite auf den Stand 10.07, ImageEn auf den Stand 2.3.0.
	
	The developing software has been upgraded to Delphi 2007. The following librarys have been 
	upgraded too: MySQLDAC_Full to V. 2.5.6, ZipTV to V. 07,  MiTeC System Information Component 
	Suite to V. 10.07, ImageEn to V. 2.3.0.

26.06.2007	(9.00.43/891/DD) Neue globale Variable vom Typ VAR_BOOL [MASK_CUT_WIN_MESSAGES].
	Wenn diese Variable TRUE ist, werden alle Dialogmasken so geöffnet, dass die mit Änderung 9.00.13/866/DD vom 24.04.2007 eingeführte Möglichkeit, alle Windows-Messages abzufangen, eingeschaltet ist. Anderenfalls (default) arbeitet die Engine so, wie bis dahin gewohnt. Dadurch werden viele Tastatur-Ereignisse in Masken ohne Navigations-Dialog-Element besser abgearbeitet. Diese Option kann während der Laufzeit ein und ausgeschaltet werden. Eine Maske erhält die gerade aktuelle Option so, wie dies zum Zeitpunkt der Masken-Variablen-Anmeldung ist. 
	
	New global variable from type VAR_BOOL [MASK_CUT_WIN_MESSAGES]. If this variable is true, all dialog-masks will be opened as it was introduced with change 9.00.13/866/DD from 24.04.2007, as all windows-messages will be absorbed. Otherwise (default) the engine works like the user were used to up to that day. With this change many keyboard-events from masks without a navigate dialog-element will be executed much better. This option may be switched on and off, while runtime. A masks always will have the option, which was chosen when the mask-variable has been defined.

26.06.2007	(9.00.42/890/DD) Ab jetzt können auch Icons mit einer Bitmap-Größe von 24x24 Pixel verwendet werden. Dazu wurde der Applikations-INI-Datei-Schlüsel aus der Sektion [Config] „IconStyle“ um zwei Optionen erweitert:
	1 = classic  style, gray    pic in front
	2 = classic  style, colored pic in front
	3 = 32 pixel style, gray    pic in front
	4 = 32 pixel style, colored pic in front
	5 = 24 pixel style, gray    pic in front
	6 = 24 pixel style, colored pic in front

	Icons with bitmap-sizes of 24x24 pixel may be used from now on. Therefore the application-INI-file-key “IconStyle” from section [Config] may hold one of the two new values:.
	1 = classic  style, gray    pic in front
	2 = classic  style, colored pic in front
	3 = 32 pixel style, gray    pic in front
	4 = 32 pixel style, colored pic in front
	5 = 24 pixel style, gray    pic in front
	6 = 24 pixel style, colored pic in front

23.06.2007	(9.00.41/889/DD) Bei Eingabemasken werden ab jetzt auch Tastatur-Ereignisse abgearbeitet, wenn kein editierbares Eingabefeld den Focus hat.

	In dialog-masks the keyboard-events will be processed, even if no editable entryfield has the focus.

22.06.2007	(9.00.40/888/DD) Das Editier-Feld in Browsern wurde bei veränderter PanelHeight (wegen größerer Icons) nicht korrekt platziert. Der Fehler wurde behoben.

	The edit-field within browsers has been positioned wrong in case of bigger icons. This error has been removed.

13.06.2007	(9.00.39/887/DD) Neuer Schlüssel für die Applikations-INI-Datei SaveWinHeightAndWidth=0
	Soll bei Eingabemasken nicht nur die X und Y-Position der oberen rechten Ecke gespeichert und beim erneuten Öffnen dann auch wieder geladen werden, sondern auch die eingestellte Höhe und Breite? Wenn hier eine 0 gesetzt ist, errechnet das System automatisch die sinnvolle Größe des Fensters, anderenfalls wird einfach die letzte Einstellung verwendet.
	Diese neue Option kann auch im Werkzeugkasten eingestellt werden und wird als User bzw. Stations-spezifische Einstellung behandelt.

	New key for the application-INI-file: SaveWinHeightAndWidth=0.
	Should not only the X and Y-position of a dialog-mask be saved and loaded before reopening, but also the height and width of the window? If a o has been set here, the system will calculate a useful width and height automatically, otherwise simply the last user-settings will be restored.
	This new option is also available in the toolbox and will be handled as an user or station-specific setting.

05.06.2007	(9.00.38/886/DD) Neuer Befehl MANDANT numOpt, [numIdx], [strName], [floatID]
	numOpt kann folgende Wert annehmen:
	[MANDANT_OPT_CHECK_IDX]		Prüft, ob der Wert, der in [numIdx] übergeben wurde, auf 
			einen gültigen Mandanten verweist. Wenn nicht, wird 
			[numIdx] mit 0 , [strName] mit ‘‘ und [floatID] mit 0.0
			zurückgegeben. Wenn ja, werden die übergebenen 
			Variablen mit den in der INI-Datei angegebenen werten
			Gefüllt und [numIdx] bleibt unverändert.

	[MANDANT_OPT_CHECK_NAME]		Prüft, ob der Wert, der in [strName] übergeben wurde, 
			auf einen gültigen Mandanten verweist. Wenn nicht, wird 
			[strName] mit ‘‘, [numIdx] mit 0 und [floatID] mit 0.0
			zurückgegeben. Wenn ja, werden die übergebenen 
			Variablen mit den in der INI-Datei angegebenen werten
			Gefüllt und [strName] bleibt unverändert.

	[MANDANT_OPT_CHECK_ID] 		Prüft, ob der Wert, der in [floatID] übergeben wurde, 
			auf einen gültigen Mandanten verweist. Wenn nicht, wird 
			[floatID] mit 0.0, [strName] mit ‘‘ und [numIdx] mit 0
			zurückgegeben. Wenn ja, werden die übergebenen 
			Variablen mit den in der INI-Datei angegebenen werten
			Gefüllt und [floatID] bleibt unverändert.

	New command MANDANT numOpt, [numIdx], [strName], [floatID]
	numOpt may have one of the following values:
	[MANDANT_OPT_CHECK_IDX]		Checks, if the value given by [numIdx] is pointing to a 
			valid mandant. If not, [numIdx] will be returned as 0,
			[strName] as ‘‘ and [floatID] as 0.0 – otherwise the 
			variables will be filled with the values of the INI-file and 
			[numIdx] will be returned unchanged.

	[MANDANT_OPT_CHECK_NAME]		Checks, if the value given by [strName] is pointing to a 
			valid mandant. If not, [strName] will be returned as ‘’,
			[numIdx] as 0 and [floatID] as 0.0 – otherwise the 
			variables will be filled with the values of the INI-file and 
			[strName] will be returned unchanged.

	[MANDANT_OPT_CHECK_ID] 		Checks, if the value given by [floatID] is pointing to a 
			valid mandant. If not, [floatID] will be returned as 0.0,
			[numIdx] as 0 and [strName] as ‘’ – otherwise the 
			variables will be filled with the values of the INI-file and 
			[floatID] will be returned unchanged.

05.06.2007	(9.00.37/885/DD) Neue globale Variable vom Typ VAR_FLOAT [ACT_MANDANT_ID].
	In der Applikations-INI-Datei kann man ab jetzt in der Sektion [Mandant] nicht nur Mandanten-Namen angeben, sondern durch ein Komma getrennt auch ein Passenden RecordID.
	Beispiel:
		[Mandant]
		1=Zentrale,7829465739984
		2=Filiale,7829467346675
	
	New global variable of type VAR_FLOAT [ACT_MANDANT_ID]. Within the application-INI-file, section [Mandant] not only the mandant-name may be given, also, separated by a colon, a recorded can be defined. 
	E.g.:
		[Mandant]
		1=Zentrale,7829465739984
		2=Filiale,7829467346675

29.05.2007	(9.00.36/884/MB) Beim Öffnen von Masken werden Memo-Dialog-Elemente nicht mehr „modified“ gesetzt, dadurch wird beim Schließen der Maske nicht mehr unnötig abgefragt ob man eventuell das Speichern vergessen hat.

	On opening a dialog-mask, memo-dialog-elements will not be set to modified. So the user will not unnecessarily be asked if a save should be done.

29.05.2007	(9.00.35/883/DD) Neuer Schlüssel für die Appikations-INI-Datei (der auch in die Stations-INI-Datei geschrieben wird): TreeMenuWidth=210 (default) = Breite des Baum-Menüs auf der linken Seite des Hauptfensters. Beim Schließen der Anwendung wird die aktuelle Einstellung des Users mit gesichert und beim nächsten Start wiederhergestellt.

	New key for the application-INI-file (that also will be saved to the station-INI-file): TreeMenuWidth=210 (default). This defines the width of the tree-menu on the left side of the main-window. On closing the application, the actual setting of the user will be saved and restored with the next start.

29.05.2007	(9.00.34/882/DD) Browser-Fenster wird beim ersten Öffnen ein Pixel kleiner und nicht mehr ein Pixel größer, da bei maximierten fenstern dann keine Neuberechnung der Schriftgröße stattfand.

	Browser-windows will be resized by one pixel smaller when opened first, not one pixel bigger (as it was up to now), because the resize failed on maximized windows. The resize is needed to recalculate the font-size of the browser lines.

29.05.2007	(9.00.33/881/DD) Die Adresszeile im Hauptfenster wird ab jetzt bezüglich ihrer Höhe mittig im Top-Panel angeordnet. Da die Panel-Height (vor allem bei großen Buttons) geändert werden kann, und die Adresszeile sonst immer am oberen Rand des Panels angezeigt würde.

	The address-input on top of the main-application-window will be displayed concentric regarding its height within the top-panel. The top-panel height can be configured (especially for big buttons) and the address-input normally was placed at the upper border of the panel. This was not “looking good”.

29.05.2007	(9.00.32/880/DD) ADO-Database-Fehler werden ab jetzt angezeigt, ADO-Querys aus dem freien SQL-Interface ebenfalls korrekt auf dem Monitor ausgegeben.

	ADO-Database-Errors and ADO-Querys from out oft he free SQL-Interface will be displayed correct in the monitor-window from now on.

29.05.2007	(9.00.31/879/DD) Ab jetzt können die Werte von String-Variablen mit dem Format $A1B1 oder B283C2h mit dem CALC Befehl VAL() an Variablen vom Typ VAR_NUM übergeben werden und werden dabei direkt von hexadezimal nach dezimal berechnet.

	The values of STRING-Variables with the format $A1B1 or e.g. B283C2h can be transferred to a variable of type VAR_NUM with the CALC-command VAL() and will be changed from hex to dec.

21.05.2007	(9.00.30/878/MB) Wenn aus einer Maske ein INSERT vorgenommen wird und dies erfolglos war, wird bis zu max. 5 Mal versucht, dieses Insert auszuführen. Zwischen den einzelnen Speicherversuchen warden 300ms lange Pausen gemacht.

	If an INSERT is made from out of a dialog-mask, and the insert fails, the mask will retry up to max. 5 times to finish saving. Between each save-attempt a 300ms delay will be made.

11.05.2007	(9.00.29/877/DD) Im Applikations-INI-Datei-Schlüssel DataAlias= können ab jetzt auch Path-Konstaten engesetzt werden. Diese werden zur Laufzeit durch die realen Pfade ersetzt. 
	Beispiel (ADO):
	DataAlias=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DATA_PATH\IDEAL.mdb;Persist Security Info=False
	daraus wird dann z.B.
	DataAlias=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\csh\ideal\dic\IDEAL.mdb;Persist Security Info=False
	Folgende Pfad-Konstanten sind erlaubt:
	Text-Konstante			Variable in CARA
	___________________________________________
	APPLICATION_PATH		([PROG_PATH])
	DATA_PATH			([DATA_PATH])
	SETDOC_PATH			([MASKS_PATH])
	PICTURE_PATH			([PICTURE_PATH])
	DOCUMENT_PATH		([DOCUMENT_PATH])
	PICTURE_PATH			([PICTURE_PATH])
	SQL_PATH			([SQL_PATH])
	SPECIAL_PATH			([SPECIAL_PATH])
	SCRIPT_PATH			([SCRIPT_PATH])
	HELP_PATH			([HELP_PATH])
	USER_TEMP_PATH		([TEMP_FILES_PATH])

	Inside the Applikcation-INI-File-Key DataAlias= path-constants can be used from now on. They will be replaced while runtime.
	Example (ADO):
	DataAlias=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DATA_PATH\IDEAL.mdb;Persist Security Info=False
	will be transferred to e.g.:
	DataAlias=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\csh\ideal\dic\IDEAL.mdb;Persist Security Info=False
	The following path-constants are allowed:
	Text-constant			variable inside CARA
	___________________________________________
	APPLICATION_PATH		([PROG_PATH])
	DATA_PATH			([DATA_PATH])
	SETDOC_PATH			([MASKS_PATH])
	PICTURE_PATH			([PICTURE_PATH])
	DOCUMENT_PATH		([DOCUMENT_PATH])
	PICTURE_PATH			([PICTURE_PATH])
	SQL_PATH			([SQL_PATH])
	SPECIAL_PATH			([SPECIAL_PATH])
	SCRIPT_PATH			([SCRIPT_PATH])
	HELP_PATH			([HELP_PATH])
	USER_TEMP_PATH		([TEMP_FILES_PATH])

04.05.2007	(9.00.28/876/DD) Neue Masken-Variable vom Typ VAR_LIST [mask!MASK_NAVIGATE_TAGS].
	Dies erweitert die Änderung 9.00.10/863/JB vom 10.04.2007. Alle Meta-Tags mit dem Namen ‘cara‘ werden gefunden und die Werte, die im zugehörigen Schlüssel content=‘‘ untergebracht sind, werden in dieser Liste aufgeführt. Die Liste kann im MASK_HOOK_POST_NAVIGATE verwendet werden. Sie wird bei jeder Navigation komplett gelöscht. Es stehen also immer nur die Tags der letzten Navigation zur Verfügung. 
	Beispiel: Wenn z.B. folgende Seite angezeigt wird, wird lediglich das Wort “Test“ sichtbar. Falls die Scripte Test1.csh und Test2.csh verfügbar sind, werden diese in der aufgeführten Reihenfolge ausgeführt.
	
	<html>
	  <meta name='cara' content='TagNummer1'>
	  <body>
	    <meta name='cara' content='TagNummer2'>
	
	    <meta name='cara' content='Test1.csh|1|2|3|4'>
	    Hallo
	    <meta name='cara' content='Test2.csh|1|2|3|4'>
	
	    <meta name='cara' content='ForceFocus'>
	
	    <meta name='cara' content='TagNummer3'>
	  </body>
	  <meta name='cara' content='TagNummer4'>
	</html>  
	
	In der neuen Variable sind dann folgende Zeilen verfügbar:
	TagNummer1
	TagNummer2
	Test1.csh|1|2|3|4
	Test2.csh|1|2|3|4
	TagNummer3
	TagNummer4

	New mask-variable of type VAR_LIST [mask!MASK_NAVIGATE_TAGS]. This extends change 9.00.10/863/JB from 10.04.2007. All meta-tags named ‘cara’ will be found and the values given by the key content=’’ will be available in the new list. The list can be used in the MASK_HOOK_POST_NAVIGATE. It will completely cleared with each navigation. So only the tags of the last navigation will be available.
	Example: If e.g. the following page will be shown, only the word “Test” will be visible. If the scripts Test1.csh and Test2.csh are available, they will be executed in the given order.
	
	<html>
	  <meta name='cara' content='TagNummer1'>
	  <body>
	    <meta name='cara' content='TagNummer2'>
	
	    <meta name='cara' content='Test1.csh|1|2|3|4'>
	    Hallo
	    <meta name='cara' content='Test2.csh|1|2|3|4'>
	
	    <meta name='cara' content='ForceFocus'>
	
	    <meta name='cara' content='TagNummer3'>
	  </body>
	  <meta name='cara' content='TagNummer4'>
	</html>  
	
	The new variable will then hold the following lines:
	TagNummer1
	TagNummer2
	Test1.csh|1|2|3|4
	Test2.csh|1|2|3|4
	TagNummer3
	TagNummer4

02.05.2007	(9.00.27/875/DD) Neuer Befehl SCREEN_SCALE_EXEC berechnet die Bildschirmauflösung neu und schreibt die Werte in die Stations-INI-Datei.

	New command SCREEN_SCALE_EXEC recalculates the screen-resolution-values and writes them into the station-INI-file.

02.05.2007	(9.00.26/874/DD) Der aus dem Werkzeugkasten aufrufbare Dialog für die Bildschirm-Auflösung kann jetzt in den Feldern “Rand links“ und “Rand oben“ negative Werte annehmen.

	The dialog for the screen-resolution-settings, that can be started from out of the toolbox, may hold negative values in the fields “margin left” and “margin right” from now on.

02.05.2007	(9.00.25/873/DD) Erweiterung zur Änderung 9.00.21/869/DD vom 26.04.2007: Es gibt drei neue globale Script-Variablen:
	SCRIPT_BOOL	[SCREEN_MULTI]		Wird die Anwendung auf einem erweiterten 
							Bildschirm ausgeführt.
	SCRIPT_NUM	[SCREEN_LEFT_ADD]		Wenn auf einem erweiterten Bildschirm 
							gearbeitet wird: Um wieviel Punkte ist der
							Bildschirm nach links verschoben?
	SCRIPT_NUM	[SCREEN_TOP_ADD]		Wenn auf einem erweiterten Bildschirm 
							gearbeitet wird: Um wieviel Punkte ist der
							Bildschirm nach oben verschoben?

	Three new global script variables are available, extending change 9.00.21/869/DD from 26.04.2007:
	SCRIPT_BOOL	[SCREEN_MULTI]		Is the application running on an extended 
							screen? 
	SCRIPT_NUM	[SCREEN_LEFT_ADD]		If the application is running on an extended 
							screen: How many pixel is the screen moved to 
							the left?
	SCRIPT_NUM	[SCREEN_TOP_ADD]		If the application is running on an extended 
							screen: How many pixel is the screen moved to 
							the top?

01.05.2007	(9.00.24/872/DD) Neuer Schlüssel für die INI-Applikations-Datei, Sektion [Config]: FirstScript= hier kann man einen Script-Namen hinterlegen. Das Script wird am Ende der Initialisierungsphase ausgeführt.

	New key for the application-INI-file, section [Config]: FirstScript= a script name can be set here. The script will be executed at the end of the initialization-phase.

30.04.2007	(9.00.23/871/DD) Während eines Masken-Hooks wird die Icon-Leiste stets deaktiviert. Das führt zu einem Neuzeichnen der Maske. Da es bei einem MASK_HOOK_TIMER vorkommen kann, dass man diesen jede Sekunde mehrmalig feuern lässt, dadurch flackert der Mouse-Cursor ständig. Die Icon-Leiste wird ab jetzt nicht mehr während des Timer-Ereignisses deaktiviert.

	While executing any mask-hook the icon-panel is disabled. This forces a redraw of the mask. In case of a MASK_HOOK_TIMER the event may fire more than once a second - this lets the mouse-cursor flicker. The icon-panel will not be disabled while timer-hooks from now on.

26.04.2007	(9.00.22/870/DD) Das Feld für die „EingabeMaske“ in einer Masken-Definitions-Datei für das Dialogelement NAVIGATE kann die Angabe der URL enthalten. Die URL kann ab jetzt auch Script-Variablen enthalten, die vor der Weitergabe an das Dialogelement durch ihren Inhalt ersetzt werden.

	The field for the imput-mask in a mask-definition-file can hold the URL of a navigate dialogelement. The URL may contain script variables that will be replaced by their contents before the URL is passed through to the navigate-dialog-element.

26.04.2007	(9.00.21/869/DD) Es gibt vier neue globale Script-Variablen:
	SCRIPT_FLOAT	[SCREEN_SCALE]		Welcher Wert wurde bei der Auflösung im 
							Werkzeugkasten eingestellt?
	SCRIPT_FLOAT	[SCREEN_SCALE_HORI]		Welcher Wert wurde bei der Horizontal-
							Auflösung im Werkzeugkasten eingestellt?
	SCRIPT_NUM	[SCREE_WIDTH]			Wieviele Pixel ist der Bildschirm breit.
	SCRIPT_NUM	[SCREE_HEIGHT]		Wieviele Pixel ist der Bildschirm hoch.

	Four new global script variables are available:
	SCRIPT_FLOAT	[SCREEN_SCALE]		The value set in the display-settings of the tool-
							box for the scale.
	SCRIPT_FLOAT	[SCREEN_SCALE_HORI]		The value set in the display-settings of the tool-
							box for the horizontal-scale.
	SCRIPT_NUM	[SCREE_WIDTH]			Pixel-width of the screen.
	SCRIPT_NUM	[SCREE_HEIGHT]		Pixel-height of the screen..

26.04.2007	(9.00.20/868/DD) Die CARA-Engine kann nun komplett 32x32bit große Bitmaps als Icons verwenden.

	The CARA-Engine can completely process 32x32bit sized bitmaps as icons from now on.

26.04.2007	(9.00.14/867/DD) Neue Konstante [WIN_VISTA], die ab jetzt auch mittels des Befehls GET_EXTERN_DEVICE zurückgegeben wird, wenn man den Optionalen Parameter [sys] setzten lässt und auf einem Windows-Vista-System arbeitet. Siehe Änderung 8.02.04/573/HB vom 25.03.2004.

	New constant [WIN_VISTA], it will returned, by calling the command GET_EXTERN_DEVICE, retrieving the optional parameter [Sys] and is running on a Windows-Vista system. See change 8.02.04/573/HB from 25.03.2004.

24.04.2007	(9.00.13/866/DD) Jedes Masken-Fenster einer CARA-Applikation beherbergt ab jetzt ein verstecktes Fenster, das alle Windows-Messages verarbeitet. Damit ist das Ereignis-Handling zwischen normalen Dialogelementen und ActiveX-Dialogelementen (wie z.B. ein WebBrowser) besser geregelt.

	Each mask-window of a cara-application holds a hidden window that handles all windows-messages from now on. This improves the event-handling between normal and active-dialogelements (e.g. a web-browser). 

24.04.2007	(9.00.12/865/DD) Wenn der INI-Schlüssel UseDatabase = 0 gesetzt wurde, wird ab jetzt auch nicht mehr versucht die Termine beim Programmstart aus der Datenbank zu lesen.

	If the INI-file-key UseDatabase is set to 0, there will be no attempt to read the dates at program-start anymore. 

24.04.2007	(9.00.11/864/DD) Icons mit der Größe 32x32 Bit können ab jetzt die gleichen Namen haben, wie die 16x16 Bit großen Standard-Bitmaps, jedoch mit dem Zusatz „32“ im Dateinamen. Z.B. Calend32.bmp und Calend32g.bmp.

	Icons with size 32x32 bit can have the same names as the 16x16 bit standard-bitmaps, but with a “32” within the filename. E.g. Calend32.bmp and Calend32g.bmp.

10.04.2007	(9.00.10/863/JB) Wenn ein NAVIGATE-Dialog-Element eine HTML-Seite geöffnet hat, die ein Meta-Tag (gleichgültig wo es innerhalb der Seite befindet) mit folgendem Muster enthält, wird das darin angegebene Script ausgeführt:
	<meta name='cara' content='scriptname.csh|parameter1|… ...|parameter32'>

	If a NAVIGATE-dialog-element has opened a HTML-page, that contains a meta-tag (no matter where it is located within the page) of the following type, the given script will be executed:
	<meta name='cara' content='scriptname.csh|parameter1|… ...|parameter32'>

13.03.2007	(9.00.09/862/VH) Neuer Schlüssel für die Applikations-INI-Datei in der Sektion [Config]: TwoDigitsDateBorder=1920 (Default). Über welchem Wert gehört ein zweistelliges Jahr dem hier genannten Jahrhundert an. In diesem Fall wird allen zweistelligen Jahren über 20 eine 19 vorangestellt.

	New key for the application-INI-file, section [config]: TwoDigitsDateBorder=1920 (Default). If the value of a two digit year is higher the given value, it remains to the given century. In this case, all years higher than 20 will get a leading 19.

09.03.2007	(9.00.08/861/DD) Neuer Befehl zum Bearbeiten von Listen und deren Strings:
	LIST_STR_PART [list], [strRes], numPart, strDelim {,num or [LIST_ITEM_ACTUAL]}
	Gibt den numPart-en Teilstring eines Strings der [list] in [strRes] zurück. Die Funktion arbeitet genau wie CALC [aStr] AS PART(…) sie ist jedoch auch auf extrem lange Strings der Liste anwendbar.

	New command to manage lists and their strings:
	LIST_STR_PART [list], [strRes], numPart, strDelim {,num or [LIST_ITEM_ACTUAL]}
	Returns the numPart-th string-part of a string of the [list] into [strRes]. The function works exactly like CALC [aStr] AS PART(…), but it also works for extreme long strings in the list.

09.03.2007	(9.00.07/860/DD) Neuer Befehl zum Bearbeiten von Listen und deren Strings:
	LIST_2_LIST [listSource], [listDest], boolClearDestBefore, numStartAtSourceLine
	Kopiert die Liste [listSource] in die Liste [listDest]. Wenn die boolean Variable boolClearDestBefore TRUE ist, wird die Zielliste vorher gesäubert. Mit numStartAtSourceLine kann man angeben, wo in der Quellliste der Kopierprozess gestartet werden soll.
	
	New command to manage lists and their strings:
	LIST_2_LIST [listSource], [listDest], boolClearDestBefore, numStartAtSourceLine
	Copies the contence of [listSource] into the [listDest]. If boolClearDestBefore is TRUE, the destination-list will be cleared before copying. The copy-process will start from numStartAtSourceLine.

09.03.2007	(9.00.06/859/DD) Neuer Befehl zum Bearbeiten von Listen und deren Strings:
	LIST_STR_COPY [list], [strRes], numPos, numLen {,num or [LIST_ITEM_ACTUAL]}
	Kopiert einen Teilstring aus seinem Listen-String.Der String der aktuellen oder mit num angegebenen Zeile wird vom Zeichen numPos an mit maximal numLen Zeichen in die Variable strRes kopiert.
	
	New command to manage lists and their strings:
	LIST_STR_COPY [list], [strRes], numPos, numLen {,num or [LIST_ITEM_ACTUAL]}
	Copies a part of a list-string. The string of the actual line or the line defined by num will be copied from character numPos with maximal numLen into the variable strRes.

09.03.2007	(9.00.05/858/DD) Neuer Befehl zum Bearbeiten von Listen und deren Strings:
	LIST_STR_2_LIST [list], [listDest], strDelim, numLines {,num or [LIST_ITEM_ACTUAL]}
	Zerlegt einen String der [list] und übergibt jeden Teil an eine Zielliste. Die Zeichen bzw. das Zeichen, in strDelim, dienen als Separator für die Teile. Wenn numLines > 0 ist, werden in der Ergebnisliste auf jeden Fall numLines zurückgegeben, auch wenn in dem zu untersuchenden Teilstring nicht genügend Elemente gefunden wurden. Die zusätzlich „angebauten“ Strings sind dann leer.
	
	New command to manage lists and their strings:
	LIST_STR_2_LIST [list], [listDest], strDelim, numLines {,num or [LIST_ITEM_ACTUAL]}
	Explodes a string from the [list] in to a destination list. The sign / sings in strDelim are used to recognize the parts of the string. If numLines > 0, the result list will at last have numLines, even if there are not enough part in the source-string. In case, that strings have to be added, they will be empty.

09.03.2007	(9.00.04/857/DD) Neuer Befehl zum Bearbeiten von Listen und deren Strings:
	LIST_STR_LEN [list],[numLen]{,num or [LIST_ITEM_ACTUAL]}
	Gibt in [numLen] die Länge eines Strings der [list] zurück.
	
	New command to manage lists and their strings:
	LIST_STR_LEN [list],[numLen]{,num or [LIST_ITEM_ACTUAL]}
	Returns in [numLen] the length oft a string from [list].

26.02.2007	(9.00.03/856/DD) In der ADO-Version funktionierte seit der Umstellung auf BDS das SQL-Interface nicht mehr. Der Fehler ist behoben.
	
	Since the update to BSD the SQL-interface of the ADO-Version wasn’t working. This error has been removed.

11.02.2007	(9.00.02/855/DD) Die Darstellung von Zeiten in Browsern und Grids schlug unter der Entwicklung von BDS2006 fehl. Der Fehler ist behoben.
	
	The display of time-fields in browser and grids failed since BDS2006 was used. This error has been removed.

25.01.2007	(8.12.17 & 9.00.01/854/HB) Wenn ein GET_XXXX Dialog aufgerufen wurde und dazu ein Button-Dialog-Element mit dem Auslösen der ENTER Taste verwandt wurde, schloss sich der Dialog sofort. Der Fehler wurde behoben.
	
	If a button-dialog-element was executed by a stroke of the return-key, and a GET_XXXX dialog was called, the dialog immediately was closed. This error has been removed.

05.01.2007	(8.12.16/853/DD) Der Header eines GET_DECISION Fensters wurde bei der Verwendung von Sprach-Dateien nicht korrekt gelesen und angezeigt. Der Fehler wurde behoben.
	
	The header of a GET_DECISION window was not displayed correct when a language file was used. This error has been removed.

05.01.2007	(8.12.15/852/DD) Im Falle einer ODA-Version der CARA-Engine, wird beim Starten des Systems der Schlüssel “DatePictureSelectRes“ aus den Werten der Registry zusammengesetzt, wenn dem Schlüssel in der INI-Datei kein Wert zugewiesen wurde.
	
	In case of a ODA-version of the CARA-engine, the key “DatePictureSelectRes” will be set on startup, using the registry settings, if the key has not been set in the INI-file.

05.01.2007	(8.12.14/851/DD) Neuer Schlüssel für die Applikations-INI-Datei in der Sektion [Config] ShowLanguageMsgNumbers=0. Wenn dieser Schlüssel auf 1 gesetzt wurde, werden, wenn eine Sprach-Datei eingesetzt wird, die Nachrichten-Nummern bei MESSAGES mit angezeigt. Bei dem Wert 2 werden auch alle anderen Nachrichten (Masken-Label, Query-Header etc.) mit vorangestellter Nummer angezeigt.
	
	New key for the application-INI-file, section [Config]: ShowLanguageMsgNumbers=0. If this key is set to 1, and a language file is in use,  the message-IDs of MESSAGES will be shown. On value 2 all messages (mask-labels, query-headers etc.) will be shown with the message-ID ahead.

04.01.2007	(8.12.13/850/DD) Die globalen Werte LANGUAGE_ID und LANGUAGE_ID_LAST sind ab jetzt keine Konstanten mehr, sondern Variablen. 
	
	The global values LANGUAGE_ID and LANGUAGE_ID_LAST are no longer constants but variables.

19.12.2006	(8.12.12/849/DD) Umstellung und Erweiterung auf die neue OFCK 8.0 von Syska. 
	
	Implementation and enhancement for Syska OFCK 8.0. 

19.12.2006	(8.12.11/848/DD) Beim Umstellen der Mehrwertsteuer ist aufgefallen, dass man nicht in der Lage war, die Version der CARA-Engine aus dem Programm heraus abzufragen. Deswegen gibt es ab jetzt eine neue globale System-Variable [CARA_VERSION], die die Version der CARA-Engine anzeigt. 
	
	New global system variable [CARA_VERSION], that shows the version of the actual running CARA-engine. 

14.12.2006	(8.12.10/847/DD) Wenn in den Desktop-Einstellungen des Windows-Systems des Benutzers „große Schriften“ gewählt waren, wurden die Masken-Schriften nicht genügend klein berechnet. Der Fehler ist behoben.
	
	If “big Font” were selected in the desktop-settings of the users windows-system, the font-sizes of the mask-dialogs haven’t been calculated small enough. This error has been removed.

12.12.2006	(8.12.09/846/DD) Neuer Befehl 
	GET_FONT [boolRes], [strFontSettings = Fontname|FontSize|Charset|Color|Style], 'strHeader'.
	Damit kann wird dem User ein Dialog-Fenster (mit der Überschrift ’strHeader’) zur Auswahl eines Fonts angeboten.  
	Der String [strFontSettings] kann mit Vorgaben gefüllt werden. Wenn [boolRes]=TRUE ist, enthält dieser String anschließend das Ergebnis der gewählten Einstellungen, die aus fünf Teilen bestehen:
	FontName	Name des gewählten Fonts
	FontSize		Schriftgröße   
	CharSet		ANSI_CHARSET
			SYMBOL_CHARSET
			SHIFTJIS_CHARSET
			HANGEUL_CHARSET
			GB2312_CHARSET
			CHINESEBIG5_CHARSET
			OEM_CHARSET
			JOHAB_CHARSET
			HEBREW_CHARSET
			ARABIC_CHARSET 
			GREEK_CHARSET
			TURKISH_CHARSET
			VIETNAMESE_CHARSET
			THAI_CHARSET
			EASTEUROPE_CHARSET
			RUSSIAN_CHARSET
			MAC_CHARSET
			BALTIC_CHARSET
	Color		Farbwert, der entweder den hexadezimalen Wert der Farbe enthält (mit einem $ an 
			der ersten Stelle) oder den Namen einer der folgenden 16 Standardfarben 
			MAROON
			GREEN
			OLIVE
			NAVY	
			PURPLE
			TEAL
			GRAY
			SILVER
			RED
			LIME	
			BLUE
			FUCHSIA
			AQUA
			YELLOW
			WHITE
			BLACK
	Style 		Ist eine numerischer Wert, eine Binärflagge, die sich aus folgenden Werten 
			Zusammensetzten kann:
			FONT_STYLE_BOLD
			FONT_STYLE_ITALIC
			FONT_STYLE_STRIKEOUT
			FONT_STYLE_UNDERLINE			

	New command:
	GET_FONT [boolRes], [strFontSettings = Fontname|FontSize|Charset|Color|Style], 'strHeader'.
	A dialog to choose fontsettings can be shown to the user (with the caption ’strHeader’).  
	The string [strFontSettings] can be filled with defaults. If [boolRes] is returned TRUE, this string contains afterwards the result of the settings, consisting out of 5 parts:
	FontName	Name of the font
	FontSize		font size   
	CharSet		ANSI_CHARSET
			SYMBOL_CHARSET
			SHIFTJIS_CHARSET
			HANGEUL_CHARSET
			GB2312_CHARSET
			CHINESEBIG5_CHARSET
			OEM_CHARSET
			JOHAB_CHARSET
			HEBREW_CHARSET
			ARABIC_CHARSET 
			GREEK_CHARSET
			TURKISH_CHARSET
			VIETNAMESE_CHARSET
			THAI_CHARSET
			EASTEUROPE_CHARSET
			RUSSIAN_CHARSET
			MAC_CHARSET
			BALTIC_CHARSET
	Color		color-value, either as a hex value (with a leading $) or the name of one of the 
			following 16 standard colors
			MAROON
			GREEN
			OLIVE
			NAVY	
			PURPLE
			TEAL
			GRAY
			SILVER
			RED
			LIME	
			BLUE
			FUCHSIA
			AQUA
			YELLOW
			WHITE
			BLACK
	Style 		Is a binary flag that may result out of the following flags:
			FONT_STYLE_BOLD
			FONT_STYLE_ITALIC
			FONT_STYLE_STRIKEOUT
			FONT_STYLE_UNDERLINE			

10.12.2006	(8.12.08/845/DD) Von nun an kann man Dateien direkt vom Windows-Explorer auf einen Dokumenten-Manager-Ordner ziehen. Es wird dann pro Datei ein Eintrag in den Ordner erstellt. Ein und dieselbe Datei kann nicht mehr als einmal in den Ordner gezogen werden.
	
	Files can be dragged from out of the Windows-Explorer and dropped on a document-manager-folder. For each file an entry will be created in the folder. The same file can not be dropped more than once in each folder.

10.12.2006	(8.12.07/844/DD) Zeitfelder vom Typ “DateTime“ wurden in Browser und Grids nicht mehr korrekt dargestellt. Dieser Fehler wurde behoben.
	
	Timefields of type “DateTime” haven’t been displayed well in browser and grids. This error has been removed.

05.12.2006	(8.12.06/843/DD) Neue Masken-Variable vom Typ VAR_STR [mask!MASK_ACT_FIELD_VALUE], die den aktuellen Inhalt des aktuellen Feldes hat. Bei Memo-Feldern ist dies die erste Zeile und bei LIST_TEXT-Feldern ist es der Wert, der in dessen Eingabefeld aktuell zu sehen ist (auch wenn der Wert kein Teil der Liste selber ist). Bei BUTTON-Feldern werden die Anzeige-Texte an diese Variable weitergegeben.
	
	New mask-variable of type VAR_STR [mask!MASK_ACT_FIELD_VALUE]: holds the actual value of the actual mask-field. In case of a memo-field, it holds the first line of the memo, in case of a LIST_TEXT-field, the value of the input-field will be available (even then, when the input-value is not part of the list). In case of buttons, it holds the caption of the button.

05.12.2006	(8.12.05/842/DD) Der SQL-Daten-Feld-Typ “bigint“ wird ab jetzt korrekt interpretiert. Er wird intern als “largeint“ verwaltet. Entsprechend wurde die Feldtypen-Nummer für die Befehle QUERY_DESCR_TOP und QUERY_DESCR_NEXT so erweitert, dass Feld-Typ-Nummer 18 = largeint ist.
	
	The SQL-data-field-type “bigint” will be interpreted correctly from now on. Internally it will be dealt as “largeint”. Also the field-type-number of the commands QUERY_DESCR_TOP and QUERY_DESCR_NEXT have been enhanced: field-type-no. 18 = “largeint”.

 25.11.2006	(8.12.04/841/DD) Wenn eine Starting-With-Anweisung mittels des Befehls QUERY_ADD_STRING hinzugefügt wird, bleiben die durch CSH-Syntax angegebenen Formatierungsanweisungen erhalten.
	
	If a starting-with-statement has been added to a query by the command QUERY_ADD_STRING, the formattings, given in CSH-syntax will not be destroyed.

20.11.2006	 (8.12.03/840/DD) Neuer Schlüssel für die Applikations-INI-Datei: 
	StationIniFileAsText=0 (default) oder 1.
	Wenn dieser Schlüssel auf TRUE (1) gesetzt wurde, wird die Stations-INI-Datei als Textdatei 
	gespeichert (Änderung 8.11.26/807/DD vom 3.08.2006), anderenfalls wird sie als INI-Datei mithilfe der 
	Systemroutinen von Windows geschrieben. Der Unterschied ist, dass im letzten Fall auch Änderungen, 
	die seitens der Applikation in die Stations-INI-Datei geschrieben wurden, erhalten bleiben. Im Falle der 
	Textdatei wird die Stations-INI-Datei immer komplett neu geschrieben und die Sektionen, die eventuell 
	seitens der Applikation darin enthalten sind, werden dann vernichtet.
	
	New key fort he application-INI-file: StationIniFileAsText=0 (default) or 1.
	If this key is set to true (1), the Station-INI-File will be written as a text-file (change 8.11.26/807/DD from 3.08.2006), otherwise the file will be written by using the windows system routines. The difference is, that in this case also sections made by the application won’t be overwritten. If the station-INI-file will be written as a text-file, it will completely be rewritten and all sections made by the application will be destroyed. 

14.11.2006	(8.12.02/839/DD) Wenn in einer Maske die Option FORCE_FILTER gesetzt wurde und der User, nachdem ein Datensatz geladen wurde, erneut eine Suche auslöst, wird der Datensatz, so wie normalerweise auch, einfach erneut geladen.
	
	If the option FORCE_FILTER has been set to a mask, and a user starts a new search, after a record has already been loaded, the record will be reloaded as usual.

 14.11.2006	(8.12.01/838/DD) Das Update der Source-Bibliothek “MySQLDAC_Full 2.5.5 (14. November 2006)”, die für alle MySQL-Zugriffe zuständig ist, wurde in die aktuelle Version der CARA-Engine übernommen.
	
	The update of the source-library “MySQLDAC_Full 2.5.5 (November, 14 2006)”, used for all MySQL-accesses, has been introduced to the cara-engine.

01.11.2006	(8.12.00/837/DD) Neuer Befehl: 
	HTTP numPort, strURL, strHeader, strWaitInfo, numTimeOut, [listSend], [listRead] oder strFileName
Stellt mit numPort und strURL einen HTTP-Connect her. Während des Connects wird ein Fenster eingeblendet, dessen Überschrift mit strHeader festgelegt werden kann. Mit strWaitInfo kann darüber hinaus eine Info innerhalb des Fensters ausgegeben werden. [listSend] enthält die Daten, die an den HTTP-Server versendet werden sollen. In [listRead] werden die Rückgabewerte des HTTP-Servers abgelegt.  Falls anstelle von [listRead] ein Dateiname übergeben wird, werden die Ergebnisse des HTTP-Servers in diese Datei gespeichert. Wenn numTimeOut > 0 ist, wird numTimeOut-Millisekunden, nach dem das letzte Mal Daten vom HTTP-Server kamen, die Verbindung abgebrochen.

	New command:
	HTTP numPort, strURL, strHeader, strWaitInfo, numTimeOut, [listSend], [listRead] or strFileName
	Creates a HTTP-connect with numPort and strURL. While connect a small window is shown, the header can be set by strHeader, additionally a waitinfo may be given with strWaitInfo. [listSend] holds the data, that should be send to the HTTP-server. The HTTP-server response will be stored either in [listRead] or the file, defined by strFileName. If numTimeOut is > 0, the connection will be closed numTimeOut millisecs after the last data have been received.

29.09.2006	(8.11.57/836/DD) Erweiterung der CSH-Syntax für Datenbankabfragen [M“hh:mm:ss“ oder “hh:mm“ etc.] um Zeitfelder formatieren zu können.

	Extend of the CSH-Syntax for querys [M“hh:mm:ss“ or “hh:mm“ etc.] to format time-fields.

29.09.2006	(8.11.56/835/DD) Neue CSH-Syntax für Datenbankabfragen [V] = Sichtbar (visible). Damit können die von der Engine automatisch ausgeblendeten Felder RecordID, RecFlag etc. eingeblendet werden.

	New CSH-Syntax for query. [V] = visible, to show the automatically hidden fields RecordID, RecFLag etc.

28.09.2006	(8.11.55/834/DD) Wenn die Engine auf die Registry zugreifen muss und zu diesem Zweck den Administrations-Hinweis anzeigt, wird in der Titel-Leiste des Fensters angezeigt, aus welchem Grund die Registrierung erfolgt. Außerdem wird die Registrierung der CaLi.exe nur noch verändert, wenn die Datei nicht am zuletzt registrierten Ort zu finden ist.

	If the engine has to access the registry, and the administration-info is raised, the title will show reason for the registration from now on. Additionally the register of the CaLi.exe will only be changed, if it can not be located at the last registered position.

21.09.2006	(8.11.54/833/HB) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [DocumentManager]: DocMgrCheckDatesTimer= 1 (Vorgabe) oder 0. Damit kann verhindert werden, dass der User-Timer beim Applikations-Start initialisiert wird. Es ist dann sinnvoll, das User-Timer-Symbol in der Applikations-Icon-Leiste auszublenden.

	New key for the application-INI-file, section [DocumentManager]: DocMgrCheckDatesTimer= 1 (default) or 0. This can avoid the initialisation of the user-timer while the application-start-up. Then it is useful to hide the user-timer-icon, in the application-icon-panel.

20.09.2006	(8.11.53/832/DD) Der neue [mask!MASK_ACT_SEND_MODE] (Änderung 8.11.50/829/DD vom 12.09.2006) befand sich immer im bereits aktivierten Status und wurde daher nicht ausgeführt. Der Fehler ist behoben. Zusätzlich wurden die Werte [SEND_OUT_FAX] (64), SEND_OUT_EMAIL (128) und  SEND_OUT_CHAT (32) so erhöht, dass sich keine Kollision mit den Werten PRINT_OUT_PREVIEW (4), PRINT_OUT_DIRECT (1), PRINT_OUT_DIRECT_SETUP (2) und PRINT_OUT_LAYOUT (8) mehr ergibt.

	The new [mask!MASK_ACT_SEND_MODE] (change 8.11.50/829/DD from 12.09.2006) was always marked as active, so it was never executed. Additionally the values [SEND_OUT_FAX] (64), SEND_OUT_EMAIL (128) and  SEND_OUT_CHAT (32) have been set higher, to avoid a collition with the values PRINT_OUT_PREVIEW (4), PRINT_OUT_DIRECT (1), PRINT_OUT_DIRECT_SETUP (2) and PRINT_OUT_LAYOUT (8).

19.09.2006	(8.11.52/831/VD) Der Befehl LIST_DISPLAY hat, wenn der User das Recht hatte, in der Liste Änderungen vorzunehmen, lediglich eine Größe 65536 Bytes zurückgegeben. Dadurch wurden große Listen abgekappt. Diese Beschränkung wurde entfernt.

	The command LIST_DISPLAY returned only 65536 bytes from a list, in case the user had the right to make changes. This limitation has been removed.

15.09.2006	(8.11.51/830/DD) Das Symbol und der Kontext-Menüpunkt für den Abfrage-Konfigurator in Browsern und Grids kann ab jetzt durch das Nichtsetzten der VIEW_FLAG [BROWSER_FLAG_ICON_CONFIG] ausgeblendet werden.

	The icon and context-menu-item for the query-configurator in browsers and grids can be switched off by the VIEW_FLAG [BROWSER_FLAG_ICON_CONFIG] from now on.

12.09.2006	(8.11.50/829/DD) Das Send-Icon hat ab jetzt auch ein Kontext-Menü (Fax, Email und Chat). Dieses Menü kann unterdrückt werden, indem man in der Kopfzeile der Maske die neue Option “SNDMENU“ setzt. 
	Mit einem Klick mit der mittleren Maustaste auf das Sendesymbol kann der User ab jetzt den Ausgabe-Standard festlegen (Fax, Email und Chat). Dieser wird pro User und Maske gesichert. Die entsprechende Einstellung ist durch einen Punkt vor dem Auswahlpunkt gekennzeichnet. In der CARA.MSG können die Zeilen des Sende-Kontext-Menüs ab jetzt belegt werden (ID 1150-1152). Wenn eine der Zeilen „leer“ ist, wird die entsprechende Zeile ab jetzt nicht mehr angezeigt.
	In diesem Zusammenhang wurden folgende neue Systemvariablen vom Typ VAR_NUM verfügbar gemacht: MASK_FLAG_SEND_MENU (um die MASK_FLAG während der Laufzeit zu verändern), SEND_OUT_FAX, SEND_OUT_EMAIL, SEND_OUT_CHAT und SEND_OUT_DEFAULT, um die verschiedenen vom User ausgewählten Ausgabeformen zu unterscheiden.
	Zusätzlich gibt es einen neuen Masken-Hook [mask!MASK_HOOK_SEND]  um die Auswahl des Users zu realisieren. Die Auswahl selbst ist in der neuen Masken-Variable [mask!MASK_ACT_SEND_MODE] hinterlegt. 
	Zu guter letzt gibt es jetzt auch eine neue Variable vom Typ VAR_NUM für das Auslösen des Ereignisses mittels des Befehls „MASK_COMMAND“ [MASK_COMMAND_SEND]

	The send-icon has an context-menu from now on (Fax, Email and Chat). This menu may be suppressed by setting the new mask-option “SNDMENU” in the mask-header-line. 
	With a click of the middle mouse-button on the send-icon, the user can set the standard-output-type (fax, email or chat). This will be saved separately for each user and mask. The selection made, will be marked with a dot in front of the context-menu-item. The text of the lines of the context-menu may be set inside the cara.msg-file (ID 1150-1152). If one of the text-lines is empty, the context-menu-item will not be shown anymore.
	With this change the following variables of type VAR_NUM are available: MASK_FLAG_SEND_MENU (for manipulating the MASK_FLAG while runtime), SEND_OUT_FAX, SEND_OUT_EMAIL, SEND_OUT_CHAT and SEND_OUT_DEFAULT, to decide between the different output-types chosen by the user.
	Also a new mask-hook is available: [mask!MASK_HOOK_SEND] to realize the users choice. The selection made by the user is available in the new mask-variable [mask!MASK_ACT_SEND_MODE].
	Finally a new variable of type VAR_NUM is available for the command “MASK_COMMAND”: [MASK_COMMAND_SEND].

12.09.2006	(8.11.47/828/DD) Mit einem Klick mit der mittleren Maustaste auf das Druckersymbol kann der User ab jetzt den Ausgabe-Standard festlegen (Direkt, Direkt mit Setup, Vorschau und Layout). Dieser wird pro User und Maske gesichert. Die entsprechende Einstellung ist durch einen Punkt vor dem Auswahlpunkt gekennzeichnet. In der CARA.MSG können die Zeilen des Drucker-Kontext-Menüs ab jetzt belegt werden (ID 1155-1158). Wenn eine der Zeilen „leer“ ist, wird die entsprechende Zeile ab jetzt nicht mehr angezeigt.  

	With a click of the middle mouse-button on the printer-icon, the user can set the standard-output-type (direct, direct with setup, preview and layout). This will be saved separately for each user and mask. The selection made, will be marked with a dot in front of the context-menu-item. The text of the lines of the context-menu may be set inside the cara.msg-file (ID 1155-1158). If one of the text-lines is empty, the context-menu-item will not be shown anymore.

12.09.2006	(8.11.46/827/DD) Zwei neue Variablen vom Typ VAR_NUM sind verfügbar: LANGUAGE_ID und LANGUAGE_ID_LAST. Diese können auch zur Laufzeit geändert werden. Beim Verlassen des Programms wird die LANGUAGE_ID_LAST in die Stations-INI-Datei geschrieben. Beim nächsten Start der Anwendung wird dann die entsprechende Sprache geladen.

	Two new variables of type VAR_NUM: LANGUAGE_ID und LANGUAGE_ID_LAST. These system-variables may be changed while runtime. On leaving the application the LANGUAGE_ID_LASt will be written to the station-INI-file. On the next start of the application, the related language will be loaded.

12.09.2006	(8.11.45/826/ SCH) Erweiterung der Änderung (8.11.17/799/DD) vom 19.07.2006: Wenn der PrintSet-Pfad in das Temporär-Verzeichnis des Users verlegt wird, wird (falls vorhanden) der Inhalt des Standard-PrintSet-Verzeichnisses in diesen Ordner kopiert. Nachdem die Dateien einmal dort hin kopiert wurden, werden sie nicht mehr überschrieben. Sollte der Standard-PrintSet-Pfad auch Unterverzeichnisse enthalten, werden diese nur beim ersten Mal mit kopiert. Danach werden diese Verzeichnisse nicht erneut kopiert bzw. deren Inhalt geprüft.

	Extend of change (8.11.17/799/DD) from 19.07.2006: If the printset-path is located to the users temp-folder, the content of the standard-printset-folder (if available) will be copied to the temp-folder. After the files have been copied once, they will not be overwritten again. If the standard-printset-folder contains subdirectories, these will be copied to the temp-folder also. After they have been copied once, they will not be copied again and also the contens of the subfolders will not be proved again.

08.09.2006	(8.11.44/825/DD) Bei einigen String-Berechnungs-Arten wie z.B. REPLACE, DIGITS, PLACE oder DWORD wurden Warnmeldungen ausgegeben, wenn einer der Parameter ein Leerstring oder ein Wert = 0 ist. Diese Warnmeldungen wurden entfernt (sie „nerven“ nur *ggg*).

	In some string-calculation-functions as REPLACE, DIGITS, PLACE or DWORD warnings were fired, when a string-parameter is empty or a num-value is 0. These warnings have been removed (they were nothing but “annoying” *ggg*).

08.09.2006	(8.11.43/824/DD) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [Config]: TerminationCriteria= leer (Vorgabe) oder VariablenName einer Variable vom Typ VAR_STR, VAR_NUM, VAR_FLOAT oder VAR_BOOL. Wenn die hier angegebene Variable nicht existiert bzw. ihr Wert dem Standard-Wert des Variablentyps entspicht, wird die Anwendung nicht gestartet. Dies ist hilfreich, wenn z.B. im MainScript bestimmte Variablen hätten angelegt werden sollen, das MainScript aber nicht gefunden werden konnte oder z.B. Strukturfehler aufweist. Somit existiert die Variable entweder gar nicht oder sie wurde nicht mit einem sinnvollen Wert gefüllt.

	New key for the application-INI-file, section [Config]: TerminationCriteria= (empty=default) or VariableName of a variable of type VAR_STR, VAR_NUM, VAR_FLOAT or VAR_BOOL. If the given variable doesn’t exist or its value is equal to the default-value of its type, the application will not be started. This is useful e.g. in case the main-script could not be executed, because it could not be found or it contains structure errors. So the variable is missing or it could not be filled with useful data.

07.09.2006	(8.11.42/823/DD) Ab jetzt kann man mit dem Opcode-Compiler auch die ganze Applikations-INI-Datei compilieren. Die compilierte INI-Datei wird von der Engine genauso interpretiert, wie eine ganz normale INI-Datei. Dadurch lassen sich alle Anwendungs-Einstellungen verbergen und vor fremdem Zugriff schützen.

	From now on, the opcode-compiler can compile the whole application-INI-file. The compiled INI-file will be interpreted exactly as the normal INI-file. The application-configuration can be hidden by this way and may be protected against foreign access.

07.09.2006	(8.11.41/822/DD) Neuer Befehl REC_ID_2_FILENAME floatID, [strFName]. Wandelt den in RecID enthaltenen TimeStamp in einen String von der Form yyyymmdd_hhmmss um.

	New command REC_ID_2_FILENAME floatID, [strFName]. Returns the timestamp inside of RecID into a string with the following format yyyymmdd_hhmmss.

05.09.2006	(8.11.40/821/DK) Die Texte, die im Note-Manager-Dialog angezeigt werden, werden ab jetzt aus der CARA.MSG Datei geladen.

	The caption-texts, used in the note-manager-dialog, will be loaded from out of the cara.msg-file from now on.

29.08.2006	(8.11.39/820/DD) Neue String-Berechnungs-Methoden “UTF82A“ und “A2UTF8“ um UTF8 codierte Strings in ASCII-Strings zu verwandeln und umgekehrt. 
	Beispiel: CALC [S] AS UTF82A([S])   und umgekehrt    CALC [S] AS A2UTF8([S])

	New string-calculation-methods “UTF82A” and “A2UTF8” to convert UTF8 coded strings into ASCII and vice versa. Example: CALC [S] AS UTF82A([S])   and vice versa    CALC [S] AS A2UTF8([S])

25.08.2006	(8.11.38/819/DD) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [Config]: UseField2MaskAligment=1 (default). Mit diesem Schlüssel kann man die Wirkung der Änderung (8.11.35/816/DD) wieder aufheben (Auf Felder des Typs STRING, EXTENDET, LONGINT und BIT_BUTTON können Angaben zur Lage, wie TOP, BOTTOM, LEFT, RIGHT und CLIENT angewandt werden). Dies ist für alle vor diesem Änderungsstand verfassten Masken sinnvoll, wenn beim Programmieren gelegentlich eine LABEL-Definition kopiert und der Feld-Typ danach umbenannt wurde. Dabei war es früher unerheblich, wenn man die Optionen „LEFT“ oder „RIGHT“  einfach stehen ließ: das war kein Fehler. Heute führt dies jedoch zu einer völlig chaotischen Maskendarstellung. Wer die neuen Optionen nutzen möchte, und wenn es auch nur  in einer einzigen Maske der Anwendung ist, muss leider die gesamten Maskendefinitionen überarbeiten. Andererseits, waren die neuen Optionen bisher nicht verfügbar und wurden demzufolge auch nicht „vermisst“ – wer als ohne sie auskommt, kann diesen Schalter einfach auf 0 setzen. 

	New key for the application-INI-file, section [Config] : UseField2MaskAligment=1 (default). With this key, the effect of change (8.11.35/816/DD) can be suppressed (Fields of type STRING, EXTENDET, LONGINT and BIT_BUTTON may have alignment orders like TOP, BOTTOM, LEFT, RIGHT and CLIENT). This is useful for all masks defined ahead of that release, because in former times it was not an error to copy e.g. a label and rename the field-type, without removing the “LEFT” or “RIGHT” option. After the new options have been released, this caused a completely chaotic mask-arrangement. Who likes to use the new options, even if it is in a single mask of the application, needs to redefine all masks. On the other hand, the new options haven’t been available up to now, and so they were not missed anyhow – one who doesn’t need them, just switches it off, by setting this key to 0.

24.08.2006	(8.11.37/818/DK) Der Feld-Typ LABEL kann ab jetzt mit Angaben zur Lage (TOP, BOTTOM, LEFT, RIGHT und CLIENT) in der Maske platziert werden. Allerdings muss in diesem Fall für RIGHT und LEFT ein anderes Wort verwendet werden, weil sich sonst die (bisher gewohnte) Ausrichtung des Textes und das Ausrichten innerhalb der Maske missdeuten ließe. Nur für den LABEL, für die Ausrichtung innerhalb der Maske gibt es daher ab jetzt in der Masken-Definitions-Datei die Möglichkeit „ALIGNL“ und „ALIGNR“. 

	The field-type LABEL can have an alignment as TOP, BOTTOM, LEFT, RIGHT and CLIENT from now on. But the hot-words RIGHT and LEFT could be misinterpreted, because they have been used for the alignment of the text within the label. So there are two new hot-words JUST FOR the LABEL, for mask-definition-files to align the label within the mask ALIGNL (left align) and ALIGNR (right align).

23.08.2006	(8.11.36/817/DD) Neuer Befehl LOGIN_DIALOG [strRes] {, strHeader, {, strWhereClause }}, zeigt den Login-Dialog und gibt [strRes] leer zurück, wenn der Login-Versuch erfolglos war. Wenn der Login-Versuch erfolgreich war, werden in [StrRes] folgende Daten mit Pipe-Zeichen getrennt abgelegt: UserRecordID|UserID|UserLevel|RightID|ShortName. strHeader ist für die Überschrift des Login-Dialoges. strWhereClause schränkt die normale User-Tabellen-Abfrage noch weiter ein z.B, Personalnummer > “1000“. 

	New command LOGIN_DIALOG [strRes] {, strHeader, {, strWhereClause }}, shows the login dialog and returns [strRes] empty, if the login fails. If the login is successful, [strRes] contains the following data, separated by pipe-signs: serRecordID|UserID|UserLevel|RightID|ShortName. strHeader is the headline of the shown login-dialog. strWhereClause shrinks the result-records of the user-table (additionally to the WhereClause from the application-INI-file). 

23.08.2006	(8.11.35/816/DD) Die Feld-Typen STRING, EXTENDET und LONGINT können ab jetzt ebenso wie der BIT_BUTTON mit Angaben zur Lage (TOP, BOTTOM, LEFT, RIGHT und CLIENT) in der Maske platziert werden.

	The field-types STRING, EXTENDET, LONGINT and BIT_BUTTON can have an alignment as TOP, BOTTOM, LEFT, RIGHT and CLIENT from now on.

23.08.2006	(8.11.34/815/HB) Erweiterung Änderung (8.11.27/808/DK): Auch Felder mit dem Status “PROTECTED“ können von nun an DEMAND sein. Wenn das erste ungefüllte DEMAND-Feld ein PROTECED Feld ist, wird der Focus auf das darauf folgende Feld gelegt.

	Extend of change (8.11.27/808/DK): also PROTECTED fields may be a demand field from now on. If the first unfilled DEMAND field is PROTECTED, the next field to it will get the focus.

22.08.2006	(8.11.33/814/HB) Erweiterung Änderung (8.11.27/808/DK): Das erste rot unterlegte Feld erhält den Focus.
 
	Extend of change (8.11.27/808/DK): the first red marked field gets the focus.

19.08.2006	(8.11.32/813/GH) Erweiterung des Befehls EXECUTE und Änderung der Erweiterung (7.04.03/543/DD):
 
	EXECUTE [Query / Browser], [boolRes] {, boolExitOnError {, strErrorMsg {, boolLeaveWaitWinOpen {, boolJustDescription}}}}
	Der Parameter boolExitOnError besagt, ob die Prozedur, aus der heraus der SQL-Befehl aufgerufen wurde, verlassen werden soll, wenn die Ausführung des SQL-Befehls fehlschlägt. Der Parameter strErrorMsg enthält die Message, die angezeigt werden soll, wenn die Ausführung des SQL-Befehls fehlschlägt. Wenn strErrorMsg leer ist, wir keine Meldung angezeigt. Wenn strErrorMsg = ’~’ ist, wird eine im System hinterlegte Standard-Nachricht mit Angabe des Scriptes und des Prozedurnames angezeigt. Wenn einer der Monitore eingeschaltet ist, wird die Nachricht in den Monitor umgelenkt. Wenn die Prozedure im Falle eines Fehlers verlassen wird: Wenn boolLeaveWaitWinOpen FALSE ist (Standard), wird auch eine eventuell geöffnete WAIT_INFO geschlossen. Wenn man nicht möchte, dass das WAIT_INFO-Fenster geschlossen wird, muss man boolLeaveWaitWinOpen TRUE setzten.

	ACHTUNG bisher lautete der Befehl EXECUTE [Query or Browser], [boolRes] {, boolJustDescription}. Die neuen Parameter wurden also VOR dem optionalen Parameter, der mit der Änderung (7.04.03/543/DD) eingeführt wurde, eingebaut. Die widerspricht der bisher 100%ig eingehaltenen Abwärtskompatibilität. Es ist jedoch kein Fall bekannt, an diese Option genutzt wird. Da die neuen Optionen sehr viel häufiger zum Einsatz kommen werden, wurde diese Lösung bevorzugt.

	Extend of the command EXECUTE and change of the formerly published extend (7.04.03/543/DD):

	EXECUTE [Query / Browser], [boolRes] {, boolExitOnError {, strErrorMsg {, boolLeaveWaitWinOpen {, boolJustDescription}}}}
	boolExitOnError forces the engine to leave the actual procedure, if the SQL-string could not be compiled by the SQL-server. strErrorMsg holds the message that should be shown, if the SQL-string could not be compiled by the SQL-server. If strErrorMsg is empty, no message will be shown. If strErrorMsg is ‘~’, a standard message with script-name and procedure-name will be shown. If one of the monitors is switched on, this message will be redirected to the monitor. In case the procedure will be exited in case of an error: If boolLeaveWaitWinOpen is FALSE (default), a possibly opened WAIT_INFO will be closed too. If one would like the WAIT_INFO window to stay open, boolLeaveWaitWinOpen must be set to TRUE.
	
	ATTENTION the command was EXECUTE [Query or Browser], [boolRes] {, boolJustDescription}, up to this point. The new parameters have been placed IN FRONT of the optional parameter, that came with change (7.04.03/543/DD). This is not confirming with the 100% downward compatibility that was given up to now. But there is no known usage of the parameter boolJustDescription. On the other hand, the new optional parameters will be used widely more. Which lead to this decision. 

18.08.2006	(8.11.31/812/DD) Neue Option für das Dialogelement “Register“. Wenn in der View-Zeile im Feld “Mask“, in der man die Registernamen aufzählt, ein Pipe-Zeichen, gefolgt von einer “1“ anhängt, werden die Register-Tabs nicht starr und mit fester Breite erzeugt, sondern mit dynamischer Breite. Wenn man dann ein Register, dass CLIENT in einem Masken-Bereich implementiert wurde, verbreitert, werden die Reiter dynamisch angeordnet. Beispiel:
	ITEM 2079999, 'REGISTER', 5, 5, 1, 1, 'CLIENT'
	VIEW          'Bild', '&Preise;&Kenner;&Material;&FiBu / Web;&Umsätze;L&ieferanten;&Bezüge;&T-Daten;&Z-Daten;B&ild|1', 'MyRegister', 207001
	
	New option for the dialog-element “Register”. If a pipe-sign, followed by a “1” is concatenated to the field “mask” in the line “view”, the register-tabs will be calculated dynamically and not with fixed width. If a register, that has been aligned as CLIENT to a part of the mask, and the mask will be resized, the register-tabs are dynamically arranged.  Example:
	ITEM 2079999, 'REGISTER', 5, 5, 1, 1, 'CLIENT'
	VIEW          'Bild', '&Preise;&Kenner;&Material;&FiBu / Web;&Umsätze;L&ieferanten;&Bezüge;&T-Daten;&Z-Daten;B&ild|1', 'MyRegister', 207001

18.08.2006	(8.11.30/811/DD) Wenn der Entwickler-Modus eingeschaltet ist, und man mit der rechten Maustaste auf eines der Icons SQL On/Off oder Script On/Off klickt, dann kann man dort ab jetzt mit dem Kontext-Menü-Punkt „copy ID“ die RecordID des aktuellen Datensatzes direkt in die Zwischenablage kopieren.
	
	If the developer-mode is switched on, a click with the right mouse-button on one of the icons SQL On/Off or Script On/Off will offer a new item “copy ID”, which allows to copy the RecordID of the actual record directly to the clipboard.

10.08.2006	(8.11.29/810/MH) Neuer Schlüssel für die Applikations-INI-Datei Sektion [Config], der auch separat in die Stations-INI-Datei eingetragen werden kann: TreeMenuFontSize=10. Damit kann die Schrift im Baum-Menü der Anwendung verändert werden.
	
	New key for the application-INI-file, section [Config], that also can be used in the station-INI-file: TreeMenuFontSize=10. This can justify the font of the main-tree-menue. 

09.08.2006	(8.11.28/809/ED) Im Werkzeugkasten gibt es einen neuen Punkt “Vergrößerung bei Langtexten“. Wenn dieser Schalter gesetzt ist, wird beim öffnen einer Notiz, eines Dokumenten-Ordners oder wenn der User eine Eingabe in eine Memo-Feld vornimmt, die Windows-Bildschirm-Lupe gestartet. Nach dem Verlassen der genannten Felder bzw. Module wird sie wieder geschlossen.
	
	The tool-box has a new item: “magnify for long-texts”. If this key is set, the windows-magnifying-glass will be shown, if a note or document-manager is opened or if the user starts typing in a memo-field. On leaving the dialog, the magnifying-glass will be closed. 

 09.08.2006	(8.11.27/808/DK) Neue Option für Masken-Felder DEMAND und die passende Variable [FIELD_FLAG_DEMAND]. Wenn diese Option bei einem Maskenfeld gesetzt ist, und der User versucht zu speichern, wird (nur wenn das Feld nicht PROTECTED und nicht HIDDEN ist) untersucht ob diese Felder mit Daten gefüllt sind. Falls ein Feld nicht gefüllt (oder noch 0) ist, wird es rot unterlegt und das Speichern mit einer Meldung verhindert. Wenn die Maske gesäubert wird, werden diese Felder wieder „normal“ hinterlegt.
	
	New option for mask-fields DEMAND and the related variable [FIELD_FLAG_DEMAND]. If this option is set in a mask-field, and the user tries to save a record (only if the field is not PROTECTED and not HIDDEN) the field will be investigated. If the field is not filled with data (or still 0). It will get a red background and the save-process will be denied, followed by a user-warning-message. If the mask is cleared, this fields will get a “normal” background again. 

03.08.2006	(8.11.26/807/DD) Die Stations-INI-Datei wird ab jetzt nicht mehr mit den System-Routinen für 
	INI-Dateien gespeichert, sondern als ASCII-Datei. Dieser „Unterschied“ verhindert einen Schreibfehler 
	auf einem Terminal-Server.
	
The station-ini-file will not longer be saved by the system-routines for INI-files. Instead it will be saved as an ASCII-file. This “difference” avoids a write-error on a terminal-server.

03.08.2006	(8.11.25/807/DD) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [Config]: 
StationIniFile2TempFolder=0		0=nein (default) oder 1=ja
	Soll die Stations-INI-Datei NICHT im PrintSet-Ordner der Anwendung sondern im Temporär-Ordner 
	der Users abgelegt werden. Diese Einstellung ist wichtig, beim Einsatz der Anwendung in einer 
	Terminal-Server-Umgebung, wenn verschiedene User mit der gleichen Stations-ID auf ein und 
	dieselbe Stations-INI-Datei schreiben möchten, aber nur der "Besitzer" die Berechtigung dazu hat.
	
New key for the application-INI-file, section [Config]: StationIniFile2TempFolder=0 (0=no=default) or 1=yes.  Should the station-INI-file NOT be saved to the printset-folder of the application, instead be saved to the users temp-folder? This setting is important in a terminal-server environment if different users with the same station-id try to save the station-ini-file and one is not the “owner” of it.

03.08.2006	(8.11.24/806/VH) Das Memo-Feld am Fuss des Hauptfensters des Dokumenten-Managers hat jetzt Scrollbalken.
	
	The memo-field at the bottom of the main win from the document-manager has scrollbars from now on.

02.08.2006	(8.11.23/805/DD) Das Update der Source-Bibliothek “MySQLDAC_Full 2.5.3 build 9982 (31. July 2006)”, die für alle MySQL-Zugriffe zuständig ist, wurde in die aktuelle Version der CARA-Engine übernommen.
	
	The update of the source-library “MySQLDAC_Full 2.5.3 build 9982 (July, 31 2006)”, used for all MySQL-accesses , has been introduced to the cara-engine.

02.08.2006	(8.11.22/804/KPr) Der Login-Screen wird ab jetzt bei aktiver Multiscreen-Einstellung auf dem gewählten Bildschirm dargestellt. Der Fortschrittsbalken, der beim Start eingeblendet sein kann, wird ebenfalls auf dem gewählten Bildschirm sichtbar. Außerdem wird der Fortschrittsbalken ab jetzt annähernd am unteren Rand des Bildschirms eingeblendet.
	
	If multi-screen settings are active, the login-screen and the progress-bar, that may be shown on startup, will be shown of the destination screen. Also the progress-bar will be shown nearly at the bottom of the screen.

01.08.2006	(8.11.21/803/AW) Neuer Befehl 
	FILE_STR_WRITE  [boolRes], FileName, numStart, numCount, strBuffer
	Schreibt in die Datei “Filename” ab dem Byte numStart den String strBuffer. Wenn numCount der Länge des Strings entspricht, wird einfach überschrieben. Wenn numCount kleiner als die Länge des Strings ist, werden numCount Zeichen überschrieben und die Datei um den „fehlenden Rest“ verlängert, d.h. der „überschüssige“ Text wird eingeschoben. Wenn numCount größer als die Länge des Strings ist, überschreibt der String ab numStart und die Datei wird um den Rest der Differenz der Zeichen verkürzt. Beisipiel-Datei in der Dokumentation "FileStr_Read_Write.csh".

	New command FILE_STR_WRITE  [boolRes], FileName, numStart, numCount, strBuffer. Writes the string strBuffer into the file “Filename” starting at position numStart. If the length of strBuffer is equal to numCount, the file will just be overwritten. If  the length of strBuffer is bigger then numCount, the file will be extended. If  the length of strBuffer is smaler then numCount, the file will be shrinked. Example in the documentation "FileStr_Read_Write.csh".

01.08.2006	(8.11.20/802/AW) Neuer Befehl 
	FILE_STR_READ  [boolRes], FileName, numStart, numCount, [strBuffer]
	Liest aus der Datei “Filename” ab dem Byte numStart genau numCount Zeichen in den [strBuffer]. numCount sollte die maximale Länge eines Strings nicht überschreiten (250).

	New command FILE_STR_READ  [boolRes], FileName, numStart, numCount, [strBuffer]. Reads numCount signs into [strBuffer] out of the file “Filename” starting at position numStart. numCount should not be bigger than the maximum string length (250).

26.07.2006	(8.11.19/801/DD) Neues Masken-Dialogelement “RLABEL“. Der Rotationslabel hat alle Eigenschaften eines „normalen“ Labels und kann gedreht werden. Der Text wird um die obere linke Ecke des von den Koordinaten beschriebenen Rechtecks gedreht. Daher muss man diesen Drehpunkt in dieses Rechteck verschieben, damit der Text überhaupt vollständig gelesen werden kann. Dafür kann man in die Maske den Winkel und die X und Y Verschiebung eintragen und auch angeben, ob der Hintergrund des Labels transparent sein soll. Die X und Y-Verschiebung werden ebenfalls in Maskenkoordinaten bzw. Maskeneinheiten angegeben. Hier ein Beispiel für eine 90° Drehung:

	ITEM 1100025, 'RLABEL', 2.00, 2.00, 5.00, 3.00, ''
	VIEW                 'Test', '90|0.5|1.5', '', 0
	Wobei hier 90 den Drehwinkel angibt, 0.5 die Verschiebung des Drehpunktes in X-Richtung und 1.5 die Verschiebung des Drehpunktes in Y-Richtung. 

	Der folgende Label könnte eigentlich auch ein „normaler“ Label sein, aber er hat einen transparenten Hintergrund:
	ITEM 1504001, 'RLABEL',  2.0, 2.0, 34.0, 5.0, 'CENTER FONTCOLOR RED FONTSIZE4.0 BOLD'
	VIEW                 'D A S    I S T    J A     T O L L', '0|0|0|TRANSPARENT', '', 0

	New dialog-element for masks: “RLABEL”. The rotation label has all properties of a “normal” label, but it can be rotated. The text will be turned around the upper left edge of the rectangle that is defined by its coordinates. The centre of rotation must be moved into this rectangle. The movement in x and y-direction can be defined as well as this label can have a transparent background. The x and y-movement are also defined in mask-coordinates. Example:

	ITEM 1100025, 'RLABEL', 2.00, 2.00, 5.00, 3.00, ''
	VIEW                 'Test', '90|0.5|1.5', '', 0
	A rotation angle of 90° is given here, and the rotation centre is moved in x-direction by 0.5, in y-direction by 1.5.

	The following label could be a “normal” one, but a transparent background is defined: 
	ITEM 1504001, 'RLABEL',  2.0, 2.0, 34.0, 5.0, 'CENTER FONTCOLOR RED FONTSIZE4.0 BOLD'
	VIEW                 'T H I S    I S    T E R R I F I C', '0|0|0|TRANSPARENT', '', 0

20.07.2006	(8.11.18/800/SCH) Wenn in einer Applikations-INI-Datei eine [Language] Sektion angegeben wurde und der User noch keinerlei Sprache ausgewählt hat, wird in der Stations-INI-Datei der Schlüssel LastLanguageID=-1 angegeben. Das führte bei einem erneuten Start zu einem Listen-Index-Fehler. Dieser Fehler wurde entfernt.

	If an application-INI-file contains a [Language] section and the user didn’t choose a language yet, the key LastLanguageID=-1 will be set. In case of a restart, this caused a list-index-error. This error has been removed.

19.07.2006	(8.11.17/799/DD) Eine neue Pfad-Konstante ist verfügbar: USER_TEMP_PATH. Gleichzeitig kann diese Konstante verwendet werden, um den PrintsetPath in das Temporärverzeichnis des Users zu verlegen. Damit kann man gerade bei Netzwerk-Installationen, in denen hohe Sicherheitsstandards angewandt werden, vermeiden, dass im Applikations-Programmverzeichnis geschrieben werden muss.

	A new path-constant is available: USER_TEMP_PATH. This constant can also be used to redirect the PrintsetPath into the users temp-folder. This is useful for network-installations with high security standards, to avoid writing into the application-program-folder.

19.07.2006	(8.11.16/798/SCH) Die Login-Maske und Login-Daten-Maske wurden so umgestellt, dass die angezeigten Label in der cara.msg Dateien eingestellt werden können.

	The login-mask and the login-data-mask have been changed to load their labels from out of the cara.msg-file and can be configured there.

19.07.2006	(8.11.15/797/DD) Die integrierte Bibliothek “MiTeC System Information Component Suite“ wurde von der Version 10.3.0 auf die Version 10.4.0 umgestellt.

	The integrated library “MiTeC System Information Component Suite“ has been updated from version 10.3.0 to version 10.4.0.

19.07.2006	(8.11.14/796/SCH) Die neueste Version der Library, die zur Realisierung der ZIP-Funktionen verwendet wird, wurde eingespielt: ZipTV Components - v2006-Build 1.26.

The version of the library, that is used to realize the zip-functionality, has been updated: ZipTV Components - v2006-Build 1.26.

17.07.2006	(8.11.13/795/HB) Neuer Befehl, ausschließlich für die MySQL-Version der Engine: 	MYSQL_DUMP [boolRes], 'strOutputFileNameWithPath', boolProgress2Monitor {, [listTableNames]} Mit diesem Befehl kann man die gesamte Datenbank einer Anwendung in die Datei “strOutputFileNameWithPath“ als SQL-Anweisung speichern. Wenn während des Vorgangs der Monitor den Fortschritt anzeigen soll, so muss boolProgress2Monitor TRUE sein. Wenn [listTableNames] übergeben wird und zeilenweise Tabellen-Namen enthält, so werden genau diese Tabellen exportiert, wenn [listTableNames] leer ist oder nicht übergeben wird, werden alle Tabellen exportiert.

New command only for the mysql-version of the CARA-Script-Engine:
MYSQL_DUMP [boolRes], 'strOutputFileNameWithPath', boolProgress2Monitor {, [listTableNames]}. With this command the whole database of an application can be dumped into a SQL-file with the filename “strOutputFileNameWithPath“. If the progress of the process should be shown in the monitor, boolProgress2Monitor  must be TRUE. If [listTableNames] contains lines with table-names, only these tables will be exported, otherwise (if [listTableNames] is empty or not passed through) all tables will be exported.

17.07.2006	(8.11.12/794/DK) Die Wirkung des Applikations-INI-Datei-Schlüßels aus der Sektion [SQL] “AddReplace“ wird innerhalb einer CSH-Syntax nicht mehr angewandt. Dadurch können Spach-Label, die auf die msg-Datei einer Anwendung referenzieren fehlerfrei angewandt werden.

	The application-INI-file-key from the section [SQL] “AddReplace” will not be used withing CSH-Syntax anymore. So language-labels that are referencing to the msg-file of the application are working correct.

17.07.2006	(8.11.11/793/DD) Die integrierte Bibliothek “MiTeC System Information Component Suite“ wurde von der Version 10.2.0 auf die Version 10.3.0 umgestellt.

	The integrated library “MiTeC System Information Component Suite“ has been updated from version 10.2.0 to version 10.3.0.

16.07.2006	(8.11.10/792/VH) Da der Excel-Export nach OpenOffice fehlerhaft war, wurden alle am Export beteiligten Module auf den neuesten Stand gebracht: EMS Advanced Excel Report Library von 1.1 nach 1.4 und EMS Advanced Export Component Suite von 3.1 auf 3.4.

	Since the excel-export to OpenOffice has been recently wrong, all libraries that are involved to the export have been updated to the newest version:  EMS Advanced Excel Report Library from 1.1 to 1.4 and EMS Advanced Export Component Suite from 3.1 to 3.4.

16.07.2006	(8.11.09/791/HB) In Choicern kann ab jetzt ein weiterer optionaler Paramater pro Zeile verwendet werden, der eine Bitmap-Datei bezeichnet, die als Symbol vor dem Choicer-Item angezeigt wird. Bei einem normalen Item ist dies der 5. Parameter, der in Hochkomata den Pfad und de Dateinamen angibt. Pfad-Konstanten wie “PICTURE_PATH“ können verwendet werden. 
	Bei Verzweigungen in einen Sub-Choicer ist es der 4. Parameter.

	In choicer-menus a new optional parameter can be used in each item-line, to specify a bitmap-file, which will be displayed as a symbol in front of the item. For normal items, this is the 5th parameter, which holds in colons the path and the filename. Path-constants like “PICTURE_PATH” are allowed. In case of the start of a sub-choicer, this is the 4th parameter. 

14.07.2006	(8.11.08/790/DD) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [Config]: StandardFTS=0 (Vorgabe) oder 1. Dieser Schlüssel ist auch unter der Boolean-Script-Variable [STANDARD_FTS] veränderbar. Dieser Schlüssel ist auch über den Werkzeugkasten einstellbar (Volltextsuche als Standard) und wird pro Station (und bei eingeschaltetem CheckUserSID auch pro Station und User) individuell gespeichert. Der Schlüssel sorgt dafür, dass alle Such-Vorgänge aus Masken als Volltextsuche erfolgen.

	New key for the application-INI-file, section [Config]: StandardFTS=0 (default) or 1 . The key-settings can be modified while runtime through the boolean script variable [STANDARD_FTS]. This key is also available in the toolbox (Full-Text-Search as standard) and will be saved for each station (and if CheckUserSID=1 for each station and user) individually. This key will perform each search-process from out of a mask as a full-text-search.

12.07.2006	(8.11.07/789/DD) Neuer Befehl RENAME_DIR [boolRes], ’strFromDir’, ’strToDir’, benennt ohne weitere Warnungen oder Dialoge das Verzeichnis ’strFromDir’ nach ’strToDir’ um. In [boolRes] wird angezeigt, ob die Operation erfolgreich war.

	New command RENAME_DIR [boolRes], ’strFromDir’, ’strToDir’, renames the directory from ‘strFromDir’ to ‘strToDir’ without any warnings and dialogs. [boolRes] gives back the result of the operation.

12.07.2006	(8.11.06/788/DD) Neuer Befehl COPY_DIR [boolRes], ’strFromDir’, ’strToDir’, kopiert ohne weitere Warnungen oder Dialoge das gesamte Verzeichnis ’strFromDir’ nach ’strToDir’ mit allen darin befindlichen Dateien und Unterverzeichnissen. In [boolRes] wird angezeigt, ob die Operation erfolgreich war.

	New command COPY_DIR [boolRes], ’strFromDir’, ’strToDir’, copies  the whole directory with its substructure inclusive all files from ‘strFromDir’ to ‘strToDir’ without any warnings and dialogs. [boolRes] gives back the result of the operation.

12.07.2006	(8.11.05/787/DD) Neuer Befehl MOVE_DIR [boolRes], ’strFromDir’, ’strToDir’, bewegt ohne weitere Warnungen oder Dialoge das gesamte Verzeichnis ’strFromDir’ nach ’strToDir’ mit allen darin befindlichen Dateien und Unterverzeichnissen. In [boolRes] wird angezeigt, ob die Operation erfolgreich war.

	New command MOVE_DIR [boolRes], ’strFromDir’, ’strToDir’, moves the whole directory with its substructure inclusive all files from ‘strFromDir’ to ‘strToDir’ without any warnings and dialogs. [boolRes] gives back the result of the operation.

12.07.2006	(8.11.04/786/DD) Neuer Befehl DELETE_DIR [boolRes], ’strDir’, löscht ohne weitere Warnungen oder Dialoge das gesamte Verzeichnis ’strDir’ mit allen darin befindlichen Dateien und Unterverzeichnissen. In [boolRes] wird angezeigt, ob die Operation erfolgreich war.

	New command DELETE_DIR [boolRes], ’strDir’, deletes the whole directory with its substructure inclusive all files of ‘strDir’ without any warnings and dialogs. [boolRes] gives back the result of the operation.

11.07.2006	(8.11.03/785/DD) CaLi- und CaDo-Dateien werden ab jetzt mit einem Zeitstempel im Dateinamen versehen, damit sich während der Ausführungen einer Datei noch weitere angesammelt werden können und sich so eine Stackverarbeitung ergibt bzw. ermöglicht wird. Dazu muss die neueste Version der cali.exe verwendet werden.

	CaLi- and CaDo-files will have a timestamp in the filename, to make it possible to have more than one file while one of it is executed, this makes stackprocessing of CaDo-files possible. For this the newest version of the cali.exe must be downloaded.

10.07.2006	(8.11.02/784/DD) Der jüngst verbesserte Befehl PRINT_SET wurde so verändert, dass beim Lesen  der Druckereinstellungen genau überprüft wird, ob der Stream die exakt benötigte Länge hat.

	The recently improved command PRINT_SET has been changed, to verify that the exact amount of bytes of the printer-setting is available in the stream.

08.07.2006	(8.11.01/783/DD) Der jüngst verbesserte Befehl PRINT_SET wurde so verändert, dass beim Schreiben der Druckereinstellungen genau überprüft wird, ob der Stream mit exakter Länge geschrieben wurde.

	The recently improved command PRINT_SET has been changed, to verify that the exact amount of bytes of the printer-setting has been written to the stream.

07.07.2006	(8.11.00/782/DD) Erweiterung des Befehls PRINT_SET [print],'str' {, bool|num {, boolNoVPE}}. Der letzte optionale Parameter boolNoVPE ist per Vorgabe immer FALSE. Wenn dieser Wert mit TRUE übergeben wird, wird nicht mehr der von der VPE stammende Drucker-Auswahl-Dialog und die damit verbundene Technik, die in der VPE zum Speichern der Einstellungen verwendet wird, eingesetzt. Anstelle des VPE-Dialogs, wird (ebenfalls) der Standard-Windows-Dialog eingeblendet, jedoch eine eigene, neue Technik zum Speichern der Einstellungen verwendet. Vorteil dieser Option ist, dass endlich auch IP- und Netzwerk-Drucker unter Windows-XP direkt angesprochen werden können. Dieser Dialog muss aber VOR dem Anlegen der VAR_PRINT (für den VPE-Druck) angesprochen werden, da mit der neuen Technik der Standard-Drucker nach dem Laden der Einstellungen umgestellt wird und dann die VPE auf den Standard-Drucker umgeleitet wird (und dies ist ja dann der Drucker, dessen Einstellungen zuvor geladen wurden). Wenn kein VPE-Dialog verwendet werden soll, kann man einfach anstelle der [print] Variable, irgendeine andere Variable z.B. [dummyBool] übergeben werden. Der Dialog muss nicht geladen werden, wenn eine Vorschau erzeugt wird. Die neue Speichertechnik verwendet NICHT die gleichen Dateinamen, wie die VPE. Es entstehen zwei Dateien pro Einstellung. Der Einfachheit halber wird an den VPE-Dateinamen ein „d“ für die erste Datei und ein „s“ für die zweite Datei angehängt. Wenn man also „Test.pst“ als Dateinamen verwendet, so entstehen die Dateien „test.pstd“ und „test.psts“.
 
	Extend of the command PRINT_SET [print],'str' {, bool|num {, boolNoVPE}}. The last optional parameter boolNoVPE is on default FALSE. If this value is set to TRUE, the printer-setup-dialog of the VPE will not longer be used – and the technique that is used to save the setting will not be used also. Instead of the VPE dialog (also) the common Windows-Dialog for printer-settings will appear, but a new technique to save the settings will be used. Advantage of this option is, that finally IP- and network-printers can be directly addressed under Windows-XP.  This Dialog must be called before the VAR_PRINT (for VPE-printing) is created, because the new technique redirects the standard printer after loading the settings (this will then be the printer, which’s settings just have been loaded)  and the VPE afterwards is also redirected to the default-printer. If boolNoVPE is TRUE; instead of the variable [print] any other variable can be used e.g. [dummyBool]. This dialog must not be loaded, if a preview is intended. Two files will be created with the new setting-method per setting. To have an easy handling, the filename will be prolonged with a “d” for first file and a “s” for the second one. E.g. the filename “test.pst” will be saved as “test.pstd” and “test.psts”.

03.07.2006	(8.10.07/781/DD) Neue Field-Flag für Masken-Felder [FIELD_FLAG_ACT_AND_END], kann mit allen FIELD_FLAG-Befehlen verwendet werden. Damit wird das entsprechende Feld gewählt und der Cursor gleich an das Ende des Feldes gesetzt, damit die Eingabe fortgesetzt werden kann.  
 
	New Field-Flag for mask-fields [FIELD_FLAG_ACT_AND_END] that can be used with all FILED_FLAG commands. The corresponding field can be selected and the cursor will be placed at the end of the field, so the input can be continued.

29.06.2006	(8.10.06/780/DD) Erweiterung des Befehls QUERY_LIST_2_LIST um einen neuen optionalen Parameter: QUERY_LIST_2_LIST [browser or query or mask], [listVar] {, boolReverse}. Wenn boolReverse TRUE ist, werden die Zeilen der [listVar] so interpretiert, dass der jeweils erste Teil, der mit einem Pipe-Zeichen “|“ unterschieden werden kann, als ID an die Query-List weitergegeben werden kann.  
 
	Extension of the command QUERY_LIST_2_LIST by one new optional parameter:
	QUERY_LIST_2_LIST [browser or query or mask], [listVar] {, boolReverse}. If boolReverse is TRUE, the lines of [listVar] will be interpreted in the way, that the first part of the line (seperated by pipe-signs “|“) will be passed as an ID to the query-list.

29.06.2006	(8.10.05/779/DD) Die Masken-Variablen MASK_ACT_GRID_NAME und MASK_ACT_GRID_ID werden von nun an auch aktualisiert, wenn ein Grid den Focus durch das Setzten der Fieldflag FIELD_FLAG_ACTUAL erhält.
 
	The mask-variables MASK_ACT_GRID_NAME and MASK_ACT_GRID_ID will be actualized from now on, if a grid gets the focus through setting the fieldflag FIELD_FLAG_ACTUAL.

13.06.2006	(8.10.04/778/ST) Der Befehl EXTERN wurde so umgeschrieben, dass nun auch Parameter von mehr als 256 Zeichen Länge verarbeitet werden.
 
	The command EXTERN has been changed: parameters with a size bigger then 256 (over all) can be processed now.

13.06.2006	(8.10.03/777/DD) Neuer Schlüssel für die Applikations-INI-Datei: CheckDatesTimerOnStart=1 oder 0 (Vorgabe). Wenn dieser Schlüssel „wahr“ ist, sieht der User sofort mit dem Systemstart, ob Termine für ihn vorliegen. Anderenfalls wird dies erst 5 Minuten nach dem Systemstart gezeigt.
 
	New key for the application-INI-file: CheckDatesTimerOnStart=1 or 0 (default). If this key is TRUE, the user the timer-dates right on startup, otherwise the timer will fire 5 minutes after the application-start.

13.06.2006	(8.10.02/776/DD) Neuer Schlüssel für die Applikations-INI-Datei: ShowStartProgress=1 (Vorgabe) oder 0. Wenn dieser Schlüssel „wahr“ ist, sieht der User einen Start-Balken, damit er einerseits sieht, ob er überhaupt die Anwendung gestartet hat und wie weit der Ladeprozess fortgeschritten ist.
 
	New key for the application-INI-file: ShowStartProgress=1 (default) or 0. If this key is TRUE, the user will see a progress-bar while startup. So the user can see, if the application really starts at all and how far the start-progress already worked out.

13.06.2006	(8.10.01/775/DD) Neuer Schlüssel für die Applikations-INI-Datei: ApplicationID=nnnnnn. Wobei „nnnnnn“ eine beliebige Nummer sein kann. Wenn man zusätzlich zu dieser Zahl die Tabelle “applog“ innerhalb der Datenbank existiert, wird bei jedem Start und bei jedem Beenden der Anwendung in der Tabelle applog ein Eintrag mit dieser ID erzeugt. Dadurch kann man z.B. jeder Filiale oder jedem Laptop, auf dem die Anwendung installiert ist, eine eigene ApplicationID zuweisen und dann später in der Tabelle applog sehen, wann diese Filiale bzw. der Laptop online war.
 
	New key for the application-INI-file:ApplicationID=nnnnnn. Where “nnnnnn” can be any numeric value. If the table “applog” also exists in the database, each time an application is started or ended, will be written to the applog-table. So every naotebook-client or firm-client can have its own application-id and the log-file   holds the time and length of the accesses.

04.06.2006	(8.10.00/774/JB) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [Config]:				CaInFileCreate=1 (default) oder 0. CaIn steht für CARA-Informations-Datei. Wenn  CaInFileCreate=1 (TRUE) ist, wird beim Start einer jeden CARA-Applikation eine Temporär-Datei mit der Datei-Erweiterung „.cain“ im temporär Ordner des aktuell am Windows-System angemeldeten Benutzers angelegt. Der Dateiname besteht aus dem Stationskürzel, dem Programmnamen und der Session-ID, gefolgt von der Dateierweiterung „.cain“. Gleichzeitig wird eine neue Dateierweiterung in der Registry verzeichnet „cali“. CaLi steht für CARA-Link-Datei. Mit diesem Release der CARA-Engine wird ebenfalls das Programm „cali.exe“ veröffentlicht, dass ab jetzt im CARA-Verzeichnis untergebracht sein sollte. 
	Wenn der Schlüssel „RegisterCara=0“ (also ausgeschaltet sein sollte), kann die Dateierweiterung „cali“ nicht registriert werden, daher sollte dies beim Start (mindestens einmalig) zu berücksichtigen.
	Von dem Augenblick an, an dem die neue CARA-Engine verwendet wird und auch „cali.exe“ installiert und registriert wurde, können externe Programme Informationen an laufende CARA-Anwendungen weitergeben und Funktionen ausgelöst werden. Das externe Programm muss lediglich eine Datei mit der Dateierweiterung „.cali“ ausführen. 
	Die Struktur einer CaLi-Datei ist sehr einfach. Kommentarzeilen beginnen mit einem Semikolon. Leerzeilen sind erlaubt. Die erste (sinnvolle) Zeile beginnt mit dem Wort START oder EXECUTE. Danach, getrennt durch Pipe-Zeichen, kann (muss aber nicht) der Name der Applikation genannt werden, auf den sich der Aufruf bezieht und ggf. die Anzahl der (ev. aktuell geöffneten Sessions der Anwendung) die den Befehl ausführen soll. In der zweiten sinnvollen Zeile muss dann lediglich ein Scriptname angegeben werden. Die Zeile kann ebenfalls durch Pipe-Zeichen getrennt bis zu 32 Parameter enthalten, die an das Script weitergegeben werden.
	Im folgenden Beispiel wird in max. einer aktuell geöffneten IDEAL-Anwendung das Script artstext.csh aufgerufen. Ausserdem wird an das Script ein Parameter weitergegeben.
 	START|ideal|1
	artstext.csh|7841277403357 
	
	Wenn die erste sinnvolle Zeile das Wort EXECUTE enthält, sollte nach dieser Zeile der Code eines Scriptes aufgeführt werden, der ausgeführt werden soll. Im folgenden Beispiel wird in max. einer aktuell geöffneten IDEAL-Anwendung das aufgeführte Script aufgerufen.
EXECUTE|ideal|1

  PROCEDURE InitVars
    VAR_STR AStr
  END_PROC

  PROCEDURE Main
    CALC [AStr] AS 'World'
    MESSAGE 'Hello', [AStr]
  END_PROC

SCRIPT_BEGIN
  CALL InitVars
  CALL Main
SCRIPT_END
	
	In Kurzform: man speichert die cali.exe im CARA-Ordner und startet die Anwendung einmalig (bitte darauf achten, dass RegisterCara nicht 0 ist). Fertig. Ab dann können Dateien mit der Endung „.cali“ ausgeführt werden.

	New key for the application-INI-file, section [Config]: CaInFileCreate=1 (default) or 0. CaIn stands for CARA-Information-File. If CaInFileCreate=1 (TRUE), a temporary file with the extension “.cain” will be created on every start of a CARA-Application in the actual Windows-User-Temp-Folder. The filename is concatenated by the station short-name, the application-name and the sessionID, followed by the extension “.cain”. Additionally the new file-extension „.cali“ will be registered in the Registry. CaLi stands for CARA-Link-File. With this release of the CARA-Engine the program „cali.exe“ will be launched also. It should be placed in the CARA-folder.

	If the key „RegisterCara=0“ (is switched off), the extension „cali“ can not be registered, this should (at last one time) be mentioned.
	After the ne CARA-Engine is used an „cali.exe“ is installed and registered, external programms can pass informations to runnig CARA-Applications and run functions. The external programm only needs to execute a „.cali“-file.	

	The structure of a CaLi-file is very simple. Commentlines starts with a semicolon. Empty lines are allowed. The first (useful) line begins with the word START or EXECUTE. After that, seperated by pipe-signs, can (but must not) follow the name of the application, to which the call is addressed and if needed the amount of (perhaps open sessions of the application) that should execute the command. In the second useful line the name of a script and up to 32 parameters may be named, all separated by pipe-signs.
	In the following example, one actual open IDEAL-application starts the script artstext.csh, also a parameter is passed through to the script.
 	START|ideal|1
	artstext.csh|7841277403357 
	
	If the first useful line contains the word EXECUTE, a script-code should follow after the first line, that will be executed by the application. In the following example max. one IDEAL-application will execute the following script.
EXECUTE|ideal|1

  PROCEDURE InitVars
    VAR_STR AStr
  END_PROC

  PROCEDURE Main
    CALC [AStr] AS 'World'
    MESSAGE 'Hello', [AStr]
  END_PROC

SCRIPT_BEGIN
  CALL InitVars
  CALL Main
SCRIPT_END

	In short: save the cali.exe to the CARA-folder and start the application once (be shure, RegisterCara is not 0). ready. From this moment on, files with the extension „.cali“ can be processed.

 
01.06.2006	(8.09.16/773/HB) Erweiterung des Befehls PRINT_SET [print],'str', {bool|num}. Der letzte Parameter kann von nun an boolean oder numerisch sein. Wenn der Wert 0 übergeben wird, wird der Standard-Drucker gewählt (dann sollte ’str’ auch leer sein).
 
	Extend of the command PRINT_SET [print],'str', {bool|num}. The last parameter can be boolean or numeric from now on. If the value ist 0, the standard printer will be chosen (in that case ‘str’ should be empty).

31.05.2006	 (8.09.15/772/DD) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [SQL]:				SmallIntAsBool=0 (Vorgabe) oder 1. Damit auch der Datentyp tinyint(1) (von MySQL) für boolean Werte verwendet werden kann.
 
New key for the application-INI-file, section [SQL]: SmallIntAsBool=0 (default) or 1. So the datatype tinyint(1) (from MySQL) could also be used for storeing Boolean values.

31.05.2006	(8.09.14/771/UB) Tabellen-Namen die einen Unterstrich enthielten konnten im Zusammenhang mit Eingabe-Masken nicht zum Speichern verwendet werden. Der Fehler ist behoben.
 
	Table-names with an underscore could not be used from out of user-dialogs for saving data. This error has been removed.

25.05.2006	(8.09.13/770/DD) Ergänzung zur Änderung 5.03.22/326/DD vom 19.11.2001: vier neue System-Variablen, die zur Laufzeit verändert werden können und die die gleichnamigen Schaltern im Werkzeugkasten beeinflussen.
	[NO_DEVIDE_CLR] 	Maske säubern mit "÷" AUS	(in der INI-Datei NoDevideClr=0 oder 1)
	[NO_MINUS_FTS]	Volltextsuche mit "÷" AUS	(in der INI-Datei NoMinusFTS=0 oder 1)
	[NO_MULTI_SAVE]	Speichern mit "*" AUS	(in der INI-Datei NoMultiSave=0 oder 1)
	[NO_PLUS_SEARCH]	Suchen mit "+" AUS	(in der INI-Datei NoPlusSearch=0 oder 1)
 
	Extend to change .03.22/326/DD from 19.11.2001: four new system-variables, that can be changed while runtime and that manipulates the toolbox-items with the same name.
	[NO_DEVIDE_CLR] 	Clear mask with "÷" OFF	(in the INI-file NoDevideClr=0 or 1)
	[NO_MINUS_FTS]	Fulltextsearch with "÷" OFF	(in the INI_file NoMinusFTS=0 or 1)
	[NO_MULTI_SAVE]	Save with "*" OFF	(in the INI-file NoMultiSave=0 or 1)
	[NO_PLUS_SEARCH]	Search with "+" OFF	(in the INI-file NoPlusSearch=0 or 1)

24.05.2006	(8.09.12/769/DD) Erweiterung der CSH-Syntax für SQL-Abfragen. Der Schalter M "Plain" kann auf MEMO- oder BLOB-Felder angewandt werden und liefert ggf. RTF-Texte als normale Textezurück bzw. stellt sie als solche im Browser dar. 

	Extend of the csh-syntax für SQl-querys. The key M "Plain" can be used with MEMO- or BLOB-fields and deliveres (if necessary) RTF-texts as normal (plain) texts back and displays them in the browser as well. 

22.05.2006	(8.09.11/768/DD) Als Erweiterung der Änderung 7.02.04/504/DD vom 05.08.2003 gibt es nun eine neue boolean Scriptvariable [NOTE_USER_STAMP] die es erlaubt, während der Laufzeit zu steuern, ob ein Notiz-Stempel eingefügt werden soll. 

	As an extension of change 7.02.04/504/DD from 05.08.2003 a new boolean script variable has been introduced: [NOTE_USER_STAMP]. This variable allows to switch the note-stamp on or off while runtime. 

19.05.2006	(8.09.10/767/DD) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [Config]: CalendarScript=. Hier kann eine Scriptname angeben werden, das von der Engine aufgerufen wird, wenn im Kalender auf einem Datum ein Doppelklick erfolgt. Als Parameter werden folgende Werte weitergegeben: 
	RECORD_ID1:	Die RecordID des DocuMgr-Items, wenn der Aufruf aus dem DocuMgr erfolgt.
	RECORD_ID2:	Die RecordID des Datensatzes, der aktuell in der Maske geladen ist.
	PAR_STR3:	Der Tabellen-Name, der Tabelle, die der aufrufenden Maske zugrunde liegt.
	PAR_STR4:	Der XRefName der in der aufrufenden Maske angegeben wurde.
	PAR_STR5:	Das Datum, das doppelt angeklickt wurde.
	Sollte kein ScriptName für den Schlüssel CalendarScript hinterlegt sein, wird bei einem Doppelklick das entsprechende Datum einfach zurück an die Maske gegeben, so als wenn der User den OK-Knopf betätigt hätte.

	New key for the application-INI-file, section [Config]: CalendarScript=. A script that will be opened on a double click, within the calendar, can be named here. The following parameter are passed through to the script:
	RECORD_ID1:	RecordID of the DocuMgr-Item, if the call comes out of the DocuMgr.
	RECORD_ID2:	RecordID of the actual loaded record, in the mask.
	PAR_STR3: 	Tabellen-Name, on which the calling mask is based.
	PAR_STR4:	XRefName that has been defined within the calling mask.
	PAR_STR5:	Date that has been double clicked.
	If no script has been set in the key CalendarScript, the date that has been double clicked, wil be returned, as if the user clicked the OK-button.

18.05.2006	(8.09.09/766/DD) Wenn auf der numerischen Tastatur ein Komma während der Eingabe einer Fließkommazahl erwartet wird, aber die Tastatur dort einen Punkt erzeugt, kann der User ab jetzt im Werkzeugkasten den Punkt „Komma und Punkt vertauschen“ wählen. Beim Auslösen der „Punkt-Taste“ wird dann ein Komma erzeugt (oder umgekehrt). Diese Einstellung wird Stations- bzw. Benutzerspezifisch gespeichert. Eine programmweite Vorgabe kann in der Sektion [Config] der Applikations-INI-Datei mittels des Schlüssels ExchangeCommaDot=0,46 (Vorgabe) oder 1,46 bzw. 1,44 gemacht werden. Der Wert 46 entspricht dabei dem ASCII-Wert des Punktes und 46 dem des Kommas. Bei 1,46 wird also der Punkt gegen das Komma, bei 1,44 das Komma gegen den Punkt getauscht. Andere Werte sind (zurzeit) nicht vorgesehen.

	While typing a floating point value into a numeric input-field with the numeric keypad and a comma is expected as the decimal point, and the keyboard returns a dot, the user may check the item “Comma and dot exchanged” in the tool-box from now on. This setting will be station / user-specific. It may also be set program wide in the [Config] section of the application-INI-file, using the new key ExchangeCommaDot=0,46 (default) or 1,46 or 1,44. Where 46 is the ASCII-value of the dot and 46 the ASCII-value of the comma. On 1,46 the dot will be replaced by the comma and on 1,44 the comma by the dot. Other values are (actually) not working.	

18.05.2006	(8.09.08/765/DD) Im Befehl CHOOSE_FILE musste der Anwender immer auch eine Dateierweiterung angeben, auch wenn eine entsprechender Dateifilter selektiert war. Das ist ab jetzt nicht mehr nötig: wenn keine Dateierweiterung angeben wird und ein Dateifilter gewählt wurde, wird die Dateierweiterung des Dateifilters an den Dateinamen angehängt.

	When using the command CHOOSE_FILE, the user had to define a file-extension, even though a file-filter had been chosen before. This isn’t necessary any more: when no file-extension is defined by the user and a file-extension has been chosen, the extension of the file-filter will be concatenated to the filename.	

08.05.2006	(8.09.07/764/DD) Neuer Schlüssel für die Appliktions-INI-Datei, Sektion [Config]: PanelOptionsOff=0 (DEFAULT). Bei diesem Schlüssel handelt es sich um eine Binär-Flagge, deren Werte einzelne Elemente abzuschalten, die auf dem obersten Panel der Anwendung dargestellt werden. Diese Elemente sind u.a. die Web-Adress-Zeile, der Home-Button, der Send-Button etc. Das ganze Panel lässt sich mit dem Schlüssel „ShowTopPanel=0“ (siehe Änderung 8.05.10/638/DD vom 02.10.2005) ausschalten. Es lassen sich folgende Werte zusammensetzten:
		1	=	Send-Knopf
		2	=	Adresse (Label, Feld, Vor- und Zurück-Knopf)
		4	=	Online-Check-Box
		8	=	Timer-Knopf
		16	=	Home-Knopf
		32	=	Info-Knopf

	New key for the application-INI-file, section [Config]: PanelOptionsOff = 0 (DEFAULT). This key is a binary flag, that allows to switch off elements from the top-panel of the application. This elements are e.g. the web-address-line, the home-button and the send-button etc. The whole panel can be switched on or off with the key “ShowTopPanel=0“ (see change 8.05.10/638/DD from 02.10.2005). The following values may be added:
		1	=	Send-Button
		2	=	Address (Label, Field, Fore- and Back-Button)
		4	=	Online-Check-Box
		8	=	Timer-Button
		16	=	Home-Button
		32	=	Info-Button

08.05.2006	(8.09.06/763/DD) Auf Anfrage kann von nun an eine Version der CARA-Engine verfügbar gemacht werden, die direkt auf die Umgebung der CTI-Lösung “Cats” der Firma Spüntrup zugreift. Damit wird dem Benutzer das Auslösen von Telefonaten ermöglicht, aber auch die Möglichkeit zum Öffnen der Kunden-/Lieferanten-/Interessenten- und Mitarbeiter-Maske angeboten, wenn eine Anruf auf „seine“ Nebenstelle mit einer Nummer erfolgt, die der Anwendung bekannt ist. Dies gilt auch für hausintern weitergeleitete Nummern. Informationen zu „CATS“ können sie unter http://www.cats.ms abrufen.

	Folgende neue Schlüssel sind für diesen Fall in der INI-Datei anzugeben:
	CatsScript=CatsEvent.csh				Name des Scripts, das CATS-Ereignisse 
							Abarbeitet.
	CatsDir=\\aserver\cats				Wo befindet sich das CATS-Verzeichnis?
	CatsSpoolDir=\\ aserver \spool\wait_5.min		Wo soll der Datenexport von der Anwendung
							Zu CATS abgelegt werden?

	Folgende System-Variablen stehen mit der CATS-Version zur Verfügung:
	[CATS_DIAL]		Option für den neuen Befehl CATS, der das Wählen initiiert.
	[CATS_READ]		Option für den neuen Befehl CATS, der das Verarbeiten der Events initiiert.
	[CATS_ACT_STATION]	Bezeichner für die Nebenstelle die der aktuellen Station zugeordnet ist.

	Folgender Befehl steht als Weiterleitung des SDKs der Fa. SPUeNTRUP zur Verfügung:
	CATS [boolRes], [CATS_READ], boolOnOrOff {, strSubStation, strEvents, strFieldList}
	Schaltet des “Horchen” auf die CATS-Ereignisse an oder aus. Wenn es angeschaltet wird, kann man im String [strSubStation] angeben, auf welchen Stationen gehorcht werden soll. Wenn es sich um alle Stationen handelt, lässt man den String leer, anderenfalls kann man mit Pipe-Zeichen getrennt die Station(en) angeben, die beobachtet werden sollen. [strEvents] enhält die Liste der Ereignisse, die beobachtet werden sollen. Wenn alle Ereignisse beobachtet werden sollen, lässt man den String einfach leer, anderenfalls kann man mit Pipe-Zeichen getrennt die Ereignisse auflisten (siehe CATS-Dokumentation).  [strFieldList] enthält mit Pipe-Zeichen getrennt die Feldnummern des CATS-Ereignisses, die weitergereicht werden sollen (siehe CATS-Dokumentation), wenn dieser String leer übergeben wird, wird der gesamte CATS-String als erster und einziger Parameter and das CatsScript (s.o.) weitergegeben.. 

	oder auch

	CATS [boolRes], [CATS_DIAL], boolHaveMSg, strNumber	
	Wählt die Nummer [strNumber] über die der aktuellen Station zugeordnete Nebenstelle.

	In den Beispielen ist ein Verzeichnis mit verschiedenen Scripten für CATS inkl. Code-Dokumentation enthalten.

	A special version of the CARA-Engine, that directly connects to the CTI-solution „CATS“ (by SPUeNTRUP) can be requested. Users can dial out of the application as well as getting a dialog offered, that allows to open the customers-/suppliers-/prospects- or staff-mask, if a call to the users substation comes in, and the number is known to the application. This also works for calls, that have been forwarded internally. Informations about “CATS” are available under http://www.cats.ms.

	The following new keys are availiable in the ini-file for his case:
	CatsScript=CatsEvent.csh				Name of the script, that processes the 
							CATS-Events
	CatsDir=\\aserver\cats				Where is the CATS-folder?
	CatsSpoolDir=\\ aserver \spool\wait_5.min		Where should the export from the application 
							To CATS be placed?

	The following system-variables are available with the CATS-Version:
	[CATS_DIAL]		Option for the CATS command, to dial out.
	[CATS_READ]		Option fort he CATS command, that allows processing the events.
	[CATS_ACT_STATION]	Holds the substation number, related by CATS to the actual station.

	The following command is passing through the SDK features, supported by SPUeNTRUP:
	CATS [boolRes], [CATS_READ], boolOnOrOff {, strSubStation, strEvents, strFieldList}
	Switches on/off listening to CATS events. If switched on, the contents of [strSubStation], defines on which stations should be listened. If all stations should be viewed, the script must be empty; otherwise the station-numbers should be separated by pip-signs. [strEvents] holds the list of events, that should be occupied. An empty string will get all possible events, otherwise they should be named, separated by pipe-signs (see CATS-Documentation).  [strFieldList] holds, separated by pipe-signs, the field-numbers of the CATS-event-result-string, that should be passed through to the CATS-event-script (see above and see CATS-Documentation), if this string is empty , the whole CATS-eventstring-string will be passed as the first and only parameter to the CatsScript... 

	or

	CATS [boolRes], [CATS_DIAL], boolHaveMSg, strNumber	
	Dials out the [strNumber] using the substation, that CATS relates to the actual station.

	In the examples a set of small and useful scripts are in the folder “CATS”, incl. short code-documentation.

08.05.2006	(8.09.05/762/DD) Der Dialog “Auflösung einstellen“, der aus dem Werkzeugkasten heraus aufgerufen werden kann, wurde um ein neues Dialog-Elemente erweitert. Man kann dort nun auch angeben, ob die eingestellte Auflösung horizontal gestaucht werden soll. Die Angabe bezieht sich in Prozent auf die darüber angegebene Bildschirmnutzung. Dies ist hauptsächlich für Benutzer eines Widescreens gedacht, da der Standard zu große Fonts erzeugte.
	
	The dialog “Auflösung einstellen“ (Screen-Resolution Configuration), that can be called from out of the toolbox, has been extended by one new dialog-element. A horizontal stretch-value can be set in percent, depending to the window-usage-value above it. This is mainly for users with a widescreen, because the standard produced an oversized font.

26.03.2006	(8.09.04/761/DD) Engine für Batchjobs ohne GUI angepasst: Falls die Engine mit einer INI-Datei gestartet wird, in der Sektion [Config] im Schlüssel UseMainWindow eine 0 eingestellt ist, startet die Anwendung ohne Hauptfenster und führt das Script aus, dass nach der INI-Datei als 2. Parameter an die Engine weitergegeben wurde. Neu ist, dass dabei vorher auch das SQL-INI-Script, das Update-Script und das Main-Script ausgeführt und der komplette Datenbank-Connect hergestellt wird. Damit kann die Engine auch für Tasks des Task-Managers auf einem Server verwendet werden, auch dann, wenn kein Anwender am System angemeldet ist. Nach Ausführung des Scriptes wird die Anwendug automatisch beendet. Man sollte in solche Scripte natürlich keinerlei User-Abfragen oder Meldungen einbauen…

	Engine can run batchjobs without GUI: If the engine is started with a INI-file, with the key UseMainWindow set to 0 in section [Config], it will run the application without main-window. The second parameter to the engine (after the INI-file-name) should be the script-name. New is, that the SQL-INI-Script, the Update-Script and the Main-Script are completely executed, also the complete database-connect is realized. So the engine can run tasks for the windows-task-manager e.g. on a windows-server, even, if no user is logged in. After the script has been executed, the application will be shut down. In such script no user-interaction or messages should be displayed…

24.03.2006	(8.09.03/760/HB) Der Abfrage-Konfigurator berücksichtigte nicht, wie geplant die Extra-Syntax (wie Farben und Knoten) -  der Fehler wurde behoben. 

	The query-configuration didn’t recognize special-CSH-syntax, like colours or knots – this error has been removed.

24.03.2006	(8.09.02/759/DV) Zwei neue optionale Parameter für den Befehl EXTERN:
	EXTERN 'name', option {, [listParams] {, boolWait {, strDirectory {, [boolRes] {, [numReturnCode]}}}}}.
	[boolRes] gibt zurück, ob das externe Programm überhaupt ausgeführt werden konnte.
	[numReturnCode] gibt den Rückgabewert des externen Programms weiter. 

	Two ne optional parameter for the EXTERN command:
	EXTERN 'name', option {, [listParams] {, boolWait {, strDirectory {, [boolRes] {, [numReturnCode]}}}}}
	[boolRes] returns, whether the external program could be executed at all, or not.
	[numReturnCode] returns the return-code of the external program. 

24.03.2006	(8.09.01/758/HB) Neuer Schlüssel für die Appliktions-INI-Datei, Sektion [Config]: QueryConfigAllowFieldListVars=0 (DEFAULT) oder 1. Wenn der Schlüssel gesetzt ist, wird der Abfrage-Konfigurator gestartet, obwohl das Original-Query Variablen in der Feldliste enthält. Diese finden sich in der angepassten Version jedoch nur in bereits interpretierter Form wieder. 

	New key for the application-INI-file, section [Config]: QueryConfigAllowFieldListVars = 0 (DEFAULT) or 1. If this key is set to TRUE the query-configuration allows the presence of variables in the field-list of the original-query. These variables are already replaced by their values and so they will be saved in the changed query. 

23.04.2006	(8.09.00/757/DD) Auf alle Abfragen, die in einem Grid oder Browser angezeigt werden und aus einer SQL-Datei  geladen wurden (also NICHT innerhalb eines Scriptes definiert wurden), kann ab jetzt der Abfrage-Konfigurator angewandt werden. Der Konfigurator bietet die Möglichkeit, bisher nicht verwendetet Felder in die Feldliste zu ziehen. Außerdem kann man Felder von der Feldliste in die OrderBy-Liste und umgekehrt per Drag & Drop ziehen. Alle Details eines jeden Feldes der Feldliste können im Detail-Tab eingestellt werden. Falls der User im aufrufenden Script über den User-Level 3 verfügt, kann er die Einstellungen für alle User verändern, anderenfalls wird die Einstellung ausschließlich für die aktuelle Station bzw. den aktuellen User wirksam. Alle angepassten Abfragen werden im PrintSet-Verzeichnis abgelegt. Der User mit dem Level 3 kann ggf. auch ALLE Anpassungen einer Abfrage löschen. Sollte eine gespeicherte Abfrage in der Feldliste eine Script-Variable enthalten, wird der Konfigurator nicht geladen.

All querys that were loaded from out of a SQL-file and shown in a grid or browser could be designed with the query-configuration from now on. Unused fields could be dragged to the fieldlist. Also fields could be dragged between the orderby-list and fieldlist. The details of each field can be changed in the detail-tab. I a user has level 3 in the calling script, the changes can apply to all users, otherwise it can only apply to the actual station or actual user. All redesigned querys are saved to the printset-path. A user with level 3 may delete ALL versions of a redesigned field, otherwise only the owned query can be deleted. If the fieldlist of a query contains a script-variable, the configuration-tool will not be loaded.

18.04.2006	(8.08.06/756/ST) Neuer optionaler Parameter des Befehls LIST_DELETE [list], num {, boolToEnd}
			Wenn boolToEnd TRUE ist, wird die Liste von (einschließlich) num komplett abgeschnitten.

	New optional parameter for the command LIST_DELETE [list], num {, boolToEnd}. If boolToEnd is TRUE, the list will be cut from (including) num on, completely to its end.

18.04.2006	(8.08.05/755/DD) Wenn im Schlüssel TimeServerName der Applikations-INI-Datei an erster Stelle ein „/“ oder ein „\“ steht, wird dem String bei der Ausführung kein „\\“ mehr vorangestellt.

	If the first char of the key TimeServerName from the application-INI-file is a “\” oder a “/”, no “\\” will be placed before it, at runtime-execution.

11.04.2006	(8.08.04/754/DD) Neue CSH-Syntax in Query: z.B. [R”3”]. Erlaubt es die Höhe der Zeilen des Browsers einzustellen. Dies ist eine Erweiterung der Änderung 8.06.41/685/HB vom 19.07.2005.

	New csh-syntax for queries: e.g. [R”3”]. Allows setting the browser row height. This extends change 8.06.41/685/HB from 19.07.2005.

11.04.2006	(8.08.03/753/DD) Die Modus-Box in den Eingabe-Masken konnte bisher mit den Tasten STRG+M oder F6 abwärts geblättert werden. Ab jetzt kann mit STRG+, (STRG+KOMMA) oder STRG+F6 auch aufwärts geblättert werden. 

	Up to now, the modus-box inside the input-masks could be scrolled down by pressing CTRL+M or F6. From now on, it is also possible to scroll upwards by pressing CTRL+, (CTRL+KOMMA) or CTRL+F6.

08.04.2006	(8.08.02/752/DD) Erweiterung des Befehls SEND_MAIL. Anstelle der Parameter ToName und ToEMail können ab jetzt auch VAR_LIST Variablen übergeben werden. Diese Listen müssen genau gleich viele Zeilen enthalten und dürfen maximal 128 Zeilen enthalten. Wenn in der Liste der Email-Adressen der Adresse selbst ein “CC:“ vorangestellt wird, also z.B. “CC:dieterdasberg@web.de“, wird die Adresse in die Liste der CC-Adressen eingetragen, bei BCC: in die Liste der BCC-Adressen. Außerdem dürfen auch die Parameter FileName und FileDisplayName in Listen übergeben werden. Diese müssen ebenfalls gleich viele Zeilen enthalten; dürfen jedoch nur 32 Zeilen enthalten.

	Command SEND_MAIL has been extended: Instead of the parameter ToName and ToEMail also variables of type VAR_LIST can be given. This lists must contain exactly the same amount of lines and they may contain maximal 128 lines. If one of the email-adress-lines have a CC: in front of the address, the address will  be placed in the CC-list of the email (e.g. CC:dieterdasberg@web.de). Also, if one of the email-adress-lines have a BCC: in front of the address, the address will  be placed in the BCC-list of the email (e.g. BCC:dieterdasberg@web.de). Additionally the parameter FileName and FileDisplayName may be given as lists. They also must contain the same amount of lines and may maximal contain 32 lines.

04.04.2006	(8.08.01/751/DD) Um mit dem Befehl GET_REGISTRY_INFO einen Standard-Wert lesen zu können, kann man ab jetzt folgenden Wert-Namen verwenden “###@@@###“. Beispiel:
	GET_REGISTRY_INFO [Res], [Str], [REG_READ], 'HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\'
	Dies würde zu KEINEM Ergebnis führen, obgleich der Schlüssel “Mail“ (neben anderen Werten) auch einen Standard-Wert hat.
	GET_REGISTRY_INFO [Res], [Str], [REG_READ], 'HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\###@@@###'
	Mit dieser Methode wird der Standard-Wert (der normalerweise keinen eigenen Namen hat) zurückgegeben.

	To read the standard-value of a registry key, with the GET_REGISTRY_INFO command, the value-name “###@@@###” can be used from now on. Example:	
	GET_REGISTRY_INFO [Res], [Str], [REG_READ], 'HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\'
	Would NOT give back any value, although the key “Mail” (beneath other values) contains a standard value.
	GET_REGISTRY_INFO [Res], [Str], [REG_READ], 'HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\###@@@###'
	This method will return the standard-value (that normally has now specific name).

03.04.2006	(8.08.00/750/DD) In der Dokumentation gibt es in den Beispielen ab jetzt ein Verzeichnis “Language&Translation“. Darin sind die Definitionsdateien für zwei neue Tabellen “langs.sql“ und “trala.sql“. Zur Verwaltung der “langs“ steht ein gleichnamiges Script zur Verfügung. Das Script “translation.csh“ kann jederzeit aus jeder Maske der Anwendung heraus gestartet werden, indem man in einem String-Feld die Tastenkombination STRG+U auslöst. Damit kann man beliebig viele Übersetzungen an jedes Stringfeld eines jeden Datensatzes anfügen. Der Name des Scriptes, das als Standard-Translation-Script verwendet werden soll kann in einem neuen Schlüssel in der Application-INI-Datei in der Sektion [Config] angegeben werden: MainLanguageScript=translation.csh (default)
	In manchen Masken ist jedoch sicherlich sinnvoll einen individuelleren bzw. übergreifenden Dialog zur Verfügung zu stellen. Dies kann man erreichen, in dem man als 6. Parameter im VIEW einer Masken-Feld-Definition einen passenden Script-Namen angibt:
	VIEW '', '40', 'NAME2', 1170100, '', 'test.csh'

	Within the documentation, in the examples a new folder is available: “Language&Translation“. There are, among others, two new table-definitions “langs.sql” and “trala.sql“. To manages the “langs” a script with the same name is available. The script “translation.csh” can be started from out of any mask of the application, by pressing CTRL+U from out of a string-field. So translations of any kind can be related to any stringfield of any record. The name of the script, that is used for the translation can be defined, in the new key “MainLanguageScript=translation.csh (default)” in the section [Config] in the application-INI-file.
	In some masks it can be useful to have a more individual dialog. This can be defined by the sixth parameter in the VIEW-line of a mask-field-definition:
	VIEW '', '40', 'NAME2', 1170100, '', 'test.csh'
 
31.03.2006	(8.07.05/749/DD) Der Befehl SQL_INTERFACE kann ab jetzt auch mit einem Dateinamen als Parameter aufgerufen werden, der auf eine SQL-Datei verweist. Diese wird ohne jede Meldung im Hintergrund ausgeführt. Auch Fehlermeldungen werden unterdrückt, außer, wenn der Entwickler-Modus eingeschaltet ist. Beispiel:  SQL_INTERFACE ‘Laufwerk:\Pfad\dateiname.sql’

	The command SQL_INTERFACE can be started with a filename of a sql-file as a parameter from now on. The file will be executed without any messages, except the developer mode is turned on. Example: SQL_INTERFACE ‘Drive:\Path\filename.sql’

28.03.2006	(8.07.04/748/DD) In Masken können ab jetzt auch List-Text-Zeilen mit Variablen gefüllt werden.

	The lines of list-texts in masks can be filled with the values of variables from now on. 

24.03.2006	(8.07.03/747/SCH) Beim Start der Applikation wurden die Spracheinstellungen nicht korrekt geladen, wenn man mit dem Schlüssel UserLoginDefaultRights ein Rechtemodell angab. Der Fehler wurde behoben.

	The language-settings were not loaded properly on application-startup, if the key UserLoginDefaultRights has a given right-modell. This error has been removed. 

21.03.2006	(8.07.02/746/VH) Beim Start der Applikation wurde die Liste der offenen Termine nur dann gezeigt, wenn sich zum aktuellen Tag auch ein Termin darin befand. Dieser Fehler wurde behoben.

	On application-startup the users unfinished date-list has only been shown, if a date on the current day was available. This error has been removed. 

21.03.2006	(8.07.01/745/VH) Neuer Schlüssel für die Appliktions-INI-Datei, Sektion [DocumentManager]: DocMgrOnlyToday=0 oder 1 (DEFAULT). Wenn der Schlüssel gesetzt ist, werden nur die Termine des Tages angezeigt, anderenfalls werden alle offene Termine bis zum heutigen Tag angezeigt. 

	New key for the application-INI-file, section [DocumentManager]: DocMgrOnlyToday =0 or 1 (DEFAULT). If this key is set to TRUE only the dates of the actual day will be shown, otherwise all unfinished dates up to the current day will be shown. 

21.03.2006	(8.07.00/744/VH) Neuer Schlüssel für die Appliktions-INI-Datei, Sektion [Config]: UserLoginMS=0 (DEFAULT) oder 1. Wenn der Schlüssel gesetzt ist, wird in der User-Tabelle nach dem aktuell am Rechner eingeloggten Mitarbeiter gesucht. Falls dieser gefunden werden kann, wird kein Login-Screen mehr gezeigt und der User automatisch angemeldet. 

	New key for the application-INI-file, section [config]: UserLoginMS=0 (DEFAULT) or 1. If this key is set to TRUE, the user-table will be looked up for the actual logged system-user. If the name can be found, the login-screen will not appear and the user will be logged in automaticly. 

21.03.2006	(8.06.99/743/DD) Für die Schnellsuche im Browser wird ab jetzt auch der Tabellen-Alias mitberücksichtigt.

	For a fast-search within a browser, the table alias will be used too from now on. 

09.03.2006	(8.06.98/742/DD) Die integrierte Bibliothek “MiTeC System Information Component Suite“ wurde von der Version 10.1.0 auf die Version 10.2.0 umgestellt.

	The integrated library “MiTeC System Information Component Suite“ has been updated from version 10.1.0 to version 10.2.0. 

08.03.2006	(8.06.97/741/DD) Wenn mittels des Schlüssels UserLoginDefaultRights= ein Rechtemodel geladen wird, wird ab jetzt auch, falls eine Sprachwahl möglich ist, die letzte eingestellte Spracheinstellung geladen.
	
	If the key UserLoginDefaultRights= is used to load a rights-model, and a language-choice is possible, the last choosen language-setting will be loaded.

08.03.2006	(8.06.96/740/DD) Die integrierte Bibliothek “MiTeC System Information Component Suite“ wurde von der Version 10.0.0 auf die Version 10.1.0 umgestellt.

	The integrated library “MiTeC System Information Component Suite“ has been updated from version 10.0.0 to version 10.1.0. 

08.03.2006	(8.06.95/739/DD) Die Library für den SSH-Tunnel wurde auf die Version 1.5.2 angehoben.
	
	The SSH-tunnel-library has been updated to version 1.5.2.

22.02.2006	(8.06.94/738/DD) Drei neue Parameter für den Befehl FILE_LIST:
	FILE_LIST [listResult], 'strFileFilter', 'strDirectory' {, boolIncludeSubDirs {, boolWithPath {, boolJustDirs {, boolNoDirs}}}}
	Wenn boolWithPath TRUE ist, wird er Pfad, ab dem Verzeichnis, von dem aus ausgelesen wird, mit zurückgegeben. Wenn boolJustDirs TRUE ist, werden nur Verzeichnisse, keine Dateien zurückgegeben. Wenn boolNoDirs TRUE ist, werden nur Dateien, keine Verzeichnisse zurückgegeben.
	
	Three new Parameters for the command FILE_LIST:
	FILE_LIST [listResult], 'strFileFilter', 'strDirectory' {, boolIncludeSubDirs {, boolWithPath {, boolJustDirs {, boolNoDirs}}}}
	If boolWithPath is TRUE, the path, from the starting-directory on will also be returned.
	If boolJustDirs is TRUE, only directories are returned, no files.
	If boolNoDirs is TRUE, only files are returned, no directories.	

22.02.2006	(8.06.93/737/DD) Neuer Schlüssel für die Appliktions-INI-Datei, Sektion [DocumentManager]: DocMgrAskFileDelete=0 oder 1.  Wenn dieser Schlüssel gesetzt ist, wird, im Falle des Löschens eines Dokumenten-Manager-Eintrages, die Frage gestellt, ob im Falle einer angehängten Datei, diese ggf. auch von physisch gelöscht werden soll. Anderenfalls wird sie immer auf dem Datenträger belassen.
	
	New key for the application-INI-file, section [DocumentManager]: DocMgrAskFileDelete=0 or 1. If this key is set, a question will pop up in case of a delete of a document-manager-item, with a file connected. The question will ask the user, if the file should be delete physical also, otherwise it will simply be left on the file-medium.  

22.02.2006	(8.06.92/736/DD) Die Library für den SSH-Tunnel wurde auf die Version 1.5.1 angehoben.
	
	The SSH-tunnel-library has been updated to version 1.5.1.

22.02.2006	(8.06.91/735/DD) Der Dialog für Dokumentenmanager-Details wurde so erweitert, dass man auch eine Datei wählen kann, wenn man im “Lupe“-Modus ist.
	
	The document-manager-detail-dialog has been extended. It is possible to choose a file in the mode “details-off” from now on.

16.02.2006	 (8.06.90/734/DD) Ab jetzt können BLOB-Felder und MEMO-Felder mit dem Befehl TABLE_2_ASCII ausgelesen werden. Der Satz-Trenner (CRLF) wird dabei durch entsprechend viele Zeichen #184 und der Feld-Trenner durch entsprechend viele Zeichen #183 ersetzt..
	
	From now on, blob- and memo-fields can be read out with the command TABLE_2_ASCII. The set-delimiter (CRLF) will be replaced by as #184 chars and the field-delimiter will be replaced by #183 chars.

16.02.2006	(8.06.89/733/DD) Ab jetzt werden BLOB-Felder wie MEMO-Felder in der Datenbank behandelt.
	
	From now on, BLOB-fields are treated like MEMO-fields in the database.

02.02.2005	(8.06.88/732/KP) Neue Schlüssel für die Applikations-INI-Datei, Sektion [Config]: 
MainDatePicLong=dd.mm.yyyy
MainDatePicShort=dd.mm.yy
MainTimePicLong=hh:mm:ss
MainTimePicShort=hh:mm
Mit diesen Werten werden alle Datums und Zeitwerte der Engine umgewnadelt. Für Datumsdefinitionen gilt: Es ist absolut notwendig, dass für die Definition der Tage der Kleinbuchstabe „d“ verwendet wird, für die Monate der Kleinbuchstabe „m“ und für die Jahre der Kleinbuchstabe „y“. Es spielt keine Rolle, welches Trennzeichen verwendet wird. Üblich sind “.“ oder “-“ oder “/“. Für Zeitbestimmungen gilt: Stunden werden mit dem Kleinbuchstaben „h“, Minuten mit dem Kleinbuchstaben „m“ und Sekunden mit dem Kleinbuchstaben „s“ angegeben.

New keys fort he application-INI-File, section [Config]:
MainDatePicLong=dd.mm.yyyy
MainDatePicShort=dd.mm.yy
MainTimePicLong=hh:mm:ss
MainTimePicShort=hh:mm
With this values all date and time-conversions of the engine will be done. It is absolutely recommended, to define this pictures in lowercase and, in case  of dates, to use a “y” for the years, a”m” for the months and a “d” for the days. In case of times, use a “h” for hours, a “m” for minutes and a “s” for the seconds.

01.02.2005	(8.06.87/731/HB) Neuer Schlüssel für die Applikations-INI-Datei, Section [Config]: MenuExclusions=0 (Default). Dieser Wert ist ein LONGINT, der als Binär-Flagge verwendet wird. Wenn sich ein Bit dieses Wertes mit dem (neuen) siebten Parameters einer Menü-Datei-Zeile deckt, dann wird die entsprechende Menüzeile nicht angezeigt. Ziel ist es, für verschiedenen Programmversionen nur ein Menü zu schreiben, und für bis zu 32 unterschiedliche Versionen Zeilen oder sogar ganze Untermenüs ausblenden zu können.

	Beispiel:
 
	INI-File, Section [Config], Key 
			MenuExclusions=4	nur drei der folgenden Zeilen werden gezeigt
			MenuExclusions=2	die erste und dritte Zeile werden nicht gezeigt

	Menu-File
			ITEM 1210,'&Artikel', 'artstext.csh', '', 'Menu1Level2.bmp', 'Menu1ItemSelected.BMP', 2
			; Diese Zeile wird in Version 2 nicht gezeigt

			ITEM 1220,'Waren&gruppe', 'WG_ST.CSH', '', 'Menu1Level2.bmp', 'Menu1ItemSelected.BMP', 4
			; Diese Zeile wird in Version 4 nicht gezeigt

			ITEM 1223,'&ZolltarifNr',  'zolltarifnr.csh', '', 'Menu1Level2.bmp', 'Menu6ItemSelected.BMP', 6
			; Diese Zeile wird in Version 2 und 4 nicht gezeigt

			ITEM 1225,'Größen&stamm', 'groessen.CSH', '', 'Menu1Level2.bmp', 'Menu1ItemSelected.BMP', 1
			; Diese Zeile wird in Version 1 nicht gezeigt

			ITEM 1230,'Absatzplan', 'sta_absplan.csh', '', 'Menu1Level2.bmp', 'Menu1ItemSelected.BMP', 16
			; Diese Zeile wird in Version 16 nicht gezeigt

	New key for the application-INI-file, Section [Config]: MenuExclusions=0 (Default). This longint value is treated as a binary flag. If one bit of this value is set as well as in the value of the (new) sevens parameter of each menu-file-line, the line will not be displayed. The object is, that only one menu-file can be written for all different versions (max. 32) of an application, and that some lines or whole submenus can be hidden for this versions. 

	Example:
 
	INI-File, Section [Config], Key 
			MenuExclusions=4	only three of the following lines will be shown
			MenuExclusions=2	the first and third line will be hidden

	Menu-File
			ITEM 1210,'&Artikel', 'artstext.csh', '', 'Menu1Level2.bmp', 'Menu1ItemSelected.BMP', 2
			; This line will not be displayed in version 2

			ITEM 1220,'Waren&gruppe', 'WG_ST.CSH', '', 'Menu1Level2.bmp', 'Menu1ItemSelected.BMP', 4
			; This line will not be displayed in version 4

			ITEM 1223,'&ZolltarifNr',  'zolltarifnr.csh', '', 'Menu1Level2.bmp', 'Menu6ItemSelected.BMP', 6
			; This line will not be displayed in version 2 and 4

			ITEM 1225,'Größen&stamm', 'groessen.CSH', '', 'Menu1Level2.bmp', 'Menu1ItemSelected.BMP', 1
			; This line will not be displayed in version 1

			ITEM 1230,'Absatzplan', 'sta_absplan.csh', '', 'Menu1Level2.bmp', 'Menu1ItemSelected.BMP', 16
			; This line will not be displayed in version 16

01.02.2005	(8.06.86/730/DD) Neuer Befehl: QUERY_LIST_2_LIST [browser or query or mask], [listVar]
	Übergibt die RecordIDs aller selektierten Records eines Querys an eine Variable vom Typ VAR_LIST. Die Liste wird vor der Übergabe NICHT gesäubert, das muss der Programmierer bei Bedarf selber machen.
	
	New command: QUERY_LIST_2_LIST [browser or query or mask], [listVar]. Passes all RecordIDs of the selected records of a query to a variable of type VAR_LIST. The list will not be cleared before the recordids are passed to the list, this must be done by the programmer, if needed.

01.02.2005	(8.06.85/729/DD) Neuer Befehl: QUERY_LIST_SELECT [browser or query or mask], TRUE or FALSE
	Selektiert bzw. deselektiert alle Records eines Querys.
	
	New command: QUERY_LIST_SELECT [browser or query or mask], TRUE or FALSE. Selects or deselects all records of a query.

01.02.2005	(8.06.84/728/DD) Neue globale String-Variable [WINDOWS_COL_BTN_FACE]: enthält den Farbwert der aktuellen Windows-Farbeinstellung für „Knöpfe“. Diesen Wert kann man z.B. in einem NAVIGATE-Dialog-Element verwenden, um die Hintergrundfarbe der CARA-Fenster genau zu erhalten.
	
	New global string variable [[WINDOWS_COL_BTN_FACE]:]: it contains the color-value of the actual windows-colourset for “buttons”. This value can e.g. be used in a NAVIGATE-dialog-element, to match the background-colour of the CARA-Windows.

01.02.2005	(8.06.83/727/DD) Neue globale String-Variable [CARA_PATH]: sie enthält den Pfad zur Engine.
	
	New global string variable [CARA_PATH]: it contains the path to the engine.

13.01.2005	(8.06.82/726/DD) Das Update der Source-Bibliothek “MySQLDAC_Full 2.5.0 build 9926 (11. Januar 2006)”, die für alle MySQL-Zugriffe zuständig ist, wurde in die aktuelle Version der CARA-Engine übernommen.
	
	The update of the source-library “MySQLDAC_Full 2.5.0 build 9926 (January, 11 2005)”, used for all MySQL-accesses , has been introduced to the cara-engine.

04.01.2006	(8.06.81/725/DD) Beim Befehl GET_YES_NO konnte das Pipe-zeichen (“|“) nicht als Zeilenumbruch eingesetzt werden. Der Fehler wurde behoben..

		The pipe-sign (“|”) could not be used within the command GET_YES_NO as a carriage-return. This error has been removed.

04.01.2006	(8.06.80/724/DD) Beim Befehl WAIT_INFO wurde das Message-File nicht korrekt interpretiert. Es waren zwei Eintragungen in der Message-Datei notwendig. Von nun an muss nur noch ein Eintrag mit Head (“H:“) und Message (“M:“) verwendet werden.

		Using the command WAIT_INFO with a message-file, made two entrys with “M:” necessary. Now only one message with “H:” and “M:” will be used.

04.01.2006	(8.06.79/723/JB) Das Ergebnis der Berechnung von CALC [numVar] AS ORD([strVarWithOneChar]) gab immer nur die ORD-Werte der Grossbuchstaben zurück. Der Fehler wurde behoben.

		The result of CALC [numVar] AS ORD([strVarWithOneChar]) always returned the uppercase ORD-value of the uppercase chars. This error has been removed.

04.01.2006	(8.06.78/722/DD) Um eine Message-Datei immerhalb einer Maske auch mit einem Register verwenden zu können, kann ab jetzt folgende Syntax eingesetzt werden:
	ITEM 007, 'REGISTER', 1.00, 1.00, 78.00, 14.00, 'CLIENT'
	VIEW      'Reg &1', 'Reg &1;Reg &2;Reg &3#@10010 Reg &1;Reg &2;Reg &3', 'D.Register', 0
	Dabei wird der erste Teil (vor dem “#“) wie bisher zur Programmierung verwendet. Alle TAB-Namen beziehen sich innerhalb des Scriptes auf die hier hinterlegten Werte. Der zweite Teil (hinter dem “#“) wird aus der Message-Datei geholt und übersetzt. Die Bezeichnungen werden dem User lediglich angezeigt, sie haben keinerlei Auswirkung auf die Programmierung. 

	To use a message-file for a register within a mask, the following syntax can be used from now on:
	ITEM 007, 'REGISTER', 1.00, 1.00, 78.00, 14.00, 'CLIENT'
	VIEW      'Reg &1', 'Reg &1;Reg &2;Reg &3#@10010 Reg &1;Reg &2;Reg &3', 'D.Register', 0
	The first part (before the “#”) will be used for programming. All tab-names are referring to these values. The second part (after the “#”) will be retrieved out of the message-file. These describers are shown to the user only, they don’t have any influence on the programming. 

04.01.2006	(8.06.77/721/DD) Erweiterung der Änderung (8.06.66/710/SCH) vom 28.11.2005: Die Zeilen der Language-Section haben drei weitere Parameter erhalten:
[Languages]
; ID = ShortCut, Name, CARA-MSG-File, Application-MSG-File, Menu-File, Main-Image-File, CharacterSet, FontName
; 000=DE,Deutsch,CaraDE.msg,IdealDE.msg,IdealDE.mnu,PICTURE_PATH\app_home_de.htm,DEFAULT_CHARSET,Arial
; If one of the files does not exist, no error will occur
000=DE,Deutsch,CaraDE.msg,IdealDE.msg,IdealDE.mnu,PICTURE_PATH\app_home_de.htm,DEFAULT_CHARSET,Arial
001=EN,English,CaraEN.msg,IdealEN.msg,IdealEN.mnu,PICTURE_PATH\app_home_en.htm,DEFAULT_CHARSET,Arial
	Damit kann ab jetzt auch noch das Main-Image-File, der CharacterSet und der Fontname sprachabhängig gewechselt werden. 

	Extent of change (8.06.66/710/SCH) from 28.11.2005: The lines of the language-section have three new parameters:
	[Languages]
; ID = ShortCut, Name, CARA-MSG-File, Application-MSG-File, Menu-File, Main-Image-File, CharacterSet, FontName
; 000=DE,Deutsch,CaraDE.msg,IdealDE.msg,IdealDE.mnu,PICTURE_PATH\app_home_de.htm,DEFAULT_CHARSET,Arial
; If one of the files does not exist, no error will occur
000=DE,Deutsch,CaraDE.msg,IdealDE.msg,IdealDE.mnu,PICTURE_PATH\app_home_de.htm,DEFAULT_CHARSET,Arial
001=EN,English,CaraEN.msg,IdealEN.msg,IdealEN.mnu,PICTURE_PATH\app_home_en.htm,DEFAULT_CHARSET,Arial
	With this change the min-image-file, the character set and the font name can be changed depending on the chosen language. 

03.01.2006	(8.06.76/720/DD) Die integrierte Bibliothek “MiTeC System Information Component Suite“ wurde von der Version 9.4.3 auf die Version 10.0.0 umgestellt.

	The integrated library “MiTeC System Information Component Suite“ has been updated from version 9.4.3 to version 10.0.0. 

03.01.2006	(8.06.75/719/DD) Die Script-Varibale  [MY_DOCUMENTS_PATH] wurde unter neueren XP-Versionen nicht mehr korrekt ermittelt. Der Fehler ist behoben.

	The script-variable [MY_DOCUMENTS_PATH] was not filled correct on newer XP-Versions. This error has been removed. 

22.12.2005	(8.06.74/718/FH) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [Config]: CharSet=. Mögliche Werte sind DEFAULT_CHARSET (Vorgabe), ANSI_CHARSET, SYMBOL_CHARSET, SHIFTJIS_CHARSET, HANGEUL_CHARSET, GB2312_CHARSET, CHINESEBIG5_CHARSET, OEM_CHARSET, JOHAB_CHARSET, HEBREW_CHARSET, ARABIC_CHARSET, GREEK_CHARSET, TURKISH_CHARSET, VIETNAMESE_CHARSET, THAI_CHARSET, EASTEUROPE_CHARSET, RUSSIAN_CHARSET, MAC_CHARSET, BALTIC_CHARSET. In Verbindung mit dem Schlüssel FontName= kann man ab jetzt z.B. auch Programme mit arabischem Zeichensatz schreiben. 

	New key for the application-INI-file, section [Config]: CharSet=. Possible values are DEFAULT_CHARSET (default), ANSI_CHARSET, SYMBOL_CHARSET, SHIFTJIS_CHARSET, HANGEUL_CHARSET, GB2312_CHARSET, CHINESEBIG5_CHARSET, OEM_CHARSET, JOHAB_CHARSET, HEBREW_CHARSET, ARABIC_CHARSET, GREEK_CHARSET, TURKISH_CHARSET, VIETNAMESE_CHARSET, THAI_CHARSET, EASTEUROPE_CHARSET, RUSSIAN_CHARSET, MAC_CHARSET, BALTIC_CHARSET. Combined with the key FontName= is it possible to write programs with Arabic fonts e.g. from now on.

22.12.2005	(8.06.73/717/FH) Anstelle der Fragezeichen die auf den Knöpfen des Dokumenten- und Terminmanagers abgebildet wurden, wird jetzt ein Bitmap, das einen Pfeil abbildet, gezeigt. Damit unterscheidet sich das Symbol besser vom Hilfe-Symbol.

	Instead of the question mark, that were the caption of the buttons in the document- and date-managers, a bitmap, that shows an arrow, will be used. So this symbol makes a bigger difference to the help-symbol.

09.12.2005	(8.06.72/716/DD) Seit der Änderung 8.06.64/708/MB vom 27.11.2005 konnte die Anwendung mit dem Tree-Menü nicht mehr mit dem Punkt “Ende“ beendet werden; der Fehler wurde behoben. 

	Since change 8.06.64/708/MB from 27.11.2005 the application could not be closed with the item ”End“ in the tree-menu; this error has been removed.

08.12.2005	(8.06.71/715/DD) Das Umsortieren von Browsern, die eine STARTING-WITH-Anweisung enthielten, schlug stets fehl, der Fehler ist behoben. 

	Resorting a browser that shows a query with a starting-with-clause, always failed – this error has been removed.

05.12.2005	(8.06.70/714/DD) Ab jetzt ist es möglich, im Dokumentenmanager eine Check-Box zu setzten, die eine Empfangsbestätigung anfordert. Dabei wird dem User beim Start der Anwendung die Liste der offenen Termine gezeigt. Wenn er diese Liste schließt, werden an alle “Ersteller“ eines Termins, die eine Empfangsbestätigung wünschen, eine Email gesendet, wenn in den Benutzerdaten eine Email-Adresse angegeben wurde.  Dazu wurde ein neues Feld in die Tabelle DocMgrI notwendig, dass beim Start der neuen Engine automatisch eingefügt wird: SendConfirm (1=angefordert und 2=bestätigt). 

	Außerdem wurde der Befehl ITEM_2_USER_TIMER um drei neue Parameter erweitert: 
	[boolRes], RecID, NextPID, Date, Time, Note, UserName1, UserName2, TableName, ScriptName, XRefName {, SendConform, CreatorID}. 
	Wobei XRefName die in der TableFld-Definition verwendete X-Referenz ist, SendConfirm die neue Empfangsbestätigung ist und CreatorID die RecordID des erstellenden Mitarbeiters.

	Zusätzlich wurde eine neue globale Variable [DOCU_MGR_SEND_CONFIRM] verfügbar gemacht, die im Befehl DOCUMENT_CREATE berücksichtigt wird. 

	Darüber hinaus wurden in der Applikations-INI-Datei-Schlüssel zwei neue Schlüssel angefügt: UserFldEMail (Feldname der Email-Adresse des Users) und UserFldAdressID = Feldname der RecordID der zum User gehörenden Adresse.

	A new check-box has been introduced to the document-manager, that allows the creator of an entry to retrieve a confirmation. When a user starts the application, a list with all actual dates is shown. Closing this list causes the engine to send a confirmation-email to all creators of the entries, that checked the confirmation box. To realize this, a new field had to be added to the table DocMgrI: SendConfirmation (1=confirmation forced, 2=confirmation done). This field will automaticy be added to the table by the engine, if it doesn’t exist. 

	With this change the command ITEM_2_USER_TIMER got three new parameters:
	[boolRes], RecID, NextPID, Date, Time, Note, UserName1, UserName2, TableName, ScriptName, XRefName {, SendConform, CreatorID}. 
	Where XRefName the name of the x-reference in the tablefld-definition is, SendConfirm is the new option and CreatorID is the recorded of the user, that creates the item.

	Also the new variable [DOCU_MGR_SEND_CONFIRM] is availiable now. It can be used with the command DOCUMENT_CREATE.
	
	And in companion with all this changes two new keys for the application-INI-file, section [Config] are available: UserFldEMail (fieldname of the email-adress of the users) and UserFldAdressID = fieldname that holds the RecordID of the address of the user.

29.11.2005	(8.06.69/713/DD) Neue globale String-Variable [LANGUAGE_SECTION_LINE], gibt die beim Einloaggen gewählte Zeile der Sprachen-Sektion der Applikations-INI-Datei aus.
	
	New global string-variable [LANGUAGE_SECTION_LINE], returns the line of the language-section, that was chosen on logon, from out of the application-INI-file.

28.11.2005	(8.06.68/712/DD) Das Update der Source-Bibliothek “MySQLDAC_Full 2.4.0 build 9911 (28. November 2005)”, die für alle MySQL-Zugriffe zuständig ist, wurde in die aktuelle Version der CARA-Engine übernommen.
	
	The update of the source-library “MySQLDAC_Full 2.4.0 build 9911 (November, 28 2005)”, used for all MySQL-accesses , has been introduced to the cara-engine.

28.11.2005	(8.06.67/711/DD) Neuer Befehl COMPUTER_IS_ONLINE [boolRes]. Gibt in [boolRes] zurück, ob der Computer online ist oder nicht.

	New command . COMPUTER_IS_ONLINE [boolRes]. Returns in [boolRes], weather the computer is online or not.

28.11.2005	(8.06.66/710/SCH) In der Applikations-INI-Datei kann ab jetzt eine neue Sektion [Languages] platziert werden. Wenn diese Sektion existiert, erhält der User die Möglichkeit beim Login die Sprache über eine Dropdownbox auszuwählen. Diese Sektion kann folgendermaßen aussehen:
[Languages]
; ID = ShortCut, Name, CARA-MSG-File, Application-MSG-File, Menu-File
; 000=DE,Deutsch,CaraDE.msg,IdealDE.msg,IdealDE.mnu
; If one of the files does not exist, no error will occur
000=DE,Deutsch,CaraDE.msg,IdealDE.msg,IdealDE.mnu
001=EN,English,CaraEN.msg,IdealEN.msg,IdealEN.mnu
002=FR,Francais,CaraFR.msg,IdealFR.msg,IdealFR.mnu
003=IT,Italiano,CaraIT.msg,IdealIT.msg,IdealIT.mnu
		
	The application-INI-file can have a new section [Languages],. If this section exists, the user will have the option to choose the language on logon in a dropdownbox. The section has to look like shown above.

27.11.2005	(8.06.65/709/MB) Wenn in der Applikations-INI-Datei in der Sektion [Config] der Schlüssel ScriptCacheSize= einen Wert größer als 0 hat, werden von nun an nicht nur Scripte sondern auch SQL- und Masken-Dateien gecached.

	If in the application-INI-file, section [Config] the key ScriptCacheSize= has a value bigger than 0, not only scripts will be chached from now on. Also SQL and mask-files will be cached.

27.11.2005	(8.06.64/708/MB) Wenn eine Applikation mit dem Menüpunkt “Ende“ verlassen wurde, wurde die Stations-INI-Datei nicht gesichert. Der Fehler wurde behoben.

	If a application was closed by using the menu-item “End“, the station-INI-file wasn’t saved. This error has been removed.

27.11.2005	(8.06.63/707/MB) Die Befehle PANEL_SET und PANEL_INFO haben aufgrund zu hoher Sicherheitsvorkehrungen häufig nicht mehr funktioniert. Hiermit wird die Verantwortung für eine saubere, absturzsichere Verwendung dieser Befehle wieder an den Programmierer zurückgegeben….

	The commands PANEL_SET and PANEL_INFO mostly did not work because there were too many security requests in the engine. With this change the responsibility for a clean and save usage of this commands is returned back to the programmers…

27.11.2005	(8.06.62/706/GH) Im Befehl FILE_DOWNLOAD wurde vor dem Download die URL in Großbuchstaben umgewandelt, dadurch schlugen Downloads fehl. Der Fehler wurde behoben. Außerdem wird der Download nur noch durchgeführt, wenn der Rechner online ist.

	Within the command FILE_DOWNLOAD the URL has been changed to uppercase before download. This error has been removed. Additionally the download will only be executed, if the computer is online.

27.11.2005	(8.06.61/705/AHa) In den Benutzerrechten kann man von nun an nicht nur regeln, ob jemand einen bestimmten Notiztyp bearbeiten und sehen kann, sondern auch, ob die Notiz nur ansehen darf.

	The user-rights have been extended. From now on it is not only possible to give a user the right to edit and view a specific note-type, additionally the user may have read only rights to the note.

27.11.2005	(8.06.60/704/DD) Mit der Tastenkombination Shift+F12 kann man ab jetzt in jeder Maske und jedem Browser den Entwickler-Modus an- und ausschalten.

	With shift+f12 the developer-mode can be switched on and off from out of all masks and browsers.

27.11.2005	(8.06.59/703/HB) Neuer Schlüssel in der Applikations-INI-Datei, Sektion [Config]: UserLoginList =0 oder 1. Wenn dieser Schlüssel auf 1 steht, wird eine Dropdownbox mit den verfügbaren Usernamen angeboten. Unabhängig von dieser Änderung wird ab jetzt der Name der Person, die zuletzt eingeloggt war beim Login als Username vorgeschlagen.

	New key for the application-INI-file, section [Config]: UserLoginList =0 or 1. If this key is set to TRUE, a dropdownbox with all available usernames will be shown in the login dialog. Independent from this change, the name of the person, that has been logged in at last, will be proposed as the username on the next logon.

27.11.2005	(8.06.58/702/HB) Der Werkzeugkasten wurde neu sortiert. Alle Punkte die “normale“ User betreffen befinden sich oberhalb der Punkte, die Programmierer betreffen. Wenn ein User im Rechte-System einen Level kleiner als 10000 hat, werden die Punkte, die Programmierer betreffen, im Werkzeugkasten nicht angezeigt. Alle Texte, die im Werkzeugkasten angezeigt werden, können von nun an in der CARA.msg-Datei geändert werden.

	The tool-box has been resorted. All options, that are related to “normal” users are displayed above the options for programmers. If a user has a userlevel lower than 10000 in the rights-system, the programmers options are not displayed. All texts, that are displayed in the toolbox can be edited in the cara.msg-file.

27.11.2005	(8.06.57/701/DD) Es gibt eine neue Methode zum Untersuchen und Verfolgen von Scripten. Dabei werden lediglich die angesteuerten Prozeduren aufgelistet, wobei die Verschachtelungstiefe ebenfalls sichtbar wird. Dazu gibt es im Werkzeugkasten einen neuen Punkt “Script-Procedure“, im Script kann dieser Modus mit den Befehlen DEBUG_PROCS_ON und DEBUG_PROCS_OFF an und aus gestellt werden. In der Applikation-INI-Datei kann dies in der Sektion [Config] mit dem Schlüssel ScriptDebugProcs= geschehen.

	A new form for monitoring a script is available. Hereby only the procedure-names (with the depth of nesting)  that are called are listed in the monitor window. In the tool-box a new entry can be found, to switch this mode on and off “Script-Procedure“, within a script the mode an be switched by using the new commands DEBUG_PROCS_ON and DEBUG_PROCS_OFF. In the application-INI-file, section [Config] the key ScriptDebugProcs= can be used.

27.11.2005	(8.06.56/700/DD) Mit der CARA-Engine kann von nun an auch auf die DB2-Datenbank der IBM-iSeries und der AS400 zugegriffen werden. Dabei wird nicht ein Zugriff auf die Datenbank selber, sondern auf eine darauf platzierte “Collection“ vorgenommen. Der Name der Collection kann mit einem neuen Schlüssel in der SQL-Section der Applikations-INI-Datei festgelegt werden: Schema= (Name der Collection). Es wird empfohlen, die BDE-Version der CARA-Engine mit einem nativen DB2-Zugrif zu verwenden und NICHT eine ODBC-Verbindung, da man ansonsten z.B. bei einem UPDATE oder DELETE-Query, dass keinen Datensatz erreicht, eine Fehlermeldung erhält.

	The CARA-Engine is able to connect to a DB2-database on an IBM iSeries and AS400 from now on. Hereby the connection does not really reach “a” database, because on such machines only one database exists. The connection must be made to a “collection” in the database. The collection name can be defined in the application-INI-file, section SQL, with the key Schema= (name of the collection). It is better to use a native BDE-DB2-connect to the database than a BDE-ODBC-connect, because otherwise error messages will occur if an UPDATE or DELETE-query does not reach any record.

27.11.2005	(8.06.55/699/DD) Das Update der Source-Bibliothek “MySQLDAC_Full 2.3.3 build 9870 (30. Juni 2005)”, die für alle MySQL-Zugriffe zuständig ist, wurde in die aktuelle Version der CARA-Engine übernommen. Damit ist die CARA-Engine jetzt für die MySQL-Server Version 5.x geeignet..
	
	The update of the source-library “MySQLDAC_Full 2.3.3 build 9870 (June, 30 2005)”, used for all MySQL-accesses , has been introduced to the cara-engine. The CARA is now useable für the MySQL-Server Version 5.x

03.11.2005	(8.06.54/698/DD) Ein Fehler, der bei der String-Berechnung EXT() nur im Zusammenhang mit sehr langen Strings auftrat, wurde beseitigt.

	An error, that only occurred with very long strings by using the EXT() – calculation, has been removed.

20.10.2005	(8.06.53/697/DD) Seit der Änderung (8.03.47/691/KP) ist die Default-Einstellung der Auflösung direkt nach der Installation nicht korrekt gewesen. Der Fehler wurde behoben.

	Since change (8.03.47/691/KP) the default resolution has not been loaded correctly right after the installation. This error has been removed.

06.10.2005	(8.06.52/696/SCH) Neuer INI-Datei-Schlüssel in der Sektion [Config]: UserLoginDefaultRights=
	Hier kann der Name eines Rechtemodells angegeben werden. Dann wird KEIN LoginScreen gezeigt, jedoch der User “DEFAULT“ angemeldet, dem das angegebene Rechtemodell zugeordnet wird. Wenn das Modell nicht gefunden werden kann, wird das Programm NICHT gestartet,

	New INI-file-key for section [Cinfig]: UserLoginDefaultRights=
The name of an existing right-model can be given here. Then the login-screen will NOT be shown and the user “DEFAULT” will be assigned with the rights of the given model. If the model could not be found, the program will be terminated.

23.09.2005	(8.06.51/695/DD) Neuer Befehl FILE_DOWNLOAD ’strURL’, ’strFilename’ 
	Läd eine Datei von strURL aus dem Internet und speichert sie unter dem strFilename.

	New command . FILE_DOWNLOAD ’strURL’, ’strFilename’ loads a file from strURL and saves it to strFilename.

22.09.2005	(8.06.50/694/HB) Das Ändern der [mask!MASK_MODUS_LIST] während der Laufzeit hatte keine Wirkung bzw. wurde nicht berücksichtigt. Dies wurde korrigiert.

	Changes of the [mask!MASK_MODUS_LIST] while runtime had not had any response. This has been repaired.

14.09.2005	(8.06.49/693/MB) Falls ein MASK_HOOK_GRID_POST_EDIT oder ein BROWSER_HOOK_POST_EDIT verwendet wird, muss ab jetzt das gesamte Update des Datensatzes komplett vom Programmierer erledigt werden.

	If a MASK_HOOK_GRID_POST_EDIT oder a BROWSER_HOOK_POST_EDIT is used, the update to the record must be completely done by the programmer.

01.09.2005	(8.06.48/692/DD) Das farbliche Hervorheben Browserzeilen durch eine Bedingung bei Datumsfeldern mit der CSH-Syntax konnte im Falle von DateTime-Datentypen (Datenbankseitig) .fehlschlagen. Der Fehler ist behoben.

	The colouring of browser lines by comparing a date-field with the CSH-syntax failed in case of datetime-datatypes (on the database side). This error has been removed.

29.08.2005	(8.06.47/691/KPr) Der Dialog “Auflösung einstellen“, der aus dem Werkzeugkasten heraus aufgerufen werden kann, wurde um 5 Dialog-Elemente erweitert. Man kann dort nun angeben, .ob mehr als ein Bildschirm an den Rechner angeschlossen ist. Diese Angabe ist nur dann notwendig, wenn die Anwendung auch auf dem erweiterten Bildschirm laufen soll. Wenn ja, kann die auf dem erweiterten Bildschirm verwendete Auflösung angegeben werden (Horizontal und vertikal) und ein Wert für den Abstand dieses erweiterten Bildschirms vom linken und oberen Rand des Hauptbildschirms. Die Anwendung läuft dann mit allen Programmteilen auf dem erweiterten Bildschirm in der dort angegebenen Auflösung.

	The dialog “Auflösung einstellen“ (Screen-Resolution Configuration), that can be called from out of the toolbox, has been extended by 5 more dialog-elements. Setting the checkbox “Multi-Screen” can be used to indicate the usage of more than one screen with the computer. This must be done, if the application should run on a different screen than the main screen. If so, the resolution of the used screen can be set (Horizontal and Vertical) and the value for the distance from the top and left border of the main-screen to the used one. The application will than run with all parts with the defined resolution on the other screen.

26.08.2005	(8.06.46/690/HB) Beim Locken eines Datensatzes wurde der ShortName der aktuellen Users immer aus der Tabelle “adressen“ geladen. Wenn in der Applikations-Ini-Datei im Schlüssel “UserTableName“ ein anderer Wert hinterlegt ist, wird dieser ab jetzt berücksichtigt.

	While locking a record, the shortname of the actual user was always taken from the table “adressen”. If a different value is given in the key “UserTableName” of the application-ini-file, it will be used from now on.

22.08.2005	(8.06.45/689/GH) Ein Fehler der im Zusammenhang mit dem Befehl QUERY_ADD_STRING nur dann auftreten konnte, wenn dieser Befehl nach einem MAKE_STMNT aufgerufen wurde und ein STARTING WITH an das Query angebaute, wurde behoben.

	Using QUERY_ADD_STRING after a MAKE_STMNT to concate a STARTING WITH clause, caused an error, that has been removed.

01.08.2005	(8.06.44/688/DD) Der Befehl ASCII_2_TABLE hat einen neuen 3. Parameter. (Die Parameter sind durch das Pipe-Zeichen (|) getrennt.) TRUE (Default) oder FALSE = Sollen Meldungen angezeigt werden? 
	Syntax: ASCII_2_TABLE tablename {|filename {|TRUE oder FALSE}}
	Dadurch kann man aus einem Script heraus einfach im Hintergrund ein ASCII_2_TABLE durchführen und sämmtliche Fehlermeldung oder Fortschrittsanzeige unterbinden.

	New optional parameter for the command 
ASCII_2_TABLE tablename {|filename {|TRUE oder FALSE}}
The (new) third parameter is default TRUE and is related to the messages, that are monitored to the user. If it is set to FALSE, no error-message or progress-information will be displayed. So it can be run from out of a script in stealth mode.

27.07.2005	(8.06.43/687/DD) Die Berechnungs-Möglichkeit CALC [aNum] AS CRC([aStr]) wird ab jetzt vor dem Erzeugen des CRC-Codes nicht mehr den String [aStr] in Grossbuchstaben umwandeln..
	
	The calculation-method CALC [aNum] AS CRC([aStr]) will not longer convert the string ([aStr]) to uppercase, before execution.

19.07.2005	(8.06.42/686/DK) Mit dem neuen Applikations-INI-Datei-Schlüssel “Ask4Register=0 oder 1“ in der Sektion [Config] kann ab jetzt geregelt werden, ob dem Eintrag der CARA-Registry-Schlüssel die Frage nach den Administrationsrechten vorrausgeht. Per Default ist dies von nun an ausgestellt.
	
	With teh new applikation-ini-file-key “Ask4Register=0 or 1“ in the section [Config] can be set, if the administration-right-question should be displayed before the CARA-Registry-Keys are saved. By default, this is switched of from now on.

19.07.2005	(8.06.41/685/HB) Die Zeilenhöhe von Browser- und Grid-Listen kann über das Kontextmenü bestimmt werden. Daduch werden Felder, deren Werte Leerzeichen enthalten, und die in einer schmalen Listen-Spalte nicht dargestellt werden können “umgebrochen“ und mehrzeilig dargestellt. Zusätzlich hat der Programmierer die Möglichkeit, dies voreinzuestellen. Bei Browsern und Grids wird dazu die Variable [query!QUERY_ROW_HEIGHT] verwendet. Bei Masken-Such-Browsern muss die Variable  [mask!QUERY_ROW_HEIGHT] verwendet werden.

	The lineheight of browsers and grids can be set with the contextmenu from now on. Fields, that contain blanks and could not be displayed fully in small list-columns can now be displayed multilined. Additionally the programmer has the choice to preconfigure this by using the variable [query!QUERY_ROW_HEIGHT] for browsers and grids, and for mask-search-browsers the variable [mask!QUERY_ROW_HEIGHT] must be used.

18.07.2005	(8.06.40/684/DK) Der Befehl NAVIGATE wurde so verändert, dass als Ziel-Adresse auch eine Variable vom Typ VAR_LIST übergeben werden kann. So können auch Adressen mit einer Länge von mehr als 250 Zeichen angesteuert werden.

	The command NAVIGATE has been changed. As a the address also a variable of type VAR_LIST can be used. So addresses of more than 250 chars can be aimed.

18.07.2005	(8.06.39/683/DD) Die Farbgebung für Browser- und Grid-Farben wurde komplett überarbeitet. Daher werden alle Installationen neue Farbschemata nach dem Laden der neuen Engine erhalten. Darüber hinaus gibt es eine neue Browser-Flag [BROWSER_FLAG_COLUMN_COLOR_ONLY], wenn diese Option verwendet wird, wird nur die Spalte, die für die Farbgebung einer vom Standard abweichenden Farbe verantwortlich ist, farblich unterlegt (außer Zeilen, die den Status “protected“ oder “markiert“ haben)– die aktive Zeile wird jedoch über die volle Breite hervorgehoben. Zusätzlich wurde die Anzahl der möglichen Browserfarben von 3 auf 9 erhöht. Ausserdem wird die Spalte, nach der die Sortierung der Liste erfolgt, mit einer fett geschriebenen Überschrift gekennzeichnet. Spalten, deren Feldinhalte editiert werden können, haben eine farblich unterlegte Überschrift.

	The colouring of browsers and grids has been completely rearranged. So all installed applications will get new colour-schemes after loading the new engine. Also there is a new Browser-Flag [BROWSER_FLAG_COLUMN_COLOR_ONLY], if this flag is set, only the column that is responsible for a colour different from the norm, will have that colour (except protected or marked lines) -  but the active line will be shown in the full width. Additionally the amount of colours for browsers and grids have been raised from 3 to 9. The row, that indicates the sort-order of the list, has a bold written headline. Editable columns have a coloured background in the header from now on.

18.07.2005	(8.06.38/682/DD) Neue Masken-Variable [mask!QUERY_LOCKED_COLS] und neue Query-Variable [query!QUERY_LOCKED_COLS]. Mit diesem Wert kann bei Browsern, Grids und Mask-Such-Browsern die Anzahl der (links am Rand) fixierten Spalten festgelegt werden. 

	New mask variable [mask!QUERY_LOCKED_COLS] and new query variable . [query!QUERY_LOCKED_COLS]. This value can set the amount of (the left) fixed columns in browsers, grids and mask-search-browsers.

18.07.2005	(8.06.37/681/HB) Neue Masken-Variable [mask!MASK_SEARCH_VALUE] enthält den Wert des letzten verwendeten Suchstrings.

	New mask variable [mask!MASK_SEARCH_VALUE] holds the value of the last used searchstring.

01.07.2005	(8.06.36/680/DD) Neue Operation zur Berechnung von String-Variablen: CALC [S] AS OSTR(S), die Umkehroperation dazu ist CALC [S] AS DEOSTR(S). Gibt an eine Variable vom Typ STR die Zeichen des Strings S als dreistellige ORD-Werte zurück. S darf nicht länger als 85 Zeichen sein, da 3x85 = 255 Zeichen ergibt.

	New operation for the calculation of strings. CALC [S] AS OSTR(S), the reverse operation for this is CALC [S] AS DEOSTR(S). The operation returns the chars of the string S as three digit-ordinal-values. S can not be longer than 85 chars, because 3x85 = 255 chars.

21.06.2005	(8.06.35/679/GH) Neue Masken-Variable [mask!MASK_UPDATE_TIME] hält den Zeitpunkt des letzten Updates. Diese Variable wird durch den Befehl MASK_CLEAR nicht zurückgesetzt. Falls Änderungen in der Tabelle “changes“ mitprotokolliert werden, haben alle Datensätze, die im Zusammenhang mit einem Update stehen und in die Tabelle “changes“ geschrieben wurden, die gleiche (und das heißt DIESE) UpdateTime.

	New mask-variable [mask!MASK_UPDATE_TIME], it holds the timestamp of the last update. This variable will not be initialized by the command MASK_CLEAR. If the update will also be protocolled  in the table “changes”, all records, that are inserted into the table “changes” with a mask-update, will have the same (that means THIS) UpdateTime.

17.06.2005	(8.06.34/678/KP) Alle Einstellungen, die im Werkzeugkasten gesetzt werden können, werden ab jetzt in der Stations-INI-Datei als stationsspezifische Einstellung gespeichert. So kann beispielsweise der Entwickler SQL- und Scriptwarnungen stets eigeschaltet haben, während der normale User davon nicht betroffen ist. Ausserdem muss der Entwickler die Applikations-INI-Datei dann nicht mehr ändern. Zusätzlich wurde der Werzeugkasten-Dialog nun so geändert, dass nach Anklicken des Enwickler-Modus die Schalter “SQL-Warnungen”, “Script-Warnungen” und “Dialog-Nummer zeigen” mit an- bzw. Ausgeschaltet werden.

	All settings of the tool-box will now be saved as station-specific values to the station-ini-file. So the developer can switch the sql- and script-warnings on and this will be saved, while all other users may work normally. Additionally the programmer may not have to change the application-ini-file for this. The tool-box-dialog has been changed, so that if the developer-mode is switched on and off, the following keys are also changed: “sql-warnings”, “script-warnings” and “show dialog number”.

06.06.2005	(8.06.33/677/DD) FIELD_COORD_GET [mask],'field',boolPixel,[floatX],[floatY],[floatW],[floatH]
	Mit diesem neuen Befehl kann man die Koordinaten eines Feldes einer Maske abfragen. Sollte der Parameter boolPixel = TRUE sein, dann werden die Werte in Pixel zurück gegeben, anderenfalls in der im SetDoc verwendeten CSH-Matrix.

	New command: FIELD_COORD_GET [mask],'field',boolPixel,[floatX],[floatY],[floatW],[floatH]. It allows to read out the coordinates of a dialog-element of a mask. The values are returning the amount of pixel, if the parameter boolPixel = TRUE otherwise the values, used in the setdoc-definition, the CSH-matrix.

03.06.2005	(8.06.32/676/DD) Neuer Schlüssel in der Applikations-INI-Datei “FullTextSearchOr=“, dieser Wert kann ebenfalls über den Werkzeugkasten separat für jede Station einzeln eingeschaltet werden. Wenn der Schalter gesetzt ist, werden alle für die Volltextsuche eingegebenen Textphrasen mit ODER aus den Feldern der Masken gesucht – anderenfalls werden die Such-Strings mit UND verknüpft.

	New key fort he application-ini-file “FullTextSearchOr=“. It also can be changed in the tool-box and that will be saved for every station separately in the station-ini-file. If this key is set, all full-text-search text-phrases will be added to the mask-statement-query als OR-statements, otherwise they will be added as AND-statements.

31.05.2005	(8.06.31/675/MB) Neue Masken-Option “HIDDEN“, sie kann mit der Option MASK_FLAG_HIDDEN innerhalb der [mask!MASK_FLAG] während der Laufzeit gesetzt bzw. geändert werden. Die Maske wird dann lediglich als winzig kleines Fenster mit der Überschrift “Bitte warten…“ dargestellt. Alle Funktionalität der Maske bleibt für Hintergrundarbeiten vollständig erhalten. Die Maske lässt sich vom User nicht schießen, d.h. alle Hintergrundarbeiten sollten aus dem MASK_HOOK_SHOW und/oder dem MASK_HOOK_IS_READY erfolgen. Die Maske lässt sich nur aus dem MASK_HOOK_IS_READY heraus schließen (z.B. mit dem Befehl
			MASK_COMMAND [mask],[MASK_COMMAND_EXIT]

			New mask option ”HIDDEN”, it can be switched on and off with the new option MASK_FLAG_HIDDEN by using the [mask!MASK_FLAG] while runtime. The mask will be shown within a very little frame, with the caption “Please wait…”. All functionality of the mask will remain for background working. The user can not close the mask, so all background activity should be done in the MASK_HOOK_SHOW and/or the MASK_HOOK_IS_READY. The mask can only be closed from out of the MASK_HOOK_IS_READY e.g. using the command 
			MASK_COMMAND [mask],[MASK_COMMAND_EXIT]

25.05.2005	(8.06.30/674/DD) Zwei neue Befehle:
			ZIP_COMPRESS [numRes], 'strZipFile', [listFileFilter] {, numOpt {, [listFileFilterEx] {, numOptEx}}}
				Archivieren von Dateien mit dem ZIP-Algorithmus. Gibt in numRes die Anzahl der komprimierten Dateien zurück. Als Dateiname wird  strZipFile verwendet. In der String-Liste [listFileFilter] können alle Dateien und Dateimasken angegeben werden, die gepackt werden sollen. Mit dem Wert numOpt 	können folgende Optionen gesetzt werden:
				[ZIP_OPT_RECURSE_DIRS]				Unterverzeichnisse einbeziehen
			[ZIP_OPT_STORE_EMPTY_SUB_DIRS]	Leere Verzeichnisse mit in das Archiv übernehmen
				[ZIP_OPT_ZERO_ATTR]				Leere Dateien in das Archiv aufnehmen
				[ZIP_OPT_ARCHIVE]				Archivdateien in das Archiv 	aufnehmen
			[ZIP_OPT_DIRECTORY]				Verzeichnis in das Archiv aufnehmen
				[ZIP_OPT_HIDDEN]				Versteckte Dateien in das Archiv aufnehmen.
				[ZIP_OPT_READ_ONLY]				Schreibgeschützte Dateien in das Archiv aufnehmen
				[ZIP_OPT_SYS_FILE]				Systemdateien in das Archiv aufnehmen
				[ZIP_OPT_ENCRYPTED]				Dateien verschlüsseln. Diese Archivdateien können dann 
										nur noch mit der CARA-Engine entpackt werden.
				[listFileFilterEx] und numOptEx sind wie [listFileFilter] und numOpt zu verwenden, aber sie bestimmen die Dateien, die NICHT in das Archiv übernommen werden sollen.

			ZIP_EXTRACT [numRes], 'strZipFile', [listFileFilter], numOpt, 'strDestDir' {, 'strAskScript'}
				Enpacken von Dateien, die mit dem ZIP-Algorithmus gepackt wurden. Gibt in numRes die Anzahl der 	entpackten Dateien zurück. Es wird die Datei mit dem Dateiname strZipFile entpackt. Aus dem Archiv werden alle die Dateien entpackt, die den Dateifiltern in Liste [listFileFilter] entsprechen. Das Zielverzeichnis wird mit 'strDestDir' bestimmt. numOpt kann folgende Werte annehmen:
				[ZIP_OPT_RECURSE_DIRS]		Unterverzeichnisse mit einbeziehen
			[ZIP_OPT_ENCRYPTED]		Verschluesselte Dateien entschlüsseln. Diese Option wirkt nur auf 
								Archive, die mit der Cara-Engine verschlüsselt wurden.
			[ZIP_OPT_EXTRACT_DIR]		Sollen Verzeichnisse entpackt bzw. angelegt werden

				Von den folgenden Optionen kann sinnvollerweise jeweils nur eine gewählt werden:
				[ZIP_OPT_DO_OVERWRITE]	Sollen eventuell existierende Dateien überschrieben werden?
				[ZIP_OPT_DO_SKIP]		Sollen eventuell existierende Dateien nicht überschrieben werden?
				[ZIP_OPT_DO_ASK]		Soll der Anwender befragt werden, ob eine eventuell  
								existierende Datei überschrieben oder übersprungen werden soll? 
								In diesem Falle muss der Name eines Scriptes übergeben werden, 
								um den Dialog mit dem Anwender zu führen. Dazu wird der 
								Parameter 'strAskScript' verwendet. In dem Script stehen zwei 
								globale Variablen zur Verfügung, die bei der Dialogführung 
								benötigt werden:
								[ZIP_OVERWRITE_MODE]		In dieser Variable gibt man 
									der Engine zurück, wie mit der vorhandenen Datei zu verfahren 
									ist. Es können folgende Werte verwendet werden:
									[ZIP_OPT_DO_SKIP]		Die Datei wird übersprungen
									[ZIP_OPT_DO_OVERWRITE]	Die Datei wird überschrieben
								[ZIP_OVERWRITE_FILE]		In dieser Variable steht der 
									Name der Datei, die bereits vorhanden ist, damit man sie dem 
									Anwender anzeigen kann.
			Beispiele sind in der Dokumentation im Unterverzeichnis ZIP enthalten!

			Two new commands:
			ZIP_COMPRESS [numRes], 'strZipFile', [listFileFilter] {, numOpt {, [listFileFilterEx] {, numOptEx}}}
				Archiving files with the ZIP-algorithm. Returns in numRes the amont of compressed files. The destination file can be defined with strZipFile. The string-list [listFileFilter] can be used to define the filemasks for the files to be compressed. numOpt can be defined as follows:
				[ZIP_OPT_RECURSE_DIRS]				Include subdirectories
			[ZIP_OPT_STORE_EMPTY_SUB_DIRS]	Include empty directories
				[ZIP_OPT_ZERO_ATTR]				Include empty files
				[ZIP_OPT_ARCHIVE]				Include archive files
			[ZIP_OPT_DIRECTORY]				Include directorys
				[ZIP_OPT_HIDDEN]				Include hidden files
				[ZIP_OPT_READ_ONLY]				Include writeprotected files
				[ZIP_OPT_SYS_FILE]				Include system files
				[ZIP_OPT_ENCRYPTED]				Encrypt files. The resulting archive can only be decrypted 
										With the cara engine.
			[listFileFilterEx] and numOptEx are to be used as [listFileFilter] and numOpt bit these parameters name the files that should BOT be added to the archive.

			ZIP_EXTRACT [numRes], 'strZipFile', [listFileFilter], numOpt, 'strDestDir' {, 'strAskScript'}
			Extract files, that have been packed with teh ZIP-algorithm. numRes returns the amount of extracted files. strZipFile is the file, that will be extracted. Extracted will be all files, that are matching the filemasks in [listFileFilter]. The destination folder can be defined with the parameter 'strDestDir'. numOpt can have the following values:
				[ZIP_OPT_RECURSE_DIRS]		Include subdirectorys
			[ZIP_OPT_ENCRYPTED]		Decrypt files, that have been encrypted with the cara-engine.
			[ZIP_OPT_EXTRACT_DIR]		Should directorys be extracted / created

			From the following option only one should beused:
				[ZIP_OPT_DO_OVERWRITE]	Should existing files be overwritten?
				[ZIP_OPT_DO_SKIP]		Should existing files be skiped?
				[ZIP_OPT_DO_ASK]		Should teh user be asked, how an existing file should be treated? 
								In this case, the name of a script fort he user-dialog must be 
								defined with the parameter 'strAskScript'. Within the script, two 
								new global variables are available, that are needed for the user 
								dialog:
								[ZIP_OVERWRITE_MODE]		This variable tells the engine, 
									What to do with the existing file. The following values are 
									possible:
									[ZIP_OPT_DO_SKIP]		The file will be skipped
									[ZIP_OPT_DO_OVERWRITE]	The file will be overwritten
								[ZIP_OVERWRITE_FILE]		This variable holds the 
									filename of the existing file.
			Examples are available in the ZIP-folder of the documentation.

23.05.2005	(8.06.25/672/VH) Wenn in einem Masken-Query eine From-Clause mit mehr als 255 Zeichen verwendet wird, wird ab jetzt keine Fehlermeldung mehr ausgegeben.

			If a query with a from clause, longer than 255 chars, is used within a mask, no error message will return from now on.

23.05.2005	(8.06.24/671/DD) Neuer optionaler Parameter für den Befehl QUERY_COLUMN_VALUES:
			QUERY_COLUMN_VALUES [q b m],[boolRes],[strValues],'strFieldName' {,boolOnlyMarkedLines} 
			Die Summen werden nur über markierte Zeilen gebildet, wenn boolOnlyMarkedLines den Wert TRUE hat (das ist auch der Vorgabewert) anderenfalls wird über alle Zeilen die Summe gebildet. Sollte keine Zeile markiert sein, werden immer alle Zeilen ausgewertet.
			Als 16ter und letzter (neuer) Wert des strValues wird jetzt auch die Anzahl der markierten Zeilen übergeben:  CntMarked	= Anzahl der markierten Zeilen

			New optional parameter for the command QUERY_COLUMN_VALUES:
			QUERY_COLUMN_VALUES [q b m],[boolRes],[strValues],'strFieldName' {,boolOnlyMarkedLines} 
			If boolOnlyMarkedLines is TRUE, the sums are only calculated over marked lines (default), otherwise all lines will be taken. If no line is marked, all lines will be taken anyway.
			As 16th and last (and new) value of strValues, the amount of marked lines will be passed through also.
	CntMarked = Quantity of the marked Lines.

23.05.2005	(8.06.23/670/HB) Neue Masken-Option NO_RETURN_ON_ONE die im Options-String der Definitions-Datei (erste Zeile der “SetDoc“ Datei) angegeben werden kann. Wenn diese Option gesetzt ist, wird im Falle einer Suche, die der user in einer Maske auslösen kann, IMMER die Liste der Datensätze angezeigt, auch wenn es nur eine mögliche Lösung gibt.

			New mask-option NO_RETURN_ON_ONE which can be set in the mask-definition-file in the first line of the SetDoc-file. If this option is set and the user executes a search from out of the mask, the result list will always been shown, also if there is only one record as the result.

17.05.2005	(8.06.22/669/DD) Der Befehl LOGIN_DATA wurde um einen optionalen Parameter erweitert:
			LOGIN_DATA ID {, numMode}
			Wenn numMode > 0 ist, werden User-Level und User-ID protected gesetzt. 
			Wenn numMode > 1 ist, wird auch der Login-Name protected gesetzt.

			The command LOGIN_DATA has a new optional parameter: 
			LOGIN_DATA ID {, numMode}
			If numMode > 0, User-Level and User-ID will be protected. 
			If numMode > 1, also the Login-Name will be protected.

10.05.2005	(8.06.21/668/DD) Die User-SID wird jetzt auch bei Netzwerkusern korrekt ermittelt.

			From now on, the user-SID will be correctly retrieved for network-users also.

09.05.2005	(8.06.20/667/DD) Falls mit der MySQL-Version der CARA-Engine ein SSH-Tunnel aufgebaut werden soll, müssen zwei Komponenten dafür registriert werden. Die Dateien “wobTunnel.ocx“ und “wobKeys.dll“ müssen sich daher im Verzeichnis der CARA.EXE befinden und werden dann beim Start und nur bei Bedarf automatisch mit der Windows-Registrierungs-Server-Komponente installiert.

			If a MySQL-CARA-Version should be used to build a SSH-tunnel, two new components must be registered. Therefore the files “wobTunnel.ocx“ and “wobKeys.dll“ must be in the same directory as the CARA.EXE. They will be installed automatically on startup, if needed, using the Windows-Registry-Server-Component.

06.05.2005	(8.06.19/666/DD) Bisher war es so, dass der Programmierer mittels des Befehls MASK_COMMAND nur die Dinge ausführen lassen konnte, die auch als Icons in der Icon-Leiste sichtbar waren. Dies Beschränkung wurde aufgehoben.

			Since now the programmer could only execute the command MASK_COMMAND with options, that where represented by visible icons in the iconbar. This restriction has been removed.

06.05.2005	(8.06.18/665/DD) Der Dialog mit dem die Login-Daten eines Users eingerichtet werden kann, wurde überarbeitet.

			The Login-Data-dialog has been worked over.

06.05.2005	(8.06.17/664/DD) Neuer Befehl 
			GET_REGISTRY_INFO [boolRes], [listResult] or [strResult], numOpt, ‘strRegistryAdress’
			Gibt in [boolRes] zurück, ob die Funktion korrekt ausgeführt werden konnte.
			Mit numOpt können folgende Werte übergeben werden:
			[REG_VALUES]		Liest die Inhalte der Schlüssel einer ganzen Sektion. Hier muss für die 
						Rückgabe eine VAR_LIST verwendet werden.
			[REG_KEYS]		List die Schlüssel einer ganzen Sektion. Hier muss für die Rückgabe 
						eine VAR_LIST verwendet werden.
			[REG_READ]		List den Inhalt eines bestimmten Schlüssels. Der Typ der 
						Resultatsvariable ist frei wählbar.
			[REG_CHECK]		Prüft das Vorhandensein eines Schlüssels. Der Typ der 
						Resultatsvariable ist frei wählbar.
			In ’strRegistryAdress’ muss die Adresse angegeben werden, die ausgelesen bzw. referenziert werden soll. Hier muss auch der HKEY_ mit übergeben werden. Beispiel:
			GET_REGISTRY_INFO [ARes], [AStr], [REG_CHECK], ‘HKEY_LOCAL_MACHINE\SOFTWARE\Cara’

			New command:
			GET_REGISTRY_INFO [boolRes], [listResult] or [strResult], numOpt, ‘strRegistryAdress’
			Resturns with [boolRes], wether the function could be executed or not.
			numOpt can hold the following values:
			[REG_VALUES]		Reads all values of a given key. The result-var must be a VAR_LIST
			[REG_KEYS]		Reads all keys of a given key. The result-var must be a VAR_LIST 
			[REG_READ]		Reads one value of the given key. The result- type can choosen free.
			[REG_CHECK]		Checks, if the given key exists in the registry. The result- type can 
						choosen free.
			In ’strRegistryAdress’ the whole daress inclusive the HKEY_ must be given. Example:
			GET_REGISTRY_INFO [ARes], [AStr], [REG_CHECK], ‘HKEY_LOCAL_MACHINE\SOFTWARE\Cara’

04.05.2005	(8.06.16/663/DD) Neue globale Variable [USER_SID] sie enthält die komplette, eindeutige Windows-User-ID des angemeldeten Users. Bitte dazu die Details der vorausgehenden Änderung vom 28.4.2004 (8.02.08/577/RR+DG) lesen.

			New global variable [USER_SID], it contains the complete Windows-User-ID of the actual active user. Please also refer to the previous change from 28.04.2004 (8.02.08/577/RR+DG).

01.05.2005	(8.06.15/662/DD) In Browsern und Grids wird ab jetzt die Spalte, nach der die Daten sortiert wurden, nur noch dann rot unterlegt, wenn mehr als eine Spalte sichtbar ist, da man ansonsten markierte Datensätze nicht erkennen kann.

			The column which holds the field with the primary sort-order In browsers or grids will only have a red background, if more than one column is available – otherwise marked rows could not be recognized.

01.05.2005	(8.06.14/661/DD) Die Set-Doc-Optionen CLIENT, LEFT, RIGHT, BOTTOM, TOP, RAISED und LOWER können ab jetzt auch für die Dialogelemente GROUP_BOX und RADIO_BOX verwendet warden.

			The setdoc-options CLIENT, LEFT, RIGHT, BOTTOM, TOP, RAISED and LOWER can be used for the dialog-elements GROUP_BOX and RADIO_BOX as well, from now on.

01.05.2005	(8.06.13/660/DD) Neue Optionen für Dialog-Elemente ’BOLD’ und ’UNDERLINE’. Mit dieser Option wird der Text des Dialog-Elementes fett gedruckt bzw. unterstrichen dargestellt.

			New options for dialog elements ’BOLD’ and ‘UNDERLINE’. The displayed text will look like bold or underlined printed.

01.05.2005	(8.06.12/659/DD) Neue Option für LABEL-Dialog-Elemente ’CENTER’. Mit dieser Option wird der Text des Labels zentriert innerhalb der angegebenen Koordinaten abgebildet.

			New option for LABEL dialog elements ’CENTER’. The displayed text will be cantered between the given coordinates.

01.05.2005	(8.06.11/658/DD) Neue globale Variable und neuer Schlüssel in der Applikations-INI-Datei.
			Die Variable vom Typ VAR_BOOL [NAVIGATE_SHOW_SCROLL_BARS] wird mit dem neuen Applikations-INI-Datei-Schlüssel “NavigateShowScrollBars=“ in der Sektion [Config] voreingestellt. Der Vorgabewert in der Engine ist TRUE. Wenn dieser Wert FALSE ist, werden weder im Hauptfenster der Anwendung noch in irgendeinem NAVIGATE-Element einer Maske die Scrollbars eingeblendet. Die Variable kann zur Laufzeit verändert werden. Bei einem Klick auf den HOME-Knopf im Hauptfenster der Anwendung wird wieder der Zustand hergestellt, der in der Applikations-INI-Datei voreingestellt ist.

			New global Variable and new application-ini-file key. The new VAR_BOOL 
			[NAVIGATE_SHOW_SCROLL_BARS] can be predefined with the key “NavigateShowScrollBars=“ in the section [Config] in the application-ini-file. The default-value of the engine is TRUE. If the value is FALSE, now scrollbars will be shown in the main-browser and also not in any NAVIGATE-element of any mask. The variable can be changed while runtime. With a click to the “home-button” in the main-application window, the value will be reset to what is set in the application-ini-file.

29.04.2005	(8.06.10/657/DK) Neues Dialog-Element für Masken: “NAVIGATE“. Damit wird ein WebBrowser in der Maske platziert. Die “PictureMaske“ enthält die Startseite des Browsers.
			ITEM 1001, 'NAVIGATE', 1, 2, 1, 1, ''
			VIEW          '', 'http:\\www.cshgermany.com', 'UserNavigator', 0

			Neue Masken-Variablen:
			[mask!MASK_ACT_URL]				Hält die letzte angesteuerte URL
			[mask!MASK_HOOK_PRE_NAVIGATE]	Wird aufgerufen bevor eine Seite im Browser angesteuert 
									Wird. [mask!MASK_ACTION] <> 0, läd der Browser die 
									Seite nicht. Innerhalb dieses Hooks kann keine neue 
									bzw. andere Seite in Browser angesteurt werden.
			[mask!MASK_HOOK_POST_NAVIGATE]	Wird aufgerufen nachdem die Seite vollständig geladen 
			[mask!MASK_ACT_URL_CANCELLED]	Wurde die Navigation mittels des neuen Hooks 
									[mask!MASK_HOOK_PRE_NAVIGATE] abgebrochen?
									Diese Variable wird benötigt, da der neue Hook
									[mask!MASK_HOOK_POST_NAVIGATE] auch dann 
									angesteuert wird, wenn die Navigation im 
									[mask!MASK_HOOK_PRE_NAVIGATE] abgebrochen 
									wurde!!!! Dies ist notwendig, wenn man z.B. mit dem 
									Abbruch der Navigation den Browser in eine andere Seite 
									umlenken will – das geht dann nur NACH dem Abbruch 
									im [mask!MASK_HOOK_POST_NAVIGATE].
									wurde.
			Die Variablen [mask!MASK_ACT_FIELD_ID] und [mask!MASK_ACT_FIELD_NAME] enthalten den Namen und die ItemID des NVIGATORS.

			Erweiterung des Befehls NAVIGATE; er kann nun auf zweierlei Weise genutzt werden.
			1, Wie bisher:	NAVIGATE 'strAdress' {, 'CompleteScript.csh' oder 'strFileName4Save'}
			2. Neu:		NAVIGATE [mask], 'strField', 'strAdress' {, 'strFileName4Save'}
					Mit Angabe einer Maske und dem Namen eines Feldes in der Maske (im Speziellen 
					eines NAVIGATORS), kann man dann eine Adresse angeben. Auch in diesem Falle 		können als Adresse [NAVIGATE_STOP], [NAVIGATE_START], 
					[NAVIGATE_OFFLINE], [NAVIGATE_ONLINE] und [NAVIGATE_SAVE] verwendet 
					werden.

			New dialog-element for masks: “NAVIGATE”. It places a webbrowser in the mask. The picture-mask contains the startpage of the mask..
			ITEM 1001, 'NAVIGATE', 1, 2, 1, 1, ''
			VIEW          '', 'http:\\www.cshgermany.com', 'UserNavigator', 0
			New masksvariables:
			[mask!MASK_ACT_URL]				Holds the last URL that the browser should open.
			[mask!MASK_HOOK_PRE_NAVIGATE]	Will be called before a page is opened by the browser. 
									If [mask!MASK_ACTION] <> 0 the browser will not open
									The destination page. Within this hook, the navigate 
									command can not be used open another page.
			[mask!MASK_HOOK_POST_NAVIGATE]	Will be called after a page has been loaded completely.
			[mask!MASK_ACT_URL_CANCELLED]	Has the navigation be cancelled with the new hook
									[mask!MASK_HOOK_PRE_NAVIGATE]?
									This variable is necessary, because the new hook
									[mask!MASK_HOOK_POST_NAVIGATE] will also 
									be fired, if the navigation has been cancelled in the
									[mask!MASK_HOOK_PRE_NAVIGATE] routine!!!!!
									This is because the redirection of the browser can only
									done AFTER the navigation has been cancelled, and the 
									new page to show must be set in the 
									[mask!MASK_HOOK_POST_NAVIGATE].routine.
			The variables [mask!MASK_ACT_FIELD_ID] and [mask!MASK_ACT_FIELD_NAME] will contain the navigators itemid and name.

			Extension of the command NAVIGATE; it can be used in two ways now:
			1, As known:	NAVIGATE 'strAdress' {, 'CompleteScript.csh' or 'strFileName4Save'}
			2. New:		NAVIGATE [mask], 'strField', 'strAdress' {, 'strFileName4Save'}
					Giving a mask and a field (i.g. a navigator) and a address, will change the browsers 
					page. Also the addresses [NAVIGATE_STOP], [NAVIGATE_START], 
					[NAVIGATE_OFFLINE], [NAVIGATE_ONLINE] and [NAVIGATE_SAVE] can be 
					used.

28.04.2005	(8.06.07/654/DD) Abstürze der Engine, die durch nicht vorhandene Masken-Dateien ausgelöst werden konnten, werden ab jetzt korrekt an den Debugger weiter geleitet.

			Crashes, caused by not existing mask-files, are correct redirected to the debugger from now on.

27.04.2005	(8.06.06/653/DD) Neuer Befehl ITEM_F_USER_TIMER [floatRecID] (item from user timer). Beim ersten Aufruf startet man mit dem Wert [floatRecID]=0, es wird dann die RecordID (eines Records aus der Tabelle DocMgrI) des ersten Listenelementes zurückgegeben. Danach übergibt man jeweils die zuletzt erhaltene [floatRecID] und erhält die darauf folgende, bis man schließlich [floatRecID]=0 erhält. Dann wurden alle Listen-Elemente zurückgegeben.

			New command ITEM_F_USER_TIMER [floatRecID] (item from user timer). The first call should be made with [floatRecID]=0. This retrieves the first recordid (of a record of the table DocMgrI) of the user-timer-list. Afterwards always the last retrieved [floatRecID] should be used – so the recordid, that follows will be returned, until [floatRecID]=0 will show, that the end of the list is reached.

27.04.2005	(8.06.05/652/DD) Wenn eine Maske mit der Option [MASK_FLAG_SHRINK] ausgestattet ist und das unterste Element der Maske ein Dialogelement mit der Option ’CLIENT’ ist, wird die Höhe der Maske ab jetzt korrekt berechnet.

			The mask-height of masks with the option [MASK_FLAG_SHRINK], that have a last dialog-element with the option ’CLIENT’ will be calculated correctly from now on.

27.04.2005	(8.06.04/651/DD) Die Timer-Liste zeigt ab jetzt auch die durch die TableFld-Definition zugänglichen Inhalte der relationalen Felder an. Darüber hinaus ist ab jetzt ein Knopf für den Ausdruck der Liste im Header der Liste verfügbar, wenn dafür ein Scriptname in der Sektion [DocumentManager] der Applikations-INI-Datei mit dem Schlüssel “ TimerPrintScript=“ angegeben wurde.

			The timer-list also shows the contents of the relational fields, that could be reached through the tablefld-definitons. Also a print-button is available, if the key “ TimerPrintScript=“ in the section [DocumentManager] of the application-ini-file names a script.

27.04.2005	(8.06.03/650/DD) Der Dokumenten-Manager, die Dokumenten-Manager-Details, die Timer-Liste und auch das PICTURE_POP-.Fenster können ab jetzt mit ESC geschlossen werden.

			The document-manager, the document-manager-details, the timer-list and the PICTURE_POP-window can be closed with a strike of the ESC-key from now on.

27.04.2005	(8.06.02/649/DD) Die CARA-Fehler-Meldung “TIMER ist nicht verfügbar“ wird im Falle der Abfrage TIMER_AVAIL nicht mehr ausgegeben.

			The CARA-error-message “TIMER ist nicht verfügbar“ will not be shown in case of the command TIMER_AVAIL any longer.

26.04.2005	(8.06.01/648/DD) Die seit der Änderung 8.03.32/613/DD vom 19.01.2005 gültigen Parameter an die CARA-Engine können nun auch verwendet werden, wenn der zweite Parameter die Not-Lizenz bezeichnet. Die Aufzählung der folgenden Parameter ist dann entsprechend erweitert.

			The parameter list that is allowed to start the engine, since change 8.03.32/613/DD from 19.01.2005 can now also be used, if the second parameter defines the emergency-license. All other parameters positions are then incremented by one.

22.04.2005	(8.06.00/647/DD) Schon mit Änderung 7.01.00/467/DD vom 02.04.2003 wurde versucht, das XP-Manifest in das Projekt zu integrieren. Dieser Schritt wurde kurze Zeit später rückgängig gemacht, weil es Probleme mit dem MASK_HOOK_IS_READY gab. Nun wird ein weiterer Versuch unternommen, wobei eine völlig überarbeitete und sicherere Routine für diesen Mask-Hook verwendet wird.
			Eine Bitte an alle Programmierer: bitte testet alle Scripte, in denen ein MASK_HOOK_IS_READY Verwendung findet. In den meisten Fällen (sich mehr als 99%) reicht ein einmaliger Aufruf dieses Hooks. Direkt nach dem Procedure-Beginn sollte daher der Hook so abgeschaltet werden:
			CALC [mask!MASK_HOOK_IS_READY] AS ’’

			Already with change 7.01.00/467/DD from 02.04.2003 the XP-Manifest should be introduced to this project. But after a lot of problems with the MASK_HOOK_IS_READY this was rescinded. Now, with a completely redesigned and more stable routine, another attempt was done.
			A request to the programmers: please test all scripts that are using a MASK_HOOK_IS_READY. In most of the cases (surely more than 99%) a single call of this hook will do. So, right after the procedure-begin the hook should be switched off like this:
			CALC [mask!MASK_HOOK_IS_READY] AS ’’

22.04.2005	(8.05.18/646/HB) Neuer Befehl EXIT_SCRIPT, mit dem man das aktuelle Script auf der Stelle verlassen kann.

			New command EXIT_SCRIPT, to exit the actual script immediately.

22.04.2005	(8.05.17/645/HB) Um ein Kontextmenü, das auf einem Dialogelement liegt zu öffnen, konnte bisher ausschließlich die Maus verwendet werden (Rechtsklick öffnet den „Choicer“). Ab jetzt kann man das Kontextmenü auch mit der Tastatur öffnen, wenn das entsprechende Dialogelement den Fokus hat und man die Tastenkombination „ALT+Y“ auslöst.

			Opening a context-menue of a dialog-element was only possible with a right-click of the mouse, until now. This can now be done with the key-combination “ALT+Y” if the dialog-element has the focus.

22.04.2005	(8.05.16/644/HB) Um die Liste der Datensätze der letzten Suche in einer Maske zu erhalten, konnte man bisher nur die Tastenkombination „STRG-L“ verwenden (wenn man die Maus nicht benutzen wollte), ab jetzt kann man auch die Tastenkombination „ALT+X“ verwenden, dadurch benötigt man lediglich die linke Hand.

			To reach the list of the records of the last search in a mask, it was only possible to push “CTRL+L” (if the mouse shouldn’t be used) – from now on also “ALT+X” will lead to the list. This is, because this key-kombination can be pushed with the left hand only.

17.04.2005	(8.05.15/643/GH) Fehlermeldungen, die ausgegeben wurden, wenn ein Tree-View leer ist, werden ab jetzt unterdrückt..

			From now on, error messages will be suppressed, if a tree-view is empty.

15.04.2005	(8.05.14/642/HB) Neue Sektion in der Applikations-INI-Datei: [Variables]. Alle Schlüssel dieser Sektion werden beim Programmstart gelesen und als globale Variablen verfügbar gemacht. Der Variablen-Typ kann dadurch gesteuert werden, dass beim ersten Buchstaben, gefolgt von einem “_“ eine der folgenden Möglichkeiten gewählt wird: “f_“: = VAR_FLOAT, “n_“ = VAR_NUM, “s_“ = VAR_STR, “d_“ = VAR_DATE, “t_“ = VAR_TIME und “b_“ = VAR_BOOL – diese beiden Buchstaben werden später NICHT Bestandteil des Namens der Variable sein. Sollte kein Variablen-Typ vorgegeben werden, wird der Inhalt untersucht. Wenn es sich um einen interpretierbaren Zahlenwert handelt, wird entweder VAR_FLOAT (bei Dezimalwerten) oder VAR_NUM verwendet, anderenfalls VAR_STR.

			New section for the application-ini-file: [Variables]. All keys of this section will be read on startup and will be available as global variables. The variable-type can be defined with the fist char, followed by a “_”. This are the possible values: “f_“: = VAR_FLOAT, “n_“ = VAR_NUM, “s_“ = VAR_STR, “d_“ = VAR_DATE, “t_“ = VAR_TIME and “b_“ = VAR_BOOL – this two chars will not be part of the name of the variable later. If no variable type is set, the value will be analyzed. If the value can be interpreted as a numeric value, it will be a VAR_FLOAT (in case of a decimal value) or VAR_NUM. All other cases will be VAR_STR.

14.4.2005	(8.05.13/641/DD) Drei neue optionale Parameter für den Befehl EXTERN:
			EXTERN	'name', option {, [listParams] {, boolWait {, ’directory’}}}
	Falls eine Liste mit Parametern [listParams] übergeben wird, werden die in der Liste enthaltenen Zeilen ohne Leerzeichen zwischen einander aneinandergefügt (es sei denn, sie enthalten selber Leerzeichen) und als Programmparameter übergeben. Wenn boolWait = TRUE ist, arbeitet die Applikation erst dann weiter, wenn das externe Programm beendet wurde. Wenn das externe  Programm gestartet wird, wird die System-Variable  [EXTERN_TERMINATE] automatisch FALSE gesetzt. Während der Wartezeit kann der Warte-Prozess durch Setzten von [EXTERN_TERMINATE]=TRUE jederzeit abgebrochen werden. Der Wert ’directory’ wird verwendet um ein Startverzeichnis für das externe Programm anzugeben.

			Three new optional parameters for the command EXTERN:
			EXTERN	'name', option {, [listParams] {, boolWait {, ’directory’}}}
	If a list with parameters is given, all strings of the list will be concatenated (without blanks between them, except the blanks they contain theirself) and be used as the programs parameter. If boolWait is TRUE the application will wait, until the external program has been completely executed. When the external program is started, the (new) system variable [EXTERN_TERMINATE] will automatically set to FALSE. While waiting the wait-process can be stopped easily by setting [EXTERN_TERMINATE] = TRUE, this will shut down the external program and stop the wait-process. The value ‘directory’ can be used as the startdirectory of the external process.

14.04.2005	(8.05.12/640/MB) Seit der Einführung der Mandantenfähigkeit wurden keine Fehlermeldungen bei SQL-Anweisungen ausgegeben, wenn es sich um eine fehlerhafte nicht-SELECT-Anweisung (z.B. UPDATE, INSERT, ALTER TABLE etc.) handelte. Dieser Fehler wurde behoben.

			Since the introduction of the mandant-capabilities no SQL-error-messages where shown, if a non-select-query failed (e.g. update-, insert-, alter table-query etc.). This error has been removed.

11.4.2005	(8.05.11/639/DD) Neuer Befehl MD5 [strRes], numOpt, 'strValue'
Gibt in der VAR_STR [strResult] den MD5-Wert des Strings ’strValue’ zurück, wenn numOpt den Wert [MD5_STRING] enthält. Falls numOpt den Wert [MD5_FILE] enthält wird der MD5-Wert der Datei zurück gegeben, die den Dateinamen ’strValue’ hat.

			New command MD5 [strRes], numOpt, 'strValue'
			Returns in VAR_STR [strResult] the MD5-value of the string ‘strValue’, if numOpt=[MD5_STRING]. If numOpt=[MD5_FILE] it returns the MD5-value of the file with the name ‘strValue’

10.04.2005	(8.05.10/638/DD) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [Config]: ShowTopPanel=1 oder 0 (Default=1). Damit kann die Icon- und Adressleiste oberhalb des Navigations-Browsers ausgeblendet werden.

			New key for the application-ini-file, section [Config]: ShowTopPanel=1 oder 0 (Default=1). With this key the icon- and address-panel obove the navigation-browser can be hidden.

10.04.2005	(8.05.09/637/DD) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [Config]: AppLoadedScript=.  Wenn hier ein Script-Name angegeben wird, so wird dieses Script ausgeführt, nachdem die komplette Applikation geladen und gezeigt wurde. Will man z.B. im Navigations-Fenster die Seite verändern, bevor der User „loslegen“ kann, muss man den entsprechenden Befehl in diesem Script und nicht im Main-Script ausführen, da der Navigations-Browser erst nach dem vollständigen Laden der Applikation „umgebogen“ werden kann/darf.

			New key for the application-ini-file, section [Config]: AppLoadedScript= . If a script-name is given here, it will be executed right after the complete application has been loaded and shown. If e.g. the page, shown in the navigation-window, should be change before the first action of the user, the related command should be done here and not in the main-script, because the navigation-browser-page only can/should be changed after the complete load of the application.

8.4.2005	(8.05.08/636/DD) Der Befehl CHOOSE_FILE hat einen neuen optionalen Parameter erhalten:
			CHOOSE_FILE [filename],num,'header','filters'{,[bool] {, ‘initialDirectory’}}
			Der Wert initialDirectory gibt das Start-Verzeichnis für die Auswahl vor.

			The command CHOOSE_FILE has a new optional parameter:
			CHOOSE_FILE [filename],num,'header','filters'{,[bool] {, ‘initialDirectory’}}
			The value initialDirectory sets the start-folder for the file-selection.

08.04.2005	(8.05.07/635/DD) Der Befehl GO_DIR gab stets den Wert FALSE zurück, auch wenn er erfolgreich war. Der Fehler wurde behoben.

			The command GO_DIR always returned FALSE, also, when the execution was well. This error has been removed.

5.4.2005	(8.05.06/634/GH) Der Befehl DATE_DIFF wurde so geändert, dass die angegebene Differenz negativ wird, wenn das erste Datum größer ist, als das zweite Datum.

			The command DATE_DIFF has been changed. The result of the difference will be negative, if the first date is greater than the second date.

5.4.2005	(8.05.05/633/DK) Ab jetzt werden Text-Dateien, die mit Variablen vom Typ VAR_TEXT bearbeitet werden und im UTF16-Format gespeichert wurden, automatisch erkannt und während der Laufzeit automatisch in ASCII-Dateien verwandelt.

From now on, all text-files, that are treated with a variables of type VAR_TEXT that have UTF16-Format, will be automatically recognized and converted while runtime.

04.04.2005	(8.05.04/632/DK) Der Befehl NAVIGATE wurde um einen neuen optionalen Parameter erweitert:
			NAVIGATE ‘adress’ {, ‘ScriptFileName’ }
			Wenn mit ScriptFileName ein ausführbares Script angegeben wurde, wird dieses nach dem 
			vollständigen Laden der angesteuerten Seite ausgeführt.
			Mit  NAVIGATE [NAVIGATE_SAVE], ‘SaveFileName.Ext’ kann ab jetzt außerdem der Quelltext des 
			angezeigten Dokumentes in eine Datei abgespeichert warden.

			New optional parameter for the command NAVIGATE: 
			NAVIGATE ‘adress’ {, ‘ScriptFileName’ }
			The ScriptFileName  will be executed after the requested adress has been loaded completely. 
			With NAVIGATE [NAVIGATE_SAVE], ‘SaveFileName.Ext’ is it possible to save the source code of 
			the actual browser document into the given file.

4.4.2005	(8.05.03/631/DD) Neue Boolean-Variable [NAVIGATOR_IS_ONLINE]. Der Inhalt ist TRUE, wenn der User im Hauptfenster  die Checkbox “Online“ gesetzt hat. Um die Online-Box umzuschalten, verwendet man den Befehl NAVIGATE, siehe Änderung 6.01.02/362/DD and 6.01.10/370/DD vom May 2002.

New boolean-variable [NAVIGATOR_IS_ONLINE]. It is TRUE, if the user checked the “Online”-box in the main-window. To switch the online-box, use the cammand NAVIGATE, see changes 6.01.02/362/DD and 6.01.10/370/DD from May 2002.

23.03.2005	(8.05.02/630/DK) Der Befehl DATE_DIFF  wurde um einen neuen optionalen Parameter erweitert:
			DATE_DIFF [date1],[date2],[years],[months],[days] {, boolTotalDays}
			Wenn boolTotalDays (TRUE) ist, wird in [days] die Differenz von [date1] 	und [date2] in Gesamttagen 
			ausgegeben.

			New optional parameter for the command DATE_DIFF: 
			DATE_DIFF [date1],[date2],[years],[months],[days] {, boolTotalDays}
			If boolTotalDays is TRUE, the difference of [date1] and [date2] will be returned in [days] as the total 
			amount of days.

21.3.2005	(8.05.01/629/DD) Die TimeScan-INI-Datei-Scripte wurden nicht vom geladenen Benutzer-Rechte-Modell unterstützt. Der Fehler wurde behoben.

			The Time-Scan-INI-file-scripts were not supported by the active and loaded user-right-model. This 
			error has been removed.

1.3.2005	(8.05.00/628/DD) Für die MySQL-Version der Engine wurden einige neue Applikations-INI-Datei-Schlüssel für die Sektion [Config] verfügbar gemacht, mit der es ab jetzt möglich ist die SSL-Verschlüsselung des MySQL-Servers zu nutzen und / oder auch einen SSH-Tunnel aufzubauen, durch den man den Server anspricht. Folgende Schlüssel sind neu:

			ConnectOptions=10	Die erste Ziffer steht für “Compressed Protokoll“. 1=TRUE, 0= FASLE
						Damit wird die Übergabe der SQL-Strings vom Client an den Server und 
						die Übergabe der Ergebnisse vom Server an den Client komprimiert. 							Dieser Wert wurde seit der Änderung (7.02.12/512/RH) vom 22.08.2003 
						auf Default (TRUE) gesetzt. Dadurch wurde eine Beschleunigung des
						Datentransfers erreicht. Es kann ab jetzt vom Administrator gesteuert 
						Werden.
						Die zweite Ziffer steht für SSL-Verschlüsselung 1=TRUE, 0= FASLE. 
						Wenn der SQL-Server mit der Option have_SSL compiliert wurde, 
						unterstützt er SSL-Verschlüsselung. Der Client kann dies ab jetzt auch 
						unterstützen. Die Geschwindigkeit der Kommunikation zwischen Client 
						und Server wird dadurch etwas schlechter, die Sicherheit wird erhöht.

			SSLCert=			Dateiname des Zertifikats, mit dem die SSL-Verschlüsselung vereinbart 
						wird. 
			SSLKey=			Dateiname des Schlüssels, mit dem die SSL-Verschlüsselung 
						vereinbart wird. 

			SSHEnabled=1		Soll ein SSH-Tunnel zu dem Server aufgebaut warden, der auch den 
						MySQL-Service verfügbar macht? 1=TRUE, 0=FALSE
			SSHHost=			Auf welchem Host oder welcher IP ist der SSH-Server erreichbar?
			SSHPort=22		Auf welchem Port “lauscht“ der SSH-Server (Default=22)

			SSHUser=		Mit welchem User-Namen meldet muss der SSH-Connect aufgebaut 
						werden?
			SSHPassword=		Mit welchem Passwort muss der SSH-User angemeldet werden?
			SSHCompressionLevel=6	Welchen ComptressionLevel stellt der SSH-Server zur Verfügung 
						(Default=6)
			SSHTimeout=259200	Welche Timeout-Zeit (in Millisekunden) soll bei dem SSH-Connect 
						berücksichtigt werden?
			SSHUseCompression=1	Soll SSH-Compression verwendet werden 1=TRUE, 0=FALSE 
						(Default=1)
			Die Schlüssel “SSLCert“, “SSLKey“, “SSHUser“, “SSLPassword“, “SSLHost “ und “SSLPort“ können 
			mit dem seit der Änderung (7.02.07/507/DD) vom 08.08.2003 verfügbaren Schlüssel “AccessCrypting“ 
			ebenfalls “unkenntlich“ gemacht werden.

			The MySQL-Version of the engine has some ne keys for the section [Config] of the applikations-INI-
			file. From now on it is possible to have SSL-encoding with the MySQL-server and / or to create a SSH-
			tunnel, which is used to connect to the server. The following keys are new:

			ConnectOptions=10	The first digit is for“”compressed protokoll“. 1=TRUE, 0= FASLE
						With this the transfer of SQL-strings from the client to the srver and 
						te transfer of the results from the server to the client will be compressed.
						Since change (7.02.12/512/RH) form 22.08.2003 this value was 
						automaticly used as default (TRUE). This accelerates the data-transfer 
						From now on it can be configured by the administrator.
						The second digit is used fort he SSL-encoding 1=TRUE, 0= FASLE. 
						If the SQL-server has been compiled with the option “have_SSL” this 
						will be supported, The communication speed will slow down a little bit, 
						if this option is used.

			SSLCert=			Filename of the certificate, that holds the SSL-encoding-agreement. 
			SSLKey=			Filename of the key, for of the SSL-encoding-agreement. 

			SSHEnabled=1		Should a SSH-tunnel to the server be created, that peovides the  
						MySQL-service? 1=TRUE, 0=FALSE
			SSHHost=			By which host or IP could the SSH-server be reached?
			SSHPort=22		On which port “listens“ the SSH-server (Default=22)

			SSHUser=		User-name for the SSH-connect.
			SSHPassword=		Password for the SSH-connect.
			SSHCompressionLevel=6	ComptressionLevel of the SSH-server (Default=6)
			SSHTimeout=259200	Timeout (in millisec.) fort he SSH-connect. 
			SSHUseCompression=1	Should SSH-compression be used? 1=TRUE, 0=FALSE  (Default=1)

			The keys “SSLCert“, “SSLKey“, “SSHUser“, “SSLPassword“, “SSLHost “ and “SSLPort“ could be 
			hidden with the key “AccessCrypting“, which is available since change (7.02.07/507/DD) from 
			08.08.2003.

23.02.2005	(8.04.05/627/DD) Der Befehl QUERY_CLOSE wurde um einen neuen optionalen Parameter erweitert:
			QUERY_CLOSE	 [name],[bool]{,boolClrQuery}
			Wenn boolClrQuery (TRUE) ist, werden auch die Query-Zeilen des Querys gelöscht.

			New optional parameter for the command QUERY_CLOSE: 
			QUERY_CLOSE	 [name],[bool]{,boolClrQuery}
			If boolClrQuery is TRUE, all query-lines will be erased from the query also.

22.2.2005	(8.04.04/626/DK) Die Befehle WAIT_INFO und GET_DECISION haben jeweils zwei neue optionale Parameter:
		GET_DECISION 	'head','info','label button1','label button2','label button3',[numRes] {,Wifth  {,Height}}
			WAIT_INFO	‘head','info'{,bool {,Wifth  {,Height}}}
			Mit den Float-Variablen Width und Height kann man die Höhe und die Breite des Fensters im gleichen 
			Maße verändern, wie dies bei Dialog-Elementen der Eingabe-Masken der Fall ist.

			The commands WAIT_INFO and GET_DECISION have two new optional parameters each: 
		GET_DECISION 	'head','info','label button1','label button2','label button3',[numRes] {,Wifth  {,Height}}
			WAIT_INFO	‘head','info'{,bool {,Wifth  {,Height}}}
			With the float variables Width and Height the window size can be arranged, exactly in the same way, 
			as the dialog elements of input masks.

22.2.2005	(8.04.03/625/DD) Die String-Berechnungs-Routine ReplaceStr() kann von nun an auch dann eingesetzt werden, wenn der Replace-Wert im Suchwert enthalten ist, 

From now on, the string-calculation-routine ReplaceStr() can be used even if the replace-value contains the find-value.

22.2.2006	(8.04.02/624/DD) Der Wert, der für den Schlüssel AddReplace= in der Applikations-INI-Datei in der Sektion [SQL] angegeben werden kann, kann jetzt länger als ein Zeichen sein.

The value, that can be given to the key Addreplace= in the section [SQL] of the application-ini-file can be longer than one char, from now on.

22.2.2007	(8.04.01/623/DD) Neuer optionaler Parameter für den Befehl DATA_2_MASK.
			DATA_2_MASK	[mask],[qb] {, boolEtractRecordID}
			Wenn boolExtractRecordID (TRUE=DEFAULT) ist, wird die im Query angegebene RecordID an die 
			MASK_RECORD_ID weitergegeben, anderenfalls nicht.

			New optional parameter for the command DATA_2_MASK:
			DATA_2_MASK	[mask],[qb] {, boolEtractRecordID}
			If is boolExtractRecordID (TRUE=DEFAULT), the RecordID of the query will be passed through to the 
	MASK_RECORD_ID, otherwise not.

20.2.2005	(8.04.00/622/DD) Neuer Event für Browser und Grids. 
			Bei Browsern :	CALC [browser!BROWSER_HOOK_MOUSE_OVER]	AS ‘ProcedureName’
					CALC [browser!VIEW_MOUSE_TIME] 		AS 2000

			Bei Grirds:		CALC [mask!MASK_HOOK_GRID_MOUSE_OVER] 	AS ‘ProcedureName’
					CALC [gridquery!VIEW_MOUSE_TIME] 		AS 2000

	Wenn bei einem Browser oder Grid eine VIEW_MOUSE_TIME, die größer als 0 ist, und eine Hook-Procedure angegeben wird, wird der Hook immer dann angestoßen, wenn die Maus die angegebene Zeit in Millisekunden unbewegt über dem Browser oder Grid verweilt.

			.
New event for browsers and grids:
			For browsers :	CALC [browser!BROWSER_HOOK_MOUSE_OVER] 	AS ‘ProcedureName’
					CALC [browser!VIEW_MOUSE_TIME] 		AS 2000

			For grirds:		CALC [mask!MASK_HOOK_GRID_MOUSE_OVER] 	AS ‘ProcedureName’
					CALC [gridquery!VIEW_MOUSE_TIME] 		AS 2000

If a VIEW_MOUSE_TIME bigger than zero has been defined for browser or grid and a hook-procedure is given, the hook will always be shot, when the mouse stands unmoved over the browser or grid for the given time in millisecs.

 20.02.2005	(8.03.40/621/DD) Die Stringverarbeitungs-Befehle PART() und REVERSE_PART() können ab jetzt auch mit Delimitern, deren Länge größer als eins ist, ausgeführt werden.

			The string calculation routines PART() and REVERSE_PART() can be executed with delimiters of any 
length from now on.

17.2.2005	 (8.03.39/620/GH)  Ein Fehler beim Formatieren von Datum und Zeitvariablen in SQL-Strings, der 
durch Änderung 8.03.33/614/DD vom 26.01.2005 entstanden ist, ist behoben.

	An error of wrong formatted time and date-variables in sql-strings, that was caused bei change 8.03.33/614/DD from 26.01.2005, has been removed.

8.2.2005	(8.03.38/619/DD) Neuer Schlüssel für die Applikation-INI-Datei, Sektion [TimeScan]: SendInfos=0 oder 1.  Wenn hier eine 0 eingegeben ist, wird keinerlei Info an die Hardware gesendet. Default ist 1 = TRUE.
 
New key for the application-ini-file, section [TimeScan]: SendInfos=0 or 1 (default = 1). If a 0 is given here, no info-strings will be send to the TimeScan-hardware.

8.2.2005	(8.03.37/618/DD) Beim Lesen von Mitarbeiter-Daten währen des Einlesens von Vorgangsdaten mit der 
TimeScan-Hardware kam es zu unbegründeteten Fehlermeldungen. Der Fehler ist behoben.
 
While reading MData from the TimeScan-Hardware, when processing the VData, unsubstantiated error-messages where made. This erroro has been removed.

1.2.2005	(8.03.36/617/DD) Erweiterung der CSH-Syntax für Float-Masken: [M “ID“] bedeutet, dass das entsprechende Feld ein TimeStamp in Form einer recordID ist und nun als Zahl plus Datum und Zeit im Browser wiedergegeben wird.
 
Extension of the CSH-Syntax for float-fields: [M “ID”] means, that the related field is a timestamp that will be displayed in the browser as a numeric-value, date and time..

26.1.2005	(8.03.35/616/DD) Neuer Applikations-INI-Datei-Schlüßel für die Sektion [Config]:
SaveChangesEverywhere=0 oder 1. Mit dem Schlüssel wird eingestellt, ob jede Veränderung von Datensätzen die durch Verwenden einer Eingabe-Maske herbeigeführt werden, protokolliert werden.
 
New application-ini-file-key for section [Config]: SaveChangesEverywhere=0 or 1. With this key, every change from out of any inputmask will be protocolled.

26.1.2006	(8.03.34/615/DD) Neue Script-Varibale  [MY_DOCUMENTS_PATH] verweist auf den Eigene-Dateien-
Ordner des aktuell angemeldeten Benutzers.
	
New-Script-Variable [MY_DOCUMENTS_PATH], points to the my-document-folder of the current user.

26.01.2005	(8.03.33/614/DD) Neue Applikations-INI-Datei-Schlüssel. Zum Convert-Status. Die Veröffentlich erfolgt später.
	
New application-ini-file key for the convert-state, the publishing will follow later.

19.1.2005	(8.03.32/613/DD) Wenn die Engine mit einem zweiten Parameter aufgerufen wird und dieser Parameter einen gültigen Scriptnamen bezeichnet, wird dieses Script ausgeführt. Dies ist seit der Änderung (4.01.34/118) vom 06.10.1999 der Fall. Folgende Neuerung wurde nun eingebracht: sollte der insgesammt 6. Parameter an die Engine der String „run_exit“ sein, wird das Script ausgeführt und die Engine sofort beendet. In diesem Fall wird KEIN Login verlangt.

Bsp.: ...\CARA\CARA.EXE …\Ideal.ini Script.csh   param_1_4_script    param_2     param_3     run_exit

If the eingine is called with a scond parameter that names a script, the script will be executet on startup. This works since change (4.01.34/118) from 06.10.1999. New is, that if the sixth parameter is the string “run_exit”, the script will be executetd and afterwards the engine will be shut down. No login will be asked!   

19.1.2006	(8.03.30/611/HB) Neuer Befehl für die VPE-Print-Engine;
PRINT_LIST [print], x1num, y1num, x2num, y2num, [varList]
Dieser Befehl arbeitet genau wie PRINT_BOX, mit dem Unterschied, dass man eine String-Liste übergeben kann. Alle Strings werden zusammenhängend, mit Leerzeichen getrennt in einer Box ausgedruckt. Leerzeilen werden unterdrückt.

New command for the VPE-Print-Engine;
PRINT_LIST [print], x1num, y1num, x2num, y2num, [varList]
This command works exactly like the PRINT_BOX-command, wth the difference, that a string-list could be passed to it. All strings will be printetd out as cancatenated, with a blank between it. Empty lines will be supressed.

19.01.2005	(8.03.29/610/DD) Die Variablen [FLOAT_DIGITS_xxxxx], die in der Applikations-INI-Datei gesetzt werden können, können nun ihrem Zweck nach eingesetzt werden, es gab diverse Fehler, die nun behoben sind.

	The variables [FLOAT_DIGITS_xxxxx] that can be set in the application-ini-file, could be used as they where meant to, since some errors have been removed.

19.01.2005	(8.03.28/609/HB) Die Einstellungen für Display= und ListDisplay= können jetzt in der Sektion [Config] der Applikations-INI-Datei gesetzt werden und werden bei allen Stationen, die sich neu anmelden, gleich so eingestllt. Natürlich kann jede Station den Wert danach unabhängig von der Grund-Einstellung verändern.

	The settings for Display= and ListDisplay= can be set in the section [Config] in the application-ini-file from now on. All stations, that are logging in the first time will have these settings from now on. Afterwards th stations may change to an individual setting of corse.

19.01.2005	(8.03.27/608/DD) Seit der Änderung (7.03.02/517/HB) vom 14.09.2003 konnte bei eingeschalteter LanguageID keine Eingabe-Maske für den GET_FLOAT-Befehl mehr verwendet werden, da darin das Zeichen „#“ verwendet wurde. Dieser Fehler wurde behoben.

	Since change (7.03.02/517/HB) from 14.09.2003, the GET_FLOAT – command could not be called with a proper input-picture-mask if the LanguageID has been used, because the picture-mask contained “#”-chars. This error has been removed.

18.01.2005	(8.03.26/607/DD) Der Monitor kann ab jetzt in eine Datei umgelenkt werden. Der Dateiname entspricht der Stations-Ini-Datei, jedoch mit der Extension “.mon“. Das Umlenken wird mit dem neuen Werkzeugkasten-Schalter “Monitor 2 File“ erzwungen. Die Datei wird mit jedem neuen öffnen des Monitors neu angelegt.

	The monitor now can be redirected to a file. The filename is like the station-ini-file-name, but with the extension “.mon”. The redirection can be done with the new tool-box-entry-key “Monitor 2 File”. The file will be rewritten on each new monitor open.

30.12.2004	(8.03.25/606/DD) Die Breite der MEMO-Felder kann jetzt mit der CSH-Syntax [W xxx] angegeben werden.
	
	The width of memo-fields can be specified with the CSH-sysntax [W xxx] from now on.

02.12.2004	(8.03.24/605/DD) OFCK71 DLL eingebaut. (Syska EuroFibu 7.1) Das Feld SWIFT-CODE kann ab jetzt im OFCK_PEKO Swift UND IBAN mit Leerzeichen getrennt annehmen.

	OFCK71.DLL implemented. (Syska EuroFibu 7.1) The SWIFT field of the OFCK_PEKO can take the SWIFT AND IBAN from now on, separated by a blank.

02.12.2004	(8.03.23/604/DD) Ab jetzt können auch MEMO-Felder aus Datenbanken gelesen werden. (Dieser Kommentar wird noch erweitert…)
	
	From now on, it is possible to read MEM-fields out of databases. (This comment will be extend soon…)

13.10.2004	(8.03.22/603/DD) Der Befehl OFCK_BUCHUNG_EINFUEGEN der Syska-Schnittstelle übergab den Wert “[OFCK_Buchung.OPBelegNr]“ uninitialisiert an die Fibu. Der Fehler ist behoben.

	The comand OFCK_BUCHUNG_EINFUEGEN of the Syska-Interface transferred the value “[OFCK_Buchung.OPBelegNr]” uninitialized to the Fibu. This error has been removed.

07.10.2004	(8.03.21/602/HB) Erweiterung der Feldhilfe (Änderung 8.03.17/598/HJ vom 23.09.2004): Wenn in der Feldhilfe ein Immer-text eingegeben wird, und im Werkzeugkasten bzw. der INI-Datei der neue Schlüssel “PopUpFieldHlp“ gesetzt ist, wird die Hilfe sofort angezeigt, wenn das Feld den Focus erhält.

	He field-help hast been extended (change 8.03.17/598/HJ from 23.09.2004): If the demand-note has been used in the fieldhelp, and the new INI-file-key (and tool-box entry) “PopUpFieldHlp” has been set, the help text will be displayed, if the field gets the focus.

07.10.2004	(8.03.20/601/DD) Die vorgestrige Änderung (8.03.19/600/HB) vom 05.10.2004 wurde nicht von jedem Kunden begrüßt. Daher Wurden folgende Änderungen vorgenommen.  Es wurden drei neue Schlüssel für die INI-Datei erzeugt und drei dazu passende Punkte im Werkzeugkasten:
	NoMinusFTS (FullTextSearch) = Soll das Auslösen der Volltextsuche NICHT über die Minus-Taste (am numerischen Tastaturblock) erfolgen?
	NoMultiSave = Soll das Speichern NICHT über die Multiplikations-Taste (am numerischen Tastaturblock) erfolgen? 
NoDevideClr = Soll das Säubern der maske NICHT über die Teilungs-Taste (am numerischen Tastaturblock) erfolgen?
Ausserdem wurde implementiert, dass man ab jetzt immerhalb einer Maske Strg+Enter genauso wie die TAB-Taste verwenden kann.

	The latest change (8.03.19/600/HB) from 05.10.2004 has not been accepted by all customers. Therefore three new INI-file keys and, related to that, three new items for the toolbox have been created:
	NoMinusFTS (FullTextSearch) = Should the stroke of the num-pad-minus key NOT execute the full-text-search?
	NoMultiSave = Should the stroke of the num-pad-multiply key NOT save the record? 
NoDevideClr = Should the stroke of the num-pad-divide key NOT clear the mask?
Additionally the following function has been implemented: pressing Ctrl+Enter within a mask, will do the same as pressing the tab-key.

05.10.2004	(8.03.19/600/HB) Die folgenden Tasten wurde nun auch zum Bedienen von Eingabemasken belegt: [NUM -] = Volltext-Suche, [NUM *] = Speichern und [NUM ÷] = Maske reinigen. Wenn im Werkzeugkasten der Punkt “No-Plus-Search“ gesetzt ist, sind alle diese Belegungen ausser Kraft gesetzt.

	The following keys are used to controle a mask from now on: [NUM -] = full-text-search, [NUM *] = save and [NUM ÷] = clear mask. If NoPlusSearch is activated in the toolbox, all these settings are deactivated.

27.09.2004	(8.03.18/599/DD) Bei der Änderung 8.03.06/587/GF.vom 01.07.2004 wurde die dort intendierte Funktionalität NICHT auf den Befehl GET_FLOAT angewendet. Der Fehler wurde behoben.

	The change 8.03.06/587/GF.from 01.07.2004 did NOT involve the command GET_FLOAT. This error has been removed.

23.09.2004	(8.03.17/598/HJ) Durch Betätigen der Tasten-Kombination STRG+F1 kann man ab jetzt für jedes Masken-Feld einen frei definierbaren Hilfstext eingeben. Voraussetzung dafür ist die Existenz der Tabelle “fieldhelp“. Die passende DDF-Datei befindet sich im Ordner “SQL“ der CARA-Dokumentation.

	By pressing CTRL+F1 out of a masks-field, a free helptext can be defined. Therefor the table “fieldhelp” must exist. The ddf-file can be found in the folder “SQL” of the cara-documentation.

12.08.2004	(8.03.16/597/PB) Im Kalender der Eingabemasken wird ab jetzt auch die Kalenderwoche angezeigt. Das feld ist editierbar und man kann dort auch eine Kalenderwoche eingeben, die nach dem Verlassen des Feldes mit TAB umgekehrt im Kalender angezeigt wird. 

	The calendarweek will be displayed in the calendar of the masks from now on. The field can be edited and will be displayed in the calendar after leaving the field with the tab key..

12.08.2004	(8.03.15/596/DD) Falls bei einer String-Calculation die FILTER-Operation verwendet werden sollte, und einer der Strings aller sein sollt, wird keine Fehlermeldung mehr angezeigt.. 

	In case of a string-calculation with the FILTER-operation, will no error-message be displayed anymore, if one of the strings is empty.

12.08.2004	(8.03.14/595/DD) Die Tabelle SQLStream TimeUsed erweitert. Darin steht ab jetzt die Zeit in Millisekunden, die benötigt wurde, um das Query auszuführen. 

	The tabelSQLStream has been extended by the field TimeUsed. The time that it took to execute the query in millisec is saved there.

06.08.2004	(8.03.13/594/GH) Der Befehl SET_LABEL kann jetzt auch auf GROUP_BOX und RADIO_GROUP angewandt werden.

	The command SET_LABEL can be used for GROUP_BOX and RADIO_GROUP either.

06.08.2004	(8.03.12/593/GH)  Das Vorhandensein einer TREE_MOTHER-Variable wird nicht mehr im Monitor angezeigt.

	The existence of a TREE_MOTHER-variable will no longer be displayed in the monitor.

06.08.2004	(8.03.11/592/GH)  Das Erreichen des Endes einer Selections-Liste wird nicht mehr im Monitor gemeldet.

	Reaching the end of a selections list will no longer be shown in the monior.

03.08.2004	(8.03.10/591/DD)  Neue Option für Tree-Dialog-Items (in Masken) “TREESEL“. Erlaubt das Selektieren von mehr als einer Tree-Zeile.

	New option for tree-dialog-items (in masks) “TREESEL”. Offers the possibility of selectin more than one tree-row.

10.7.2004	(8.03.09/590/GH) Neuer Schlüssel für die Applikations-INI-Datei, Section [Config]: SQLStreamSave=.
Default=0. Wenn Dieser Schalter eingeschaltet wird (=1), werden alle SQL-Aktionen in der Tabelle SQLStream mit geschrieben. 

	New key for the application-ini-file, section [Config]: SQLStreamSave=0 (default) or 1. If this key is switched on (=1) all sql-statements will be saved into the table sqlstream. 

09.07.2004	(8.03.08/589/DD) Die Volltext-Suche sucht ab jetzt jeden einzelnen (durch Leerzeichen getrennten) Teilstring in allen Feldern separat. Dadurch wird das Ergebnis nicht mehr in der eingegebenen Reihenfolge und auch nicht mehr im gleichen Datenbankfeld erwartet!

	The fulltextsearch searches every (by blanks separated) part of the search-string separate. So the result is not expected in the order of the input and also not in the same database field!

09.07.2004	(8.03.07/588/DD) Der Connect auf eine weitere Datenbank mit der MySQL-Version der Engine ist ab jetzt fehlerfrei möglich. 

	Connecting to a second mysql-databayse is error-free possible, from now on.

01.07.2004	(8.03.06/587/GF) Seit der Änderung (8.01.05/567/HB) vom 11.03.2004 musste man bei der Eingabe von Werten mittels der Funktionen GET_NUM, GET_FLOAT, GET_STRING, GET_DATE und GET_TIME immer die den vorgegebenen Wert entfernen, bevor etwas Neues eingegeben werden konnte. Deshalb sind alle diese Befehle um einen weiteren optionalen Parameter erweitert worden, hier exemplarisch der Befehl GET_NUM [num],'head','prompt','mask',{,[bool] {,FldOpt}}. Der neue Parameter FldOpt kann folgende Werte enthalten:

	[GET_OPT_AUTO_SEL]	Der Vorgabewert soll markiert sein, so dass man ihn mit einer beliebigen
				Eingabe sofort überschreiben kann.
	[GET_OPT_BEEP]	Soll ein Warnton im Falle einer Fehleingabe ertönen?
	[GET_OPT_PUSH]	Wenn man innerhalb eines Eingabe-Feldes, dessen maximale
				Zeichenlänge bereits erreicht ist, ein weiteres Feld eingibt, werden rechts
				Zeichen abgeschnitten, anderenfalls kann man nichts mehr eingeben.

	Die folgenden Optionen wurden bereits “durchgereicht”, obwohl sie nur innerhalb einer Maske mit mehreren Feldern einen Sinn ergeben. Im Falle der GET_XXX-Befehle sind sie ohne Wirkung.
	[GET_OPT_AUTO_L_R]	AutoAdvanceLeftRight (ist nur innerhalb einer Maske sinnvoll)
	[GET_OPT_AUTO_CHR]	AutoAdvanceChar (ist nur innerhalb einer Maske sinnvoll)
	[GET_OPT_AUTO_U_D]	AutoAdvanceUpDown(ist nur innerhalb einer Maske sinnvoll)
	
	Wenn die FldOpt nicht übergeben wird, werden alle Optionen ausser [GET_OPT_AUTO_SEL] gesetzt.

	Since change (8.01.05/567/HB) from 11.03.2004 the default-value of inputs that where made with the commands GET_NUM, GET_FLOAT, GET_STRING, GET_DATE or GET_TIME must be removed. Bevor one could enter a new value. So this commands have been extended by a new optional parameter, e.g. GET_NUM [num],'head','prompt','mask',{,[bool] {,FldOpt}}. The new parameter FldOpt can hold the following values:

	[GET_OPT_AUTO_SEL]	Should the input-values be completely selected / marked so that a new
				input overwrites it.
	[GET_OPT_BEEP]	Should a beep occure on wrong input-char?
	[GET_OPT_PUSH]	This option determines what happens when characters are entered into a
				completely filled entry field. If InsertPushes is set and a character is
				entered into a full entry field, a character at the right-most position in the
				field  is "pushed" off the end. If InsertPushes is False, characters entered
				into a full entry field are ignored.
	The following options are integrated, even though they are only usefull within a mask with more then one field. In case of the commands GET_XXX they are without any effect:
	[GET_OPT_AUTO_L_R]	AutoAdvanceLeftRight 
	[GET_OPT_AUTO_CHR]	AutoAdvanceChar 
	[GET_OPT_AUTO_U_D]	AutoAdvanceUpDown

	If FldOpt is 0, all options are set, except [GET_OPT_AUTO_SEL].

30.06.2004	(8.03.05/586/DD) Neuer Befehl COPY_2_CLIPBOARD [var]. Kopiert den Inhalt einer Variable in den Zwischenspeicher. Bei Listen, werden alle Zeilen übergeben. Bei Querys und Browsern werden die Feldnamen und deren Inhalte übergeben. Mit diesem Befehl wurde auch die neue Browser- und Grid-Option “Zeile Kopieren” eingebaut, die alle Feldnamen und deren Inhalte der aktuellen Zeile in den Zwischenspeicher übernimmt.

	New command .COPY_2_CLIPBOARD [var]. Copys the value of the given var into the clipboard. In case of a list-variable all lines will be passed to the clipboard. In case of browsers or querys all the fieldnames and their values are passed through to the clipboard. With this new command also the new browser- and grid-option “copy line” has been implemented; it copys all the fieldnames and fieldvalues of the active line into the clipboard.

22.06.2004	(8.03.04/585/VH) Neuer Masken-Hook: [mask!MASK_HOOK_TIMER]. Dieser Hook wird immer dann angesteuert, wenn der Mask-Timer feuert. Der Timer wird während der Hook-Prozedur ausgeschaltet und zählt nach der Ausführung der Hook-Prozedur wieder von 0 an aufwärts.

	New mask-hook: [mask!MASK_HOOK_TIMER]. This hook will be executetd if the mask-timer fires. The timer will be disabled while executing the hook-procedure and will start to count, begining with 0, after the hook-procedure has been executed completely.

22.06.2004	(8.03.03/584/VH) Neuer Befehl: MASK_TIMER [mask], numInterval, boolOnOff
	Startet einen Timer mit numInterval Millisekunden. Der Wert boolOnOff schaltet den Timer an und aus.

	New command MASK_TIMER [mask], numInterval, boolOnOff. Starts a timer with numInterval milliseconds. The value boolOnOff switches the timer on or off.

21.06.2004	(8.03.02/583/VH) 5 neue Applikations-INI-Datei-Schlüßel  für die Sektion [Config]:

	Schlüßel		Vorgabe	Vorgabe	Bedeutung
				IconStyle 1+2	IconStyle 3+4	
	_________________________________________________________________________________
	IconPanelHeight=	26		40		Höhe des Panels auf dem die Knöpfe
								in Masken und Browsern liegen
	IconHeight=		23		36		Höhe eines Knopfes, in dem die Icons
								dargestellt werden.
	IconWidth=		25		38		Breite eines Knopfes, in dem die Icons
								dargestellt werden.
	IconHeightList=		16		32		Höhe eines Icons, das auf einem Knopf 
								dargestellt werden soll.
	IconWidthList=		16		32		Breite eines Icons, das auf einem
								Knopf dargestellt werden soll.

	Wichtig: die Höhe und Breite der Icons, die sich in den Bilddateien befinden, die geladen werden, MÜSSEN der IconHeightList und  IconWidthList entsprechen. Das heißt: wenn diese Parameter verändert werden, müssen ALLE Bitmap-Dateien, die die Icons enthalten ebenfalls in ihren Größen angepasst werden. Um zu testen, was “gefällt” reicht es jedoch aus, die Parameter umzustellen und die OK.BMP anzupassen. Es wird dann in allen Icons die OK.BMP gezeigt... Außerdem müssen AUCH die Menü-Icons angepasst werden. Begründung: die Icons werden alle beim Programmstart in eine Image-List geladen, aus der sie zu Laufzeit in jede Maske/Browser “geholt” werden. Dadurch ist ein schneller Programmablauf sichergestellt. Diese Image-Lists können jedoch nur gleichgroße Images verwalten. Wenn diese neuen Parameter verändert werden und “Wirkung zeigen sollen”, muss der Schlüßel IconLoad=0 gesetzt werden.

	5 new application-INI-file-keys for section [Config]:

	Key			Default		Defaut		Meaning
				IconStyle 1+2	IconStyle 3+4	
	_________________________________________________________________________________
	IconPanelHeight=	26		40		Height of the panel on which the
								buttons in the masks and browsers are
								placed.
	IconHeight=		23		36		Height of a button that displays an
								icon.
	IconWidth=		25		38		Width of a button that displays an
								icon.
	IconHeightList=		16		32		Height of an icon that is displays on a
								button.
	IconWidthList=		16		32		Height of an icon that is displays on a
								button.

	Atention: the height ans width of the icons in the picture-files, that are loaded MUST have the IconHeightList and  IconWidthList sizes. That means: if this parameters are changed, all bitmap-files have to be changed too. For testing, it is enough to change the parameters and only the OK.BMP. Then everywhere in the program. The OK.BMP will be shown... ALSO the menu-icons have to be changed! Reason: while programstart the icons are loaded are loaded into an image-list. This list is used while runtime to fetch the icons for the masks and browsers, so a fast execution is enshured. These image-lists can only hold icons of the same size. If these new parametrs are changed and should show results, the key  IconLoad=0 must be set.

15.06.2004	(8.03.01/582/VH) Neuer Schlüssel für die Applikations-INI-Datei in der Section [DocumentManager]: DocMgrTimerDetailScript=. In diesem Schlüssel kann der Name für ein Script angegeben werden, das immer dann ausgeführt wird, wenn man mit der rechten Maustaste auf eine Zeile im UserTimer klickt.

	New applikation-ini-file-key for the section [DocumentManager]: DocMgrTimerDetailScript=. Here the name of a script can be given, that will be executed, if one clicks right on an item within the usertimer.

15.06.2004	(8.03.00/581/DD) In der CARA-Engine wurde die integrierte Syska-Schnittstelle von Version 5.0 auf 7.0 upgedatet. Ab jetzt muss bei Syska-Versionen der Engine die zur Syka gehörende “OFCK70.dll” verwendet werden.

	The Syska-interface has been updated form veriosn 5.0 to 7.0. So all syska-versions of the cara-engine have to load the “OFCK70.dll” from Syska.

01.06.2004	(8.02.11/580/DD) Im Befehl QUERY_ADD_STRING wurde bei der Übergabe von Felder und Werte-Listen die Option [SQL_BCK_SLSH_INTRO_SPEC_CHAR] nicht berücksichtigt; der Fehler wurde behoben.

	Within the comand  QUERY_ADD_STRING the option [SQL_BCK_SLSH_INTRO_SPEC_CHAR] was not used, when passing field and value lists through; this error has been removed.

18.05.2004	(8.02.10/579/DD) Nach der Änderung (8.02.08/577/RR+DG) vom 28.04.2004 kam es gelegentlich zu Abstürzen bei Computern mit dem Betriebssystem Win98. Durch den neuen Applikations-INI-Datei-Schlüssel CheckUserSID=0 oder 1 (0=Stations-INI-Dateinamen NICHT durch die verschlüsselte SID erweitern, 0=Default=Stations-INI-Dateinamen NICHT erweitern) in der Sektion [Config] kann dies nun eingestellt werden.

	After update (8.02.08/577/RR+DG) from 28.04.2004 some machines with Win98 sometimes stalled. This can be configured with the new applikation-INI-file key CheckUserSID=0 oder 1 (0=do NOT extend Stations-INI-Filename with crypted SID, 0=Default=do NOT extend Stations-INI-Dateinamen) in section [Config].

12.05.2004	(8.02.09/578/VH) Wenn in den Werkzeugen die Option “SearchOnEnter” eingestellt ist, wird in Memo-Feldern ab jetzt beim Betätigen der Entertaste keine Suche mehr ausgelöst.

	If the option “SearchOnEnter” is switched on in the toolbox, no search will be made by pressing the enter-key within a memofield from now on.

28.04.2004	(8.02.08/577/RR+DG) Der Dateiname der Stations-INI-Datei wurde geändert. Bis jetzt war der Stations-INI-Dateiname ein 4 Buchstaben langer Kürzel, der die Checksumme der Stations-ID (aus der Registry, es handelte sich um den Zeitstempel der Erstinstallation). Von nun an wird an dieses Kürzel durch einen Tiefstrich/Unterstrich getrennt das Kürzel des angemeldeten Windows-Users gehängt. Dieses Kürzel ist die Checksumme der Windows-User-Security-ID. Sie wird in den Stationsdaten (Werkzeugkasten) angezeigt. Ausserdem ist dieser Wert in der neuen globalen Variable [USER_SID_SHORT] verfügbar. In diesem Zuge wurde die Anzeige der Stationsdaten um die Pfadangaben “Pictures”, “PrintSet” und “Document” erweitert.
	Wenn ein User bereits eine Stations-INI-Datei hatte, die mit vielen Einstellungen gefüllt war, kann man die neu entstandene INI einfach löschen und die alte so um benennen, wie die neue heißt – dann bleibt für den User “alles beim Alten”...

	The filename of the station-INI-file has been changed. Until now this was only a 4 chars lang abbreviation – the checksum of the station-ID (out of the registry, the timestamp of the first installation). From now on the abbreviation of the Windows-User-Security-ID will (also a 4 chars long checksum) will be added with an underscore to the “old” filename. This User-SID can be viewed in the station data (toolbox). Additionally the new global variable [USER_SID_SHORT] holds this information also. By the way, the station data viewer has been extended by the paths “pictures”, “printset” and “document”.
	If a user already has a station-ini-file with a lot of settings inside, it is possible to delete the new one and rename the old one to the new name. So things are still the same for the users...

30.03.2004	(8.02.07/576/DD)  Das Sortieren von Listen mit Feldern mit Aggregat-Funktionen, die aufgrund des verwendeten SQL-Servers gealiast sind, kann ab jetzt korrekt erfolgen. Es ist empfehlenswert, wenn alle Felder mit Aggregation gealiast werden, d.h. aus “... SUM(P.Anzahl), ...” wird dann 
	“... SUM(P.Anzahl) AS SumPAnz, ...”

	Sorting of lists that contains fields with aggregation-functions, that have to be aliast in case of the used SQL-Server, can be done from now on. It is usefull to alias all fields with aggregations, e.g. 
	“... SUM(P.Anzahl), ...” will than be “... SUM(P.Anzahl) AS SumPAnz, ...”

26.03.2004	(8.02.06/575/DD)  Der Fehler, das die TimeScan-Hardware keine Informationen wiedergeben konnte, ist behoben.

	The error, that the TimeScan-Hardware does not display any infos, has been removed.

25.03.2004	(8.02.05/574/DD)  Der SQL-Update-Befehl wurde fehlerhaft ausgeführt, wenn in den Feld-Inhalten irgendwo ein “from” vorkam. Der Fehler ist behoben.

	The SQL-update-comand was executed wrong, when in the field-values a string like “from” existed. This error has been removed.

25.03.2004	(8.02.04/573/HB)  Verbesserung des Befehls 
	GET_EXTERN_DEVICE 'ext',delquots,delparams,[str]{,[sys]}
	Für [sys] können ab jetzt folgende Ergebnisse erwartet werden: [WIN_UNKNOWN], [WIN_3X], [WIN_95], [WIN_98], [WIN_ME], [WIN_NT3X], [WIN_NT4X], [WIN_2K], [WIN_XP].
	Der Wert [WIN_NT] existiert ab jetzt nicht mehr!

	Enhancement of the comand GET_EXTERN_DEVICE 'ext',delquots,delparams,[str]{,[sys]}
	For [sys] from now on, the following values can be expected: [WIN_UNKNOWN], [WIN_3X], [WIN_95], [WIN_98], [WIN_ME], [WIN_NT3X], [WIN_NT4X], [WIN_2K], [WIN_XP].
	The value [WIN_NT] does not longer exist,

24.03.2004	(8.02.03/572/DD)  Neue globale Variable [USE_LANGUAGE] vom Typ VAR_BOOL, der Vorgabewert ist TRUE. Wenn diese Variable auf FALSE gesetzt wird, werden Strings nicht mehr auf Sprachinhalte geprüft.

	New global variable [USE_LANGUAGE] of type VAR_BOOL, the default value is TRUE. If this value is set to FALSE, strings will not longer be proofed for language-contents.

24.03.2004	(8.02.02/571/DD)  FORCE_DIR funktioniert nun auch mit variablen Pfaden.

	FORCE_DIR now also works with variable paths.

17.03.2004	(8.02.01/570/DD) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [Config]: IconLoad=0 oder 1. Default ist 1. Wenn dieser Schalter auf 0=False gesetzt wird, werden die 175 Bitmap-Dateien des Picture-Verzeichnisses beim Start direkt aus der CARA.EXE gelesen. Bedingung dafür ist jedoch, dass alle Bitmaps dem “Standard” entsprechen, das gilt auch für die Sektion [Pictures] in der Applikations-INI-Datei. 

	New key for the application-ini-file, section [Config]: IconLoad=0 or 1 (default=1), If this key is set to 0=FALSE, the 175 bitmap-files of the picture-folder will be loaded out of the cara.exe at startup. For this it is necessary, that all bitmaps used are “standard”, this also includes the section [pictures] of the application-ini-file.

16.03.2004	(8.02.00/569/DD) Der Dialog für den Datenexport in Browsern und Grids wurde völlig überarbeitet und kann ab jetzt auch PDF, DBF, SQL, LaTeX und XML exportieren.

	The dialog for data-export has been completely redesigned. From now on also PDF, DBF, SQL, LaTeX and XML can be exported.

11.03.2004	(8.01.06/568/HB) Beim Versenden einer Email wird ab jetzt dem Adressat “SMTP:” vorrangestellt, dadurch kann auch Outlook genutzt werden.

	Sendeing an email now puts a “SMTP:” in from of the reciepient, so outlook can be used either.

11.03.2004	(8.01.05/567/HB) Wenn in Browsern der Suchdialog mittels einer beliebigen Taste ausgelöst wurde und das Suchfeld eine Zahl war, wurde der erste (auslösende) Buchstabe bzw. Ziffer mit dem darauffolgenden überschrieben. Dieser Fehler ist behoben.

	Starting the searchdialog in a browser or grid by typing a key, marked the first char and causes the second to overrides the first one. This error has been removed.

02.03.2004	(8.01.04/566/DD) Erweiterung des (neuen) Befehls  PICTURE_POP
	PICTURE_POP 'FileName'{,'Header'{,boolAutoFit{,[objName]{'ScriptName'{,'Table'{,RelRecID}}}}}}
	Die drei neuen Parameter bedeuten:
	VAR_STR	ScriptName 	Name des Scriptes, das bei einem Doppelclick auf das Bild
					ausgeführt werden soll. Als Parameter an dieses Script werden
					folgende Werte übergeben:
					RECORD_ID1	Die beim Aufruf übergebene RelRecID.
					PAR_STR2	Der Dateiname des Bildes ('FileName').
					PAR_STR3	Der beim Aufruf angegebene Tabellen-Name.
	VAR_STR	Table		Name einer Tabelle, der an das Script weitergereicht wird.
	VAR_FLOAT	RelRecID	RecordID eines Datensatzes, die an das Script weitergereicht
					wird.

	Three new optional parameters for the (new) comand PICTURE_POP:
	PICTURE_POP 'FileName'{,'Header'{,boolAutoFit{,[objName]{'ScriptName'{,'Table'{,RelRecID}}}}}}
	The three ne parameter are:
	VAR_STR	ScriptName 	Name of a script, that should be executed after a doubleclick on
					the shown picture. The following parameter will be passed through
					to the script:
					RECORD_ID1	The RelRecID that was given when this comand
							has been called.
					PAR_STR2	The filename of the picture ('FileName').
					PAR_STR3	The tablename that was given when this
							comand has been called.
	VAR_STR	Table		Nome of a table that is passed through to the script.
	VAR_FLOAT	RelRecID	RecordID of a record, that is passed through to the script.

26.02.2004	(8.01.03/565/DD) Der Fehler, dass die Mandanten-Verwaltung ab dem  4. Mandanten Zuordnungsfehler machte, ist behoben.

	The error, that CARA made wrong relations for mandates bigger or equal 4, has been removed.

26.02.2004	(8.01.02/564/DD) Neue Mask-Variable, [mask!MASK_CHANGES_PROTOCOL] (VAR_BOOL). Wenn dieser Wert TRUE ist, werden bei einem Update alle Änderungen mit  Feldnamen und deren Inhalte mit Datum, Uhrzeit und Benutzer in der Tabelle “changes” protokolliert. Mit ALT+F12 kann man diese Historie pro Datensatz sichten. Die Tabellendefinition befindet sich in der Dokumentation der CARA-Engine im Verzeichnis SQL/DDF.

	New mask-variable [mask!MASK_CHANGES_PROTOCOL] (VAR_BOOL). If this value is set to TRUE, all changes of a record will be protocoled to the table “cahnges” with fieldname, user, day, time, old- and new fieldvalue. With ALT-F12 this history can be viewed for each record. The tabledefinition can be found in the CARA-documentation, folder SQL/DDF.

26.02.2004	(8.01.01/563/DD) Neuer Befehl: 
	PICTURE_POP 'filename' {, 'Header' {, boolAutoFit  {, [objVar]}}}
	oder
	PICTURE_POP 'CLOSE', [objVar]
	Öffnet eine Bilddatei mit dem Dateinamen “filename” in einem eigenen Fenster mit der Überschrift “Header”. Mit boolAutoFit = TRUE wird das Bild an die Fenstergröße angepasst. Der Objekthandle wird an die optional übergebene VAR_OBJECT [objVar] übergeben. Mit diesem Handle kann das Fenster bei Bedarf auch wieder (geschlossen und) vom Speicher entfernt werden. Wenn der User das Fenster schließt, ist es NICHT automatisch aus dem Speicher entfernt. Zum Entfernen dieses “freien” Fensters, wird der Befehl folgendermaßen ausgeführt: PICTURE_POP 'CLOSE', [objVar].

	New comand: 	
	PICTURE_POP 'filename' {, 'Header' {, boolAutoFit  {, [objVar]}}}
	or
	PICTURE_POP 'CLOSE', [objVar]
	Opens a window with a picture with a given “filename”  and a given “header”. If  boolAutoFit is set to TRUE, the picture will be streched to fill out the window. The objecthandle will be passed through to the optional parameter VAR_OBJECT [objVar]. With this handle the window can be (closed and)  removed fom memory. If the user colses the window it is NOT removed from memory. To remove this “free” window, the comand can be executed as this: PICTURE_POP 'CLOSE', [objVar].

26.02.2004	(8.01.00/562/DD) Ein neuer Variablen-Typ steht zur Verfügung. Dieser Variablen Typ dient ausschließlich zur Verwaltung scriptübergreifender Objekte. Er kann weder (in der Datenbank, einer Datei oder einer anderen Variable) gespeichert werden noch können damit Berechungen durchführt werden. Er wird von der Engine gesetzt und ausgelesen. Entsprechende Anwendungsmöglichkeiten werden in Zukunft entstehen, der neue Variablen-Typ wird dann mehr und mehr Anwendung finden. Folgende Befehle stehen zur Verfügung:
	VAR_OBJECT (Kurzform VO), LOCAL_OBJECT, GLOBAL_OBJECT 

	A new type of variables is availiable now. This type will  exclusively be used to handle objects over serveral scripts. It can not be used to save it (in a database, file or other variable), and also calculations can not be made with it. It will only be set and read from the engine. Appropriate application possibilities will appear in future. This variable-type will  be used more and more. The following comands are availiable:
	VAR_OBJECT (Shortform VO), LOCAL_OBJECT, GLOBAL_OBJECT 

22.02.2004	(8.00.00/561/DD) Die CARA-Engine ist mandantenfähig. Man gibt in der neuen Sektion [Mandant] eine Liste von Mandanten an, setzt den “Start”-Mandanten in der Sektion [Config] (und auch den Special-Pfad des Start-Mandanten) und legt in der Tabelle TableFld die Tabellen fest,die bei Selektionen und Updates die Mandantschaft zu berücksichtigen haben. Jeder Record kann bis zu 42 Mandanten gleichzeitig “gehören”. Man selektiert einen Datensatz in einer Maske (deren Masken-Tabelle in den TableFld-Definition als Mandant relevant erklärt wurden) und speichert ihn. Damit “gehört” er dem aktuellen Mandant. Wenn man dann den Mandant wechselt und erneut speichert “gehört” der Datensatz auch dem nun aktuellen Mandanten. Beim Löschen wird ein Datensatz erst dann gelöscht bzw. deaktiviert, wenn das letzte Mandanten-Bit im Feld Mandant zurückgesetzt wurde.

	The CARA-Engine ist mandate-able. A list of mandates can be defined in the ne section [Mandant], a start-mandate is defined in the section [Config] also the start-mandates special-path and in the table “tablefld” are the tables defined, that have to be regarded as mandate-specific. Each record can be owned by 42 mandates at the same time.  A record can be selected in a mask and saved – so it is owned by the actual mandate (if the masks  table is signed as mandate-able in the TableFld-definitions). If the mandate is then changed an the record will be saved again, it will be owned by the now actual mandate also. When deleting a record, it will only be deativated or deleted, if the last mandate-bit is deaktivated in the field Mandant.

22.02.2004	(7.04.20/560/DD) Vorbereitung für die Mandantenfähigkeit (12): Neuer Befehl:
		QUERY_CLEAR_MANDANT [query or browser or mask], [boolRes]
		Mit diesem Befehl wird aus allen Datensätzen, die durch eine SELECT-Anweisung, die sich im
		angegebenen Query befindet, beschrieben werden, das Byte des aktuellen Mandanten aus dem Feld
		“Mandant” entfernt. Als “betroffene” Tabelle wird die Tabelle des Querys verwendet, deren RecordID
		zuerst in der Feldliste genannt wurde. Beispiel: 
		QUERY [Q]
		  SELECT P.Anzahl, B.Bezeichnung1, B.RecordID 
                 FROM Posten P, Artikel B
                WHERE P.ArtikelID = B.RecordID
		END_QUERY
		QUERY_CLEAR_MANDANT [Q],[Res]
		Dies entfernt aus dem Feld Mandant der Tabelle Artikel das Bit des aktuellen Mandanten, bei allen
		Datensätzen, die durch dieses Query selektiert werden.

		Preparing the mandate-management (12): New comand:
		QUERY_CLEAR_MANDANT [query or browser or mask], [boolRes]
		This comand will remove the bit of the actual mandate out of the field “Mandant” from all records that
		can be selected with the given query. The table that is target of this comand is the one, thats recordid
		is listed first in the field-list. Example:
		QUERY [Q]
		  SELECT P.Anzahl, B.Bezeichnung1, B.RecordID 
                 FROM Posten P, Artikel B
                WHERE P.ArtikelID = B.RecordID
		END_QUERY
		QUERY_CLEAR_MANDANT [Q],[Res]
	This removes out of the field Mandant of the table Artikel the bit of the actual mandate in all record, that can be selected with the given qurey.

22.02.2004	(7.04.19/559/DD) Vorbereitung für die Mandantenfähigkeit (11): Neue CSH-Syntax für SQL-Datenbankabfragen BINARY_FLAG_xxx_FIELD und BINARY_NOT_FLAG_xxx_FIELD. Sie können innerhalb von WHERE-Bedingungen genutzt werden. “xxx” ist ein numerischer Wert und steht für die Binärflagge, die in dem Feld “FIELD” gesetzt sein soll oder nicht. 
	Beispiel: SELECT * FROM ADRESSEN A WHERE BINARY_FLAG_2_A.Mandant. 
	Als korrekte Syntax wird die in der Applikations-INI-Datei, Sektion [SQL] hinterlegte Formel für BinaryFlag verwendet. Wobei der Wert “xxx” dem Platzhalter “%FLAG%” und “FIELD” dem Platzhalter “%FIELD%” entspricht.

	Preparing the mandate-management (11): New CSH-syntax for SQL-Querys BINARY_FLAG_xxx_FIELD und BINARY_NOT_FLAG_xxx_FIELD. They can be used within the where-clause of a query. “xxx” is a numeric value and represents the binary-flag that could be set within the “FIELD” or not.
	Example: SELECT * FROM ADRESSEN A WHERE BINARY_FLAG_2_A.Mandant. 
	The correct syntax will be retrieved from out of the application-ini-file, section [SQL], key BinaryFlag=. Where the value “xxx” replaces the variable “%FLAG”” and “FIELD” replaces the variable “%FIELD%”

22.02.2004	(7.04.18/558/DD) Vorbereitung für die Mandantenfähigkeit (10): Neuer Schlüßel für die Applikations-INI-DAtei, Sektion [SQL]: BinaryFlag=. In dieser Zeile kann die Syntax angegeben werden, wie man innerhalb eines numerischen Feldes feststellen kann, ob ein bestimmtes Bit der Zahl gesetzt ist.
	Beispiel für MS-ACCESS: (%FIELD% \ 2^(%FLAG%-1) MOD 2 = 1). Die Platzhalter “%FILED%” und “%FLAG%” werden währen der Laufzeit durch entsprechend deklarierte Werte erstezt.

	Preparing the mandate-management (10): New key for the application-ini-file, section [SQL]: BinaryFlag=. In this line the syntax can be defined, that is needed to verify wether or not a specific bit of a numeric filed is set. Example for MS-ACCESS: (%FIELD% \ 2^(%FLAG%-1) MOD 2 = 1). The variables “%FILED%” and “%FLAG%” are replaced while runtime by specialy declared values.

22.02.2004	(7.04.17/557/DD) Vorbereitung für die Mandantenfähigkeit (9): Neue Option für Masken “MANDANT” die im Options-String der Definitions-Datei (erste Zeile der “SetDoc“ Datei) angegeben werden kann. Falls die Masken-Tabelle in den TableFld-Definitionen mit “IsMand” = TRUE gekennzeichnet wurde, kann man mit dieser Option die daurch automatisch erscheinende Mandanten-Auswahl-Box in der Icon-Liste des Maske ausblenden. Wenn die Tabelle mit “IsMand” = FALSE gekennzeichnet wurde, kann man mit dieser Option die Mandanten-Auswahl-Box in der Icon-Liste des Maske einblenden. Die Mandanten-Auswahl-Box wird nur dann automatisch in einer Maske eingeblendet, wenn der User in der Maske den Rechte-Level 3 hat.

	Preparing the mandate-management (9): New mask-option “MANDANT” which can be set in the mask-definition-file in the first line of the SetDoc-file. If the mask-table is listed in the table-definitions with “IsMand” = TRUE, this option can be used to hide the automaticly appearing mandate-drop-down-box in the icon-line of the mask. If the table is signed with “IsMand” = FLASE, this option can be used to display the mandate-drop-down-box in the icon-line of the mask. The mandate-drop-down-box will only be automaticly displayed, if the user has the right-level 3 in that mask.

22.02.2004	(7.04.16/556/DD) Vorbereitung für die Mandantenfähigkeit (8): Neuer Hook für Masken, der jedes Mal 
		ausgeführt wird, wenn der Mandant gewchselt wird: [mask! MASK_HOOK_MANDANT].

	Preparing the mandate-management (8): New hook for masks, that will be executed each time, when the mandate has been changed: [mask! MASK_HOOK_MANDANT]

22.02.2004	(7.04.15/555/DD) Vorbereitung für die Mandantenfähigkeit (7): Neue globale Variable [ACT_MANDANT_NAME], enthält den in der Sektion [Mandant] aufgeführten Namen des aktuellen Mandanten in exakter Groß- und Kleinschreibung.

	Preparing the mandate-management (7): New globale Variable [ACT_MANDANT_NAME], contains the name of the actual mandate as  listed in the section [Mandant] in the application- ini-file.

22.02.2004	(7.04.14/554/DD) Vorbereitung für die Mandantenfähigkeit (6): Neuer Schlüßel für die Applikations-INI-Datei, Sektion [Config]: MandantScript=. Das hier genannte Script wird nach jedem Mandantwechsel ausgeführt. Man kann dort z.B. die Werte globaler Variablen neu setzten. Ausserdem wird der Special-Pfad geändert: alter  Special-Pfad (.z.B. SpecialZentrale) “-” Mandant-Name (SpecialZentrale “-” Zentrale “=” Special) und dann “+” neuer Mandant-Name (Special “+” Filiale “=” SpecialFiliale). Genauso wird mit dem Text im Applikations-Hauptfenster verfahren: wenn dort der Name des vorherigen Mandanten gefunden werden kann, wird er durch den des aktuell gewählten Mandanten ersetzt. Z.B. “Ideal-Extended Version 5.7 (Zentrale)” wird dann “Ideal-Extended Version 5.7 (Filiale).

	Preparing the mandate-management (6): New key for the application-ini-file, section [Config]: MandantScript=. This script will be executed after teh mandate has been changed. It can be used e.g. to set the values of global variables with different values. Also the special-path will be changed: old special-path (e.g. SpecialHeadquater) “-” mandate-name (SpecialHeadquater “-” Headquater “=” Special) and then “+” new mandate-name (Special “+” Branch “=” SpecialBranch). The same will be done to the applications main-windows-header: if the name of the old mandate can be found there, it will be replaced with the ne one. E.g. “Ideal-Extended Version 5.7 (headquater)” wil be “Ideal-Extended Version 5.7 (Branch).

22.02.2004	(7.04.13/553/DD) Vorbereitung für die Mandantenfähigkeit (5): Sektion für die Applikations-INI-Datei: [Mandant]. Hier können alle Mandanten in aufsteigender Reihenfolge genannt werden (max 42). Alle Mandantnamen dürfen keine Leerzeichen und Sonderzeichen (außer nationalen Umlauten) enthalten, da sie auch für Pfadangaben verwendet werden. Beispiel:
	[Mandant]
	1=Zentrale	
	2=Filiale

	Preparing the mandate-management (5): New section for the application-ini-file: [Mandant].All the mandates can be listed here ascending (max 42). Do not use anyy blank or special-cahr in a  mandate-name (except national chars), because they are used for pathnames too. Example:
	[Mandant]
	1=Headquater
	2=Branch

22.02.2004	(7.04.12/552/DD) Vorbereitung für die Mandantenfähigkeit (4): Neuer Schlüßel für die Applikations-INI-Datei, Sektion [Config]: Mandant=. Hier kann ein numerischer Wert eingestezt werden, der in Zusammenhang mit der neuen Sektion [Mandant] steht.

	Preparing the mandate-management (4): New key for the application-ini-file, section [Config]: Mandant=. Here a numeric Value can be set, that is correcsponding with the new section [Mandant].

22.02.2004	(7.04.11/551/DD) Vorbereitung für die Mandantenfähigkeit (3): Alle-CARA-Operationen berücksichtigen den Mandanten nicht! (Notes, DocuMgr, Listengenerator, Stations, Messages, Record-Locking etc.)

	Preparing the mandate-management (3): All CARA-oprertions are executed without regarding the mandate settings (Notes, DocuMgr, Listengenerator, Stations, Messages, Record-Locking...)

22.02.2004	(7.04.10/550/DD) Vorbereitung für die Mandantenfähigkeit (2): Die Datensätze der Tabelle TableFldf werden ab jetzt alle vor dem ersten Script eingelesen (jedoch nicht vor dem SQL-Init-Script) und im Arbeitsspeicher gehalten. 

	Preparing the mandate-management (2): The records of the table TableFld will be read into memory before the first script is executed (but not before the SQL-Init-Script).

22.02.2004	(7.04.09/549/DD) Vorbereitung für die Mandantenfähigkeit (1): Die Tabelle TableFld wurde geändert. Das Feld “IsMand” wurde hinzugefügt. Die Engine verifiziert das Vorhandensein dieses Feldes beim Start. Wenn das Feld nicht vorhanden ist, wird es automatisch hinzugefügt. Dazu muss die Sektion [SQL] dem aktuellen Stand entsprechen, damit die korrekte Datentyp-Syntax verwendet wird. Wenn das Update ausgeführt wurde, wird (falls nicht vorhanden) die Sektion [Updates] in der INI-Datei angelegt. Anschließend wird dort der Schlüßel TableFld=1 eingebaut. Dieser Schlüßel verhindert, dass bei jedem Start das Vorhandensein des neuen Feldes geprüft wird. Wenn man INI-Dateien kopiert, sollte man diese neue Sektion vor dem ersten Aufruf löschen.

	Preparing the mandate-management (1): The table “tablefld” has been changed. The field “IsMand” has been added. The engine verifies the existence of this field while startup. If the field is missing, it will be added automaticly. Therefore the section [SQL] must be up to date, so the correct datatype-syntax can be used. If the update has been made, a new section [Updates] will be added to the application-ini-file (if necessary). Afterwards the key TableFld=1 will be inserted into this section. This key prevents that the verification of the new field will be executed on each startup. If a ini-file is copied, this section should be erased before the first start.

22.02.2004	(7.04.08/548/DD) Das Update bzw. die Version 1.2 der EXEL-Export-Tool-Box (wird für die “EE”-Komponenten benötigt. http://www.ems-hitech.com/excelreport/) wurde eingebaut. Mit freundlicher Unterstützung von EMS HiTech wurde auch die Integration der neuesten MS-Office-XP-Version möglich!
	
	The update / version 1.2 of the excel-export-tool-box (used for the ”EE”-components, http://www.ems-hitech.com/excelreport/) has been implemented. With the friendly support of EMS HiTech also the intergration of the new MS-Office-XP-Version has been possible.

	
22.02.2004	(7.04.07/547/DD) Erweiterung zur Änderung (7.02.02/502/DD) vom 04.08.2003. Es sind folgende, weitere Schlüssel für die Applikations-INI-Datei, Sektion [ExlExp] eingebaut worden: SUMFuncName=, MAXFuncName=, MINFuncName= und CNTFuncName=.
	
	Extension to release (7.02.02/502/DD) from 04.08.2003. The following keys have been inserted into the section [ExlExp]: SUMFuncName=, MAXFuncName=, MINFuncName= and CNTFuncName=.

22.02.2004	(7.04.06/546/DD) Der [mask!MASK_HOOK_POST_EDIT] kann nun nun auch für MEMO-Felder verwendet werden. Beispiel:

             PROCEDURE PostEditHook
               IF [mask!MASK_ACT_FIELD_MODIFIED]=FALSE
                 EXIT_PROC
               END_IF

               IF [mask!MASK_ACT_FIELD_NAME]='MEMO_TEXT'
                 LOCAL_NUM   PEH.Flag
                 LOCAL_BOOL  PEH.Res

                 FIELD_FLAG_GET [mask],'MEMO_TEXT',[PEH.Flag]
                 FLAG_STATE [PEH.Flag],[FIELD_FLAG_MODIFIED],[PEH.Res]
                 IF [PEH.Res]
                   ; do something you need...
                   ; ...
                   ; ...

	    ; don't forget to reset the flag
                 FIELD_FLAG_ON_OFF [mask],'MEMO_TEXT','','[FIELD_FLAG_MODIFIED]'
               END_IF	
             END_PROC

	The [mask!MASK_HOOK_POST_EDIT] can be used for meme-fields also, from now on. See above example.

22.02.2004	(7.04.05/545/DD) Neuer Schlüßel für die Applikations-INI-Datei Sektion [CONFIG]: TimeServerName=
	Hier kann man die IP oder den Namen eines Rechners bzw. Servers angeben, der beim Start der Anwendung die Uhrzeit der Arbeitsstation setzt. Damit kann man das Überschreiten des Zeitrahmens in Fällen vermeiden. Wenn man feststellen möchte, ob die (Netzwerk-)Konfiguration des entsprechenden Rechners/Servers geeignet ist, die Uhrzeit zu übermitteln, gibt man einfach auf der Workstation in einer DOS-Shell den folgenden Befehl ein “NET TIME \\Servername oder IP”, wenn dann erfolgreich die Zeit angezeigt wurde, ist der entsprechende Rechner/Server als TimeServer einsetztbar.

	New key for the application-ini-file, section [CONFIG]: TimeServerName=. The name or the IP of a computer/server can be set here. When the application start, the time of that computer/server will be used to set the time of the calling client. So the going beyound the timeframe can be avoided. To check, if a computer/server can act as a timeserver, just type in a dos-shell of the workstation “NET TIME \\servername or IP”, if the time is shown succesfull, the corresponding computer/server can be used as a timeserver.

22.02.2004	(7.04.04/544/DD) Verbesserung des Dokumenten-Managers. In der Detailansicht eines Eintrages kann ab jetzt mittels eines Knopfes, der sich neben dem INFO-Feld befindet (ein rotes Ausrufungszeichen) in das zugehörige Script “gesprungen” werden. Voraussetzung dafür ist, dass in den Tablefld-Definitionen der Tabelle (der der DocuManager-Kopfdatensatz angehört) das entsprechende Script angegeben wurde.

	Improvement of the document-managers. In the detail-dialog of an item the user can “jump” to the related script by clicking on a button beneath the INFO-field (a red exclamation mark). A correct tablefld-definition with the script-name ist required for the table that is related to the table that contains the record of the document-header.

22.02.2004	(7.04.03/543/DD) Neuer optionaler Parameter für den Befehl
	EXECUTE [Q or B], [boolRes] {, boolJustFastDescription}. Wenn lediglich eine Datensatz-Beschreibung benötigt wird, reicht es ab jetzt, den EXECUTE-Befehl mit diesem neuen optionalen Parameter auszuführen. Ein GET_DATA ist danach nicht mehr notwendig. Dadurch ergibt sich ein exrtem verbessertes Laufzeitverhalten, da keine Daten angefordert werden müssen um eine Datensatzbeschreibung zu erhalten (besonders bei Tabellen mit extrem vielen Datensätzen). ACHTUNG diese Technik ist nur möglich, wenn keine Wildcards in der Felderliste verwendet wurden z.B. select * from....

	New optional parameter for the comand
	EXECUTE [Q or B], [boolRes] {, boolJustFastDescription}. If only the record-description is needed, it is enough to run the EXECUTE-comand with this optional parameter. A GET_DATA is not necessary afterwards. So a much better runtime speed can be achieved, because no data must be requested to get the record-description (espacally for tables that contains a lot of records). ATTENTION this technique is only possible, if no wildcards are used in the fieldlist. E.g. select * from....

22.02.2004	(7.04.02/542/DD) Änderung der Befehle QUERY_DESCR_TOP und QUERY_DESCR_NEXT. Index-Informationen werden nur noch abgerufen, wenn der Programmierer entsprechnede Parameter übergibt. Dadurch ergibt sich ein erheblicher Geschwindigkeitvorteil, wenn man lediglich die Datensatz-Beschreibung abruft.

	Change of the comands QUERY_DESCR_TOP and QUERY_DESCR_NEXT. Index-informations will only be requested, if the programer passes by the related parameters. By this an exceptional better runtime speed can be achieved if only the record-description is needed.

20.12.2003	(7.04.01/541/DD)  QUERY_ADD_CLAUSE für UNION-Querys berichtigt.
	
	Correction of QUERY_ADD_CLAUSE for UNION-Querys.

19.12.2003	(7.04.00/540/DD) Auf List & Label 10 umgestellt.
	
	Updated to List & Label 10.

18.12.2003	(7.03.24/539/DD)  Im SQL-Interface wurde für die Verwendung von MySQL ein Tool eingebaut : Prüfen, Analysieren, Sichern, Wiederherstellen, Reparieren, Optimieren, Dumpen ist durch klicken auf das Werkzeug-Symbol möglich. Mit einem Klick mit der der rechten Maustaste kann man die Option zum Prüfen der Datenbank setzen. (Die Optionen “kurz” oder “erweitert” können auch für die Rapartur gewählt werden.). Wenn das Eingabefenster des Interfaces leer ist, werden alle Tabellen untersucht, anderenfalls nur die Tabellen, die (zeile für Zeile) im Interface angegebn sind. Folgende Funktionen gibt es:

	Optimieren	sollte verwendet werden, wenn in der Tabelle große Datenblöcke gelöscht wurden
			oder wenn viele Veränderungen in einer Tabelle mit Spalten die variable Längen
			verwalten, gemacht wurden.

	Analyse		Prüft die Tabelle und speichert die Schlüßeldefinitionen. 

	Reparatur	repariert eine möglicherweise defekte Tabelle.

	Sicherung	sichert die Tabelle(n).

	Wiederherstellen	stellt die Tabelle(n) wieder her, die mit "Sichern" gesichert wurden.

	Dump		stellt ein SQL-Script der Tabelle(n) her.

	Prüfen		überprüft die Tabelle(n) auf Fehler. 

	Folgende Optioenn gibt es:
	Kurz		Untersuche nicht die Spalten zum Auffinden fehlerhafter Verknüpfungen.

	Schnell		Untersuche nur Tabellen, die nicht ordnungsgemäß geschlossen wurden.

	Mittel		Untersuche die Spalten auf ordnungsgemäß gelöschte Verknüpfungen. Dies
			berechnet auch die Prüfsumme der Spalten und vergleicht diese mit den
			Berechnungen der Schlüßel.

	Erweitert	Untersuche vollständig alle Schlüßel aller Spalten. Damit wird sichergestellt, dass 
			die Tabelle 100%ig konsistent ist. Dies kann sehr viel Zeit in Anspruch nehmen.

	Veränderungen	Untersuche nur Tabellen, die seit der letzten Prüfung verändert wurden oder nicht
			ordnungsgemäß geschlossen wurden.

	
	A new tool has been imlemented into the SQL-interface for MySQL-database-application. By clicking on the tool-button, the following functions can be choosen: optimize, check, analyse, repair, backup, restore and dump. With a richt-click on that button, the option for “checking” can be set. (The option “quick” and “extended” can be choosen for the repair-function also.) If the editor-window of the SQL-interface is empty, all tabels will be used, otherwise only the listed (line by line) tables. Here are the functions in detail:

	Optimize	should be used if you have deleted a large part of a table or if you have made many
			changes to a table with variable-length rows

	Check		Checks the table(s) for errors

	Analyse		Analyse and store the key distribution for the table.

	Repair		Repairs a possible corrupted table.

	Backup		Backups the table(s)

	Restore		Restores the table(s) from the backup that was made with BACKUP.

	Dump		Generates SQL script for the table(s)

	These are the possible options:
	Quick		Don't scan the rows to check for wrong links

	Fast		Only check tables which haven't been closed properly

	Medium		Scan rows to verify that deleted links are okay. This also calculates a key
			checksum for the rows and verifies this with a calculated checksum for the keys

	Extended	Do a full key lookup for all keys for each row. This ensures that the table is 100%
			consistent, but will take a long time

	Changed	Only check tables which have been changed since last check or haven't been
			closed properly.

17.12.2003	(7.03.23/538/DD) Die FastSearch-Option in Browsern und Grids berücksichtigt jetzt auch SearchOnEnter.
	
	The fast-search-option in browsers and grids is regarding the SearchOnEnter-option from now on.

16.12.2003	(7.03.22/537/DD)  Die neueste MySQL-Library (2.2.0) wurde implementiert.

			The lates mysql-library (2.2.0) has been implemented.

15.12.2003	(7.03.21/536/DD)  Neuer Options-Knopf im SQL-Interface: Normalerweise wird im SQL-Interface nach jedem erneuten Fokusieren und nach Create-Anweisungen versucht die Datanbank-Tabellen neu einzulesen (um u.a. Case-Senitivity bei Tabellennamen zu unterlaufen). Dies kann mittels des neuen Knopfes an- und ausgeschaltet werden.

	New option-button for the sql-interface: normaly on every refocus or create-statement, the database-trable-list will be refreshed (among others to prevent case-sentitivity errors with table-names). This can be switched on and off with this new button.

14.12.2003	(7.03.20/535/DD)  [SPECIAL_PATH] ist ab jetzt die einzige System-Pfad-Variable, die während der Laufzeit geändert werden darf.
	
	[SPECIAL_PATH] now is the only system-path-variable, that can be changed while runtime.

26.11.2003	(7.03.19/534/DD) Neuer Befehl: 
	QUERY_COLUMN_VALUES [query browser mask],[boolRes],[strValues],'strFieldName'
	Gibt zu einer bestimmten Spalte (strFieldName) eines Querys die Auswertung zurück. Wenn die Operation erfolgreich war, ist boolRes TRUE. Ausserdem befinden sich folgende Werte durch Pipe-Zeichen (''|'') getrennt im Ergebnis-String [strValues]:
	Cnt|Sum|Min|Max|Avg|	= Anzahl, Summe, minimal-, maximal-Wert, Durchschnitt aller Zeilen.
	Cnt|Sum|Min|Max|Avg|	= Anzahl, Summe, minimal-, maximal-Wert, Durchschnitt der pos. Zeilen.
	Cnt|Sum|Min|Max|Avg|	= Anzahl, Summe, minimal-, maximal-Wert, Durchschnitt der neg. Zeilen.

	New comand:
	QUERY_COLUMN_VALUES [query browser mask],[boolRes],[strValues],'strFieldName'
	Returns to the column  strFieldName of a query the column-results. If the operation was succesfull, boolRes ist TRUE. Additionaly the following values are placed in the result-string [strValues] sperated by pipe-signs  (''|''):
	Cnt|Sum|Min|Max|Avg|	= Quantity, Sum, minimal-, maximal-Value, Average of all rows
	Cnt|Sum|Min|Max|Avg|	= Quantity, Sum, minimal-, maximal-Value, Average of all positive rows
	Cnt|Sum|Min|Max|Avg|	= Quantity, Sum, minimal-, maximal-Value, Average of all negative rows

25.11.2003	(7.03.18/533/DD) Mit einem Klick mit der rechten Maustatse auf den Spaltenkopf eines Browsers oder eines Grids kann man ab jetzt nicht nur die Sortierung ändern sonder zusätzlich auch noch die Spalte “auswerten”. D.h. es erscheint ein Fenster, in dem Summe, Minimal-, Maximal- und Durchschnittswert der Spalte angezeigt werden. Mit eder Taste “Enter” oder einem Mausklick (mit der linken Taste) kann man ausschließlich die positiven Werte anzeigen lassen und mit einem weiten Klick kann man sich ausschließlich die negativen Werte zeigen lassen, usw.

			In the context-menu that appears by a right-click on a column header of a grid or a browser,
			additionaly the “Column-Values” can be shown in a window. This are sum, minimal, maximal and
			average of the choosen column. With the “enter” key, or a left mouse-click only the positive values
			may be shown. Clicking again, shows oly the negative vaules etc.

22.11.2003	(7.03.17/532/HB) Nach einem Doppelklick auf ein Grid wurden Masken, die aus dem darunter liegenden Hook aufgerufen wurden, immer wieder geöffnet, ohne dass der User dies selbst initiierte und auch ohne die Möglochkeit zum Abbruch. Dieser Fehler ist behoben.

			After a  doubleclick on a grid, masks, that have been started out of a hook placed under that user
			action, where continuiously reopened, after the user closed them, without the possibility to stop that.
			This error has been removed.

22.11.2003	(7.03.16/531/HB) Änderung der Funktion CALC [anyStr] AS DWORD(str or num or float).
	An diese Funktion können zwei weitere Parameter übergeben werden:
	CALC [anyStr] AS DWORD(str or num or float{{,boolCompleteWords},numLanguageID}).
	Wenn boolCompleteWords TRUE ist, werden nicht die Ziffern als Worte sondern die Zieffern so, wie sie gesprochen würden zurückgegeben. numLanguageID kann die folgenden Werte annehmen [LANGUAGE_ID_GERMAN], [LANGUAGE_ID_ENGLISH] und [LANGUAGE_ID_FRENSH] (0=default=ist auch Deutsch)  dadurch wird die Zahl in entsprechenden “Sprechweise” zurückgegeben. Die verwendeten Worte sind in der CARA.msg Datei (Msg-IDs 720 - 754).
	
	Change of the function CALC [anyStr] AS DWORD(str or num or float). To this function two new parameter can be passed: 
	CALC [anyStr] AS DWORD(str or num or float{{,boolCompleteWords},numLanguageID}).
	If  boolCompleteWords is TRUE , the digits will not be returned only as words, they willbe returned as they would have been spoken out. numLanguageID can hold the following values [LANGUAGE_ID_GERMAN], [LANGUAGE_ID_ENGLISH] and [LANGUAGE_ID_FRENSH] (0=default=is also German) so the words will be given back in the equivalent manor of speeking. The words that are used are coming out of the CARA.msg file (Msg-IDs 720 - 754).

22.11.2003	(7.03.15/530/HB) Mit einem Klick mit der rechten Maustatse auf ein Browser- oder Grid-Feld kann man ab jetzt dessen Inhalt in die Zwischenablage kopieren.
	
	With a right click to a browser- or grid-field the contens can be copied to the clipboard.

22.11.2003	(7.03.14/529/DD) Die neueste MySQL-Library (2.1.8) wurde implementiert.

			The lates mysql-library has been implemented.

21.11.2003	(7.03.13/528/HB) Zwei neue Schlüssel für die Applikation-INI-Datei in der Sektion [Config]:
		DecimalChar= und CommaChar=. Damit kann eingestellt werden wie das Komma auf dem
		nummerischen Tastenfeld zu interpretieren ist. Die Einstellung für Deutschland sind: DecimalChar=,
		und CommaChar=. Und für Frankreich z.B. DecimalChar=. und CommaChar=,

		Two new keys for the application-INI-file, section [Config]: DecimalChar= and CommaChar=.
		With this keys can be adjusted how the comma-key on the numeric key pad has to be interpreted.
		The settings for Germany is DecimalChar=, and CommaChar=. And for France e.g. DecimalChar=.
		and CommaChar=,

21.11.2003	(7.03.12/527/HB) Um das versehentliche Auslösen der Suche zu verhindern, das durch das
		versehentliche Drücken der +-Taste auf dem nummerischen Tastenfeld bei der Eingabe von
		Zahlenkolonnen entstehen kann, wurde ein neuer Punkt in den Werkzeugkasten eingebaut:
		NoPlusSearch. Wenn diese Option gesetzt ist, wird die Suche mittel der +-Taste auf dem
		numerischen Tastenfeld unterdrückt. Die Einstellung kann in der [Config]-Sektion der Applikations-
		INI-Datei gesetzt werden (NoPlusSearch=), wobei jeder User den Wert selbst abweichend einstellen
		kann – dieser wird dann in die Stations-INI-Datei geschrieben. In diesem Zusammenhang wurde
		auch der Schlüssel “SearchOnEnter” für individuelle Einstellung und Speicherung umgebaut.

	To prevent the unintentional releasing of the data-search, by unintentional pressing the +-key on the numeric key pad, a new point has been introduced to the toolbox: NoPlusSearch. If this option is set, the data-search with the +-key is suppressed. The setting can be configured for the whole application in the application-INI-file in the [Config]-section with the key NoPlusSearch=, but each user can overrule this and his settings are saved to station-INI-file. Together with this change, the key “SearchOnEnter” can now be overruled and saved also.

20.11.2003	(7.03.11/526/HB) Die MainMsgID ist jetzt auch als Scriptvariable verfügbar: MAIN_MSG_ID.

	The MainMsgID is as a script-variable availiable from now on: MAIN_MSG_ID.

19.11.2003	(7.03.10/525/HB) Um unterschiedliche Sprachen für eine Anwendung programmieren zu können,
		wurde am 14.09.2003 die Änderung 7.03.02/517/HB erbracht. Damit auch Register-Bezeichner
		damit behandelt werden können ohne eine Änderung der Scripte nach sich zu ziehen, wurde die
		Engine angepasst.

	For different languages the improvement 7.03.02/517/HB has been made on 14.09.2003. To have also the option to use it for register-names without the need to change the scripts, the engine has been improved again.

19.11.2003	(7.03.09/524/DD) Die neueste MySQL-Library (2.1.7) wurde implementiert.

			The lates mysql-library has been implemented.

13.11.2003	(7.03.08/523/DD) Die neueste MySQL-Library (2.1.5) wurde implementiert.

			The lates mysql-library has been implemented.

13.11.2003	(7.03.07/522/DD) Die Kalenderwoche der letzten Woche eines Jahres wurde falsch berechnet, wenn sie zum nächsten Jahr dazu gehörte. Dieser Fehler ist behoben.

			The calendar-week of the last week of a year has been calulated wrong, if it was related to the
			following year. This error has been removed.

09.10.2003	(7.03.07/522/DD) Die CARA-Engine ist ab jetzt auf Wunsch auch mit einer Schnittselle zu dem Programm “Ositron CTI” erhältlich. In jeder beliebigen, bereits existierenden CARA-Anwendung ist es dadurch möglich, direkt mit einem Doppelklick auf eine Telefonnummer den Wählvorgang auszulösen. Zudem ist es möglich nach jedem von Ositron gemeldeten Anruf direkt einen beliebigen Programmteil der Anwendung aufzurufen. Dies geschieht mittels des Scriptes OsitronCallIn.csh (ist in der Dokumentation in den Beispiel-Scripten zu finden). Das Script wird von der CARA-Engine jedes Mal aufgerufen, wenn ein Anruf von Ositron gemeldet wird.
	
	The CARA-Engine can be delivered with an interface to the program “Ositron CTI”. In any existing CARA-application the user now can initiate a dial-out by double-clicking on a telephone-number. Additionally it is possible to open any program-module in case a incoming call has been messaged from Ositron. This is done through the script OsitronCallIn.csh, that will be called from the CARA-Engine. The script can be found in the documentation (example-scripts).

08.10.2003	(7.03.06/521/DG) Wenn an die Cara-Engine kein Parameter mit dem Namen einer INI-Datei übergeben wird, wird in dem Verzeichnis, in dem sich die CARA-Engine befindet, nach der Datei “cara.ini” gesucht. Falls diese Datei vorhanden ist, wird sie als INI-Datei verwedndet.

			If the cara-engine is started without a parameter for the application-INI-file, a file with the name
			“cara.ini” will be searched in the folder, that contains the CARA-Engine. If the file can be found, it will
			be used.

25.09.2003	(7.03.05/520/VD) Neue Funktion für den Befehl TS_EXECUTE [boolRes], [numFunction]:
			TS_EXECUTE [boolRes], [TS_INFO], numMIdx, numStationIdx, numInfoIdx
			Sendet an die TimeScan-Hardware die Informationen des Mitarbeiter numMIdx. 
			“numStationIdx” ist die Station, von der aus die Daten angefordert wurden und 
			“numInfoIdx” ist die interne Anfrage-Nummer die die TimeScan Hardware vergibt, wenn eine User
			eine Anfrage absendet.
			Im Zusammenhang mit dieser Befehls-Erweiterung wurde auch ein neuer Schlüssel für die
			Applikations-INI-Datei, in der Sektion [TimeScan] bereit gestellt: ScriptSendInfo=. 
			Hiermit kann eine Script-Datei benannt werden, die ausgeführt werden soll ANSTELLE der in der
			CARA-Engine implementierten automatischen Auskunftslogik. 
			An dieses Script werden drei Parameter als RECORD_ID1 bis RECORD_ID3 übergeben. 
			Wobei der erste Parameter (RECORD_ID1) dem Mitarbeiter-Index in der Tabelle tsmdata entspricht.
			Der zweite Parameter (RECORD_ID2) ist der TimeScan-Sations-Index, von dem aus die
			Informationsanforderung ausgeführt wurde und 
			der dritte Parameter (RECORD_ID2) ist schließlich der von der TimeScan-Hardware vergebene
			Informations-Index. 
			Ein Beispiel-Script ist verfügbar: TimeScanSendInfo.csh

			Mit dieser Änderung ist ebenfalls eingeführt worden, dass ein Parameter an das Script
			weitergegeben wird, das nach dem Abarbeiten einzelner Vorgangsdaten aufgerufen wird. Der
			Parameter definiert den Inhalt der RECORD_ID1 und enthält die RecordID des Datensatzes, der
			unmittelbar zuvor in die Tabelle tsvdata gespeichert wurde. Das Script wird mit dem Schlüssel
			ScriptAfterOneVData= in der Sektion [TimeScan] definiert.

			New function for the comand TS_EXECUTE [boolRes], [numFunction]:
	 		TS_EXECUTE [boolRes], [TS_INFO], numMIdx, numStationIdx, numInfoIdx
			Sends the information of a user (numMIdx) to the TimeScan-Hardware-Station (numStationIdx) , for
			a specific information-request (numInfoIdx).
			With this, also a new application-INI-file key for the section [TimeScan] has been introduced:
			ScriptSendInfo=. The key specifies the filename of a script, that should be executed INSTEAD of the
			automatic information-logic, that is implemented in the CARA engine.
			To this script three parameter are passed:  
				RECORD_ID1 holds the value of the user-index (numMidx)
				RECORD_ID2 contains the TimeScan-station-number (numStationIdx) 
				RECORD_ID3 is filled with the information-request-number (numInfoIdx)
			An example-script is availiable: TimeScanSendInfo.csh

			With this changes also a new parameter has been introduced to the script, that is called after the
			execution of each vdata. The parameter fills the RECORD_ID1 and holds the recordid of the
			recorord, that has currently been inserted into the table tsvdata. The script-name can be defined with
			the key ScriptAfterOneVData= in the section [TimeScan]. 
			An example-script is availiable: TimeScanOneVdata.csh

22.09.2003	(7.03.04/519/VD) Beim Übermitteln von User-Informationen an TimeScan wurden negative Zeitangaben fehlerhaft interpretiert -10000 Minuten sollten als -166:40 und nicht als -166:-40 dargestellt werden. Dieser Fehler ist behoben.

			When user-information with negative time-values were send to TimeScan, the displayed time-strings
			were wrong. -10000 minutes should be displayed as -166:40 and as -166:-40. This error has been
			removed.

17.09.2003	(7.03.03/518/VD) Neue Funktion für den Befehl TS_EXECUTE [boolRes], [numFunction]:
			TS_EXECUTE [boolRes], [TS_CHECK]  
			Das Resultat ist nur dann TRUE, wenn TimeScan online und “bereit” ist.

			New function for the comand TS_EXECUTE [boolRes], [numFunction]:
	 		TS_EXECUTE [boolRes], [TS_CHECK] 
			The result is TRUE if TimeScan is online and “ready”.

14.09.2003	(7.03.02/517/HB) Um unterschiedliche Sprachen für eine Anwendung programmieren zu können, ist bisher “nur” das MainMsgFile verwendbar gewesen. Ab jetzt kann man ALTERNATIV, d.h. Wen KEIN MainMsgFile angegeben wurde, eine MainMsgID angeben (DEFAULT=0). Wenn man nun in den Label, Hints und/oder Variablen, in denen man bisher eine Sprach-Angabe mittels der Msg-ID vornehmen konnte, verschiedene Sprachstrings, durch “#” getrennt sind, direkt definiert, werden diese verwendet. Falls die  MainMsgID=0 ist, wird die neue Methode nicht angewandt.

	Beispiel für die “alte” Methode: 
					Label '@202 Bemerkung'

	Beispiel für die ab jetzt ebenfalls gültige, “neue” Methode:
					Label 'Bemerkung#Remark#Osservazione'

	To program an application with different languages, there has been “only” been the MainMsgFile availiable. From now on, alternativly a MainMsgID can be defined in the application-INI-file. The Defaultvalue is 0. In the Section [Config] this may look like: MainMsgID=0. If there is a value given. That is higher than zero, and a Label, Hint or any other variable, that normaly would have been investigated and changed from the normal MSG-technique, and that contains a “#”, will use onle the part of the string, that is correlating with the number given in the MainMsgID.

	Example for the “old” method: 
					Label '@202 Bemerkung'

	Example for the – also usable – new method:
					Label 'Bemerkung#Remark#Osservazione'

09.09.2003	(7.03.01/516/DD) Zwei neue Befehle: FORE_JUMP und FORE_MARK. Mit FORE_JUMP wird zu der nächsten Zeile, die den Befehl FORE_MARK enthält “gesprungen“. Diese Befehle können nur innerhalb einer PROCEDURE verwendet werden, dort jedoch mehrfach hintereinander. Wenn der Abbruch-Befehl FORE_MARK nicht gefunden werden kann, wirkt der Befehl FORE_JUMP wie ein EXIT_PROC.

	Two new commands: FORE_JUMP and FORE_MARK. With FORE_JUMP will be scrolled to the next line, that contains the command FORE_MARK. These commands can only be used within a PROCEDURE, but as often as needed. If the comand FORE_MARK can not be  found, the scroll will work like an EXIT_PROC.

06.09.2003	(7.03.00/515/DD) TS_EXECUTE [boolRes], [numFunction]... diverse parameter.
				Folgende Funktionen (numFunction) stehen zur Verfügung:
 				TS_EXECUTE [boolRes], [TS_START] {, boolCompleteInit}
					Öffnet die serielle Schnittstelle und verbindet den PC mit der TimeScan-Hardware. 
					Die Parameter, mit der die serielle Schnittstelle zu öffnen ist, müssen in der
					Applikations-INI-Datei in der (neuen) Sektion [TimeScan] angegeben werden.
					Folgende Schlüssel stehen zur Verfügung:
					ComPortNumber=1	Serielle-Schnittstelle, mit der Verbunden werden soll.
					ComPortBaud=9600	Geschwindigkeit der Datenübertragung.
					ComPortEventChar=17	Ereignis-Zeichen. Wenn dieses Zeichen von der
									TimeScan-Hardware zum PC gesendet wird, sind Daten
									zum Abholen vorhanden.
					Beim Starten der Verbindung wird ebenfalls die Uhrzeitr zwischen PC und
					TimeScan (TS) verglichen. Wenn die Abweichung mehr als 2 Stunden beträgt wird
					das manuelle stellen der Uhrzeit erzwungen. Dafür steht der Befehl TS_SET_TIME
					(s.u.) zur Verfügung. Wenn die Abweichung geringer als zwei Stunden ist, werden
					die Zeiten zwischen PC und TS abgeglichen. Dabei ist die Einstellung des
					folgenden Schlüssels in der Applikation-INI-Datei dafür verantwortlich, ob der PC
					oder TS als “Time-Master” verwendet wird:
					UsePCTime=1		1 = PC ist der “Master”, 0 = TS ist es.

					Der Reihenfolge nach werden beim Start der Verbindung folgende Aufgaben
					erledigt:
				
21.11.2001.1.1.1.1.1.1	                                                                    ComPort öffnen
21.11.2001.1.1.1.1.1.2	                                                                    Senden eines Synchron-Zeichens und abwarten, ob TS antwortet.
21.11.2001.1.1.1.1.1.3	                                                                    Abrufen des Status der Hardware. Wenn sich hierbei herausstellt, dass ein
Datenfehler vorliegt oder, dass die Hardware Initialisiert wurde, werden (s.u.) alle
notwendigen Daten gesendet. (Fehlerfall)
21.11.2001.1.1.1.1.1.4	                                                                    Dann wird TS mitgeteilt, ob Informationen im Display angezeigt werden sollen.
21.11.2001.1.1.1.1.1.5	                                                                    Sodann wird TS mitgeteilt, welche Warte-Zeiten im Zusammenhang mit der
Kommunikation einzuhalten sind. Dazu sind die folgenden Schlüssel in der
Applications-INI-Datei einstellbar:
WaitMinTime=50			Display Anzeige-Zeit
WaitAddTime=30			Kommunikations-Zeit TS/PC
21.11.2001.1.1.1.1.1.6	                                                                    Falls “boolCompleteInit” angegeben wurde oder ein “Fehlerfall” vorliegt, werden noch folgende Speicher-Management-Einstellungen vorge-nommen:
a. Einstellen der Speicher-Verwaltung, Aufteilung in die Segmente
    Benutzer/Projekte/Maschienen/Aktionen mit deren maximalWerten.
b. Einstellen der Tastaturbelegungs-Tabelle.
21.11.2001.1.1.1.1.1.7	                                                                    Im “Fehlerfall” werden dann noch alle Mitarbeiter-Daten in TS gelöscht und neu an TS gesendet. Die Mitarbeiter Daten müssen sich in der Tabelle “tsmdata” befinden. Die Stuktur dieser Tabelle ist in der Datei “tsmdata.sql” angelegt.

				TS_EXECUTE [boolRes], [TS_STOP] 
					Schließt die Verbindung zu TS.

				TS_EXECUTE [boolRes], [TS_LOCK] {, boolOnOrOff}
					Sperrt TS für Benutzer, wenn boolOnOrOff=TRUE ist. D.h. auf dem Display
					erscheint die Zeichenkette “gesperrt” und die Annahme von Daten wird
					verweigert.Falls boolOnOrOff=FALSE ist (oder gar nicht übergeben wurde), wird
					TS wieder entsperrt.

				TS_EXECUTE [boolRes], [TS_READ] {, boolOnOrOff}
					Startet (boolOnOff=TRUE) und stoppt (boolOnOff=FALSE) das Datenlesen. Wenn
					Daten in TS vorliegen werden diese in die Tabelle “tsvdata” gespeichert.Die
					Stuktur dieser Tabelle ist in der Datei “tsvdata.sql” angelegt. Folgende Vorgänge”
					werden gespeichert:
					“K” (#75)	KOMMT
					“G” (#71)	GEHT
					“P” (#80)	PAUSE ANFANG
					“3” (#51)	PAUSE ENDE
					“D” (#51)	DIENSTGANG ANFANG
					“0” (#48)	DIENSTGANG ANFANG UND GEHT
					“1” (#49)	DIENSTGANG ANFANG UND KOMMT
					“2” (#50)	DIENSTGANG ENDE UND GEHT

					Der Vorgang '”I” (#73) wird nicht gespeichert. Der Benutzer fragt dabei lediglich
					Informationen ab. Folgende Daten können gezeigt werden:

					Globale Informationen. Diese werden jeweils direkt vor der Anzeige aus den
					folgenden Schlüsseln der Applikations-INI-Datei aus der Sektion [TimeScan]
					ausgelesen:		GlobInfo1=max. 17 Zeichen 
							GlobInfo2=max. 17 Zeichen 

					Private Informationen. Diese werden aus den Feldern InfoStr1 und InfoStr2 des
					Datensatzes des abrufenden Mitarbeiters aus der Tabelle tsmdata gelesen.

					Verstrichene Arbeitszeit seit der letzten Abrechnung und verbleibende Restarbeits-
					zeit für den laufenden Abrechnungsabschnitt. Diese werden aus den Feldern
					MinActual und MinLeft des Datensatzes des abrufenden Mitarbeiters aus der
					Tabelle tsmdata gelesen.

					Die Resturlaubstage des Mitarbeiters. Diese werden aus dem zugehörigen
					Datensatz des Mitarbeiters, aus dem Feld HoliDays der Tabelle tsmdata gelesen.

					Ein Geburtstagsgruß, falls der Mitarbeiter Geburtstag hat. Der Geburtstag des
					Mitarbeiters wird aus dem zugehörigen Datensatz, aus dem Feld Birthday der
					Tabelle tsmdata gelesen.

				TS_EXECUTE [boolRes], [TS_GET_M_DATA] {, numIdx}
					Falls numIdx ungleich 0 ist, werden die Daten eines bestimmter Mitarbeiters aus
					der Tabelle “tsmdata” aus TS ausgelesen und mit dem aktuellen Status
					in die Tabelle gespeichert, andersenfalls geschieht dies mit allen Datensätzen.
					Folgende Stati stehen zur Verfügung:
					0	“KOMMT” 						wurde eingegeben
					1	“GEHT” 							wurde eingegeben
					2	“DIENSTGANG ANFANG” 		wurde eingegeben
					3	“DIENSTGANG ANFANG UND GEHT” 	wurde eingegeben	
					4	“DIENSTGANG ENDE UND KOMMT” 	wurde eingegeben
					5	“DIENSTGANG ENDE UND GEHT” 	wurde eingegeben
					6	“PAUSE ANFANG”	 		wurde eingegeben
					7	“PAUSE ENDE”		 		wurde eingegeben

				TS_EXECUTE [boolRes], [TS_SET_M_DATA] {, numIdx {, boolDel}}
					Falls numIdx ungleich 0 ist, werden die Daten eines bestimmter Mitarbeiters aus
					der Tabelle “tsmdata” an TS weitergegeben, andersenfalls geschieht dies mit allen
					Datensätzen. Falls boolDel=TRUE ist, werden die Daten lediglich in TS deaktiviert.
					D.h. Man kann sie weiterhin mit dem Befehl TS_GET_M_DATA abrufen, aber der
					Mitarbeiter kann sich nicht mehr an TS an- und abmelden.

				TS_EXECUTE [boolRes], [TS_INIT_V_DATA] 
					Löscht alle in TS z.Zt. Verfügbaren Vorgangsdaten. Achtung: Die Daten werden
					damit ignoriert und unwiederruflich aus TS gelöscht.

				TS_EXECUTE [boolRes], [TS_GET_TIME], [dateVar], [timeVar], [boolIsSummer]
					Holt die Uhrzeit aus TS und gibt sie an die drei variable übergebenen Werte weiter.
					In boolIsSummer wird nicht gespeichert, ob das betreffende Datum wirklich zur
					Sommerzeit gehört, sondern wie die aktuelle Einstellung in TS ist.

				TS_EXECUTE [boolRes], [TS_SET_TIME], [dateVar], [timeVar], [boolIsSummer]
					Speichert die Uhrzeit, die mittels der drei variablen Parameter übergeben wurde in
					TS. boolIsSummer wird so an TS geschickt, wie es übergeben wurde. Es wird
					nicht überprüft, ob das angegebene Datum tatsächlich zur der SommerZeit-
					Angabe passt. Bei jedem Verstellen der Zeit wird ein Protokoll-Record in der
					Tabelle tsclock abgelegt, das auch eine Angabe enthält, um wieveile Minuten die
					Zeit vor (positiver Minuten-Wert) bzw. zurück gestellt wurde (negativer Minuten-
					Wert). Bei der Verrechnung der Zeiten der zum Zeitpunkt der Uhrumstellung
					aktiven Mitarbeiter, müssen diese Werte berücksichtigt werden. Schließlich ist ein
					Mitarbeiter nicht 5 Minuten weniger anwesend, wenn die Uhr um 5 Minuten
					zurückgestellt wurde.

				TS_EXECUTE [boolRes], [TS_CARD_USE], numCardID, [numRes]
					Gibt in numRes an, ob derKartenCode, der mit numCardID übergebn wurde,
					bereits in Benutzung ist. Folgende Ergebnisse sind möglich:
					0	der Karten-Code wird z. Zt. nicht verwendet 
					1	der Karten-Code ist einem Mitarbeiter zugeordnet
					2	der Karten-Code ist einem Projekt zugeordnet

	ENGLISH:
				TS_EXECUTE [boolRes], [numFunction]... some parameters.
				The following functions of [numFunction] are aviliable:

				TS_EXECUTE [boolRes], [TS_START] {, boolCompleteInit}
					Opens the serial posrt and connects the PC with the TimeScan-Harware (TS).
					The parametsrs, that are used to open the serial port, must be avail in the
					application-INI-fiile in the (new) section [TimeScan]. The following keys are needed:
					ComPortNumber=1		serial-port to connect to.
					ComPortBaud=9600	speed of communication
					ComPortEventChar=17	Event sign. This sign will be send from TS to the PC and 
									states, that data are avail to be processed.
					On startup also the watches of TS and PC are compared. If a difference of more 
					than 2 hours is detected, a manually adjustment of the watches is enfored. For this
					a special function si provided TS_SET_TIME (see below). If the difference is less
					than 2 hours, the watches will be adjusted automaticly. Which of the watches is 
					responsible for the right time, can be set by a key in the application-INI-file.
					UsePCTime=1		1 = PC is the “Master”, 0 = TS is it.

					The folling lists shows all actions in order of execution, that are done on starting TS
1.	                                                                     Open the comport
2.	                                                                     Send a synchonizing sign and see if TS answers.
3.	                                                                     Fetch the  status of TS. If an data-error is signaled or if it is detected, that TS has been initialized or restarted (“errorcase”), a lot of data has to be send (see below).
4.	                                                                     Then TS is set to display information if reqestet. This is default, a key for this has not yet been introduced to the INI-file, becaus no need for this is seen actually.
5.	                                                                     After this TS will be informed about the wait-time that have to be hold between one message on the display and the next, and also about the communiction-time for data-exchange with the PC. This times are adjustable in the application-INI-file with the following keys in the section [TimeScan]::
WaitMinTime=50			display-time
WaitAddTime=30			communication-time TS/PC
6.	                                                                     If “boolCompleteInit” is set to TRUE or if the “errorcase” occured, the following memory-management-settings will be done:
a. Memory-management, fixing the size and maximal values for the segments user,
	    projects, machines and activities.
b. Set up the keybords-key-table.
7.	                                                                     If the “errorcase” occures, all the user-data will be deleted in TS and send again. All user data are retrieved out of the table “tsmdata”, the structure is defined in the file “tsmdata.sql”.

				TS_EXECUTE [boolRes], [TS_STOP] 
					Closes the connection to TS.

				TS_EXECUTE [boolRes], [TS_LOCK] {, boolOnOrOff}
					Locks TS for users to access it, if boolOnOrOff=TRUE. I.e. On the display appears
					the line “locked” and the acceptance of data is refused. In case of setting 
					boolOnOrOff=FALSE (or not giving this parameter at all), TS will be unlocked.

				TS_EXECUTE [boolRes], [TS_READ] {, boolOnOrOff}
					Starts (boolOnOff=TRUE) and stops (boolOnOff=FALSE) the processing of
					availiable data from TS and stores them into the table “tsvdata”. The structure of
					this table is defined in the file “tsvdata.sql”. The following processes willbe stored:
					“K” (#75)	COMES
					“G” (#71)	GOES
					“P” (#80)	PAUSE STARTS
					“3” (#51)	PAUSE ENDS
					“D” (#51)	ON DUTY STARTS
					“0” (#48)	ON DUTY STARTS AND GOES
					“1” (#49)	ON DUTY ENDS AND COMES
					“2” (#50)	ON DUTY ENDS AND GOES

					The process '”I” (#73) will not be saved. In this case the user just askes for 
					informationen. The following data may appear on the display, if the users request
					for information is not “older” than 10 sec.:

					Global informationen. This will always be retrieved out of the application-INI-file
					befor the information is shown. They are the contens of the following keys out of 
					sektion [TimeScan]:	GlobInfo1=max. 17 chars 
								GlobInfo2=max. 17 chars

					Private informationen. These are the contens of the fields “InfoStr1” and “InfoStr2”
					of the users record in the table “tsmdata”. They will be read out right before the
					information is send to TS.

					The elapsed working time since the last accounting. The rest working time, that has
					to be done up to the next accounting. These information are also retrievd out of the
					users record in “tsmdata” out of the fields “MinActual” and “MinLeft”.

					The rest holidays for the actual year. This information is also retrievd out of the
					users record in “tsmdata” out of the field “HoliDays”.

					A birthday-greeting, if the customer has birthday. This information is also retrievd
					out of the users record in “tsmdata” out of the field “Birthday”.

				TS_EXECUTE [boolRes], [TS_GET_M_DATA] {, numIdx}
					If numIdx <> 0, the data of a specific user (out of the table “tsmdata”) will be read
					out of TS. The actual status of this user will than be saved in the users record. If
					numIdx = 0 (or if it is not passed to the command), this will be done with all users.
					The following values for the status are availiable:
					0	“COMES” 						has been entered
					1	“GOES”							has been entered
					2	“ON DUTY STARTS” 				has been entered
					3	“ON DUTY STARTS AND GOES” 	has been entered	
					4	“ON DUTY ENDS AND COMES” 	has been entered
					5	“ON DUTY ENDS AND GOES” 		has been entered
					6	“PAUSE STARTS”	 		has been entered
					7	“PAUSE ENDS”		 		has been entered

				TS_EXECUTE [boolRes], [TS_SET_M_DATA] {, numIdx {, boolDel}}
					If numIdx <> 0, the data of a specific user will be read out of the users record in the
					table “tsmdata” and sendt to TS, otherwise this will be done with all users. In case, 
					that boolDel=TRUE, the data-records of the user will only be deactivated in TS. I.e.
					They still can be read out of TS with the function TS_GET_M_DATA, but the user 
					no longer can access TS.

				TS_EXECUTE [boolRes], [TS_INIT_V_DATA] 
					Delets all actual available process-data out of TS. Attention: that means, that all
					the waiting data in TS is ignored and this operation can not be undone!

				TS_EXECUTE [boolRes], [TS_GET_TIME], [dateVar], [timeVar], [boolIsSummer]
					Fetches the time out of TS and passes it through to the three variable parameters.
					boolIsSummer will be passed through as it is. I.e. It will not be checked, if the date 
					in TS really fits to a summertime–setting or not.

				TS_EXECUTE [boolRes], [TS_SET_TIME], [dateVar], [timeVar], [boolIsSummer]
					Stores the time, that is passed to this function through the three variable
					parameters, in TS. boolIsSummer will be saved as it is given. I.e. it will not be
					checked, if the given date really fits to a summertime–setting or not. On every
					setting of the time a record protocolls the amount of minutes, that have been
					changed. Positive minute values in case of setting the time foreward otherwise
					negative values. The records will be saved to the table thats structure is defined in
					the file “tsclock.sql”. On accounting the times of users that were present at the time
					of the time-setting, the sum of all changed minutes (while present time) have to be
					added to their “online” time. At last it is clear, that a user is not 5 minutes less
					present only because the watch has been truned back for 5 minutes.

				TS_EXECUTE [boolRes], [TS_CARD_USE], numCardID, [numRes]
					Returns in numRes if the Card-Code of numCardID is already used. This is the list
					of possible results:
					0	card-code is not used
					1	card-code is used for a user
					2	card-code is used for a project

25.08.2003	(7.02.14/514/DD) Die Anzahl der Datensätze in einem Query kann ab jetzt auch abgefragt werden, wenn das Query noch gar nicht ausgeführt wurde. Das Resultat ist in so einem Fall natürlich 0, aber der obligatorische Programmansturz “Operation ist bei geschlossener Datenmenge nicht möglich”, wird vermieden.

	The QUERY_COUNT comand can be executed on unexecuted querys from now on. In such a case, the result of corse is 0, but the exception “operation is not possible on a closed recordset” will not appear.

23.08.2003	(7.02.13/513/GH) Datums und Zeitfelder werden ab jetzt nicht mehr voll markiert, wenn sie den
		Fokus erhalten. Dadurch wird beim Eingeben z.B. eines abweichenden Wertes für den Tag Datums
		nicht gleich der ganze Inhalt des Datumfeldes entfernt.

	Date  and time fields are no longer completely marked, if they get focused. Hereby the input of e.g. a different day value of a date field will not clear the whole date value.

22.08.2003	(7.02.12/512/RH) Datenbanken vom Typ mysql werden ab jetzt immer so geöffnet, daß der
		“compressed mode” eingeschaltet ist. Ausserdem wurde der Timeout von 30 Sekunden auf drei Tage
		erweitert.

	MySQL databasese will be opened with the option “use comressed mode” by default. Also the timeout has been increased from 30 sec. to three days.

22.08.2003	(7.02.11/511/PB) Mit einem Doppelklick in ein Datums- oder Zeitfeld wird ab jetzt der Kalender- bzw.
		der Zeit-Dialog geöffnet.

	With a double-click into a date- or time-field the calendar- or clock-dialog will open from now on.

13.08.2003	(7.02.10/510/DD) Darstellungsmasken von Dezimalzahlen in Grids und Browsern wurden nach einem QUERY_REFRESH nicht wieder in der definierten Form angezeigt. Der Fehler ist behoben.

	The displaymasks of floats in grids and browsers have not been respected correct in the defined form after a  QUERY_REFRESH. This error has been removed.

12.08.2003	(7.02.09/509/DD) Die Anzeige des Default-Datums (01.01.1980) in Browsern und Grids erfolgt nun unter allen SQL-Servern korrekt mit “--.--.----”.

	The display of the default-date (01.01.1980) in browsers or grids, is now working for all SQL-servers correct with “--.--.----”.

10.08.2003	(7.02.08/508/DD) Beim Suchen in einer Maske, aus einem Memo-Feld heraus, wurde eine unterschiedliche Schreibweise beim Tabellen-Alias angewandt. Da MySQL dies nicht erlaubt, kam es bei der Suche zu einem Fehler. Dieser Fehler ist behoben.

	Searching out of a mask, from out of a memo-field, failed, in case of mysql. This was initiated by a dfferent written (case sensity) alias. This errer has been removed.

08.08.2003	(7.02.07/507/DD) Neue Schlüssel für die Applikations-INI-Datei, Sektion [Config]: AccessCrypting=.
	Der Schlüssel kann folgende Werte annnehmen:
		0	Normler Text wurde für die Verbindungsdaten verwendet, d.h. Die Daten sind
			unverschlüsselt.
		1	Die Zugangsdaten sind verschlüsselt.
		2	Die Zugangsdaten sind unverschlüsselt, werden aber beim nächsten Aufruf der
			Engine verschlüsselt und es wird auf AccessCrypting=1 umgestellt.
	Folgende Schlüssel in der INI-Datei gehören zu den Zugansdaten: DataAlias, DataBase, DataUser,  DataPassword, DataHost und DataPort.

	New key for the application-ini-file: AccessCrypting=. This key can have the following values:
		0	normal text for the access-data, no encryption is used
		1	the access-data are encrypted
		2	the access-data actually are not encrypted, but they will be encrypted on the next
			engine start, and the key AccessCrypting will be changed to 1.
	The following keys in the application-ini-file are holding the access-data: DataAlias, DataBase, DataUser,  DataPassword, DataHost und DataPort.

08.08.2003	(7.02.06/506/DD) Seit dem Relase  7.02.01 vom 01.08.2003 wurde die ESC-Taste in Grids nicht mehr ausgeführt. Dieser Fehler ist behoben.

	Since release 7.02.01 from 01.08.2003  the ESC-key has not been processed out of grids. This error has been removed.

06.08.2003	(7.02.06/506/DD) Neue Masken-Variable [mask!MASK_TMP_REC_ID]. In ihr ist die RelRecID einer Notiz gespeichert, BEVOR ein Datensatz angelegt wird. Falls der Programmierer in einer Maske das Speichern selber verwaltet, kann er hiermit die VOR dem Speichern angelegte Notiz auf den neuen Datensatz beziehen, indem er folgendes Query verwendet:
		update	notes 
		set	RelRecID = [mask!MASK_RECORD_ID|R0,0] 
		where	RelRecID = [mask!MASK_TMP_REC_ID|R0,0]
		and	TableName = “Tabelle der Maske”
	Tipp: Man sollte die [mask!MASK_TMP_REC_ID] schon im [mask!MASK_HOOK_NOTEMGR_EXIT] abfangen.
	
	New mask-variable [mask!MASK_TMP_REC_ID]. It holds the RelRecID of a note BEVORE a new record has been saved. If a programer is managing the save-routine of a mask on his own,  he now can reference to a note, that has been mode BEVOR saving to the new record after saving by using the following query:
		update	notes 
		set	RelRecID = [mask!MASK_RECORD_ID|R0,0] 
		where	RelRecID = [mask!MASK_TMP_REC_ID|R0,0]
		and	TableName = “table of the mask”
	Tip: Catch the [mask!MASK_TMP_REC_ID] already in the [mask!MASK_HOOK_NOTEMGR_EXIT].

06.08.2003	(7.02.05/505/DD) Das Update der Source-Bibliothek “MySQLDAC_Full 2.0.5 build 8156 (July, 31 2003)”, die für alle MySQL-Zugriffe zuständig ist, wurde in die aktuelle Version der CARA-Engine übernommen.
	
	The update of the source-library “MySQLDAC_Full 2.0.5 build 8156 (July, 31 2003)”, used for all MySQL-accesses , has been introduced to the cara-engine.

05.08.2003	(7.02.04/504/DD) Neue Schlüssel für die Applikations-INI-Datei, Sektion [Config]: 
	NoteUserStamp=0		Soll in jeder Notiz, die gespeichert wird ein “Stempel” des  Users,
					der die Notiz zuletzt bearbeitet hat, abgelegt werden?
	NoteSpecialStart={		So soll eine spezielle Sequenz, wie z.B. der UserStamp innerhalb
					einer Notiz “eingeleitet” werden.
	NoteSpecialStop=}		So soll eine spezielle Sequenz, wie z.B. der UserStamp innerhalb
					einer Notiz “beendet” werden.
	NoteSpecialUserStamp=USR:	Wenn nach dem  “NoteSpecialStart”-Zeichen diese Zeichenfolge
					erscheint, handelt es sich um inen UserStamp. 
					WICHTIG: nachdem der UserStamp eingeführt wurde, sollte diese
					Sequenz nicht mehr geändert werden, da ansonsten alle bereits
					angelegten UserStamps nicht mehr “gefunden” werden können.

	New keys for the application-ini-file, section [Config]:
	NoteUserStamp=0		Should a “stamp” of the last user, that has been editing a note, be
					placed in every note, that will be saved?
	NoteSpecialStart={		This is the sequenz that introduces a special part within a note,
					like a UserStamp.
	NoteSpecialStop=}		This is the sequenz that ends a special part within a note, like a
					UserStamp.
	NoteSpecialUserStamp=USR:	If this appears directly behind a NoteSpecialStart-sign, it marks a
					UserStamp.
					IMPORTENT: afte the UserStamp once has been used, this
					sequenz should not be changes, because the former written
					UserStamps could not be found any longer.

04.08.2003	(7.02.03/503/DD) Die Angaben zum Programm-Namen in der Applikations-INI-Datei können jetzt auch Leerzeichen enthalten.
	
	The definition of the programm-name in the application-ini-file now can hold blanks also.

04.08.2003	(7.02.02/502/DD) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [ExlExp]: AVGFuncName=. Das Excel-Export-Modul ersetzt die Funktion “#AVG(wert)” normalerweise in “=AVERAGE(range1:range2)”. Im manche Office-Pakete (XP) erwarten jedoch den durch das geladene Sprachmodul vorgegebenen Wert z.B. In deutscher Sprache “=MITTELWERTA(range1:range2)”. Dieser Wert kann nun eingestellt werden. Er wird automatisch auch in die Station-INI-Datei gespeichert und ist dort in der Sektion [Station] zu finden. So kann dieser Wert individuell für jede aufrufende Station eingestellt werden.

	New key for the applcation-ini-file, section [ExlExp]: AVGFuncName=. The new excel-export-modul replaces the function “#AVG(value)” normaly by “=AVERAGE(range1:range2) . In some office-packages (XP) the tranlated function name is expected. In german language e.g. “=MITTELWERTA(range1:range2)”. This can be defined here. This key will also be automaticly saved to the station-ini-file, section [Station], so it can be difined for everey station on ist own.

01.08.2003	(7.02.01/501/DD) Die Tastatuebehandlungsroutinen wurden erneut komplett überarbeitet. Fehler, wie “Feldihalte können nicht mehr kopiert werden” oder “das Verlassen von Masken oder Listen ist nicht mehr möglich, weil diese sich sofort wieder öffnen” solten damit der Vergangenheit angehören.

	The key-handling-routine has been rewritten completely. Errors like “field-values can not be copied” or “on closing a mask or list, the dialog opens immidiatly again” should be eliminated hereby.

25.07.2003	(7.02.00/500/DD) Neue Export und Report-Umgebung “EE” (Excel-Export). Hierfür wurden einige Beispielscripte und Excel-Dateien zur Dokumentation der Engine hinzugefügt. Sie befinden sich im Unterverzeichnis  “Example\EE”. 

	Grundsätzlich ist die Idee des Excel-Reportes folgende.
		In einer Excel-Datei, die als Vorlage dient, werden Feldnamen angegeben. Die Definition
		dieser Felder ist denkbar einfach: Man setzt vor den Feldnamen der Datenbank-Abfrage, die
		mit dem Report verbunden wird einfach ein Gatter-Zeichen und läßt den Alias weg.

		Eine Zeile oder auch mehrere Zeilen der Vorlage werden als Band bezeichnet. So kann es
		z.B. ein Band für den Kopf des Reportes geben, eines für die Daten und eines für den Fuß
		des Reportes. Im einfachsten Fall besteht ein Report nur aus dem “Datenband”. 

		Die Aufgabe der neuen Umgebung besteht darin, die Daten aus dem Programm über die
		Vorlage an den eigentlichen Report weiterzugeben.

	Hierfür wurde ein neuer Variablen-Typ verfügbar gemacht: 
	GLOABL_EE, VAR_EE oder auch LOCAL_EE. 

	Jede EE-Variable stellt außerdem folgende Untervariablen zur Verfügung:
	[ee!EE_ACTION]				Zeigt den aktuellen Zustand an. Z.Zt. Nichtgenutzt.

	[ee!EE_TEMPLATE]			Dateiname der Vorlage des Reports. (Eine Excel-Datei.)

	[ee!EE_TEMPLATE_SHEET]		Name des Arbeitsblattes in der Vorlage Datei.

	[ee!EE_TITLE]				Titel der Reports.

	[ee!EE_OPTIONS]			Folgende Optionen stehen, durch Addition kombinierbar
						 zur Verfügung:
						[EE_OPTION_HOURGLAS_CURSOR] 
							Soll eine Sanduhr während der Reporterstellung
							gezeigt werden.
						[EE_OPTION_SHOW_PROGRESS]
							Soll der Fortschritt währen der Reporterstellung
							gezeigt werden.
						[EE_OPTION_TOTALS_AS_FORMULA]
							Sollen Summen, die ggf. am Ende eine Liste
							angezeigt werden sollen, als Formel hinterlegt
							werden?
						[EE_OPTION_VISIBLE_WHEN_ERROR]
							Sollen ev. Bei der Erstellung des Reports
							auftretende Fehler angezeigt werden?

	[ee!EE_USER_DATA_MAX]		Wieviel Datensätze umfasst ein Report, bei dem nicht
						eine Datenbankabfrage als Datenquelle angegeben
						wurde, sondern bei dem der Programmierer jede Zeile
						selbst mit Daten “füttert”. Dieser Wert muß vom
						Programmierer selbst gesetzt werden. Er kann jedoch
						auch “offen” bleiben, wenn der Programmierer einen
						[EE_HOOK_DATA_EOF] definiert und den Abbruch des
						Datenstroms in diesem Hook setzt.

	[ee!EE_USER_DATA_ACT]		Bei welchem Datensatz befindet sich ein Report, bei dem
						nicht eine Datenbankabfrage als Datenquelle angegeben
						wurde, sondern bei dem der Programmierer jede Zeile
						selbst mit Daten “füttert”. Diese Variable kann vom
						Report selber gezählt werden,aber auch vom
						Programmierer in den Hooks
						[ee!EE_HOOK_DATA_FIRST],
						[ee!EE_HOOK_DATA_NEXT] und
						[ee!EE_HOOK_DATA_PREV]. Wenn der Programmierer
						den Wert [ee!EE_USER_DATA_MAX] angiebt und
						ansonsten keine Hooks setzt, wird dieser Wert
						automatisch von der Engine gezählt und im Falle des
						Erreichens des Maximalwertes, wird der Report als
						beendet erachtet.

	[ee!EE_USER_DATA_EOF]		Wenn diese Variable TRUE ist, wird ein Report, bei dem
						nicht eine Datenbankabfrage als Datenquelle angegeben
						wurde, sondern bei dem der Programmierer jede Zeile
						selbst mit Daten “füttert”, als beendet erachtet.

	[ee!EE_USER_DATA_FIELD]		In welchem “Feld” der Vorlage befindet sich der Report
						gerade.

	[ee!EE_USER_DATA_VALUE]		Wie lautetder Wert, der in das gerade aktuelle Feld des
						Reports geschrieben werden soll.

	[ee!EE_GROUP_VALUE]			Dieser Wert entscheidet über den Wechsel in einer
						Datengruppiereung in einem Report. Wenn sich dieser
						Wert von seinem vorherigen Inhalt unterscheidet, wird im
						Report eine neue Daten-Gruppe begonnen.

	[ee!EE_ACT_BAND_TYPE]		Jeder Report besteht aus sogenannten “Bändern”, in
						denen Variablen der Vorlage durch Daten-Werte ersetzt.
						Diese Variable gibt den Typ des jeweils aktuell
						verarbeiteten Bandes an.
						Folgende “Band-Typen” können verarbeitet werden:
						[EE_BAND_TYPE_DETAIL_DATA]
							Z. Zt. noch  ungenutzt. Wenn ein Master-
							Dataensatz (z.B. ein Auftrag) auf
							untergeordnete Daten verweist (z.B. die
							Positionen des Auftrags), sind die Felder dieses
							Bandes der Vorlage zu verwenden.
						[EE_BAND_TYPE_DETAIL_FOOTER]
							Fuß eines Detail-Bandes. 
						[EE_BAND_TYPE_DETAIL_HEADER]
							Kopf eines Detail-Bandes. 
						[EE_BAND_TYPE_GROUP_FOOTER]
							Fuß eines Gruppen-Bandes. 
						[EE_BAND_TYPE_GROUP_HEADER]
							Kopf eines Gruppen-Bandes. 
						[EE_BAND_TYPE_MASTER_DATA]
							Die Hauptdaten des Reports.
						[EE_BAND_TYPE_SUMMARY]
							Das Band, dass die Summen enthält.
						[EE_BAND_TYPE_TITLE]
							Das Band für die Titel-daten.

	[ee!EE_ACT_ROW_REPORT]		In welcher Zeile im Report befindet sich die Engine
						aktuell?.

	[ee!EE_ACT_ROW_TEMPLATE]		In welcher Zeile in der Vorlage befindet sich die Engine
						aktuell?.

	[ee!EE_ACT_COL_REPORT]		In welcherSpalte im Report befindet sich die Engine
						aktuell?
	[ee!EE_ACT_CELL_VALUE]		Welchen Inhalt die die aktuelle Zelle?
	[ee!EE_ROWS]				Wieviel Zeilen hat der Report?
	[ee!EE_COLS]				Wieviele Spalten hat der Report?

	[ee!EE_HOOK_BEFORE_BUILD]		Spript-Procedure bevor der Report generiert wird.

	[ee!EE_HOOK_AFTER_BUILD]		Spript-Procedure nachdem der Report generiert wurde.

	[ee!EE_HOOK_GET_FIELD_VALUE]	Spript-Procedure die beim Abrufen eines Feld-Wertes
						angesteuert werden kann.
	[ee!EE_HOOK_FORMAT_CELL]		Spript-Procedure die beim Formatieren von Zellen
						angesteuert werden kann.

	[ee!EE_HOOK_SET_CELL_VALUE]	Spript-Procedure die beim Festlegen der Inhalte von
						Zellen angesteuert werden kann.

	[ee!EE_HOOK_DATA_FIRST]		Im Falle eines Reportes, bei dem nicht eine
						Datenbankabfrage als Datenquelle angegeben
						wurde, sondern bei dem der Programmierer jede Zeile
						selbst mit Daten “füttert”, kann man hier z.B. den Zähler
						für den aktuellen Datensatz initialisieren.
	[ee!EE_HOOK_DATA_NEXT]		Im Falle eines Reportes, bei dem nicht eine
						Datenbankabfrage als Datenquelle angegeben
						wurde, sondern bei dem der Programmierer jede Zeile
						selbst mit Daten “füttert”, kann man hier z.B. den Zähler
						für den aktuellen Datensatz inkrementieren.

	[ee!EE_HOOK_DATA_PREV]		Im Falle eines Reportes, bei dem nicht eine
						Datenbankabfrage als Datenquelle angegeben
						wurde, sondern bei dem der Programmierer jede Zeile
						selbst mit Daten “füttert”, kann man hier z.B. den Zähler
						für den aktuellen Datensatz dekrementieren.
	[ee!EE_HOOK_DATA_EOF]		Im Falle eines Reportes, bei dem nicht eine
						Datenbankabfrage als Datenquelle angegeben
						wurde, sondern bei dem der Programmierer jede Zeile
						selbst mit Daten “füttert”, kann man hier den Abbruch
						des Reportes festlegen, indem man den Inhalt der
						Variable [ee!EE_USER_DATA_EOF] setzt.

	[ee!EE_HOOK_DATA_GET]		Im Falle eines Reportes, bei dem nicht eine
						Datenbankabfrage als Datenquelle angegeben
						wurde, sondern bei dem der Programmierer jede Zeile
						selbst mit Daten “füttert”, kann man in der hier
						angegebenen Spript-Procedure die Feldinhalte setzen.

	EE-Variablen können mit folgendem Befehl bearbeitet werden:
	EE_EXECUTE  [EE], [numRes], [option], {parameter1, {parameter2, {parameter3, {parameter4}}}}
 	[option] kann folgende Weret annehmen:
		[EE_SHOW] {, 'FileName'}	Zeigt den Excel-Report oder speichert ihn dierekt in die
						Datei “FileName'.

		[EE_EDIT]			Öffnet die Vorlage-Datei mit Excel und erlaubt eine
						Editieren der Vorlage.

		[EE_SET_QUERY], [QUERY] oder [BROWSER] oder [MASK], 
						Gibt an, mit welchen Daten der Report arbeiten soll.
						Wenn kein Parameter angegeben wird, gibt der
						Programmierer im Script selber die Daten an den Report
						weiter.

		[EE_SET_SUBREPORT], [EE]	Falls ein weiters Sheet in der Excel-Datei gleichzeitig mit
						dem Haupdatenstrom gefüllt werden soll, kann man hier
						die dafür zuständige EE-Variable angeben

		[EE_DIC_ADD], 'FieldName', 'Value'
						Fügt einen Variable mit Inhalt zum Report hinzu.

		[EE_DIC_GET], 'FieldName', [Value]
						Ruft den Inhalt einer Zustzlichen Variable ab.

		[EE_BAND_ADD], numBandType, 'range', {'FieldName','HookName'}
						Gibt den Typ und die “Koordinaten” eines Bandes an und
						kann für ein Band vom Typ
						[EE_BAND_TYPE_GROUP_HEADER] auch einen
						eigenen Hook setzten, der der bei jedem Wechsel des
						Datensatzes angeteuert wird und in dem der Wert
						gesetzt werden kann, der den Gruppenwechsel
						herbeiführt.

		[EE_SET_RANGE], 'StartRange', 'EndRange', numOption,  'value' 
						Verändert einen Zellenbreich im Report, der mit
						StartRange und EndRange festgelegt werden kann.
						Folgende Werte stehen für numOption yur Verfügung:
						[EE_RANGE_OPT_FONT_BOLD]
							Der Zelenbereich wird fett gedruckt, wenn value
							den Inhalt TRUE hat, ansonsten wird der
							Bereich normal gedruckt.
						[EE_RANGE_OPT_FONT_COLOR]
							Der Bereich erhält eine andere Schriftfarbe. Der
							Wert in value muß dem hex-Wert der Farbe
							entsprechen.
						[EE_RANGE_OPT_FONT_ITALIC]
							Der Zelenbereich wird kursiv gedruckt, wenn
							value den Inhalt TRUE hat, ansonsten wird der
							Bereich normal gedruckt.
						[EE_RANGE_OPT_FORMULAR]
							In dem angegebenen Bereich kann eine neue
							Formel platziert werden, die Formeldefinition
							wird in value an den Report übergeben.
						[EE_RANGE_OPT_INTERIOR_COLOR]
							Der Bereich erhält eine andere
							Hintergrundfarbe. Der Wert in value muß dem
							hex-Wert der Farbe entsprechen.
						[EE_RANGE_OPT_ROW_HEIGHT]
							Der Bereich erhält eine neue Zeilenhöhe. Die
							Höhe kann in value angegeben werden.

						

		[EE_START_MACRO], 'MacroName
						Startet ein Excel-Macro, z. B. in dem  Hook, der nach der
						Fertigstellung des Repoptes aufgerufen werden kann:
						[ee!EE_HOOK_AFTER_BUILD] 

		[EE_CHANGE_PROPERTY], numPropertyType, 'Value'
						Erlaubt die Veränderung einer Eigenschaft des Reportes.
						Folgende Werte kann numPropertyType annehmen:
						[EE_PROPERTY_NAME]
							Erlaubt das Ändern des Namens des
							Arbeitsblattes des Reportes.

25.06.2003	(7.01.42/499/DD) Der Schalter “ShowVersion” in der Sektion [CONFIG] wurde von “boolean” nach “integer” geändert. Die Bedeutung sind:
		0 = ausgeschaltet
		1 = Die Steps in Messageboxen zeigen
		2 = Die Steps im Monitor mit Zeitangabe listen

	The key “ShowVersion” for the section [CONFIG] has been changed from “boolean” to “integer”. The options are:
		0 = off
		1 = show steps in message boxes
		2 = show steps in monitor with time of occurence

24.06.2003	(7.01.41/498/DD) Neuer Schalter in der Sektion [CONFIG] “FTSeverywhere=”. Hiermit werden in allen Masken, denen ein Mask-Query zugeordnet ist, alle STRING-Felder (die diesem Query zugeordnet sind) mit der Option FTS (FullTextSearch) ausgestattet. Diese neue Option ist default “TRUE”.

	New key for the section [CONFIG] “FTSeverywhere=”. With this, in all masks, that have a mask-query-id defined, all STRING-fields will have the option FTS (full-text-serach) turned on if they can be found in the mask-query-field-list. This new key is default set to “TRUE”.

23.06.2003	(7.01.40/497/DD)  Alle Werte aus der SQL-Sektion der Applikations-INI-Datei sind ab jetzt während der Laufzeit änderbar. Dadurch kann man für die Verbindung mit einer weiteren Datenbank die einzelnen SQL-Parameter während der Laufzeit verändern und korrekt einstellen.

	All values from the SQL-section of the application-ini-file can be changed while runtime from now on. This is useful while connecting to another database:  the different parameter can be adjusted correctly while runtime.

12.06.2003	(7.01.39/496/DD)  Die Vordergrundfarbe der Felder, die geblockt sind, kann ab jetzt eingestellt werden. (Hilfen - Werzeuge “Browser- und Grid-Fraben”)

	The foregroundcolor of protected fields can be configured from now on. (Help – Tools “Browser- & Grid-Colors”).

10.06.2003	(7.01.38/495/DD)  Send-Button eingebaut. An dieser Stelle wird in Kürze ein Mail-System entstehen, das dem WinPopUp früherer Zeiten entspricht. Es wird jedoch vollständig über die Datenbank angewickelt und ist daher bei Installationen, bei denen die Datenbank über das Internet angesteuert wird über alle Filialen gleichzeitig einsetztbar. Außerdem ist es durch die Datenbankanbinding offline-fähig. D.h. Man kann Messages an User versenden die (noch) nicht online sind.

	Send-Button inserted . At this place a mail-system, similar to the good old WinPopUp, will be availiable soon. It will be managed with the database. With installations, that are connecting to the database through the internet it can be used between all clients, even if they are located in the WAN. Also messages con be send to offline users. They will receive it on the next connect.

30.05.2003	(7.01.37/494/DD) Die Verwaltung der L&L-Dateien ist ab jetzt ebenso wie die der Scripts. D.h. sollte sich eine Datei im SpecialVerzeichnis befinden, wird diese verwendet, anderenfalls wird sie im Script-Verzeichnis gesucht.

	The management of the l&l-files will be the same as it is already with the scripts: If a file could be found in the special-folder, it will be taken, otherwise it will be searched in the script-folder.

20.05.2003	(7.01.36/493/HB) Nach dem Ersscheinen einer Message-Box in einer Maske, wird der Tastatur-Puffer geleert.

	After a message-box had appeared in a mask, the keyboard-buffer will be fushed.

20.05.2003	(7.01.35/492/DD)  Update der Library DAC for MySQL. Damit können ab jetzt wieder MySQL-Datenbanken ohne BDE/ODBC angesprochen werden. Die Version läuft komplett stand-alone, ohne jede weitere DLL (außer L&L).

	Update of the library DAC for MySQL. So MySQL-databases could be accessed without BDE/ODBC again. This version runs without any additional DLL (except L&L).

15.05.2003	(7.01.34/491/DD)  Mit einem Klick mit der rechten Maustaste auf das Icon “Säubern” bzw. “Zurücksetzten” in dem Werzeug zum Einstellen der Farben, kann man ab jetzt zwischen zwei Vorgaben wählen “Standard” und “Laptop”.	

	In the tool that is used to define the colors, a popupmenu can be opened with a right click to the “clear” – icon. The user can choose between a “standard” and a “laptop” preset.

05.05.2003	(7.01.33/490/DK) Neue Farben, die über den Werkzeugkasten geändert werden können:	
	1. Der Hintergrund des Tree-Menüs im Hauptfenster.
	2. Der Hintergrund der Editierbaren-Brauser-Felder
	3. Der Hintergrund der Masken-FTS-Felder.
	4. Der Hintergrund der Browserspalte, mit dem Feld, des ersten Sortierkriteriums
	
	New colors that can be changed from out of the tool-box:
	1. Background of the tree-menu in the main window
	2. Background of the editable browser fields
	3. Background of the mask-FTS-fields.
	4. Background of the browsercolumn with the field that is used as the first order by field

05.05.2003	(7.01.32/489/DD)  Beim Wechsel des Bearbeitungsmodus mit anschließender Suche, wurde gelegentlich eine Exception verursacht. Dieser Fehler ixt behoben.

	Changing the work-mode and then executing the serach, sometimes caused an exception. This error has been removed.	

05.05.2003	(7.01.31/488/DD)  Das List&Label-Service-Pack 1 wurde eingebaut.

	List&Label-Service-Pack 1 has been implemented.

05.05.2003	(7.01.30/487/DD)  Das Kontextmenü, das erscheint, wenn man im Entwicklermodus mit der rechten Maustatse auf die Symbole SQL-ON/OFF oder SCRIPT-ON/OFF in Browsern oder Masken klickt, wurde um die Punkte “tools” (Werkzeuge) und SQL (freies SQL-Interface) erweitert.

	The popup-menu, that opens with a right-klick to the icons SQL-ON/OFF or SCRIPT-ON/OFF in browsers or masks, if the developer-mode is switched on, has been extende by the items “tools” (tool-box) and “SQL” (free SQL-interface).

05.05.2003	(7.01.29/486/KP)  Der Aufruf des DeveloperEditors geschah seit der Änderung 7.01.20 über den Befehl Shell-Execute. Wenn ein Pfad mit angegeben wird, wird der Zugriff ab jetzt über Win-Execute geleitet, wodurch auch ältere Windows-Versionen die neue Entwickler-Optionen unterstüzen. 

	The DeveloperEditor was called over a shell-execute since change 7.01.20. If a path also is given to the engine, the win-execute will be used in futur, so also older versions of windiws can use the new developer-options.

05.05.2003	(7.01.28/485/HB)  Beim wiederholten Aufruf eines IsReady-Hooks kam es seit der Version  7.01.00 zu Abstrürzen, wenn der Hook bereits in Arbeit war – bzw. auf Grund  von Zeitverzögerungen während der Verarbeitungs des Hooks zum zweiten Mal angesteuert wurde. Dieser Fehler ist behoben.

	On a repeated call to a IsReady-hook the program aborts with an exception since version 7.01.00, if the hook was already in use or, if it was called again in case of timelags while already executing the hook. This error has been removed.

02.05.2003	(7.01.27/484/DD)  Wenn ein Datums- oder Zeit-Variablen als nicht variabler Parameter an einen CARA-Befehl übergeben werden, wird der Inhalt als entgegeb genommen und verwertet. Dies ändert nichts an besteheden CARA-Befehlen, ist aber für den Befehl ITEM_2_USER_TIMER eingeführt worden, bei dem erstmalig ein Datum und eine Zeit “absolut” übergeben werden können.

	If a date or time varibale is used as a NON variable parameter to a cara command, it will be treated as a string-parameter. This has no infuence on any existing CARA-command, it has been introduced with the command ITEM_2_USER_TIMER for the first time, where a date and time parameter could be passed as “absolute” values to the engine.

02.05.2003	(7.01.26/483/DD)  Neuer Befehl 
	ITEM_2_USER_TIMER RecID,NextPID,Date,Time,Note,UserName1,UserName2,TableName,ScriptName
	Mit diesem Befehl können zusätzliche Zeilen im User-Timer, der beim Programmstart gezeigt wird, wenn für einen User Termine im Dokument-Manager vorliegen, angezeigt werden. Dadurch kam man z.B. dem Buchhalter die “heute” fälligen Mahnungen mit anzeigen. Die Parameter bedeuten Folgendes:
	RecID		Datensatz-ID, die dazu dient, die angezeigte Zeile (im Zusammenhang mit dem
				Tabellen- und Script-Namen) zu identifizieren, falls sie ein zweites Mal gemeldet
				werden sollte. (Typ VAR_FLOAT)
	NextPID		Next-Process-ID (ein Timestamp, wie eine RecordID), zeigt an, wann der Termin
				fällig ist. Sinnvollerweise ist dies ein aus der übergebenen Zeit und dem
				übergenenen Datum zusammengesetzter Wert. Das “Triggern” der Liste, d.h. der
				Zeitpunkt wann die Liste gezeigt werden muß, richtet sich nach diesem Wert.
				(Typ VAR_FLOAT)
	Date		Datum, das in der Zeile mit angezeigt werden soll. Wenn keine Datums-Variable
				übergeben wird, muß hier ein String (als Variable oder auch absolut) übergeben
				werden. (Typ VAR_DATE oder VAR_STR)
	Time		Zeit, die in der Zeile mit angezeigt werden soll. Wenn keine Zeit-Variable
				übergeben wird, muß hier ein String (als Variable oder auch absolut) übergeben
				werden. (Typ VAR_TIME oder VAR_STR)
	Note		Notiz, die angezeigt werden soll. (Typ VAR_STR)
	UserName1 	Name1 des betroffenen Users. Kann auch “missbraucht” werden, da dies ebenfalls
				eine ausschließlich zur Anzeige benötigte Information ist. So kann man Mahnungen
				beispielsweise auch den Name1 des betroffenen Kunden anzeigen. 
				(Typ VAR_STR)
	UserName2 	Name2 des betroffenen Users. Kann auch “missbraucht” werden, da dies ebenfalls
				eine ausschließlich zur Anzeige benötigte Information ist. So kann man Mahnungen
				beispielsweise auch den Name2 des betroffenen Kunden anzeigen.
				(Typ VAR_STR)
	TableName 	Name der Tabelle aus der der Datensatz mit der “RecID” stammt. 
				(Typ VAR_STR)
	ScriptName 	Name des Scriptes, das ausgeführt werden soll, wenn der User doppelt auf die
				Timer-Zeile klickt.  (Typ VAR_STR)
				An das Script werden folgende Informationen weitergeleitet:
				RECORD_ID1	RecID
				RECORD_ID3	reserved
				RECORD_ID2	reserved
				RECORD_ID4	reserved
				RECORD_ID5	NextPID
				PAR_STR6	StrNote
				PAR_STR7	Date
				PAR_STR8	Time
				PAR_STR9	UserName1
				PAR_STR10	UserName1
				PAR_STR11	TableName
				PAR_STR12	reserved
				PAR_STR13	ScriptName

	Ca. alle 60 Sekunden wird die Timer-Liste intern aufgebaut bzw. überprüft. Wenn ein Termin erreicht ist, wird sofort die Liste angezeigt. Eine  Zeile wird in der Liste nicht mehr aufgeführt, wenn sie nicht innerhalb des Neuaufbaus wieder gemeldet wird. 
		Es ist sicher jedem Entwickler klar, dass die hier ausgeführten Abfragen möglichst “klein” und “schnell” sein sollten, sonst verhindern sie einen eleganten Programmablauf!

	New command:
	ITEM_2_USER_TIMER RecID,NextPID,Date,Time,Note,UserName1,UserName2,TableName,ScriptName
	With this command additional lines can be pushed into the user-timer-list, that is shown at the program-start, if the user has dates out of the document-manager. So e.g. the accountant can see all monitions from “today”. The parameter means:
	RecID		Record-ID, it is used to identify a specific line (in common with the table-name and
				 script-name), if it is passed more than once to the engine. (Typ VAR_FLOAT)
	NextPID		Next-Process-ID (a timestamp like a recordid), it holds the exact time, when the
				date is fallen due. For logical reasons it is consiting out of the given date and time.
				The “trigger” of the list is complys with this value. (Typ VAR_FLOAT)
	Date		Date, that is shown in the line. If no date-variable is passed here, a string (variable
				or absolut) muts be used. (Typ VAR_DATE oder VAR_STR)
	Time		Time, that is shown in the line. If no time-variable is passed here, a string (variable
				or absolut) muts be used. (Typ VAR_TIME oder VAR_STR)
	Note		Nate, that should be displayed. (Typ VAR_STR)
	UserName1 	Name1 of the concerned user. This value can be misused, it is only used for
				display. E.g. in case of monitions, the customers name1 could be displayed here.
				(Typ VAR_STR)
	UserName2 	Name2 of the concerned user. This value also could be misused, it is only used for
				display. E.g. in case of monitions, the customers name2 could be displayed here.
				(Typ VAR_STR)
	TableName 	Tablename of the tabel that contains the record with the “RecID”.
				(Typ VAR_STR)
	ScriptName 	Scriptname that should be executet, if the user double-clicks a user-timer-line.
				(Typ VAR_STR)
				To this script, the follinwing paramter will be passed:
				RECORD_ID1	RecID
				RECORD_ID3	reserved
				RECORD_ID2	reserved
				RECORD_ID4	reserved
				RECORD_ID5	NextPID
				PAR_STR6	StrNote
				PAR_STR7	Date
				PAR_STR8	Time
				PAR_STR9	UserName1
				PAR_STR10	UserName1
				PAR_STR11	TableName
				PAR_STR12	reserved
				PAR_STR13	ScriptName
	Approximately all 60 seconds the timer-list will be build/refreshed. If a date is reached, the list will be shown. If a line is not listed again (on each refresh), it will not be shown again and also not used to trigger the lists appearence. 
		Shurely every developer knows, that this querys and scripts should be as lean as possible, to enshure an elegant program-execution.

02.05.2003	(7.01.25/482/DD)  Neuer Schlüssel für die Applikations-INI-Datei, Sektion [Config]: TimerScript=.
	Wenn dieser Parameter gesetzt ist, wird ein vom Entwickler benanntes Script bei jedem Aufbau der internen Timer-Liste aufgerufen und ermöglicht es, weitere Zeilen in den User-Timer mittels des Befehls ITEM_2_USER_TIMER  einzufügen. An das Script werden folgende Parameter übergeben:
	RECORD_ID1	ActUserID,	User der sich an der Applikation angemeldet hat.
	PAR_STR2	StartDate,	Start – Datum ab dem Termine berücksichtigt werden sollen.
	PAR_STR3	StopDate,	Stop – Datum bis zu dem Termine berücksichtigt werden sollen.
	PAR_STR4	UserClause, 	Eintrag aus der Applikations-INI-Datei (falls benötigt)
	
	New key for the application-ini-file, section [Config]: TimerScript=. If a script-name is given here, the script will be called each time, when the user-timer builds the list of dates in the user-timer. Within this script, the developer can push new lines into the user-timer-list with the new command ITEM_2_USER_TIMER. The following parameters are passed to this script:
	RECORD_ID1	ActUserID,	user that has been logged into the application.
	PAR_STR2	StartDate,	start – date from what date on the list should be build.
	PAR_STR3	StopDate,	stop – date until what date the list should be build.
	PAR_STR4	UserClause, 	key-value out of the application-ini-file (if needed)

01.05.2003	(7.01.24/481/DD)  Im Dokumentenmanager wurden Dateien, deren Programmtyp für Dateien mit fester Länge gekennzeichent waren, dennoch gekürtzt, wenn bei der verwendeten Datenbank der Kenner “SingleCharAsBool” gesetzt war. Dieser Fehler ist behoben.
	
		Files of certain programs, that has to be treated with fixed length, have been shortened if the document-manager copied a template to a new attached file, in case that the key “SingleCharAsBool” has been set for used database. This error has been removed.

30.04.2003	(7.01.23/480/DD)  Im Dokumentenmanager wurden die Vorlagen nicht mehr kopiert seit Einfüphrung der Pfad-Konstanten. Dieser Fehler ist behoben. 
	
	Since introducing the file-constants to the document-manger, the copy-process of the templates doesn't work. This error has been removed.

30.04.2003	(7.01.22/479/DD)  Im Dokumentenmanager wird ab jetzt beim Löschen eines Eintrages, der mit einer Datei verbunden ist abgefragt, ob diese Datei auch gelöscht werden soll.

	On deleting a document-manager-item, that is connected to a physical file, the user will be asked, if he likes to delete the file also.

30.04.2003	(7.01.21/478/DD)  Mit einem Klick mit der rechten Maustaste auf das Symbol SQL-ON und SCRIPT-ON in Masken und Browsern wird ein Kontextmenü geöffnet, mit dem man einerseits das File-Protocol anzeigen lassen kann und andererseits den Editor öffnen kann.

	With a right-click to the SQL-ON and SCRIPT-ON icon in masks and browsers a popup-menu opens, that allows to shoe the file-protocoll and also to open the editor.

21.04.2003	(7.01.20/477/DD)  Diverse Verbesserungen für die Entwicklungs-Ingenieure:

	Ein neuer Schlüßel für die Applikations-INI-Datei in der Sektion [Config]: DeveloperEditor=. Hier kann man den Dateinamen angeben, der auf den Editor verweist. Dieser Name wird nicht geprüft und direkt an die Shell weitergegeben. Wer z.B. UltraEdit verwenden möchte, sollte einfach nur “Uedit32.exe” angeben.

1. Mit einem Klick mit der rechten Maustaste auf den Scriptnamen in einer Maske (unten links, bei eingeschalteter Dialog-Nummern-Anzeige), wird der Editor geöffnet und folgende Dateinamen übergeben: Script, Maske und wenn vorhanden Masken-SQL-Anweisung sowie Masken-View-SQL-Anweisung.

2. Mit einem Klick mit der rechten Maustaste auf den SQL-Namen in einem Browser (unten links, bei eingeschalteter Dialog-Nummern-Anzeige), wird der Editor geöffnet und die SQL-Anweisung geladen (insofern diese einen Dateinamens-Bezug hat).

3. Mit einem Klick mit der rechten Maustaste auf das Symbol SQL-ON und SCRIPT-ON in Masken und Browsern wird eine Liste der von Dateinamen der SQL-Dateien gezeigt, die seit dem Aktivieren des SQL-Monitors brw. der SQL-Warungen  geöffnet wurden, angezeigt. In dieser Liste befinden sich auch die Dateinamen der SCRIPT- und INCLUDE-Dateien die seit dem Aktivieren des SCRIPT-Monitors brw. der SCRIPT-Warungen  geöffnet wurden (File-Protocol).

4. Mit einem Klick mit der rechten Maustaste in eine Text-Liste (LIST_DISPLAY) erhält man ein Kontextmenü, dass es erlaubt den ganzen Text zu markieren oder auch (in die Zwischenablage) zu kopieren.

5. Mit einem Klick mit der rechten Maustaste in den Monitor erhält man ein Kontextmenü, dass es erlaubt den ganzen Text zu markieren oder auch (in die Zwischenablage) zu kopieren. Ausserdem kann man den Inhalt des  File-Protocols an die Zeilen des Monitors “anhängen” und auch das File-Protocol anzeigen lassen. Schließlich kann man auch den Editor au diesem Menü heraus aufrufen.

6. Mit einem Klick mit der rechten Maustaste in ein Masken-Grid oder einen Browser erhält man (wie gehabt) ein Kontextmenü, in dem nun auch noch die Anzahl der Zeilen angezeigt wird. Ausserdem kann man den Editor mit der Datei des Querys laden, das aktuell gezeigt wied (insofern dieses einen Dateinamens-Bezug hat).

	Some improvements for the developing-engeneers:

	A new key for the application-INI-file section [Config]: DeveloperEditor=. This name will not be varyfied and directly passed to the shell. Who is using UltraEdit should just prompt “Uedit32.exe”  here.

1. With a right-click on the script-name (at the windows bottom left, if the dialog-no-option is switched on) the editor will be opened and the following filenames are passed through: script, mask, and if availiable the masks sql-statement and (also if availiable) the masks view-statement.

2. With a right-click on the statementname in a browser (at the windows bottom left, if the dialog-no-option is switched on), the editor will be opened and the SQL-statement will be loaded (if the browser has a filename related).

3. With a right-click on the on the items SQL-ON and SCRIPT-ON in masks and browsers a list of filenames will be shown. All SQL-files that have been opened since the SQL-Monitor or the SQL-Warner had been activated and all files that have been opened since the SCRIPT-Monitor or the SCRIPT-Warner has been activated will be shown (File-Protocol).

4. With a right-click on the on text-list (LIST_DISPLAY) a popup-menu opens, that allows to mark the whole text and also to copy it to the clipboard.

5. With a right-click on the monitor a popup-menu opens, that allows to mark the whole text, to copy it to the clipboard, to add the lines from the File-Protocol, to show the File-Protokol and to open the editor.

6. With a right-click on the to a grid or browser, a popup-menu opens (as always), but also the record-count will be shown and if the query has a filename related, the editor can be opened with it.

20.04.2003	(7.01.10/476/DD)  Der SQL-Befehl TABLE_2_ASCII wurde um einen optionalen Parameter erweietert: TABLE_2_ASCII TableName {FileName}|{Where-Clause}
	Hinter dem Tabellen-Namen kann wahlweise ein Dateiname angegeben werden und/oder durch ein Pipe-Zeichen (“|”) getrennt eine Where-Bedingung oder auch eine “Order by”-Anweisung. Wichtig: Wenn es sich um eine Where-Bedingung handelt, muß das Wort “WHERE” mit angegeben werden.

	The SQL-command TABLE_2_ASCII has a new optional parameter: 
	TABLE_2_ASCII TableName {FileName}|{Where-Clause}
	After the tablename can either be given the fielname or/and withe pipe-char (“|”) delimitered a where-clause or a “order by”-clause. Note: If a where-clause is given, don't forget to add the “WHERE”-word to that clause.

20.04.2003	(7.01.09/475/DD)  Keine Zeitprüfung im Freien-SQL-Interface mehr.

	No longer the time-checking will be executed while the free-SQL-interface is open.

20.04.2003	(7.01.08/474/DD)  Alle String-Felder werden beim Daten-Import (ASCII_2_TABLE oder der Datenimport mittels des Werkzeugkastens) von den Zeichen “ ' ´` befreit und wenn der Schlüßel “BckSlshIntroSpecChar” in der [SQL]-Sektion der Applikations-INI-Datei gesetzt ist, wird dies auch sofort beim Import berücksichtigt.

	All strings, that are imported with the cara-engine (ASCII_2_TABLE or the import from out of the tool-box) will be filtered from the chars “ ' ´` and if key “BckSlshIntroSpecChar” is set in the section [SQL] in the application-ini-file, also all “\” will be replaced by a “\\”.

19.04.2003	(7.01.07/473/DD)  Zwei neue optionaler Parameter für die Befehle 
		QUERY_DESCR_TOP,  QUERY_DESCR_NEXT:
			[name], [string], [numDataType] {, [numDataSize] {, [boolIsIndex]{, [strIndexInfo]}{, [strOriName]}}}

			In [strIndexInfo] enthält mit Pipe-Zeichen getrennt folgende Informationen :
			Name			der dem Index von der Datenbank vergeben wurde
		 	CaseInsFields 		meistens leer, Feldname(n) wenn CaseInsensitive angegeben wurde
		 	DescFields 		meistens leer, Feldname(n) wenn Descending angegeben wurde
		 	Expression		meistens leer, Schlüsselausdruck, wenn einer angegeben wurde
		 	Source			enthält den Namen für einen gewarteten dBASE-Index (MDX-Datei)
		 	Abrev   			Vorschlag für Abkürzung, die vor den FeldNamen gesetzt werden
						könnte um den Index zu Bezeichnen. Beruhend auf den Syntax-
						Gewohnheiten der CSH-Entwickler: Jeder Index startet mit dem Kürzel
						“Ind”, gefolgt von einem Kürzel für den Tabellen-Namen und daran wird
						der Feldbezeichner angehängt.
		 	Suggestion		Vorschlag für die Index-Benennung
			Optionen des Index	Folgende Werte können mit Kommata getrennt zurückgegeben werden:
						PRIMARY		Primärschlüssel
						UNIQUE			eindeutiger Schlüssel
						DESC			absteigend sortiert
						NOTCASE		unabhängig von Groß- und Kleinschreibung
						EXPRESSION	dBASE-Schlüsselausdruck (nur dBASE)
						NOTMAINT		nicht automatisch aktualisiert

			In [strOriName] wird der Feldname in original-Schreibweise zurück gegegeben (Klein und Groß-
			schreibweise betreffend)

			Two new optional parameter for the following commands:
		QUERY_DESCR_TOP,  QUERY_DESCR_NEXT:
			[name], [string], [numDataType] {, [numDataSize] {, [boolIsIndex]{, [strIndexInfo]}{, [strOriName]}}}

			In [strIndexInfo] the following informations are passed with pipe-chars (“|”) delimited:
			Name			the index-name that has been made by the database 
		 	CaseInsFields 		mostly empty, fieldname(s) if caseinsensitive has been defined 
		 	DescFields 		mostly empty, fieldname(s) if descending has been defined 
		 	Expression		mostly empty, key-value if one has been made
		 	Source			holds the name of an waited dBASE-index (MDX-file)
		 	Abrev   			Suggestion for an abbriviation that could be placed in front of the
						fieldname to name the index. This is based on the syntax-usage of the
						CSH-programers: Every index-name starts with the chars “Ind” followed
						by an abbriviation for the table-name and than followed by the
						fieldname.
		 	Suggestion		Suggestion for the name of the whole index.
			Options of the index  	The following values can be passed with colons delimited:
						PRIMARY		primary key
						UNIQUE			unique key
						DESC			descending ordered key
						NOTCASE		not case sensitive key
						EXPRESSION	dBASE-key-value (only dBASE)
						NOTMAINT		not automaticly actualized key

			In [strOriName] the field-name will be returned in original-form (case-sensifive-writing)

18.04.2003	(7.01.06/472/DD) Alle Uhrzeiten werden von nun an an List&Label ohne Sekunden weitergegeben.
	
	All time-fields will be passed to List&Label without seconds from now on.

17.04.2003	(7.01.05/471/DD) Im Werzeugkasten wurde der Dialog zum Einstellen der Bildschirm-Auflösung erweitert. Die Größe der Listen-Zeilen kann ab jetzt prozentual zur aktuellen Feldgröße justiert werden. Die Einstellung wird Stations-Spezifisch gespeichert. Eine allgemeine Voreinsellung kann in der Applicaktins-INI-Datei in der Sektion [Config] mit dem Schlüssel ListDisplay=xxx festgelegt werden. Wobei “xxx” dem Prozentsatz entspricht.
	
	The toolbox-dialog for the resolution of the application has been extended. The list-lines can be justified procentual to the field-sizes. This property will be saved seperatly for every station. A common predefinition can be made in the application-ini-file in the section [Config] with the key ListDisplay=xxx. Where “xxx“ is the precent-value.

17.04.2003	(7.01.04/470/PB) Falls der Kalendar-Knopf angeklickt wird, wenn die Eingabemarke sich in einer Maske in einem Zeit-Eingabefeld befindet, wird ab jetzt ein Dialog zum Einstellen der Uhrzeit gezeigt.
	
	If the calendar-butten is pressed, while the cursor is a time-entryfield within a mask, a time-dialog will be shown from now on.

17.04.2003	(7.01.03/469/MS) Der Monitor konnte bisher nur 20000 Zeilen fassen, ab jetzt können es 10mal mehr sein.
	
	The monitor could only hold 20000 lines. From now on it can hold 10 times more.

16.04.2003	(7.01.02/469/GH) Verbesserung der Änderung (5.03.26/330/DD). im UserLoginFile werden auch die LogOut-Informationen gespeichert. Alle Gründe für Programmabbrüche (wie z.B. Lizenz-Verletzungen, Update-Script-Abbruch, SQL-INIT-Script-Abbruch etc.) werden ebenfalls verzeichnet.

	Improvement of change (5.03.26/330/DD). In the userloginfile all logout-informations will be saved from now on. This also includes program-abrorts like license-violations, update-script-aborts, SQL-init-Script-aborts a.s.o.

08.04.2003	(7.01.01/468/DD) Nach dem das XP-Manifest integriert wurde, mußte die OnPaint-Routine der Masken (in der sich unter anderem auch der IsReadyHook befindet) neu gestaltet werden. Daher wird die Anzahl, wie oft die Maske neu gezeichnet wurde, nicht mehr unten im Fenster angezeigt, sondern an die neue Masken-Variable [mask!MASK_PAINT_COUNTER] weitergegeben.
	
	After introducing the XP-Manifest, the mask-OnPaint-routine has to be redefined. So the amount of paintings of the mask will not be displayed at the bottom of the mask any longer, it is passed to the mask-variable [mask!MASK_PAINT_COUNTER].

02.04.2003	(7.01.00/467/DD) In das Projekt wurde das XP-Manifest integriert. Damit werden alle Dialog-Elemente  auf XP-Systemen im XP-Style dargestellt.
	
	The XP-Manifest has been integrated into the project. So the Application appears in XP-Style on XP-Systems. 

02.04.2003	(7.00.20/466/HB) Mit dem neuen Dialogelement 'METER' kann ein Fortschrittsbalken angezeigt werden. Der “Inhalt” der Itemzeile ist der Start-Prozentwert. In der “Maske” der Itemzeile können die Dateinamen von zwei (mit Pipe-Zeichen getrennten) Bilddateien für den verwendeten und nicht verwendeten Hintergrund angegeben werden (Pfad-Konstanten sind erlaubt). Wenn die Balken-Höhe größer als dessen Breite ist, wird der Fortschritt vertikal angezeigt. Ein Fortschrittsbalken kann mit dem Befehl METER_SET gesteuert werden.

	Neuer Befehl: METER_SET [mask], 'FieldName', numOpt, 'strValue'
			Setzt die Optionen eines METER-Feldes mit dem 'FeldName' in der [mask]. numOpt kann folgende
			 Werte annehmen:
				[METER_OPT_PERCENT]				strValue wird in einen Interger-Wert gewandelt 
											und setzt den Prozentwert 
				[METER_OPT_USED_IMAGE]			strValue sollte einen gültigen Dateinamen
											enthalten, der das Hintergrund-Image für den
											verwendeten Bereich der Prozentanzeige setzt.
											Nur Bitmap-Datein sind erlaubt.
											Ein Leerstring entfernt das Hintergrund-Image.
				[METER_OPT_UNUSED_IMAGE]		strValue sollte einen gültigen Dateinamen
											enthalten, der das Hintergrund-Image für den
											nicht verwendeten Bereich der Prozentanzeige
											setzt. Ein Leerstring entfernt das Hintergrund-
											Image. Nur Bitmap-Datein sind erlaubt.
				[METER_OPT_SHOW_PERCENT]		strValue wird in ein Boolean-Wert übersetzt und
											bestimmt, ob die Schrift der Prozentanzeige
											angezeigt wird oder nicht.
				[METER_OPT_INVERT_PERCENT]		strValue wird in ein Boolean-Wert übersetzt und
											bestimmt, ob die Schrift der Prozentanzeige
											invertiert dargestellt wird oder nicht.
				[METER_OPT_USED_COLOR]			strValue wird als Farb-Name interpretiert bzw. 											als HTML-HEX-Farbe und setzt die Farbe für
											den verwendeten Bereich der
											Fortschrittsanzeige.
				[METER_OPT_UNUSED_COLOR]		strValue wird als Farb-Name interpretiert bzw. 											als HTML-HEX-Farbe und setzt die Farbe für
											den nicht verwendeten Bereich der
											Fortschrittsanzeige.
				[METER_OPT_FONT_COLOR]			strValue wird als Farb-Name interpretiert bzw. 											als HTML-HEX-Farbe und setzt die Farbe für
											den Text der Prozentangabe.
				[METER_OPT_ORIENTATION]			Wenn strValue den Wert 'vertical' enthält, wird
							 				die Ausrichtung des Fortschrittbalkens vertikal
											anderenfalls horizontal verlaufen.

	With the new dialogelement 'METER' a processbar can be displayed.The “contents” of the item-line  holds the start value in percent. In the “mask” of the item-line two (with pipe seperated) filenames for the background of the used and unused part of the processbar can be placed (path-constants are allowed). If the bar-height ist bigger than ist width, the orientation of the progress will be verticaly. A processbar can be controled with the new command METER_SET.

	New command: METER_SET [mask], 'FieldName', numOpt, 'strValue'
			Sets the options of the METER-field with the name 'FieldName' in the [mask]. numOpt can hold the
			following values:
				[METER_OPT_PERCENT]				strValue will be treated as an interger-value and 
											sets the percent-value.
				[METER_OPT_USED_IMAGE]			strValue should hold a valid filename that will be
											the background of the used part of the
											progressbar. An empty string removes the
											image. Only bitmap-files are allowed.
				[METER_OPT_UNUSED_IMAGE]		strValue should hold a valid filename that will be
											the background of the unused part of the
											progressbar. An empty string removes the
											image. Only bitmap-files are allowed.
				[METER_OPT_SHOW_PERCENT]		strValue will be treated as a boolean-value. It 
											defines, if the percent value should be
											displayed.
				[METER_OPT_INVERT_PERCENT]		strValue will be treated as a boolean-value. It 
											defines, if the font of the characters of the 												percent value should be displayed inverted.
				[METER_OPT_USED_COLOR]			strValue will be treated as a color or a 
											HTML-HEX-color and sets the color of the used
											part of the progress-bar.
				[METER_OPT_UNUSED_COLOR]		strValue will be treated as a color or a 
											HTML-HEX-color and sets the color of the 	
											unused part of the progress-bar.
				[METER_OPT_FONT_COLOR]			strValue will be treated as a color or a 
											HTML-HEX-color and sets the color of the 	
											font that displays the percent value of the 
											progress-bar.
				[METER_OPT_ORIENTATION]			If strValue has the value 'vertical' the orientation
											of th eprogress-bar will be vertical otherwise
											horizontal.

24.03.2003	(7.00.19/465/GH) Das Anlegen von Benutzerdaten ist ab jetzt nur noch möglich, wenn ein Benutzername angegeben wurde und wenn die UserID nicht bereits vergeben ist.

	From now on, the creation of user-login-data is only possible, if a username has been defined an the userid ahs not been used already.

24.03.2003	(7.00.18/464/DK) Seit der Änderung 6.03.00/434/DD vom 19.09.2002 ist der Zugriff auf externe Datenbanken mittels BDE (bis dato ungenutzt) nicht mehr möglich gewesen. Dieser Fehler ist behoben.

	Since update 6.03.00/434/DD from 19.09.2002, the connect to an external database via BDE (not used until now) was impossible. This erreor has been removed.

19.03.2003	(7.00.17/463/DD) Neue Syntax in Query: z.B. [L”3”]. Erlaubt das Ein- bzw. Ausbelnden eines Feldes auf Ebene des Benutzer-Rechte-Levels.

	New syntax for querys: e.g. [L”3”]. Allows to show or hide a field depending on the actual user right level.

19.03.2003	(7.00.16/462/DD) Die Variable [ACT_RIGHT_FLAG] Kann ab jetzt während der Laufzeit verändert werden. Dies ist insbesondere dann notwendig, wenn man die Rechte, die für einen bestimmten Menüpunkt vergeben hat, an ein Script weitergeben möchte, das von keinem Menü-Punkt erreichbar ist und somt auch keinerlei Rechte-Werte hat – ODER – wenn man ein Sricpt mit unterschiedlichen Rechten von verschiedenen Menüpunkten aus aufrufen können möchte.

	The varialble [ACT_RIGHT_FLAG] can be changed while runtime from now on. This specialy is neccassary, in case of giving rights to a called script, that does not appear in the menu-items, and so no right flag could be assigned to it – OR – in case that a script can be called from different menu-items with different right-models passed through to it.

19.03.2003	(7.00.15/461/DD) In der Terminliste, die gezeigt wird, wenn ein Termin fällig wird, gibt es nun eine Check-Box, mit der man alle gezeigten Termine gleichzeitig zur Kenntnis nehmen kann.

	In the list, that is shown, whenever an appointment time has been reached, a check-box is availiable from now on, that provides the user to accept all shon dates at once.

07.02.2003	(7.00.14/460/DD) Die Vordergrundfarbe selektierter, hevorgehobener Browser- & Gridzeilen kann ab
		jetzt eingestellet werden und ist bei LapTops ab jetzt sichtbar (rot auf schwarz und nicht mehr
		schwarz auf schwarz).

	The foreground color of selected and signed browser- and grid-lines can be user-defined from now on. So it is visible on LapTop (red on black rather better than black on black).

06.02.2003	(7.00.13/459/KP) Die Darstellung von Datumsfeldern in Grids und Browsern wurde erweitert für Datenmasken vom Typ “yyyy-mm-dd” (MySQL 4.x).

	The display of date-fields in grids an browsern has been extended to date-pictures “yyyy-mm-dd” (MySQL 4.x).

02.02.2003	(7.00.12/458/HB) Das Ausführen von URLs im HTML-Style, kann nun auch erfolgen, wenn diese auf Java-Script und Sprungmarken verweisen.

	URLs can be executetd in the html-style window, if they point to an java-script or a jump-mark.

02.02.2003	(7.00.11/457/HB) Seit der Umstellung auf Delphi 7 wurde das Hauptfenster stets zentriert geöffent, auch wenn der Benutzer andere Vorgaben gemacht hatte. Der Fehler ist behoben.

	Since the switch to Delphi 7 the main windows was opened centered, even though the user made different settings. This error has been removed.

23.01.2003	(7.00.10/456/DD) Seit der Änderung (7.00.08/454/DD)  vom 15.01.2003 wurden Boolean-Werte in Querys teilweise falsch interpretiert. Dieser Fehler ist behoben.

	Since change (7.00.08/454/DD)  from 15.01.2003 the interpretation of boolean-values within querys have been partly wrong. This error has been removed.

15.01.2003	(7.00.09/455/DD) Die Befehle  DBL_BACK_SLASH und SGL_BACK_SLASH können von nun an beliebig oft hinter einander ausgeführt werden, ohne dass das Ergebnis sich unterscheided. Damit kann man den Befehl auch dann ausführen, wenn man sich nicht sicher ist, ob er überhaupt zur Anwendung kommen sollte.

	The comands DBL_BACK_SLASH and SGL_BACK_SLASH could be executed many times in a row, without affecting the result. So the comands can also be executed, if one is not shure if it is necessary to do so.

15.01.2003	(7.00.08/454/DD) Beim Exportieren von Daten werden numerische Daten defekter Datensätze ab jetzt so interpretiert, dass zum einen ein Abbruch des Exports unterdrückt wird und zum Anderen der Wert mit 0 initialisiert wird.

	While exporting data, the values of numeric field from damaged records will be interpreted as 0 and the export will not stop.

14.01.2003	(7.00.07/453/KP) Beim Export von Daten mit dem Listengenerator oder mit dem Befehl TABLE_2_ASCII werden Datums- und Zeit-Werte ab jetzt bei der Ausgabe so formatiert, wie es die Vorgaben in der INI-Datei “DatePicture4Modify” und “TimePicture4Modify” vorsehen.

	Date- and time-values will be formated while the export with the listgenerator or the comand “TABLE_2_ASCII” as it is defined in the ini-file-keys “DatePicture4Modify” und “TimePicture4Modify”.

12.12.2002	(7.00.06/452/DD) Im Werkzeugkasten gibt es nun die Möglichkeit, TimeStamps aus einem Datum
		und einer Zeit zu errechnen bzw. aus einem TimeStamp das Datum und die Zeit zu extrahieren.

	In the tool-box is a timestamp-calculator availiable now. It allows to extract the date and time out of a timestamp and also to build a timestamp out of a date and time.

12.12.2002	(7.00.05/451/DD) Neuer Schlüssel für die Applikations-INI-Datei, in der Sektion [Config]: 
	LLLibrary=cm32l9xl.llx;cm32l9ob.llx;cm32l9pw.llx;cm32l9ht.llx;cm32l9ex.llx;cm32l9oc.llx;cm32l9bc.llx
	Der hier angegebene Wert (VAR_STR) gibt an, welche Module innerhalb der Anwendung von List & Label eingebunden werden können. Über diese Module werden auch DLLs in die Anwendung eingebunden. Durch die vielen Möglichkeiten, die List & Label anbietet, kann das die Zahl 64 (im Zusammenhang mit anderen geladenen DDLs  während der Laufzeit) übersteigen. Dies ist aber unter Win9x und WinNT nicht erlaubt. Ab Win2000 sind 1024 möglich. Mit dieser Option können Module ausgeschlossen werden, die nicht benötigt werden und der Laufzeit-Fehler 226 kann vermieden werden. Wenn ein Modul unterdrückt werden soll, muss ein "^" vorangestellt werden. z.B. ^cm32l9bc.llx
	List & Label - Library – Module und ihre Bedeutung:
		cm32l9ex.llx	Export-Format: HTML, PDF, RTF, XML, MHTML
		cm32l9xl.llx	Export-Format: Excel
		cm32l9ob.llx	Chart-Objekte
		cm32l9oc.llx	OLE-Objekte
		cm32l9ht.llx	HTML-Objekte
		cm32l9pw.llx	Projekt-Assistent
		cm32l9bc.llx	PDF 417/ Maxicode Barcode
	
	New key for the application-ini-file, section [Config]:
	LLLibrary=cm32l9xl.llx;cm32l9ob.llx;cm32l9pw.llx;cm32l9ht.llx;cm32l9ex.llx;cm32l9oc.llx;cm32l9bc.llx
	The value configures which modules of L&L should be loaded.  Over the moduls are dlls bound into the application. By the many opportunities, that are provided by L&L, this could extend the amount of 64 (including other dlls, loaded while runtime). Using Win9x or WinNT, this is not possible. From Win2000 on, this has been increased up to 1024. It is possible to exclude modules that are not needed, with this new option, to prewend the runtime-error 226. If a module should be excluded, a “^” must be placed in front of it. E.g. ^cm32l9bc.llx
	List & Label - Library – Modules and their meanings:
		cm32l9ex.llx	export-format: HTML, PDF, RTF, XML, MHTML
		cm32l9xl.llx	export-format: Excel
		cm32l9ob.llx	chart-objects
		cm32l9oc.llx	OLE-objects
		cm32l9ht.llx	HTML-objects
		cm32l9pw.llx	project-assistent
		cm32l9bc.llx	PDF 417/ Maxicode Barcode

11.12.2002	(7.00.04/450/TW) Neuer Schlüssel für die Applikations-INI-Datei, in der Sektion [Config]: TimeStampChange=0. Der hier angegebene Wert (VAR_FLOAT) wir beim Erstellen eines aktuellen TimeStamps/RecordID addiert. Der Wert kann auch negativ sein. Damit kann man asynchron arbeitenden Filialen einen eigenen RecordID-Rahmen zuordnen und beim späteren Zusammenführen von Datensätzen Kollisionen vermeiden. Dieser Wert wird nur beim Anlegen von Datensätzen aus Masken und bei dem Befehl NEW_RECORD angewandt. Der Wert ist durch die globale Variable [TIME_STAMP_CHANGE] verfügbar.
	Info: Ein Jahr “Abweichung” entspricht dem Wert 3908538400 = 101 * 61 * 61 * 25 * 32 * 13.

	New key for the application-ini-file, section [Config]:  TimeStampChange=0. The given value (VAR_FLOAT) will be added to every timestamp/recordid, that will be produced. This value can also be negative. So collisions can be avoided when the data of asynchron working firms should be joined. This value will be always used on calling the function NEW_RECORD or inserting a record from out of a mask. This value is availiable through [TIME_STAMP_CHANGE].
	Info: One year “difference” is 3908538400 = 101 * 61 * 61 * 25 * 32 * 13.

11.12.2002	(7.00.03/449/DD) Seit der Änderung 5.01.04/263/OG wurden bei neu installierten  Stationen nicht keine eindeutigen StationID mehr vergeben, dieser Fehler ist behoben. 

	Since the change 5.01.04/263/OG a new installed station did not receive a unique stationid. This error has been removed.

11.12.2002	(7.00.02/448/HB) Im Browser kann jetzt zum Eingeben einer Schnellsuche auch der Nummernblock eingesetzt werden.

	The numeric-keyboard-pad can be used for the fastserach-option in all browsers from now on.

11.12.2002	(7.00.01/447/DD) Erweiterung der Such-Algorithmen der CARA-Engine. Neben der Voll-Text- und Rela-Suche und dem “normalen” Suchen in Maskenfeldern, kann es gelegentlich vorkommen, dass man - je nach dem welche Suchart verwendet wurde - eine weitere “Where-Clause” in das Query eingebaut werden soll.
	Um eine weitere Where-Clause (pro Feld) zu ermöglichen, wurde die Masken–Definitions–Datei um eine Optionen erweitert. In der ITEM-Zeile der Dialogelement-Definition wurde ein 10. Parameter angefügt. Es handelt sich um einen String, der folgendermassen aufzubauen ist:

		'Bedingung1{|Bedingung2{|...}}:Where-Clause'

		Die eigentliche "Where-Clause" ist am Ende mit einem ":" von den "Bedingungen" getrennt. 			Bedingung = wann soll die Where-Clause eingesetzt werden. Mögliche Bedingungen:
		REL 	Die Where-Clause soll beim RelaSearch eingesetzt werden.
		FTS     	Die Where-Clause soll bei der FTS-	Suche eingesetzt werden.
		QueryID	Die Where-Clause soll bei dem Query mit der angegebenen ID eingesetzt werden.

		Wichtig	1. Wenn keinerlei Bedingung angegeben wurde, wird die Where-Clause nicht angebaut.
			2. Wenn die Bedingung immer eingesetzt werden soll, muss man also
			 "FTS|REL|QueryID1|..." angeben. Aber: dann kann man die Where-Clause auch weglassen,
			denn in so einem Fall kann sie im Query standardmäßig untergebracht werden und hier
			muss keine Rechen-Zeit vergeudet werden.

	Beispiel:
	ITEM 2070101,	 'LABEL', 2.00, 2.00, 12.00, 1.00, 'RIGHT'
	VIEW 		 'Artikelnummer', '', '', 2070100
	HINT		 'Artikelnummer'
	ITEM 2070102, 'STRING', 15.00, 2.00, 21.00, 1.00, 'FTS', 0, 'Kurzbezeichnung', 'FTS|2070002:Aktuell > 0'
	VIEW		  '', 'XXXXXXXXXXXXXXXXXXXX', 'ARTIKELNUMMER', 2070100
	HINT		 'Artikelnummer'

	Hier nochmals die Parameter mit ihren Bedeutungen:
	2170102				Eindeutig zu vergebender Dialogelement-Index
	'STRING'				Dialogelement-Daten-Typ
	15.00					X-Position relativ zum übergeordneten Dialogelement 
	2.00					Y-Position relativ zum übergeordneten Dialogelement 
	21.00					Breite des Dialogelementes 
	1.00					Höhe des Dialogelementes 
	'FTS'					Optionen des Dialogelementes (z.B. PROTECTED)
	0					Level, den der Benutzer mindestens haben muss, um
						dieses Dialogelement sehen zu können
	'Kurzbezeichnung'			relational zu durchsuchende Felder (Rela-Search)	
	'FTS|2070002:Aktuell > 0'		Wenn die Volltextsuche  (FTS) oder das Query
						207002 ausgeführt werden, soll noch “Aktuell > 0” in
						das Query eingebaut werden.

	
 	Extension of the search-arorythm of the CARA-engine. Beneth the full-text-search and rela-serach and the “normal” search im mask fields, somtimes it is neccesary to add a spacial where-clause to the search-query, depending on the type of search, that should be processed.
	To add another where-clause (per field), the mask options have been extended. In the item-line of the dialogelement-definition, a 10th parameter has been added. It is a string-parameter, that have to be build as follows:

		'condition1{|condition2{|...}}:Where-Clause'

		The "where-clause" is placed at the end of the string, seperated with a “:” from the conditions. 
		“condition” means “in what case should this where-clause be added to the query”. Possible conditions
		are:

		REL 	the where-clause should be used in case of a rela-search
		FTS     	the where-clause should be used in case of a full-text-search
		QueryID	the where-clause should be used, when the query with the given ID is processed

		Importend:	1.	If no condition is given, the where-clause will not be added to the query 
				2.	If the condition should be used always, something like this should be						used: "FTS|REL|QueryID1|..." BUT: Than it could also be added to the
					standard-query, and the additional processing time could be saved...

	Example:
	ITEM 2070101,	 'LABEL', 2.00, 2.00, 12.00, 1.00, 'RIGHT'
	VIEW 		 'Article #', '', '', 2070100
	HINT		 'Article-Number.'
	ITEM 2070102, 'STRING', 15.00, 2.00, 21.00, 1.00, 'FTS', 0, 'Matchcode', 'FTS|2070002:Actual > 0'
	VIEW		  '', 'XXXXXXXXXXXXXXXXXXXX', 'Articlenumber', 2070100
	HINT		 'Article-Number.'

	Here again the parameters and their meaning:
	2170102			unique dialogelement-index
	'STRING'			dialogelement-data-typ
	15.00				X-position relativ to the superior dialogelement 
	2.00				Y-position relativ to the superior dialogelement 
	21.00				width of the dialogelementes 
	1.00				height of the dialogelementes 
	'FTS'				optionen of the dialogelementes (e.g. PROTECTED)
	0				level, that the user at last mmust have to be able to see this
					dialog-element
	'matchcode'			relational to be searched fieldnames  (Rela-Search)	
	'FTS|2070002:Actual > 0'	If the full-text-search (FTS) or the query with the id 207002
					should be executed, the where-clause “Actual > 0” will be
					added to  query.

11.12.2002	(7.00.00/446/DD) Die CARA-Engine wird ab jetzt mit Delphi7 compiliert.

	The CARA-Engine will be compiled with Delphi7 from now on.

27.11.2002	(6.04.03/445/DD) Neuer Schlüssel für die Applikations-INI-Datei, in der Sektion [Config]: LLDebugMode=. Folgende Werte sind (auch kombiniert duch Addition) möglich:
			1	zum Einschalten der normalen Debugging-Info
			2	zum Einschalten der Debugging-Info für Grafikfunktionen
			4	LL-Debugging, aber keine Callback-Info
			8	LL-Debugging, aber keine StgAPIInfo
			16	z. Zt. undokumentiert
			32	Kein System-Informations-Dump beim Einschalten des Debugging-Modus
			64	Die Ausgaben werden auch in eine Log-Dateinamens  COMBIT.LOG im Windows-
				Verzeichnis geschrieben.

			Über die globale Variable LL_DEBUG_MODE kann dieser Wert erreicht und auch verändert werden.

			New key for the application-ini-file, [Config]-section: LLDebugMode=. The following values are (also
			as a combination) possible:
			1	to switch on the normal debuging info
			2	to switch on the graphic debuging info 
			4	LL-debuging, but no callback info
			8	LL-Debugging, but no StgAPI info
			16	undocumented 
			32	no system-information-dump on switching on the debuging-Modus
			64	the output will also be written to a log-file named COMBIT.LOG in the windows-directory

			Through the new global variable  LL_DEBUG_MODE this value can be accessed and modified.

27.11.2002	(6.04.02/444/DD) Erweiterung des CALC–Befehls um eine neue String-Funkton: LOWCASE(). Ab jetzt können Strings komplett in Kleinbuchstaben umgewandelt werden. Beispiel:
	CALC [TmpStr] AS LOWCASE([TmpStr]) 

	A new string-function extends the CALC-comand : LOWCASE(). From now on strings can be converted to lowercase like this e.g.: CALC [TmpStr] AS LOWCASE([TmpStr]) 

13.11.2002	(6.04.01/443/DD) Bei allen Datenbankabfragen, die fehlschlagen, werden ab jetzt die Fehlermeldungen der Datenbank mit angezeigt bzw. durchgereicht an den SQL-Monitor..

	For all querys, that fails, the messages of the database will also be shown resp. transfered through to the sql-monitor.

11.11.2002	(6.04.00/442/DD) Umstellung auf List & Label Version 9. Alle Druckjobs, die unter LL8 definiert wurden, müssen überarbeitet werden, damit ein problemfreier Lauf mit LL9 möglich ist.

	Change to List & Label Version 9. All printprojects, that have been designed with LL8 must be redesigned and modified with LL9.

14.10.2002	(6.03.07/441/DD) Beim Import von Daten wird ab jetzt für den Fall, dass das Feld “RecordID” teil des Imports ist (also in der Header-Zeile der ASCII-Datei auch wirklich genauso heisst), das wiederholen des Speicherns gar nicht erst versucht, wenn es scheitern sollte, ausserdem wird keine Wartezeit mehr eingehalten (500ms), um den Versuch für das Speichern des nächsten Datensatz zu starten.

	For the import of data, in case, that the field “recordid” is part of the import (it must be part of the header-line in the ascii-file and have exact that name), a retry for saving a record will not be done in case of a saving failure and also there will be no delay (500ms) before the try, to save the next record, will be started.

09.10.2002	(6.03.06/440/DD) Im Befehl FIELD_FLAG_ON_OFF kann ab jetzt der Parameter der das Maskenfeld bezeichnet ebenfalls Inherited-Vars enthalten.

	The second parameter (that specifies the mask-field) of the comand FIELD_FLAG_ON_OFF can also be defined with inherited-vars from now on.

09.10.2002	(6.03.05/439/DD) Der Applikations-INI-Datei-Schlüssel aus der Sektion [SQL] MaxFlds4Update wird ab jetzt auch bei allen Mask-Updates beachtet. Der Vorgabewert ist nun 10000. Es ist deshalb notwendig, in allen INI-Dateien, die die CARA-Engine mit einer MS-ACCESS-Datenbank verbinden diesen Wert z. B. auf ca. 100 bis 150 zu setzten. 

	The apllication-ini-file-key from section [SQL]  MaxFlds4Update will be regarded in all mask-updates from now on. The default-value will be 10000. So it is good to set it in every INI-file, that is connecting the CARA-Engine to a MS-ACCESS-database to e. g. 100 up to 150.

09.10.2002	(6.03.04/438/DD) Neuer Schlüssel für die Applikations-INI-Datei: MainFormFocus=0 oder 1 0der 2. Dieser Wert hat vor allem Bedeutung für den HTML-Style. Wenn man hier den Wert “0” vorgibt, erhält der HTML-Browser beim Start und nach dem Verlassen eines Scriptes den Focus. Mit dem Wert 1 wird das Adressfeld den Focus erhalten und mit 2 das Tree-Menü. Das Feld, das beim Schliessen der Anwendung den Focus hat, wird in der Stations-INI-Datei gespeichert und beim nächsten Start dann als Vorgabewert verwendet. Der Benutzer kann damit steuern, welches der drei genannten Dialogelemente den Focus haben soll.

	New key fro the application-ini-file: MainFormFocus=0 or 1 or 2. This value is especially for the HTML-style usefull. With value “0” the html-browser gets the focus on start and after closing a script. With “1” the adress-field gets the focus and with “2” the tree-menu. When the application is closed, the field-id of the field with the focus will be saved to the station-ini-file. So the user can define by himselve, wich field should have the focus.

09.10.2002	(6.03.03/437/DD) Neuer Schlüssel für die Applikations-INI-Datei: ShareTimeOnStart=1 oder 0. Wenn eine Anwendung beim Starten sehr viel Zeit benötigt (z.B. Fast 1 Minute), kann man mit diesem Schlüssel verhindern, dass andere Programme oder Prozesse Rechenzeit während des Startvorgangs erhalten. Das Problem ist bisher nur beim Betriebssystem WindowsXP nach dem Einspielen des Servicepacks 1 aufgetreten.

	New key for the application-ini-file: ShareTimeOnStart=1 or 0. If an application needs a lot of time on startup (e.g. 1 minute), this key denies other application and processes to get process-time while startup. This problem is only known on WindowsXP-systems after updating to servicepack 1.

25.09.2002	(6.03.02/436/DD) Der Befehl SET_LABEL wurde um den optionalen Parameter 'picture' erweitert:
			SET_LABEL[mask],'field','caption' {, 'picture'}
			Setzt die Überschrift des Labels oder des Buttons 'field' in der [mask] auf den Wert 'caption'. Für den
			Fall, dass es sich um einen Button handelt, kann mit 'picture' auch eine Bilddatei geladen werden.
			Die Syntax ist die gleiche wie in der Masken-Datei (“pfad/dateiname.ext|Anzahl der Bilder”) Beispiel:
			'PICTURE_PATH\NOTE.BMP|1'. Relative Pfadangaben sind möglich. Wenn mit dem PIPE-Zeichen
			noch ein “!” in der Masken-Definitionsdatei angehängt wird ('PICTURE_PATH\NOTE.BMP|1|!'), dann
			wird das ursprüngliche Bild bei einem Mask-Clear wieder hergestellt. 

	The comand SET_LABELhas been extended by the optional parameter 'picture'. 
			SET_LABEL[mask],'field','caption' {, 'picture'}
			Sets the 'caption' of the a label or button of the 'field' in the [mask]. If the field represents a button, the
			'picture' could be loaded. The syntax is the same as in the mask-definition-file
			(“path/filename.ext|amount of pictures”) Example: PICTURE_PATH\NOTE.BMP|1'. If another pipe-
			sign is connected and followed by aan “!” to the mask-definition ('PICTURE_PATH\NOTE.BMP|1|!'),
			then, the original picture will be replaced on a mask-clear.

24.09.2002	(6.03.01/435/DD) Masken-Felder, die “Protected” sind, werden ab jetzt mit einem hellblauem Hintergrund dargestellt..

	Mask-field, that re protected, will be displayed with a sky blue background, from now on..

19.09.2002	(6.03.00/434/DD) Das gesamte Handling der Variablen in der Cara-Engine wurde von sequenziell doppelt verketteten Listen auf binär sortierte Listen umgestellt. Allein bei der globalen Variablen-Liste können beim Aufruf einer einzigen Variable dabei bis zu 700 Zugriffe “gespart” werden. Im Durchschnitt werden alle Zugriffe auf eine Variable um das 20 fache verkürtzt.

	The handling of variables in the cara-engine has been changed from double concatenated lists to binary sorted lists. For the access of a singe variable in the global-var-list, this could already mean, that up to 700 accesses could be “spared”. In middle, the accesses should be shortened to th 20th of the fromer situation.

16.09.2002	(6.02.72/433/DD) Das Sortieren von Browsern und Grids mit einem “Rechtsklick” auf einen Spaltenkopf, ist ab jetzt nur noch möglich, wenn die angezeigte Abfrage mindestens einen Datensatz ergab.

	From now on, the sorting of browsers and grids with a “rightklick” on the column-header will be only possible, if the query returns at last one record.

12.09.2002	Wichtiger Hinweis: In MySQL-Tabellen sollte der Datentyp “double” anstelle “float” verwendet werden. Bei Zahlen mit mehr als 8 Stellen (inkl. Dezimalstellen), werden die Nachkommastellen einfach abgeschnitten. Daher wurde auch die Beispiel-INI-Sektions-Datei für MySQL geändert. Diese Änderung kann mit der Datei “sql.exe” von der CARA-Seite herunter gelden werden.

	Importent note: In mysql-tables the datatype “double” should be used instead of “float”. All Values with more than 8 digits (incl. the digits behind the decimal-point) will be truncated behind the decimal-point. For this, the example-ini-file-section for mysql has been changed. This could be downloaded with the file “sql.exe” from the CARA-page.

12.09.2002	(6.02.71/432/DD) Im Listengenerator gibt es für den Export ein weiteres Konfigurationsfeld “Dezimalzahl runden” (Defaultwert ist -1). Wenn dieser Wert grösser oder gleich 0 ist, werden Dezimalzahlen beim Export mit dem Listengenerator auf die hier angegebene Anzahl von Stellen hinter dem Komma gerundet und dann erst exportiert. Dazu wurde auch ein neuer “passender” Schlüssel für die Applikations-INI-Datei zu der Sektion [SQL] angelegt: “SQLExportRoundDec”, der hier angegebene Wert wird im Listengenerator als Vorgabewert verwendet und hat auch Auswirkungen auf den Befehl ASCII_2_TABLE.

	A new configurationfield for the listgenerator exists: “Dezimalzahl runden” (default is -1). If this value is bigger or equal 0 all decimal-values will be rounded to the given amount of digits behind the decimalpoint while the listgenerator-export. Also a new key has been created for the application-ini-file for the section [SQL]: “SQLExportRoundDec”, the value that is set here, will be used as the default-value for the listgenerator and has also effect to the comand ASCII_2_TABLE.

11.09.2002	(6.02.70/431/DD) In Browsern und Grids wird ab jetzt die Spalte, die als erstes Reihenfolgekriterium dient, farbig hinterlegt. Diese Farbe kann im Werzeugkasten unter “Browser- und Grid-Farben” in der Zeile “Hintergrund für das erste Sortierkriterium” festgelegt werden. Ausserdem kann man ab jetzt auf den Kopf einer Spalte bzw. die Spaltenüberschrift mit der rechten Maustaste klicken und die Liste erneut auf- oder absteigend auf Basis der gewählten Spalte sortieren lassen.

	In browsers and grids the column that represents the first order-by-field, has a coloured background from now on. This colour can be set in the toolbox with the item “Browser- und Grid-Farben” in the line “Hintergrund für das erste Sortierkriterium”. Also it is possible from now on, to make a right-klick to a column-header and resort the list ascending or descending by the field-values of the choosen column.

06.09.2002	(6.02.61/430/GH) Neuer Befehl:
			FILE_INFO	[dC], [tC], [dA], [tA], [dW], [tW], [nSz], [nAttr], [sN], [sDos], 'sFN' {{, 'sDir'}, boolSet }
					Gibt die Dateiinformationen der Datei mit dem Namen  'sFN' (string) zurück, wenn
					boolSet FALSE (default) ist. Wenn boolSet TRUE ist, werden die übergebenen
					Informationen zu der angegebenen Datei gespeichert (dazu benötigt man natürlich
					Schreibrechte für die Datei). Optional kann der Dateiname und das zugehörige
					Verzeichnis 'sDir' (string) separat übergeben werden. Folgende Daten können
					abgerufen bzw. gesetzt werden:
						[dC]		(date)	Datum der Anlage
						[tC]		(time)	Zeit der Anlage
						[dA]		(date)	Datum des letzten Zugriffs
						[tA]		(time)	Zeit des letzten Zugriffs
						[dW]		(date)	Datum der letzten Änderung
						[tW]		(time)	Zeit der letzten Änderung
						[nSz]		(num)	Grösse in Byte (kann nicht gesetzt werden)
						[nAttr]	(num)	Datei-Attribut als Flagge, kann folgende Werte
										beinhalten:
										[FILE_ATTR_ARCHIVE]
										[FILE_ATTR_COMPRESSED]
										[FILE_ATTR_DIRECTORY]
										[FILE_ATTR_HIDDEN]
										[FILE_ATTR_NORMAL]
										[FILE_ATTR_OFFLINE]
										[FILE_ATTR_READ_ONLY]
										[FILE_ATTR_SYSTEM]
										[FILE_ATTR_TEMPORARY]
						[sN]		(string)	Name der Datei im Dateisystem (32bit, kann nicht
										gesetzt werden)
						[sDos]	(string)	Alternativer Dateiname im DOS-Dateisystem (kann
										nicht gesetzt werden)
			Wichtig:	Datumsangaben werden unterberücksichtigung der Datumseinstellungen
				in der Systemsteuerung gespeichert. Liegen Datumswerte vor den dort
				gesetzten Grenzen, werden sie nicht gespeichert. 
				In der Dokumentation ist ein Beispiel verfügbar: “FileInfo.csh”

	New comand:
			FILE_INFO	[dC], [tC], [dA], [tA], [dW], [tW], [nSz], [nAttr], [sN], [sDos], 'sFN' {{, 'sDir'}, boolSet }
					Returns the fileinformation of the file with the name 'sFN' (string), if boolSet is 
					FALSE (default). If boolSet is TRUE, the given parameter will be saved to the file 
					(write access-rights are needed ). Optional the filename and the directory can be
					passed seperatly 'sDir' (string). The following data kan be requested or set:
						[dC]		(date)	date of creation 
						[tC]		(time)	time of creation 
						[dA]		(date)	date of last access
						[tA]		(time)	tim  of last access
						[dW]		(date)	date of last change
						[tW]		(time)	time of last change
						[nSz]		(num)	size in byte (could not be set)
						[nAttr]	(num)	file-attribut as a binary flag, can hold the following
										values:
										[FILE_ATTR_ARCHIVE]
										[FILE_ATTR_COMPRESSED]
										[FILE_ATTR_DIRECTORY]
										[FILE_ATTR_HIDDEN]
										[FILE_ATTR_NORMAL]
										[FILE_ATTR_OFFLINE]
										[FILE_ATTR_READ_ONLY]
										[FILE_ATTR_SYSTEM]
										[FILE_ATTR_TEMPORARY]
						[sN]		(string)	name of the file in the filesystem (32bit, could not be
										set)
						[sDos]	(string)	alternative filename in the DOS-filesystem (could not
										be set)
			Note:	Dates will regard the date-settings in the system-controle. If date-values
				are not matching the given borders, they will not be saved.
				In the documentation is an example availiable: “FileInfo.csh”.

06.09.2002	(6.02.60/429/DD) Alle Dateien, die von der CARA-Engine lesend geöffnet werden wie z. B. Scripte, SQL-Anweisungen, Menü- und Masken-Definitionen, Notiz-Vorlagen oder Dateien, die in Scripten lesend geöffnet werden, werden von nun an mit dem ReadOnly-Attribut geöffnet. Dadurch brauchen User nur noch schreibenden Zugriff auf das PrintSet-Verzeichnis zu haben. Falls Druck-Vorlagen im Special-Verzeichnis abgelegt sind, sollten die User dort natürlich auch schreibend zugreifen können.
	
	All reading access of the CARA-engine to files, as scripts, sql-query-files,  menu- and mask-definition-files, note-templates or files, that are opend “reading” from out of a script, will be treated readonly from now on. So users may only need write-acces to the printset-folder. If print-templates where stored in the special-folder, users may also need write-access there.

03.09.2002	(6.02.55/428/DD) An alle SQL-Anweisungen, die ein UPDATE ausführen wird seit der Änderung (4.02.11/151) vom 16.01.2000 in die SET-Anweisung folgender String eingefügt: " ,UpdateTime = [ActuelleZeitID] ". Zusätzlich kann auch die UserID gestezt werden. Dafür sind die Applikations-INI-Datei Schlüssel SetTime4AllUpdates und SetUser4AllUpdates, die mit der  Änderung (5.03.40/344/MB) vom 11.04.2002 eingeführt wurden, verantwortlich.Um das Setzten der UserID auch aus Scripten heraus steuern zu können, ist ab jetzt die neue VIEW_FLAG [BROWSER_FLAG_SET_USER] verfügbar.	

	To all SQL-Update-querys a string could be added to the set-part of the satement (“, UpdateTime = [ActualTimeID] “) since the release (4.02.11/151) from 01/16/2000. Additionally the UserID could be set. Therefore the applikation-ini-file keys  SetTime4AllUpdates and SetUser4AllUpdates have been addedd with the release (5.03.40/344/MB) from 11.04.2002. To have the possiblity to controle or change this key from out of a script, the new VIEW_FLAG [BROWSER_FLAG_SET_USER] is availiable now.

03.09.2002	(6.02.54/427/DD) Mit der Änderung vom 11.07.2002 (6.02.27/404/DD) wurde das Verhalten der Engine beim Schliessen der Maske neu definiert. Durch diese Änderung kommt es gelegentlich auf Grund von Threads (häufiger bei schnelleren Rechnern >= 1GHz) zu Abstürzen. Damit das Verhalten der Engine eingestellt werden kann, wurde ein neuer Schalter in den Werkzeugkasten eingebaut (SaveOnClose) und auch ein entsprechender, gleichlautender Schlüssel in die Sektion [Config] der Applikations-INI-Datei eingebaut. Diese Einstellung wird auch in die Stations-INI-Datei übernommen und kann daher auf jeder Maschine individuell verwaltet werden.
	
	With the release from 07/11/2002 (6.02.27/404/DD) the behaviour of the engine had been changed on closing a mask. With this changes the engines stalls sometimes because of threads (mostly on computers faster than 1GHz). To have the oportunity to configure the engine, a new key has been added to the toolbox (SaveOnClose) and a homonymic key has been added to the [Config] section of the applikation-ini-file. The settings of this key will also be saved to the station-ini-file to have individual settings on each workstation.

03.09.2002	(6.02.53/426/DD) Bei den SQL-Befehlen ASCII_2_TABLE und TABLE_2_ASCII werden die spezielln Bedürfnisse, die bei der Tabelle “notes” auftreten (CRLF sind Bestandteil der Textzeilen) berücksichtigt, indem CRLF (#10#13) durch #253#254 beim Export erstezt werden und beim Import  wieder hergestellt werden.
	
	In the SQL-comands ASCII_2_TABLE and TABLE_2_ASCII the special needs of the table “notes” have been considered: CRLF is part of the textlines. The CRLF (#10#13) will be replaced while the export to #253#254 and will be replaces while import again.

31.08.2002	(6.02.52/425/DD) Neue Erweiterung des CALC-Befehls für Variablen vom Typ VAR_NUM und
		VAR_FLOAT. CALC [var] AS RANDOM(numRange). Damit erhält man eine Zufallszahl zwischen 0
		und numRange.

	New extension of the CALC-comand für variables of type VAR_NUM and VAR_FLOAT. CALC [var] AS RANDOM(numRange). With this a randomized value will be returned between 0 and numRange.

29.08.2002	(6.02.51/424/DD) Beim Speichern von Dokumenten-Namen im Dokumentenmanager wird ab jetzt auch beim Dateinamen der Vorlage der Dokumenten-Pfad ersetzt und die Dopple-BackSlash-Einstellung der INI-Datei berücksichtigt.

	For the storage of filenames in the documentmanger, the filename of the template will have a replacement of the documents-path and the DoubleBackSlash-INI-Key will also be regarded.

29.08.2002	(6.02.50/423/DD) Nach dem einmaligem Überschreiten der maximalen Benutzerzahl, konnte sich kein weiterer Benutzer mehr anmelden. Danach wurden dann innerhalb kürzester Zeit alle User “rausgeworfen” und konnten sich auch nicht mehr anmelden. Nach langer Suche ist dieser Fehler endlich behoben!!!

	After the maximal amount of users has been exceeded once, no one else could log into the application afterwards. Also all working users were “thrown out” shortly afterwards. After a long trace, this error finally has been removed!!!

28.08.2002	(6.02.49/422/DD) Neue Konstante: [TEMP_FILES_PATH]. Sie enthält den Pfad zum Temp-Verzeichnis des angemeldeten Users der aufrufenden Workstation.

	New constand: [TEMP_FILES_PATH]. It contains the path to the temp-directory of the logged user on the executing workstation.

21.08.2002	(6.02.48/421/DD) Erleichterung für Programmierer, die an diversen Kunden-Anwendungen arbeiten müssen: In der Registry kann man manuell im Schlüssel  “HKEY_LOCAL_MACHINE\SOFTWARE\Cara” für die 9 Anwendungs-Standardpfade “DataPath”, “SpecialPath”, “ScriptPath”, “SetDocPath”, “SQLPath”, “PrintSetPath”, “PicturePath”, “DocumentPath” und “HelpPath” eine Pfadangabe hinterlegt werden, die beim Start einer beliebigen CARA-Anwendung verwendet werden, wenn die entsprechenden Verzeichnisse bei der Anwendung nicht zu finden sind. Man kann es sich also sparen, in jeder einzelnen Installation das Picture, Help, Document Verzeichnis anlegen zu müssen, da diese dann vom Standard gelesen werden.

	Easement for programers, that are working with various different customer-applications: From now on, the nine application-standrad-paths can be set manually In the registry key “HKEY_LOCAL_MACHINE\SOFTWARE\Cara”. The values for “DataPath”, “SpecialPath”, “ScriptPath”, “SetDocPath”, “SQLPath”, “PrintSetPath”, “PicturePath”, “DocumentPath” and “HelpPath” will be retrieved while application-start and used, if the application has no related directory on it self. So it saves time and diskspace, because it is not longer necesary to have a picture-, help- and document-directory in each installation – the standard could be used instead.

20.08.2002	(6.02.47/420/DD) Diese Änderung betrifft nur die ODA-Version: Wenn die DAO-Dateien vorhanden sind, eine Registrierung der DAO-DLL aber nicht erfolgen konnte (meist unter WIN2K oder WINXP), wird von nun an keine erneute Installation erzwungen.
	
	This change is only related to the ODA-version: If the DAO-files are existing, but their registration failed (mostly under WIN2K or WINXP), a new installation well not be forced from now on.

11.08.2002	(6.02.46/419/DD) Neuer Schalter in der Sektion [SQL] “IfExists=”. Hiermit kann eine Zeichenfolge angegeben werden, die dem Befehl “IF EXISTS”  entspricht, der bei verschiedenen SQL-Drivern verwendet werden kann, um zu verifizieren, ob eine Tabelle in der Datenbank existiert. Beispiel: “DROP TABLE IF EXISTS Test”. Dieser INI-Datei-Schlüssel wird an die globale Variable [SQL_IF_EXISTS] weitergegeben und kann in allen SQL-Anweisungen verwendet werden. Dies soll einen Datenbank-Treiber unabhängigen und durch die INI-Datei gesteuerten Umgang mit SQL-Befehlen gewährleisten.

	New key for the section [SQL] “IfExists=”. Where it is possible to define a string, that holds the comand “IF EXISTS”, that is supported by various SQL-drivers. This allows to verify, if a table exists in a database. Example “DROP TABLE IF EXISTS Test”. This INI-file-key is pharsed through to the scripts-varaible [SQL_IF_EXISTS] and can be usesd in each SQL-query. This should support the further database-driver and INI-file-configurated usage of SQL-comands .

	
08.08.2002	(6.02.45/418/DD) Die Variable [printjob!PF_OPTIONS] eines Druckjobs kann ab jetzt auch die Flagge  [PRINT_OUT_PAGE_COUNT_RET] erhalten. Dies dient dazu, den Druckjob vollkommen verdeckt auszuführen und im Anschluss daran in der neuen Variable [printjob!PF_PAGE_COUNT] die Anzahl der benötigten Seiten ablesen zu können. Dazu gibt es ein neues Beispiel im Dokumentationsverzeichnis, das aus den zwei Dateien “pfcountlines1.csh” und “pfcountlines2.csh” besteht.
	
	The printjob-variable [printjob!PF_OPTIONS] can hold also the flag-value [PRINT_OUT_PAGE_COUNT_RET] from now on. This is for executing a printjob completely hidden and than have the result of the amaount of pages, that were generated, in the the new variable [printjob!PF_PAGE_COUNT]. Also an example is availiable in the documentfolder, that consits out of  two files “pfcountlines1.csh” and “pfcountlines2.csh”.

08.08.2002	(6.02.44/417/DD) Unabhängig von den eingestellten Rechten des aufrufenden Scriptes kann ab jetzt ein Dokumentenmanager-Eintrag, der von einem User gesichtet werden darf auch verändert werden.
	
	Independent from the rights, that are related to a calling script, a user may change and save a document-manager-item from now on.

06.08.2002	(6.02.43/416/MB) In der ADO-Version der Engine waren kam es zu Abstürzen, weil in Browsern und Grids die Datenzellen accesable waren. Der Fehler ist behoben.
	
	Exceptions occured in the ADO-version of the engine, because the datacells in  grids and browsers where accessable. This error has been removed.

02.08.2002	(6.02.42/415/DD) Der Befehl NOTE_SHOW zeigt eine Notiz, die READ-ONLY gezeigt werden soll, nur noch an, wenn sie Text enthält und zu den Standard-Notiz-IDs (1-4) gehört.

	The comand NOTE_SHOW will only show a note, if there is any text availiable and the note-id is inbetween 1-4.

30.07.2002	(6.02.41/414/DD) Um steuern zu können, ob ein Druck auch unter List&Label “Direkt”, “Direkt mit Setup”, mit “Vorschau”  oder im “Layout” – Modus gestartet werden soll, kann ab jetzt an die Druckjobvariable     [prn!PF_OPTIONS]  der Inhalt von [mask!MASK_ACT_PRINT_MODE] (die Auswahl des Users in der Maske) übergeben werden. Aus diesem Grunde ist der Wert der Konstanten [PRINT_OUT_LAYOUT] von 5 auf 8 geändert worden (dadurch können die PF_OPTIONS weiterhin als Binär-Flagge behandelt werden).

	For having the users-printout-modus-choice in a mask (“Direkt”, “Direkt mit Setup”, “Vorschau”  or “Layout”) send through to list&label, it is possible to set the printjob-variable [prn!PF_OPTIONS] to the users choice [mask!MASK_ACT_PRINT_MODE]. On that score, the value of the constand [PRINT_OUT_LAYOUT] has been changed from 5 to 8 – thus to be able to treat the PF_OPTIONS still as a binary flag.

26.07.2002	(6.02.40/413/DD) Erweiterung der Such-Algorithmen der CARA-Engine. Neben der Voll-Text-Suche und dem “normalen” Suchen in Maskenfeldern, kann es gelegentlich vorkommen, dass man eine Eingabe in einem bestimmten Feld macht, aber die Suche,  für den Fall, dass sich keinerlei Treffer ergaben, auf ein weiteres Feld (oder auch mehrere) erstrecken soll. D.h. es wird z.B. im Feld “Artikelnummer” eine Suche gestartet und, falls dort nichts gefunden wurde, soll z.B. im Feld “Kurzbezeichnung” weiter gesucht werden, und falls dort auch nichts gefunden wurde, soll z.B. Im Feld “Bezeichnung1” weiter gesucht werden, usw...
	Um eine solche Suchfolge initiieren zu können, wurde die Masken–Definitins–Datei um zwei Optionen erweitert. In der ITEM-Zeile der Dialogelement-Definition wurde ein 9. Parameter angefügt. Es handelt sich um einen String, der mit Komma getrennt die Namen der alternativ zu durchsuchenden Felder enthalten kann. 
	Beispiel:
	ITEM 2070101, 'LABEL', 2.00, 2.00, 12.00, 1.00, 'RIGHT'
	VIEW          'Artikelnummer', '', '', 2070100
	HINT          'Artikelnummer'
	ITEM 2070102, 'STRING', 15.00, 2.00, 21.00, 1.00, 'FTS', 0, 'Kurzbezeichnung,Bezeichnung1'
	VIEW         '', 'XXXXXXXXXXXXXXXXXXXX', 'ARTIKELNUMMER', 2070100
	HINT          'Artikelnummer'

	Hier nochmals die Parameter mit ihren Bedeutungen:
	2170102				Eindeutig zu vergebender Dialogelement-Index
	'STRING'				Dialogelement-Daten-Typ
	15.00					X-Position relativ zum übergeordneten Dialogelement 
	2.00					Y-Position relativ zum übergeordneten Dialogelement 
	21.00					Breite des Dialogelementes 
	1.00					Höhe des Dialogelementes 
	'FTS'					Optionen des Dialogelementes (z.B. PROTECTED)
	0					Level, den der Benutzer mindestens haben muss, um
						dieses Dialogelement sehen zu können
	'Kurzbezeichnung,Bezeichnung1'	relational zu durchsuchende Felder (Rela-Search)	
	
	Ausserdem kann in der Masken-Definitionsdatei festgelegt werden, ob die Suche sequenziell d.h. ein Feld nach dem anderen, oder in einer OR-Verknüpfung aller RelaSearch-Felder gemeinsam  durchgeführt wird. Dies geschieht in den Masken-Optionen. Dort kann mittels der Option RS_OR festgelegt werden, dass die Suche als OR-Verknüpfung ausgeführt werden soll. Bei grossen Datenmengen innerhalb einer Tabelle, ist die sequenzielle Abarbeitung dringend empfohlen (ab ca. 100000 Datensätze).

	Extension of the CARA-engine search-algorithms. Additionally to the full-text-search and the “normal” search in the mask-fields, it may be, that a search-entry made in one mask-field does not bring any result and the search should be extended to another field. I.e. that e.g.  the search is startet in the field “Article #.” , then, if there could nothing be found, e.g. the field “shortcut” should be used for a further search, and then, if there could also nothing be found, the search could be extended e.g. to the field “designation”  etc...
	To initiate such a search-sequence, the mask-definitin-file has been extended by two new options. In the ITEM-line of a dialog-element a 9th parameter has been added. It is a string, that holds with kommas separated the field-names for the other fields, that shoud be searched. 
	Example:
	ITEM 2070101, 'LABEL', 2.00, 2.00, 12.00, 1.00, 'RIGHT'
	VIEW          'Article #', '', '', 2070100
	HINT          'article number'
	ITEM 2070102, 'STRING', 15.00, 2.00, 21.00, 1.00, 'FTS', 0, 'shurtcut,designation'
	VIEW         '', 'XXXXXXXXXXXXXXXXXXXX', 'ARTICLENUMBER', 2070100
	HINT          'article number'

	Here again the parameters and their meaning:
	2170102		unique dialogelement-index
	'STRING'		dialogelement-data-typ
	15.00			X-position relativ to the superior dialogelement 
	2.00			Y-position relativ to the superior dialogelement 
	21.00			width of the dialogelementes 
	1.00			height of the dialogelementes 
	'FTS'			optionen of the dialogelementes (e.g. PROTECTED)
	0			level, that the user at last mmust have to be able to see this dialog-
				element
	'shurtcut,designation'	relational to be searched fieldnames  (Rela-Search)	
		
	Moreover it is possible to set in the mask-definition-file, if the search should be done sequecial i.e. field by field or, in an OR-connection of all RelaSearch-fields commonly. This is set in the mask-options. The option RS_OR fixes, that the search should be done in an OR-connection. With many records in a table (e.g. 100000), it is recommended to use the sequencial search.

23.07.2002	(6.02.35/412/DD) Der Fehler, dass “.crd” und/oder “.lbl” Projekte in List&Label von der Engine nicht unterstützt wurden, ist behoben.
	
	The error, that the CARA-engine dos'nt support “.crd” and “.lbl” projects from List&Label, has been removed.

17.07.2002	(6.02.34/411/DD) Der Fehler, dass der INI-Datei-Schlüssel  BckSlshIntroSpecChar nicht berücksichtigt wurde, beim Speichern von Dateinamen die Dateien bezeichneten, die nicht innerhalb des Dokument-Unterverzeichnises lagen, aus dem Dokumentenmanager heraus, ist beseitigt.
	
		The error, that the ini-file-key BckSlshIntroSpecChar has not been considered by filenames, that
		have been saved from out of the document-manager, and where not located in the documents-
		subfolder, has been removed.

17.07.2002	(6.02.33/410/DD) Neuer Befehl:
	CHOICER_CHECK_SET[mask], boolState, numItemID  {, numOption {, 'strLabel''}}
	Wenn boolState (TRUE) ist, setzt dieser Befehl an das Item mit der numItemID  eines Choicers in der [mask] einen “Haken”, so dass für den User erkennbar ist, dass dieses Item  “gesetzt” bzw.  “gechecked” ist. Wenn boolState (FALSE) ist, wird kein Haken gezeigt, bzw. der Haken entfernt, wenn er vor dem Aufruf sichtbar war. numOption kann den Wert [FIELD_FLAG_PROTECTED] und/oder [FIELD_FLAG_HIDDEN] enthalten. Dadurch kenn eine Zeile komplett ausgeblendet bzw. geschützt werden. Mit 'strLabel'' kann die angezeigte Information in der betroffenen Choicer-Zeile neu setzten.

	New comand: CHOICER_CHECK_SET[mask], boolState, numItemID  {, numOption {, 'strLabel''}}
	If boolState is TRUE, this comand will set a hook to the item with the numItemID of a choicer in the [mask], so the user can see that the item is checked. If boolState is FALSE, no hook will be shown resp. The hook will be removed, if it has been shown previous. numOption can hold the value [FIELD_FLAG_PROTECTED] and/or [FIELD_FLAG_HIDDEN], with this the item can be hidden or protected. With 'strLabel'' the caption of the item can be set.

12.07.2002	(6.02.32/409/DD) Auf Rechnern, bei denen die Internet-Einstellungen so sind, dass nur vollständig auflösbare Internet-Adressen im Browser angezeigt werden können, kann man ab jetzt trotzdem Scripte aus dem internen Browser starten, wenn man für die aufzurufenden Scripte jeweils eine HTML-Datei anlegt, die den gleichen Dateinamen haben (wie das Script) und daran noch die Extension “.htm”. 
	Beispiel:
		Folgendes geht auf solchen Rechnern nicht
			Das Script “KndStExt.csh” soll gestartet werden. In der HTML-Style-Homepage
			steht dann <a href="KndStExt.csh"><img src="app_customers.jpg" ></a>

		Aber so geht es doch:
			Das Script “KndStExt.csh” soll gestartet werden. In der HTML-Style-Homepage
			steht nun <a href="KndStExt.csh.htm"><img src="app_customers.jpg" ></a>
			UND
			Die Datei “KndStExt.csh.htm” existiert auch wirklich im Pictures-Verzeichnis. Die
			Datei muss nur existieren – sie braucht keinen sinnvollen Inhalt haben.
	
	On computers where the internet-settings do only allow to start complete resolvable internet-adresses, it is possible to start scripts from out of the internal browser from now on, if for every script also a html-file with the same filename (as the script) is created and the extension “.htm” is added ti it.
	Example:
		The following does not work on such computers:
			The script “KndStExt.csh” should be started. In the HTML-style-homepage it looks 
			like this: <a href="KndStExt.csh"><img src="app_customers.jpg" ></a>
		
		But so it works:
			The script “KndStExt.csh” should be started. In the HTML-style-homepage it now 
			looks like this: <a href="KndStExt.csh.htm"><img src="app_customers.jpg" ></a>
			AND
			The file “KndStExt.csh.htm” exists really in the picture-path. The file just has to exist,
			it must not have a useful contents.

	
12.07.2002	(6.02.31/408/DD) Der Fehler, dass Notizen gelegentlich wegen Überschreitung der max. Feldlänge nicht gespeichert werden konnten, ist behoben.
	
	The error, that occurs by exceeding the maximal feild-length when saving a note, has been removed.

12.07.2002	(6.02.30/407/DD) Der Befehl PF_EXECUTE hat folgende neue Optionen:
	[PF_EXECUTE_OPT_PAGE_FEED]	erzwingt einen Seitenvorschub
	[PF_EXECUTE_OPT_PAGE_GET]		gibt die aktuelle Seite im Printjob zurück

	The comand PF_EXECUTE has the following new options:
	[PF_EXECUTE_OPT_PAGE_FEED]	forces a page feed
	[PF_EXECUTE_OPT_PAGE_GET]		returns the actual page of the printjob

	
12.07.2002	(6.02.29/406/HB) Neuer Befehl 
	GET_DECISION 'head', 'info', 'label button1', 'label button2', 'label button3', [numRes]
	Zeigt einen “Entscheidungsdialog”, ähnlich dem Dialog von GET_YES_NO, mit der Möglichkeit die Aufschrift auf den Knöpfen vorzugeben. Wenn ein Knopf keine Aufschrift hat, ist er nicht zu sehen. Wird der erste Knopf vom User gedrückt, ist das Ergebnis in [numRes] = [ID_YES].
	Wird der zweite Knopf vom User gedrückt, ist das Ergebnis in [numRes] = [ID_NO].
	Wird der dritte Knopf vom User gedrückt, ist das Ergebnis in [numRes] = [ID_CANCEL].
	Der Knopf, der beim  Anzeigen des Fensters den Fokus erhält, kann durch Zuweisen des entsprechenden Knopf-Antwortwertes an [numRes] vor dem Aufruf von GET_DECISION eingestellt werden.

	New comand GET_DECISION 'head', 'info', 'label button1', 'label button2', 'label button3', [numRes]
	Shows an “decision-dialog”, like GET_YES_NO, with the option to set the labes of the buttons. If a button-label has no contents, it will not appear.
	If the users presses the first button, the result of [numRes] will be [ID_YES].
	If the users presses the second button, the result of [numRes] will be [ID_NO].
	If the users presses the third button, the result of [numRes] will be [ID_CANCEL].
	The button, that will have the focus, when the dialog opens, can be defined by setting the value of [numRes] before the call of  GET_DECISION.

11.07.2002	(6.02.28/405/UB) Neuer Schlüssel für die Applikations-INI-Datei in der Sektion [Config] 
	GoOnline=1 oder 0. Setzt die Vorgabe für die Online-Checkbox im Hauptfenster der Anwendung, wenn der HTML-Style verwendet wird. Wenn diese Einstellung verändert wird, wird dies in die Stations-INI-Datei gespeichert und beim nächsten Start (auf der Station) wieder entsprechend geladen. Der Schalter  MainFormMinimized wird ab jetzt ebenfalls in der Stations-INI-Datei abgelegt.
	
	New key for the applikation-INI-file, section [Config], GoOnline=1 or 0. This sets the default-value for the online-checkbox of the application-main-window, if html-style has been set. This setting will be saved to the station-ini-file, if it is changed while runtime. With the next start (on that station) this praticular setting will be loaded. The key MainFormMinimized will also be saved to the station-ini-file from now on.

11.07.2002	(6.02.27/404/DD) Wenn eine Maske geschlossen wird, in der Eingaben gemacht wurden, verhält sich die Engine ab jetzt folgendermassen:
	1. Wenn ein Datensatz geladen ist, wird gefragt, ob der Datensatz gespeichert werden soll.
		a. Wenn (JA) Speichern gewählt wurde:
   			 I. Wenn gespeichert werden konnte wird die Maske geschlossen
			II. Wenn NICHT gespeichert werden konnte, bleibt die Maske offen
		b. Wenn (NEIN) nicht Speichern gewählt wurde, wird die Maske geschlossen (ohne 
		    Speichern der Daten)
		c. Wenn Abbrechen gewählt wurde, bleibt die Maske offen
	2. Wenn kein Datensatz gewählt wurde, wird gefrag, ob die Maske geschlossen werden soll
		a. Wenn (JA) Schliessen gewählt wurde, wird die Maske (ohne Speichern) geschlossen
		b. Wenn (Nein) oder Abbrechen gewählt wurde, bleibt die Maske offen

	If a mask-dialog is closed by a user, and field-changes have been made, the engine will act as follows, from now on:
	1. If a record has been loaded, the question appears, if the record should be saved.
		a. If (Yes) for save has been choosen:
			 I. If the record could be saved, the mask will be closed
			II. If the record couln't be saved, the mask stays open
		b. If (No) for save has been choosen, the mask will be closed without saveing the data
		c. If cancel has been choosen, the mask stays open
	2. If no record has been loaded, the question appears, if the mask should be closed
		a. If (Yes) for close has been choosen, the mask will be closed
		b. If (No) or cancel has been choosen, the mask will stay open

10.07.2002	(6.02.26/403/DD) Der SQL-Befehle DROP TABLE IF EXISTS berücksichtigt von nun an ebenfalls die CaseSensitiveTables Option der Applikations-INI-Datei.

	The SQL-command DROP TABLE IF EXISTS will consider the CaseSensitiveTables option of the application-ini-file from now on.

10.07.2002	(6.02.25/402/DD) In Fällen, in denen das Betriebssystem so konfiguriert war, dass dass Datum mit einstelligen Tages- und/oder Monats-Angaben an die Engine weitergereicht wurde, konnte es zu Fehlinterpretationen des Datums in den Eingabemasken kommen. Der Fehler ist behoben.

	In case, the operating system was configured to return dates with single-digit day- and or month- values, it was possible, that mask-date-fields could be wrong interpreted. This error has been removed.

10.07.2002	(6.02.24/401/DD) Neuer Schlüssel für die Applikations-INI-Datei, Sektion [SQL] BckSlshIntroSpecChar=0 oder 1. Wenn ein SQL-Server ein BackSlash verwendet, um einen “Special”-Character abzuspeichern, dann sollte dieser Wert auf TRUE (1) gesetzt werden anderenfalls auf FALSE (0). Es ist sinnvoll dafür sorgen, dass in Pfadangaben die BackSlashes verdoppelt werden, bevor man speichert, denn jeweils der erste BackSlash wird durch einen solchen SQL-Server unterdrückt. Die passende Scriptvariable lautet [SQL_BCK_SLSH_INTRO_SPEC_CHAR]. Passend dazu gibt es ab jetzt zwei Erweiterungen für String-Behandlung im CALC– Befehl:
		CALC [AStr] AS DBL_BACK_SLASH([AStr])	Verdoppelt alle Back-Slashes in einem 							String.
		CALC [AStr] AS SGL_BACK_SLASH([AStr])	Reduziert alle Doppel-Back-Slashes zu
								Single-Back-Slashes in einem String.

	New key for the [SQL] section of the application-ini-file BckSlshIntroSpecChar=0 or 1. If a SQL-server uses a backslash for saving special chars, this value should be set to TRUE (1), otherwise FALSE (0). It is useful to double the backslashes in path-specifications befor they are saved, becaus such a SQL-server supresses always the first backslash. The related script-variable to this key is [SQL_BCK_SLSH_INTRO_SPEC_CHAR]. Also the CALC-command has been extended for this case:
		CALC [AStr] AS DBL_BACK_SLASH([AStr])	Doubles all backslashes in a string.
		CALC [AStr] AS SGL_BACK_SLASH([AStr])	Reduces all double-backslashes to
								single-backslashes in a string.

07.07.2002	(6.02.23/400/DD) Neue Einträge in die Applikations-INI-Datei in der Sektion [SQL] mit den dazu passenden globalen String-Variablen, mit dem Ziel die Tabellendefinitionsdateien so zu vereinheitlichen, dass sie komplett über INI-Datei-Einträge gesteuert werden können. Aus dem gleichen Grunde wurde zuvor die Funktionalität des SQL-Interfaces erweitert. 

	New entrys in the application-ini-file for the secition [SQL] with related gloabl script-variables, with the aim to unify the table-definition-files and generate them completely out of the ini-file-entrys. With the same reason the functionalaty of the SQL-interface has been extended.

	[SQL]-Section			Global-Variable			
	_________________________________________________________
	DefinePrimaryKey1=		[DEFINE_PRIMARY_KEY1]	
	DefinePrimaryKey2=		[DEFINE_PRIMARY_KEY2]	
	DefinePrimaryKey3=		[DEFINE_PRIMARY_KEY3]	
	DefinePrimaryKey4=		[DEFINE_PRIMARY_KEY4]	

	DefineRecordIDEnd=		[SQL_DEFINE_RECORDID_END]	
	DefineFloatEnd=			[SQL_DEFINE_FLOAT_END]
	DefineDateEnd=			[SQL_DEFINE_DATE_END]
	DefineTimeEnd=			[SQL_DEFINE_TIME_END]
	DefineBooleanEnd=		[SQL_DEFINE_BOOLEAN_END]
	DefineStringEnd=		[SQL_DEFINE_STRING_END]

	Beispiel / Example:
	CREATE TABLE adressen
    		(RecordID [SQL_DEFINE_RECORDID] [SQL_DEFINE_RECORDID_END] [SQL_DEFINE_PRIMARY_KEY1], ...

07.07.2002	(6.02.02/399/DD) Neuer Befehl SQL_INTERFACE. Ruft das freie SQL-Interface auf. Dadurch können alle Globalen- und Script-Variablen innerhalb der eingegebenen und geladenen SQL-Anweisungen verwendet werden. 
	Von nun an wird bei Aufruf des freien SQL-Interface aus dem Menü heraus zunächst nach dem Script “sqlintrf.csh” gesucht. Wird dieses Script gefunden, wird es ausgeführt und damit die Interpretation der dort befindlichen Script-Variablen und auch der Globalen- Variablen der Applikation möglich. Wenn das Script nicht gefunden wird, wird das SQL-Interface wie gewohnt – jedoch ohne die Möglichkeit zur Verwendung der Applikations-Variablen ausgeführt. Das Script kann z.B. Im einfachsten Fall folgendermassen aussehen:
	SCRIPT_BEGIN
	   SQL_INTERFACE
	SCRIPT_END

	New command  SQL_INTERFACE. Calls the SQL-interface. So all global and script variables can be used within the loaded or typed SQL-querys. 
	From now on, the engine will look for a script with the name “sqlintrf.csh”  when the call comes from the application-menu. If the script can be found, the usage of all global- and script-variables within the sql-statements is possible, if the script can't be found, the execution will be as it is now used to be, but without the option to use global- or script-variables. The script possibly and simply could look like this:
	SCRIPT_BEGIN
	   SQL_INTERFACE
	SCRIPT_END

07.07.2002	(6.02.21/398/DD) Neuer Befehl IDENTIFIER_DESTROY 'str',[boolRes] löscht die Variable mit dem Bezeichner 'str' aus dem Arbeitsspeicher, gleichgültig, ob es sich um eine globale, script oder locale Variable handelt. Am Rückgabewert [boolRes] kann der Erfolg abgelesen werden.

	New command IDENTIFIER_DESTROY 'str',[boolRes] deletes the variable with the name 'str' from the stack, where it does not matter if it is a global, script or local variable. The returnvalue [boolRes] shows the success of the operation.

06.07.2002	(6.02.20/397/DD) Die SQL-Befehle ALTER TABLE, CREATE TABLE, CREATE INDEXberücksichtigen von nun an ebenfalls die CaseSensitiveTables Option der Applikations-INI-Datei.

	The SQL-commands ALTER TABLE, CREATE TABLE, CREATE INDEX will consider the CaseSensitiveTables option of the application-ini-file from now on.

06.07.2002	(6.02.19/396/DD) Um einen neuen Datensatz in eine Tabelle einfügen zu können wurde ein neuer SQL-Befehl implementiert, der eine ganz ähnliche Sysntax hat, wie der gleichlautende Script-Befehl: NEW_RECORD tablename id. Die Parameter werden ohne Hochkommata übergeben. Wenn keine id übergeben wird, wird der Datensatz mit der RecordID 0 angelegt. Vorteil gegenüber dem INSERT INTO SQL-Befehl: Bei Verwendung verschiedener SQL-Server mit der Applikation, muss man sich nicht mit der unterschiedlichen Syntax beschäftigen und alle Felder werden sinnvoll initialisiert.

	To be able insert a record into a table a new SQL-command has been implemented, with a syntax, very similar to the equal named script-command:  NEW_RECORD tablename id. The parameter are given without quotes. If no id is given, the record with the recordid 0 will be created. Advantage compared to the INSERT INTO SQL-command: When using different SQL-servers with an application, it is not necessary to bother the different syntaxes and all fields will be initialized useful.

06.07.2002	(6.02.18/395/UB) Neuer Schlüssel für die Applikations-INI-Datei in der Sektion [Config], MainFormMinimized=1 oder 0. Dazu passend eine neue Option im Werkzeugkasten: “Hauptfenster minimiert”, und ebenfalls dazu passend eine neue globale Variable vom Typ VAR_BOOL MAIN_FORM_MINIMIZED. Wenn diese Option in der INI-Datei, dem Werkzeugkasten oder im Script gesetzt wird, wird beim nächten Aufruf eines Scriptes aus dem Hauptmenü oder dem HTML-Bereich, das Hauptfenster in die Startleise minimiert und verbleibt dort, bis der User es wieder anklickt. Das Scriptfenster wird jedoch normal geöffnet.

	New key for the application-ini-file, section [Config], MainFormMinimized=1 or 0. Suitable to this is the new option in the toolbox: “Hauptfenster minimiert” and also suitable to this, a new global variable of type VAR_BOOL  MAIN_FORM_MINIMIZED. If this option has been set (in the ini-file, the toolbox or in a script) the next call of a script from out of the main-menu or the html-frame will minimize the mainwindow, until the user clicks it again. The scriptwindow will be opened normaly.

06.07.2002	(6.02.17/394/DD) Beim Export-Modul wurde die erste Zeile in verschiedenen Formaten doppelt ausgegeben. Ausserdem wurden nicht alle Zeilen ausgegeben, wenn die aktuelle Zeile ungleich der ersten Zeile der Liste war. Diese Fehler sind behoben.

	In the export-modul, the first line was displayed twice in some of the availiable formats. Additionally, not all lines where exported, if the actual row was'nt the first row of the list. These errors have been removed.

05.07.2002	(6.02.16/393/HB) Beim Umgang mit Strings, die mit einem @ beginnen und anschliessend irgendwo ein Leerzeichen enthielten, wurde wegen des Versuches der Interpretation eines Languagestrings  dann problematisch, wenn sich nach dem @ keine evaluierbare Ziffernfolge ergab. Der Fehler ist behoben.

	The handling of string, that where starting with an @ followed by a blank somewhere in it, was difikult because of trying to interpret it as a languagestring – if there was not a evaluable number found. This error has been removed.

05.07.2002	(6.02.15/392/DD) Bei der Übergabe von Query-Variablen an List&Label wird von nun an stets der Tabellenbezeichner in Grossbuchstaben umgewandelt, weil List&Label alle Bezeichner case-sensitive behandelt. Wenn der INI-Datei-Schlüssel CaseSensitiveTables=1 gesetzt ist, konnte es zu Fehlinterpretationen der Variablen-Bezeichner kommen.

	All query-variables that are pharsed to List&label will have uppercased table-names from now on. List&label ist treating the variable-names case-sensitiv. When the INI-file-key  CaseSensitiveTables=1 was set, it was possible to produce errors.

18.06.2002	(6.02.14/391/DD) Termine wurden bisher als unerledigt angesehen,wenn FinishDate > 01.01.1980 und NextProcessDate <> 01.01.1980 war. Dies gilt ab jetzt für FinishDuranceID = 0 und NextProcessDuranceID > 0. Damit ist es möglich, einen Termin für die Erledigung zu setzten, aber den Termin selbst noch unerledigt zu halten.

	A date in the document-manager has been treated as unfinshed, with FinishDate > 01.01.1980 and NextProcessDate <> 01.01.1980. From now on this is only true for FinishDuranceID = 0 and NextProcessDuranceID > 0. So it is possible to set a date for the finishing but not finish the date itself...

15.06.2002	(6.02.13/390/DD) Ändern des Handles bei L&L-Jobs...

12.06.2002	(6.02.12/389/DD) Der Tastatur-Event der Engine für Masken-Dialoge  wurde so verändert, dass nach Ausführung aller vorbelegten Tasten der entsprechende Key nicht mehr an andere Windows-Events weitergegeben wird.

	The key-event-routine of the engine für mask-dialogs has been modified: after the execution of any predefined key-stroke the related key will not be passed through to other windows-applications.

12.06.2002	(6.02.11/388/DD) In L&L-Printjobs wird ab jetzt die Option “LL_OPTION_SUPPORTPAGEBREAK” immer (TRUE) gesetzt.

	In l&l-printjobs the option “LL_OPTION_SUPPORTPAGEBREAK” will be set to true from now on.

12.06.2002	(6.02.10/387/DD) Wenn MenuStyle=2 ist, wird ein Script nur noch einmal ausgeführt, auch wenn ein Doppelklick im TreeMenü erfolgte.

	If MenuStyle=2 and an item in the treemenu has been doubleclicked, the script will only be executed once.

12.06.2002	(6.02.09/386/DD) Wenn ein Key-Event in einer Maske aufgerufen wird und oder “Enter” gedrückt wurde, dann wird der entsprechende Key nicht mehr an andere Windows-Events weitergegeben. 

	If a key-event in a mask is called or “return” has been pressed, thy key will not longer be passed through to other windows-applications.

12.06.2002	(6.02.08/385/DD) Seit der Einführung des Keys “RegisterCara=0” in der Sektion [Config] enthielt die globate Variable [STATION_ID] keinen sinnvollen Wert mehr. Der Fehler ist behoben.

	Since the key “RegisterCara=” in the section [Config] has been intreduced, the global variable [STATION_ID] did'nt hold any usefull value. This error has been removed.

06.06.2002	(6.02.07/384/DD) Query-Felder wie z.B. year() wurden von MySQL als LargeInt zurück an die Engine zurückgegeben und dadurch nicht erkannt. Der Fehler wurde behoben.
	
	Query-fields like year() where returned from MySQL to the CARA-engine as largeint and by that not recocnized. The error has been removed.

04.06.2002	(6.02.06/383/DD) Der SQL- und Script-Monitor zeigt bei eingeschaltetem Entwicklermodus, beim Im- und Export von Daten den Fortschritt an und ist jetzt “resizeable”. Die Position wird in der Station-INI gespeichert. Die Anzeige des Fortschritts erfolgt per default alle 100 Datensätze. Diese Anzahl kann mit dem neuen INI-Datei-Schlüssel “ImportExportSetDisplay=500” in der Sektion [SQL] eingestellt werden.
	
	The SQL- and Script-Monitor shows – if the developer-mode is switched on – the process on the im- and export will be displayed. Also the window is now resizeable and the coordinates will be saved to the station-ini-file. The process-success will be shown all 100 records. This count can be defined with the new ini-file-key “ImportExportSetDisplay=500” in der section [SQL].

04.06.2002	(6.02.05/382/DD) Neuer Schalter in der Sektion [SQL]. AddReplace=· Hier kann ein Zeichen angegeben werden, dass innerhalb von Strings das Add-Zeichen “@” ersetzt. Z.B. Character 0183 
	(“·”). Dies ist z.B. Weil z.B. Eine MySQL Probleme mit dem Speichern von Strings hat, die ein Add-Zeichen enthalten. 
	
	New key for the section [SQL]. AddReplace=· Where it is possible to have a replacement for the add-sign “@” in strings. This is e.g. neccesary for mysql-databases that have problems  with add-signs in strings.

27.05.2002	(6.02.04/381/DD) Im freien SQL-Interface kann man ab jetzt mit dem Befehl 
	EXECUTE_FILE filename  erreichen, dass alle Querys in einer Datei geladen und ausgeführt werden.
	
	A new command for the free SQL-interface is availiable: EXECUTE_FILE filename. It loads and executes all the querys from a file.

24.05.2002	(6.02.03/380/DD) Verbesserungen beim Schliessen des Export-Moduls. Dadurch sollen Ausnahmefehler verhindert werden.
	
	Some improvements by shuting down the export-modul. This should prevent exceptions.

24.05.2002	(6.02.02/379/MB) Im Befehl PF_EXECUTE hat folgende neue Optionen:  [PF_EXECUTE_OPT_GET_ITEMS_REST]
		Gibt die verbleibende Zahl der Zeilen (diese können aber aus multiplen Datenzeilen
		bestehen) in einer Tabelle zurück. In strOpt1 muss der Name des Printjob-Objektes
		übergeben werden (nicht der Variablenname sondern der Name, der dem Objekt im Printjob
		gegeben wurde). Wenn strOpt1 leer ist, wird der minimale Wert aller Tabellen ausgegeben.

	[PF_EXECUTE_OPT_GET_ITEMS_PAGE]
		Gibt die Zahl der Etiketten einer Seite zurück (Spaltenzahl * Zeilenzahl) entsprechend den
		Einstellungen des Projekts.

	[PF_EXECUTE_OPT_GET_ITEMS_TABLE]
		Gibt die Datenzeilenanzahl der kleinsten Liste (diese können aber aus multiplen Datenzeilen
		bestehen) einer Seite zurück.

	For the comand PF_EXECUTE are the following new options availiable:  [PF_EXECUTE_OPT_GET_ITEMS_REST]
		Returns the left amaount of lines (they could consist out of multiple datalines) of a table.
 		strOpt1 must hold the name of the printjob-object. If strOpt1 is empty the minal value of all
		tables will be returned.

	[PF_EXECUTE_OPT_GET_ITEMS_PAGE]
		Returns the amount of labels on a page (columns * rows) based on the definition of the
		project.

	[PF_EXECUTE_OPT_GET_ITEMS_TABLE]
		Returns the amount of datalines of the smalles list (they can consist out of multiple
		datalines) on a page.

15.05.2002	(6.02.01/378/MB) Im Befehl PF_EXECUTE entstand bei Aufruf mit der Option [PF_EXECUTE_OPT_ENABLE_OBJECT] stest der Rückgabewert “-25“, der Fehler ist behoben. (P.S.: Für die Schreibweise der Object-Namen ist auf Groß- und Kleinschreibung zu achten!)
	
	Using the command PF_EXECUTE with the option [PF_EXECUTE_OPT_ENABLE_OBJECT] always generated the return-value “-25“. This error has been removed. (Note: The object-names are case-sensitive!)

13.05.2002	(6.02.00/377/GH) Neuer Befehl EXPORT und neues Icon im Browser, Menü der rechten Mausstaste erweitert im Browser und in Grids. Einge neue globale Variablen und Konstanten.

	Browser : Neben dem Listen-Generator ist ab jetzt das Icon für den Export. Klickt man dieses Icon mit der linken Maustaste an,  gelangt man zum Format-Auswahl-Dialog des Export-Tools. Klickt man dieses Icon mit der rechten Maustaste an,  gelangt man zum Drucker-Auswahl-Dialog des Export-Tools.

	Kontext-Menüs in Browser und Grid: Klickt man “Export“ an,  gelangt man zum Format-Auswahl-Dialog des Export-Tools Klickt man “Druck“ an,  gelangt man zum Drucker-Auswahl-Dialog des Export-Tools.

	Format-Auswahl-Dialog: 
		Man kann eines der folgenden Ausgabe-Formate wählen:
			HTML
			Microsoft Word
			Microsoft Excel
			Text
			Rich Text (RTF)
			Komma getrennter Text (CSV)
			Tab getrennter Text
			Data Interchange Format (DIF)
			Symbolic-Link-Format (SYLK)
		 	Zwischenablage
                             Die Ausgabe erfolgt, soweit das entsprechende Programm installiert ist.

	Drucker-Auswahl-Dialog: Der Druck erfolgt mit dem Programm, dass beim letzten Export gewählt wurde. Vorgabe ist “Microsoft Excel“

	Beispiel-Script:  “ExportTest.csh“ mit der Maske “ExportTestDlg.msk“.
		
	Globale Variable [EXP_OPTIONS] ( VAR_NUM) 
		Wird als Binärflagge verwaltet und kann einen oder alle der folgenden Werte enthalten:
		[EXP_OPTION_DETAILED_MODE]
			Wird z. Zt. nur für die Ausgabearten "Text" und "Zwischenablage" unterstützt.           
			Es wird nur eine Information pro Zeile ausgegeben. Z.B.:
			Nachname: Schmitt
			Vorname: Georg
			Beruf: Portier
			wenn normaler weise folgendes ausgegeben worden wäre:
			Nachname	Vorname	Beruf
			-------------------------------------------------------------------------------
			Schmitt		Georg		Portier

		[EXP_OPTION_EXPORT_HIDDEN]
			Sollen auch “versteckte“ Spalten gedruckt werden?

		[EXP_OPTION_NUMBER_ROWS]
			Sollen die Zeilen nummeriert werden?

		[EXP_OPTION_SHOW_COL_HEADERS]
			Sollen die Spalten Überschriften haben?

		[EXP_OPTION_SHOW_CLIPBOARD_MSG]
			Soll nach der Ausgabe in die Zwischenablage ein Hinweis angezeigt werden, dass
			der Export beendet ist?

		[EXP_OPTION_SHOW_PROGRESS]
			Soll der Fortschritt des Exports angezeigt werden?

		[EXP_OPTION_TIME_STAMP]
			Soll im Kopf der Datei jeweils das Druckdatum und die Uhrzeit mit ausgegeben
			werden?

		[EXP_OPTION_DISPLAY_SECONDS]
			Soll im Fortschritts-Anzeige-Fenster die verwendete zeit für den Export angezeigt
			werden?

		[EXP_OPTION_TIME_24_HOUR_FORMAT]
			Soll die Zeit im 24-Stunden-Format ausgegeben werden?

		[EXP_OPTION_EXPORT_ALL]
			Wird immer gestzt und hat z.Zt. noch keine Bedeutung

		[EXP_OPTION_DEFAULT] ist der Defaultwert und enthält folgende Flaggen:
			[EXP_OPTION_NUMBER_ROWS]			+
			[EXP_OPTION_SHOW_COL_HEADERS]		+
			[EXP_OPTION_SHOW_CLIPBOARD_MSG]	+
			[EXP_OPTION_SHOW_PROGRESS]		+
			[EXP_OPTION_TIME_STAMP]			+
			[EXP_OPTION_DISPLAY_SECONDS]		+
			[EXP_OPTION_TIME_24_HOUR_FORMAT]	+
			[EXP_OPTION_EXPORT_ALL]

	Globale Variable [EXP_FILE_TYPE] ( VAR_NUM)
		Kann einen der folgenden Werte annehmen, die für sich selber sprechen:
		[EXP_FILE_TYPE_HTML]
		[EXP_FILE_TYPE_WORD]
		[EXP_FILE_TYPE_EXCEL]
		[EXP_FILE_TYPE_TEXT]
		[EXP_FILE_TYPE_RTF]
		[EXP_FILE_TYPE_TEXT_COMMA]
		[EXP_FILE_TYPE_TEXT_TAB]
		[EXP_FILE_TYPE_DIF]
		[EXP_FILE_TYPE_SYLK]
		[EXP_FILE_TYPE_CLIPBOARD]

	Globale Variable [EXP_HTML_OPTIONS] ( VAR_NUM)
		Wird als Binärflagge verwaltet und kann einen oder alle der folgenden Werte enthalten:
		[EXP_HTML_OPTION_SHOW_GRID_LINES]
			Sollen die Gitter-Linien in der HTML-Ausgabe gezeigt werden?

		[EXP_HTML_OPTION_COL_HEADER_BOLD]
			Sollen die Spaltenüberschriften “fett-gedruckt“ ausgegeben werden?

		[EXP_HTML_OPTION_AUTO_LINK]
			Sollen Web-Adressen, die in den Ausgabe-Daten vorhanden sein könnten,
			automatisch als “anklickbar“ bereitgestellt werden?

		[EXP_HTML_OPTION_ODD_ROW_COLORING]
			Solle jede  zweite Spalte andersfarbig dargestellt werden?

		[EXP_HTML_OPTION_DISPLAY_TITLE]
			Soll der Kopftext ausgegeben werden? Wenn nicht, wird es “versteckt“ im 
			<TITLE tag> der Ausgabe.

		[EXP_HTML_OPTION_HORZ_RULES]
			Soll ein Horizontal-Lineal angezeigt werden?

		[EXP_HTML_OPTION_IGNORE_LINE_BREAKS]
			Wenn im Kopf- oder Fuss-Text eigene HTML-Tags vorhanden sind, wird nicht nach
			jeder Zeile des Textes ein Zeilenumbruch gemacht.

		[EXP_HTML_OPTION_DEFAULT] ist der Defaultwert und enthält folgende Flaggen:
			[EXP_HTML_OPTION_COL_HEADER_BOLD]	+
			[EXP_HTML_OPTION_AUTO_LINK]		+
			[EXP_HTML_OPTION_ODD_ROW_COLORING]

		
	Globale Variable [EXP_HTML_TEMPLATE] ( VAR_NUM)
		Kann einen der folgenden Werte annehmen, die das Farblayout der HTML-Seiten steuern:
		[EXP_HTML_TEMPLATE_CLASSIC]
		[EXP_HTML_TEMPLATE_SIMPLE]
		[EXP_HTML_TEMPLATE_PLAIN]
		[EXP_HTML_TEMPLATE_MURKY]
		[EXP_HTML_TEMPLATE_MS_MONEY]
		[EXP_HTML_TEMPLATE_COLORFUL]
		[EXP_HTML_TEMPLATE_GRAY]
		[EXP_HTML_TEMPLATE_OLIVE]
		[EXP_HTML_TEMPLATE_BLACK_AND_WHITE]

	Globale Variable [EXP_HTML_CUSTOM_TEMPLATE] ( VAR_STR)
		Hier kann ein eigens Farblayout gegeben werden. 
		Beispiel für [EXP_HTML_TEMPLATE_MS_MONEY]:
		'#FFFFFF;blue;purple;red;#000080;Arial,Helvetica;#CEC6B5;#000000;#DEE7DE;
		 #000000;FFFBF0'
		Hierbei gilt:
		'BGColor;LinkColor;VLinkColor;ALinkColor;TextColor;TextFont;ColHeadersBGColor;
		 ColHeadersFontColor;TableBGColor;TableFontColor;OddRowColor'

	Globale Variable [EXP_TRUNCATE_SYMBOL] ( VAR_STR). Default ist “-“.
		Wird nur bei der Ausgabe in “Text“ oder “Zwischenablage“ benötigt. Diese Formate sind die
		einzigen, die keinen Zeilenumbruch “können“ und deshalb in Spalten, in denen der
		auszugebende Text breiter ist, als die Breite der Spaltenüberschrift, abgeschnitten werden
		müssen. Um dem Benutzer dieses Abschneiden zu signalisieren, wird der hier hinterlegte
		String mit ausgegeben. Beispiel:
		Nachname	Vorname	Beruf	          v--- hier wurde abgeschnitten
		----------------------------------------------------------------------
		Schmitt		Georg		Landschaftsgärt-

	Globale Variable [EXP_LEFT_MARGIN] ( VAR_NUM)
		Breite des linken Randes bei WORD und RTF Export.

	Globale Variable [EXP_RIGHT_MARGIN] ( VAR_NUM)
		Breite des rechten Randes bei WORD und RTF Export.

	Globale Variable [EXP_TOP_MARGIN] ( VAR_NUM)
		Breite des oberen Randes bei WORD und RTF Export.

	Globale Variable [EXP_BOTTOM_MARGIN] ( VAR_NUM)
		Breite des unteren Randes bei WORD und RTF Export.

	Globale Variable [EXP_FILE_NAME] ( VAR_STR)
		Ausgabe–Datei-Name, wenn der Speichermodus gewählt wurde.

	Globale Variable [EXP_FOOTER] ( VAR_LIST)
		Text, der oberhalb der Liste ausgegeben wird.

	Globale Variable [EXP_HEADER] ( VAR_LIST)
		Text, der unterhalb der Liste ausgegeben wird.

	Globale Variable [EXP_CAPTIONS] ( VAR_LIST)
		Für jede Spalte kann hier eine eigene Überschrift angegeben werden.

	Globale Variable [EXP_COL_WIDTHS] ( VAR_LIST)
		Für jede Spalte kann hier die Ausgabe-Breite (in Zeichen) angegeben werden.

	Befehl EXPORT [browser], '' oder [mask], 'grid_name' {, num Mode}
		Exportiert die Daten des [browser] oder die des 'grid_name' aus der [mask]. 
		Mode kann folgende Werte annehmen:
			[EXP_VIEW_CHOOSE]	Zeigt den Export-Ausgabe-Dialog
			[EXP_VIEW_DIRECT]	Exportiert ohne Ausgabe-Dialog
			[EXP_PRINT]		Druckt den Export, zeigt den Drucker-Dialog
			[EXP_SAVE]		Speichert die Ausgabe direkt in eine Datei.

	New command EXPORT and new icon in all browsers. Popup-Menu for the right mouse-button in browsers and grids extended. A lot of ne global variables and constands.

	Browser : Beneath the list-generator icon, the icon for the export is placed. A click with the left mouse-button will show the format-select-dialog of the export-tool. A click with the right mouse-button will show the printer-select-dialog of the export-tool.

	Format-select-dialog: 
		The following formats can be choosen:
			HTML
			Microsoft Word
			Microsoft Excel
			Text
			Rich Text (RTF)
			Comma delimitered text (CSV)
			Tab delimitered Text
			Data Interchange Format (DIF)
			Symbolic-Link-Format (SYLK)
		 	Clipboard
                             The export will occure, as long as the selected program has been installed.

	Printer-select-dialog: The printing will be done with the program that has been taken for the last export. Default is “Microsoft-Excel“.

	Example-script:  “ExportTest.csh“ with the mask “ExportTestDlg.msk“.
		
	Global variable [EXP_OPTIONS] ( VAR_NUM) 
		Is treated as a binary-flag, and can contain one or all of the following flags:
		[EXP_OPTION_DETAILED_MODE]
			Is, for the time beeing, only used fro the exports of "Text" and "Clipboard".           
			It exports only one information per line. E. g.:
			Last Name: Smith
			First Name: George
			Occupation: Janitor
			when normally the following would have been exported:
			Last Name	First Name	Occupation
			-------------------------------------------------------------------------------
			Schmitt		Georg		Janitor

		[EXP_OPTION_EXPORT_HIDDEN]
			Shall hidden columns also be displayed ?

		[EXP_OPTION_NUMBER_ROWS]
			Shall the lines be numbered?

		[EXP_OPTION_SHOW_COL_HEADERS]
			Shall the columns have headers?

		[EXP_OPTION_SHOW_CLIPBOARD_MSG]
			Shall a message be displayes, when the export to clipboard has been finished?

		[EXP_OPTION_SHOW_PROGRESS]
			Shall theprogress of the export be displayed?

		[EXP_OPTION_TIME_STAMP]
			Shall the time and the date of the export be part of the exports header?

		[EXP_OPTION_DISPLAY_SECONDS]
			Shall the progress-display-window also show the seconds that are needed fpr the
			port?

		[EXP_OPTION_TIME_24_HOUR_FORMAT]
			Shall the time be displayed in 24-hour-format?

		[EXP_OPTION_EXPORT_ALL]
			Will always be set and has, for the time beeing, no meaning.

		[EXP_OPTION_DEFAULT] is the default and contains the following flags:
			[EXP_OPTION_NUMBER_ROWS]			+
			[EXP_OPTION_SHOW_COL_HEADERS]		+
			[EXP_OPTION_SHOW_CLIPBOARD_MSG]	+
			[EXP_OPTION_SHOW_PROGRESS]		+
			[EXP_OPTION_TIME_STAMP]			+
			[EXP_OPTION_DISPLAY_SECONDS]		+
			[EXP_OPTION_TIME_24_HOUR_FORMAT]	+
			[EXP_OPTION_EXPORT_ALL]

	Global variable [EXP_FILE_TYPE] ( VAR_NUM)
		Can have one of the following, self explaining values:
		[EXP_FILE_TYPE_HTML]
		[EXP_FILE_TYPE_WORD]
		[EXP_FILE_TYPE_EXCEL]
		[EXP_FILE_TYPE_TEXT]
		[EXP_FILE_TYPE_RTF]
		[EXP_FILE_TYPE_TEXT_COMMA]
		[EXP_FILE_TYPE_TEXT_TAB]
		[EXP_FILE_TYPE_DIF]
		[EXP_FILE_TYPE_SYLK]
		[EXP_FILE_TYPE_CLIPBOARD]

	Global variable [EXP_HTML_OPTIONS] ( VAR_NUM)
		Is treated as a binary-flag, and can contain one or all of the following flags:
		[EXP_HTML_OPTION_SHOW_GRID_LINES]
			Shall the grid-lines be part of the HTML-pages?

		[EXP_HTML_OPTION_COL_HEADER_BOLD]
			Shall the column-headers be bold?

		[EXP_HTML_OPTION_AUTO_LINK]
			Shall URLs, in an data-field, automaticly be real links in the HTML-pages?

		[EXP_HTML_OPTION_ODD_ROW_COLORING]
			Shall every second row have a different color?

		[EXP_HTML_OPTION_DISPLAY_TITLE]
			Shall the header be exportetd? If not, it will be “hidden“ in the <TITLE tag>.

		[EXP_HTML_OPTION_HORZ_RULES]
			Shall horizontal rulers be generated?

		[EXP_HTML_OPTION_IGNORE_LINE_BREAKS]
			If the header- or footer-text has its own HTML-tags, it could be needed not to have a
			e break after each footer- or header-line.

		[EXP_HTML_OPTION_DEFAULT] is the default and contains the following flags:
			[EXP_HTML_OPTION_COL_HEADER_BOLD]	+
			[EXP_HTML_OPTION_AUTO_LINK]		+
			[EXP_HTML_OPTION_ODD_ROW_COLORING]

		
	Global variable [EXP_HTML_TEMPLATE] ( VAR_NUM)
		Can have one of the following values, that are controling the color-layout of the HTML-pages:
		[EXP_HTML_TEMPLATE_CLASSIC]
		[EXP_HTML_TEMPLATE_SIMPLE]
		[EXP_HTML_TEMPLATE_PLAIN]
		[EXP_HTML_TEMPLATE_MURKY]
		[EXP_HTML_TEMPLATE_MS_MONEY]
		[EXP_HTML_TEMPLATE_COLORFUL]
		[EXP_HTML_TEMPLATE_GRAY]
		[EXP_HTML_TEMPLATE_OLIVE]
		[EXP_HTML_TEMPLATE_BLACK_AND_WHITE]

	Global variable [EXP_HTML_CUSTOM_TEMPLATE] ( VAR_STR)
		Here the own color-layout may be defined. 
		Example for [EXP_HTML_TEMPLATE_MS_MONEY]:
		'#FFFFFF;blue;purple;red;#000080;Arial,Helvetica;#CEC6B5;#000000;#DEE7DE;
		 #000000;FFFBF0'
		Where this is given:
		'BGColor;LinkColor;VLinkColor;ALinkColor;TextColor;TextFont;ColHeadersBGColor;
		 ColHeadersFontColor;TableBGColor;TableFontColor;OddRowColor'

	Global variable [EXP_TRUNCATE_SYMBOL] ( VAR_STR). Default is “-“.
		Is only needed for “Text“ or “Clipboard“ export. These are the only formats, that have no word 	wrap and so the data, that is longer than a header of a column allows, must be truncated.
		To have a „sign“ for a truncated data – this sign will be displayed. Eg.:
		Last Name	First Name	Occupation        v--- here the cut was made
		----------------------------------------------------------------------
		Smith		George		Prgramingingeni-

	Global variable [EXP_LEFT_MARGIN] ( VAR_NUM)
		Size of the left margin in a WORD or RTF export.

	Global variable [EXP_RIGHT_MARGIN] ( VAR_NUM)
		Size of the right margin in a WORD or RTF export.

	Global variable [EXP_TOP_MARGIN] ( VAR_NUM)
		Size of the top margin in a WORD or RTF export.

	Global variable [EXP_BOTTOM_MARGIN] ( VAR_NUM)
		Size of the bottom margin in a WORD or RTF export.

	Global variable [EXP_FILE_NAME] ( VAR_STR)
		Output-filename, if the SAVE-mode is used..

	Global variable [EXP_FOOTER] ( VAR_LIST)
		Text, that will be exported above the list.

	Global variable [EXP_HEADER] ( VAR_LIST)
		Text, that will be exported under the list.

	Global variable [EXP_CAPTIONS] ( VAR_LIST)
		For each column the header can be defined here.

	Global variable [EXP_COL_WIDTHS] ( VAR_LIST)
		For each column the width can be defined here (in characters).

	Command: EXPORT [browser], '' or [mask], 'grid_name' {, num Mode}
		exports the data of the [browser] or of the 'grid_name' from the [mask]. 
		Made could have one of the following values:
			[EXP_VIEW_CHOOSE]	Show the export-select-dialog
			[EXP_VIEW_DIRECT]	Exportis without dialog
			[EXP_PRINT]		Prints the export, shows the printer-select-dialog
			[EXP_SAVE]		Saves the output directly to file.

09.05.2002	(6.01.16/376/DD) Das Main-Menü wird von nun an vor dem Schließen der Anwendung rekursiv abgebaut und so vom Speicher entfernt. Ohne dieses Vorgehensweise führte das Schließen der Anwendung auf Rechnern mit WIN9x/Me zu einer Exception.
	
	The main-menu now will be rcursively destroyed and removed from memory. Without this strategy,  closing the application could cause an exception on computer with WIN9x/Me.

09.05.2002	(6.01.15/375/DD) In der ADO-Version wurde beim Auslösen der Suche in einer Maske unter der Voraussetzung, dass kein “Null-Record“ innerhalb der zu Grunde liegenden Tabelle vorhanden war, der Fehler “Operation bei geöffneter Datenmenge nicht möglich“ ausgelöst. Der Fehler wurde beseitigt.

	The ADO-version an error occured on starting a search from out of a mask, when no “Null-Record“ was inside the mask-table. This error has been removed.

09.05.2002	(6.01.14/374/DD) In der ADO-Version wurden keine Tabellen-Namen im ASCII-Import-Tool oder in Masken-Feldern vom Typ “LIST_TEXT“ mit dem Default “ALL_TABLES“ angezeigt. Der Fehler ist behoben.

	The ADO-version did not show any table im ASCII-import-module or in mask-fields of type “LIST_TEXT“ with the default “ALL_TABLES“. This error has been removed.

08.05.2002	(6.01.13/373/DD) Der WebBrowser wird gestoppt, diabled und offline gesetzt bevor die Anwendung geschlossen wird. Dies soll helfen Abstürze der Engine beim Schliessen der Anwendung zu vermeiden.

	The web-browser will be stoped, disabled and set to offline bevor shuting down the application. This shall help to prevent crashes of the engine while closing an application.

08.05.2002	(6.01.12/372/DD) “Leere“ Adressen werden nicht mehr an den WebBrowser weitergereicht.

	“Empty“ adresses will not longer be send to the web-browser.

08.05.2002	(6.01.11/371/DD) Die Adresszeilen-Combobox wird ab jetzt nur dann erweitert, wenn ein wirklich neuer Eintrag in der Adresszeile erfolgt. Falls eine vorhandene Adresse nochmals eingegeben wird, wird diese einfach nur ganz nach oben in die Liste gesetzt. 
	
	The adress-line-combo-box will only be extended, if a really new entry has been made. If a already existing line is entered again, it will be set to the top of the list.

08.05.2002	(6.01.10/370/DD) Der Befehl NAVIGATE kann ab jetzt mit den folgenden Konstanten aufgerufen und gesteuert werden:
          	[NAVIGATE_HOME]		Wechseln zur Startseite
          	[NAVIGATE_STOP]		Stoppen aller Browseraktionen der Browser ist inaktiv
          	[NAVIGATE_START]		Setzt den Browser wieder in interaktiven Zustand
          	[NAVIGATE_ONLINE]		Schaltet den Browser offline
          	[NAVIGATE_OFFLINE]		Schaltet den Browser online

	The command NAVIGATE can be called and controled with the following constants:
          	[NAVIGATE_HOME]		change to startpage
          	[NAVIGATE_STOP]		stop all browser aktivities and set it protected
          	[NAVIGATE_START]		start the browser activities and set it interactive 
          	[NAVIGATE_ONLINE]		switch to offline mode
          	[NAVIGATE_OFFLINE]		switch to online mode

08.05.2002	(6.01.09/369/DD) Im Haupfenster der Anwendung gibt es ab jetzt eine CheckBox (wenn html-style gewählt wurde), mit der sich steuern lässt, ob der Browser online ist. Default ist der Browser offline.
	
	In the mainwindow of the application is a checkbox availiable (if html style had been choosen), wich allows to switch the browser online/offline. Defauld is offline.

08.05.2002	(6.01.08/368/DD) Beim Start der Anwendung wird nun die Startseite (wenn html-style gewählt wurde) endgültig continuierlich angezeigt.
	
	The startpage will now be continuosly shown while startup.

07.05.2002	(6.01.07/367/DD) Alle im Picture-Pfad befindlichen Bitmaps können ab jetzt in 256 Farben dargestellt werden. 

	All bitmaps in the picture-path may be diplayed in 256 colors.

07.05.2002	(6.01.06/366/HB) Beim Start der Anwendung wird nun die Startseite (wenn html-style gewählt wurde) zu Beginn und am Ende der Initialisierung geladen. Der Browser kann in der Phase den Kontakt zur Startseite verlieren - warum ist noch nicht geklärt... 

	The startpage of the application now will be loaded once on starting the initialisation and scound on finishing the initialisation. The browser could looses the contact to the startpage in this phase – why is not clear by now...

07.05.2002	(6.01.05/365/KP) Der Fehler, dass beim Start im html-style der Picture-Pfad zwei Mal vor den Dateinamen der Startseite gesetzt wurde (bei Verwendung von UNC-Pfaden) ist behoben.

	When starting in html-style the picture-path was set two times in front of the filename of the starting-page (in case of using unc-paths). This error has been removed.

07.05.2002	(6.01.04/364/DD) Neuer INI-Datei-Schlüssel in der Sektion [CONFIG]: MenuIcons=0 oder 1. Wenn dieser Schlüssel gesetzt ist, kann man in der ItemZeile einer Menü-Definition im 5. Parameter einen String angeben, der den Dateinamen eines Bitmaps im Picture-Verzeichnis angibt (ohne Pfad). Dieses Bitmap wird dann vor dem Menüpunkt eingeblendet, wenn es in der Sektion [PICTURE] aufgeführt wurde. Wenn man MenuStyle=2 (tree style) verwendet, kann man zusätzlich im 6. Parameter einen weiteren String angeben, der ebenfalls einen Dateinamen eines Bitmaps im Picture-Verzeichnis angibt. Dieses Bitmap wird angezeigt, sobald der entsprechende Menüpunkt ausgewählt wurde. Alle Bilder, die hier angegeben werden, müssen in der Sektion [PICTURE] der Applikations-INI-Datei aufgeführt werden, da diese aus Geschwindigkeitsgründen beim Start der Anwendung einmal indiziert in den Speicher geladen werden. Die Picture-Sektion existiert seit der Änderung (5.00.00/213/AG) vom 10.08.2000 und wurde bisher nur für das farbige Hervorheben von Tree-Items in Masken verwendet. Alle Bitmaps, die  in Menüs verwendet werden sollen, müssen  nach folgendem Muster in der Picture-Sektion angegeben werden:
	[Pictures]
	; tree 1..9
	P1=TreeGreen.bmp|1	Bitmap, das verwendet werden soll, wenn die entsprechende Zeile im 				Query die Farbe 1 hätte.
	P2=TreeBlue.bmp|2	Bitmap, das verwendet werden soll, wenn die entsprechende Zeile im 				Query die Farbe 2 hätte.
	P3=TreeRed.bmp|3	Bitmap, das verwendet werden soll, wenn die entsprechende Zeile im 				Query die Farbe 3 hätte.
	P4=TreeGray.bmp|4	Bitmap, das verwendet werden soll, wenn die entsprechende Zeile im 				Query protected wäre.
	P5=TreeYellow.bmp|5	Bitmap, das verwendet werden soll, wenn die entsprechende Zeile im 				Query einen „Knoten“ repräsentiert..
	P6			unused
	P7			unused
	P8			unused
	P9=TreeNone.bmp|9	Wenn bei Zeilen, die “normal“ sind, etwas eingeblendet werden soll

	; even "m"ore 1..1000
	M1=Menu1Level1.bmp
	M2=Menu1Level2.bmp
	M3=Menu1Level3.bmp
	M4=Menu1Level4.bmp
	M5=Menu2Level1.bmp
	M6=Menu2Level2.bmp
	Mx=filename.ext  (x max. 1000)

	New ini-file-key for section [CONFIG]: MenuIcons=0 or 1. If this key is set  to 1 (true), the 5th paramter of each item-line in a menu-definition can hold a string, that contains the filename of a bitmap in the picture-directory (without path). This bitmap than will be shon in from of the menu-item, if it is also listed in the section [PICTURE]. If MenuStyle=2 (tree style) is used, additionally in the 6th parameter the filename of another bitmap can be set. This bitmap will be shown when the menu-item is selected. All bitmaps that are used in menus must be listed in the section [PICTURE] of the application-ini-file, because they have to be loaded indexed into memory on the applicationstart to gain speed while runtime. The picture-secktion already exists since update (5.00.00/213/AG) from 10.08.2000 and has been used until now only to highlite tree-items in maskst. All bitmaps, that are used in menues must be listed in the following manner:
	[Pictures]
	; tree 1..9
	P1=TreeGreen.bmp|1	bitmap used to mark lines that would have color 1 in a query
	P2=TreeBlue.bmp|2	bitmap used to mark lines that would have color 2 in a query
	P3=TreeRed.bmp|3	bitmap used to mark lines that would have color 3 in a query
	P4=TreeGray.bmp|4	bitmap used to mark lines that would be protected in a query
	P5=TreeYellow.bmp|5	bitmap used to mark lines that represents a “knot“ in a query
	P6			unused
	P7			unused
	P8			unused
	P9=TreeNone.bmp|9	for all “normal“ lines in atree (if there should appear something)	

	; even "m"ore 1..1000
	M1=Menu1Level1.bmp
	M2=Menu1Level2.bmp
	M3=Menu1Level3.bmp
	M4=Menu1Level4.bmp
	M5=Menu2Level1.bmp
	M6=Menu2Level2.bmp
	Mx=filename.ext  (x max. 1000)

07.05.2002	(6.01.03/363/DD) Neuer INI-Datei-Schlüssel in der Sektion [CONFIG]: UserLoginWin=100,100
	(UserLoginWin=left,top) setzt für den ersten Aufruf des Loginfensters die Koordinaten der oberen rechten Ecke. Damit ist es möglich das Loginfenster neben oder über den SplashScreen (falls vorhanden) zu setzten. Wenn der User das Fenster verlegt oder dessen Größe modifiziert, wird dies in der Sations-INI-Datei abgelegt. Nach dem erste Aufruf muss man  daher die entsprechende Zeile aus der Stations-INI-Datei im PrintSet-Pfad löschen, um mit diesem Schlüssel eine sichtbare Wirkung zu erzielen.
	
	New application-INI-file-key fro section [CONFIG]: UserLoginWin=100,100. (UserLoginWin=left,top) sets the coordinates of the upper left edge of the login-window for its first call. With this it is possible to place the login-window beneath or above the splashscreen (if availiable). If the user moves or resizes the window, it will be saved to the station-ini-file. After the first call of this window, the realted line in the station-ini-file has to be deleted to have a visible effect with this new key.

07.05.2002	(6.01.02/362/DD) Neuer Befehl: NAVIGATE strAdress
	Wenn der ApplicationStyle=2 (html style) ist, kann man hiermit die angezeigte Seite im Hauptfenster bestimmen.
	
	New command: NAVIGATE strAdress
	On ApplicationStyle=2 (html style) the shown page in the main-window can be set with this command.

06.05.2002	(6.01.01/361/GH) Die Übergabe von Boolean-Werten an List&Label wahr fehlerhaft. Das Problem ist behoben.
	
	The committal of boolean values to List&Label was wrong. The problem has been solved.

06.05.2002	(6.01.00/360/HB) Ab jetzt kann eine CARA-Anwendung mit verschiedenen “Styles“ aufgerufen werden. Es wird unterschieden zwischen “classic style“ und “html sytle“ für das Hauptfenster der Anwendung, und “hidden style“, “classic style“ und “tree sytle“ für das Menü der Anwendung. Dazu wurde ein bestehender Schlüssel im der Sektion [CONFIG] mit erweiterter Funktionalität ausgestattet und drei weitere Schlüssel eingefügt. Ein paar Picture-Dateien wurden erweitert. Ein Beispiel ist in der CARA-Dokumentation.

	Neue Schlüssel:
	classic style:	(Hauptfenster der Anwendung wie bisher)
		ApplicationStyle=1

	html style:	Hauptfenster der Anwendung ist ein HTML-Browser.
			Alle Dateien vom Typ Dateiname.csh werden als Script ausgeführt.
			Alle Dateinamen, die ohne Extension in der Adress-Zeile eingegeben werden,
			und als Script ausführbar sind, werden entsprechend ausgeführt. 
		ApplicationStyle=2

	hidden style:	Kein Menü, wenn z.B. das Browserfenster als Navigationsfläche verwendet wird.
		MenuStyle=0

	classic style:	Wie gehabt, oben im Hauptfenster
		MenuStyle=1

	html style:	Rechts im Hauptfenster als Baum
		MenuStyle=2

	
	SplashImage=PICTURE_PATH\app_maker.jpg,-40,-40,3000

 		note: 	Zeigt einen Splash-Screen beim Start der Anwendung
			SplashImage=picture,width,height,delay
			width and height > 0 = pixel
			width and height < 0 = %
			delay im ms

	Erweiterung des bestehenden Schlüssels:
	html style:	
		MainImage=PICTURE_PATH\app_home.htm
		note:	html-page (path-constants are allowed)

	classic style:
		MainImage=bitmap-file, left (borderspace to bitmap), top, bottom, right
		note: 	left, top, bottom, right > 0 = %
			left (no other needed)   < 0 = centered with borderspace to bitmap in % from all four
			borders

	Änderung der Verwendung eines bestehenden Schlüssels:
	html style:
		LinePanelTop=31

	classic style:
		LinePanelTop=5

	note: 	0 = don't show

	From now on a CARA-Application can be called with different styles. Availiable are “classic style“ and “html sytle“ for the main-window of the application, and “hidden style“, “classic style“ and “tree sytle“ for the menu of the application. There are some changes and enhances to the section [CONFIG]. A few new picture-files where added. An example is availiable in the cara-documentation.

	new keys:
	classic style:	Main-window of the application as it used to be.
		ApplicationStyle=1

	html style:	Main-window of the application is a HTML-browser.
			All files of type “filename.csh“ willbe executetd as scripts.
			All filenames typed into the adress-line without extension that can be executed as
			scripts will be treated so.
		ApplicationStyle=2

	hidden style:	No menu, if e.g. the main-window is the program navigation		MenuStyle=0

	classic style:	As it used to be. 
		MenuStyle=1

	html style:	In the right of the main-window as a tree.
		MenuStyle=2

	
	SplashImage=PICTURE_PATH\app_maker.jpg,-40,-40,3000

 		note: 	Shows a Splash-Screen when the application is started.
			SplashImage=picture,width,height,delay
			width and height > 0 = pixel
			width and height < 0 = %
			delay im ms

	enhancement of an existing  key:
	html style:	
		MainImage=PICTURE_PATH\app_home.htm
		note:	html-page (path-constants are allowed)

	classic style:
		MainImage=bitmap-file, left (borderspace to bitmap), top, bottom, right
		note: 	left, top, bottom, right > 0 = %
			left (no other needed)   < 0 = centered with borderspace to bitmap in % from all four
			borders

	change of use for an existing key:
	html style:
		LinePanelTop=31

	classic style:
		LinePanelTop=5

		note: 	0 = don't show

02.05.2002	(6.00.11/359/GH) Die [SESSION_ID] ist ab jetzt auch im Main-Script bereits verfügbar.
	
	From now on the [SESSION_ID] is already availiable in the main-script.

02.05.2002	(6.00.10/358/HB) Neuer Befehl: 
	SEND_MAIL [boolRes], [listMailText] or strMailText, strSubject, strFromName, strFromEMail, 	strToName, strToEMail', strFileName, strFileDisplayName  {, boolShowDlg 
		{, boolShowMsg}}

	[boolRes ]		Ist die Ausführung (ohne Versand) erfolgreich gewesen?

	[listMailText]		List-Variable mit dem EMail-Text
	oder
	strMailText		EMail-Text 

	strSubject 		Betreff
	strFromName 		Absender-Name der im EMail-Client angezeigt werden soll
	strFromEMail 		Absender-EMail-Adresse
	strToName 		Empfänger-Name der im EMail-Client angezeigt werden soll
	strToEMail 		Empfänger-EMail-Adresse
	strFileName		Dateiname des Anhangs (nur ein Dateiname)
	strFileDisplayName	Dateiname der in EMail-Client angezeigt werden soll
	boolShowDlg		Soll der EMail-Client aufgerufen werden
	boolShowMsg		Sollen Fehler und/oder Erfolg als Information angezeigt werden

	New command:
	SEND_MAIL [boolRes], [listMailText] or strMailText, strSubject, strFromName, strFromEMail, 	strToName, strToEMail', strFileName, strFileDisplayName  {, boolShowDlg 
		{, boolShowMsg}}

	[boolRes ]		has the execution (without sending) been successful?

	[listMailText]		List-variable with the email-text
	oder
	strMailText		email-text 

	strSubject 		subject
	strFromName 		sender-name that shoud be shown in the email-client
	strFromEMail 		sender-email-adress
	strToName 		receiver-name that shoud be shown in the email-client
	strToEMail 		receiver--email-adresse
	strFileName		filename of the attachment (only one file)
	strFileDisplayName	filename that should be shown in the email-client
	boolShowDlg		should the email-client dialog-box be shown
	boolShowMsg		should errors and/or success be shown in a message-box

02.05.2002	(6.00.09/357/HB) Menü-Items die Script-Namen gefolgt von Parametern enthielten, wurden vom Rechte-System nicht erkannt. Der Fehler ist behoben.

	Menu-items that had script-names followed by parameters, were not recognized by the rights-system. This error has been removed.

01.05.2002	(6.00.08/356/GH) Inherited Varibalen können jetzt auch an List&Label weitergegeben werden.
	
	Inherited variables now can also be paresed to List&Label..

30.04.2002	(6.00.07/355/MB) In der Section [Config] der Applikations-INI-Datei kann ab jetzt mit dem Schlüssel RegisterCara=0 das Registrieren eines abweichenden Pfades beim Aufrufen der Cara-Engine verhindert werden. Dies ist insbesondere wichtig für Anwender, die häufig zwischen verschiedenen CARA-Versionen wechseln bzw. die Applikations-Links mit Verweisen auf CARA-Engines in verschiedenen Verzeichnissen verwenden. Der Defaulwert ist RegisterCara=1.
	
	A new key for section [Config] in application-ini-files is availiable: RegisterCara=0. So it is possible to prevent the engine to register it selv when the path has been changed. This is especially needed for users that are changing between diffrent versions of CARA or that are using application-links to CARA-engins in different directorys. The default value is RegisterCara=1.

30.04.2002	(6.00.06/354/DD) In List&Label können ab jetzt die Barcodes vom Typ “MAXICODE“, “MAXICODE/UPS“ und “PDF417“ verwendet werden. Die Barcodes unterstützen z.T. auch nicht druckbare Zeichen. Um diese im Barcodetext verwenden zu können, können im Barcodetext Tags der Form {binary:xx} verwendet werden, wobei xx für eine beliebige Folge von (zweistelligen) Hexadezimalzahlen steht. Dies ist insbesondere wichtig, wenn Maxicodes gemäß der UPS-Spezifikation erstellt werden sollen;  die dafür benötigten Sonderzeichen können z.B. auf diese Weise eingegeben werden. Die DLL-Dateien von List&Label wurden mit einem ServicePack der Fa. Combit auf den Release-Stand 8.034 gehoben. Das entsprechende List&Label-Setup muss mit der gesonderten Datei ebenfalls geladen werden. Ab jetzt ist die Dokumentation des Designers von List&Label Bestandteil des Ordners “Dokument“ von CARA, es handelt sich um die Dateien “DruckDesigner.doc“ und “DruckDesigner.pdf“.
	
	From now on, the barcode types “MAXICODE“, “MAXICODE/UPS“ and “PDF417“ could be handled within List&Label. These barcodes are able to treat special-characters that normaly are not printable. To use those chars within barcodetexts, it is possible to use tags of the form {binary:xx} within the barcodetext, where xx can be any two-char hexadecimal code. This is especially needed according to the UPS specifikations. The DLL-files of List&Label have been updated to release 8.034 by a service-pack from combit. The related List&Label-Setup has to be downloaded with the apropriate file. From now on the files “DruckDesigner.doc“ und “DruckDesigner.pdf“ are part of the CARA “document“-directory, these files are the handbook for the List&Label-designer.

25.04.2002	(6.00.05/353/DD) Ab jetzt können in Script-, Include-, Menü- und Masken-Dateien Kommentar-Blöcke definiert werden. Ein Block startet mit einer Zeile die aussschießlich die Zeichenfolge “/*“ enthält und endet mit einer Zeile, die ausschließlich die Zeichenfolge “*/“ enthält.
	
	From now on ist is possible so define comment-blocks in script-, include-, menu- and mask-definition-files. A block starts with a line that contains exclusively the string “/*“ and the block ends with a line that  contains exclusively the string “*/“.

24.04.2002	(6.00.04/352/DD) Beim Interpretieren der Query kam es gelegentlich vor, dass auf Grund der Eingabe und des Abspeicherns von Kommata in String-Felder eine anschließende Suche unnötigerweise erfolglos blieb. Dieser Fehler ist behoben.
	
	Because of the interpreting of querys, sometimes, when a colon (,) had been saved to a string field, a afterwards made search failed unnecessarily. This error has been removed.

24.04.2002	(6.00.03/351/DD) Die Schnellsuche mit der Eingabe einer Taste im Browser  verursachte einen Fehler bei der Eingabe eines Sonderzeichens – der Fehler ist behoben.
	
	By pressing a key that passed a special char to the browsers fastsearch an error occured – this problem is solved.

24.04.2002	(6.00.02/350/DD) Beim Schreiben von Registry-Einträgen wurde auf den Modus “LazyWrite“ gewechselt um das Registrieren bei Win2000 und XP zu verbessern. Dies wurde auch in der DAOSetup.exe durchgeführt.
	
	While writing to the registry the “LazyWrite“ option will now be used to improve this with Win2000 and WinXP. Therefor the DAOSetup.exe has been changed also.

22.04.2002	(6.00.01/349/DD) In Browsern springt automatisch die Schnellsuche an, wenn eine Ziffer oder ein Buchstabe eingegeben wird.
	
	The fast-find-dialog automaticly appears by typing a digit or a char within a browser.

20.04.2002	(6.00.00/348/DD) List & Label – Integration. Der Reportgenerator “List & Label (LL)“ der Combit GmbH (www.combit.de bzw. www.combit-software.com) ist nun integraler Bestandteil der Cara-Engine. Das bisherige Druckmanagement durch die “Virtual-Print-Engine (VPE)“ der Firma IDEAL Software (www.idealsoftware.de) wird vorläufig parallel neben LL weiter verwendet werden können. Langfristig ist jedoch geplant, alle Druckjobs nach LL zu portieren, um die VPE überflüssig zu machen. Die volle Dokumentation dieses Schrittes ist in dem Dokument “Cara.rtf“ unter dem Suchbegriff “VAR_PF“ zu finden. Die Befehle VAR_PF, LOCAL_PF, GLOBAL_PF, PF_EXECUTE und  PF_SET_VAR wurden hinzugefügt – damit können alle Druckjobs gesteuert werden, denn die aufrufenden Scripte werden in Zukunft nur noch einmalig durch den Programmierer erstellt – die Druckanpassung erfolgt ausschließlich durch den Combit-Designer. Im Print-Menü der Druckicons in einer Maske wird nun auch noch die Option “Layout“ angeboten, der [Mask!MASK_ACT_PRINT_MODE] kann dann den Wert [PRINT_OUT_LAYOUT] annehmen.

			List & Label – integration. The reportgenerator “List & Label (LL)“ from Combit GmbH (www.combit.de bzw. www.combit-software.com) now is a essential part of the Cara-Engine. The existing printmanagement of the “Virtual-Print-Engine (VPE)“ from IDEAL Software (www.idealsoftware.de) for the time being will work parallel to LL. The long term planning is to port all the printjobs to LL and make the VPE needless. The full documentation from this step is placed in the dokument “Cara.rtf“, you can find it by using the matchcode “VAR_PF“. The comands VAR_PF, LOCAL_PF, GLOBAL_PF, PF_EXECUTE and  PF_SET_VAR have been added – alle the printjobs can be handled with them. They have to be written only one time by the programer – the  individual adaption will be done with the Combit-Designer. In the printmenu from the printicon in a mask the option “Layout“ is now availiable, the [Mask!MASK_ACT_PRINT_MODE] than may change to   [PRINT_OUT_LAYOUT].

20.04.2002	(5.03.43/347/DD) “Divisionen durch Null“ werden ab jetzt von der Engine abgefangen und im Monitor angezeigt.

			“Division by zero“ will be intercepted by the engine and reported in the monitor.

19.04.2002	(5.03.42/346/DD) Die Befehl [DEBUG_OFF] und [DEBUG_SQL_OFF] halten den Debugger an, schließen aber nicht mehr den Monitor, woduch nun möglich ist, den Monitor partiell “mitlaufen“ lassen kann.

			The commands [DEBUG_OFF] and [DEBUG_SQL_OFF] are stoping the debugger but do not close the monitor-window anymore. So it is possible to let the monitor run partly.

12.04.2002	(5.03.41/345/DD)	Das Feature, das mit der Änderung vom 13.04.2000 (4.03.27/187) erstellt wurde (...in Masken-Dialogelementen "BIT_BUTTON" und "SPEED_BUTTON" kann man als zweites Feld in der VIEW - Zeile einen Bild-Dateinamen angeben, dahinter,  getrennt durch ein Pipe-Zeichen "|", kann man definieren, wieviele Bilder die Bilddatei enthält...), funktionierte nicht im Zusammenhang mit Pfad-Konstanten (wie z.B. PICTURE_PATH) und der Pipe-Option. Der Fehler wurde behoben. 

			The feature from release 13.04.2000 (4.03.27/187) did not work with path-constants like PICTURE_PATH and the pipe-option. (...in mask-dialog-elements "BIT_BUTTON" und "SPEED_BUTTON" as the second field in the VIEW line a picture-file-name could be placed, followed by a pipe-character could be defined the number of images within the picture-file…). This error has been removed.

11.04.2002	(5.03.40/344/MB)	Updates, die über mehrere Tabellen ausgeführt wurden, führten im Zusammenhang mit den Variablen “SetTime4AllUpdates“ und “ SetUser4AllUpdates“ (aus der Sektion [SQL] der INI-Datei) in Verbindung mit dem Microsoft-SQL-Server zu Fehlern. Dieser Fehler ist behoben.

			SQL-updates-querys that where using more than one table, failed on Microsoft-SQL-Server, depending on the application-ini-file-variables from section [SQL] “SetTime4AllUpdates“ and “ SetUser4AllUpdates“. This error has been removed.

 11.04.2002	(5.03.39/343/DD)	Im SQL-Interface können jetzt die Variablen “SetTime4AllUpdates“ und “ SetUser4AllUpdates“ aus der Sektion [SQL] der INI-Datei per Knopfdruck an- und ausgeschaltet werden. Dazu sind 8 neue Icons in das Picture-Verzeichnis eingefügt worden

			Two new buttons in the SQL-Interface allows from now on to switch the application-ini-file-variables from section [SQL] “SetTime4AllUpdates“ and “ SetUser4AllUpdates“. Therefore four new icons have been placed in the picture-directory.

13.3.2002	 (5.03.38/342/DD)	 Die Sortier-Reihenfolge im Dokument-Manager kann nun mit dem Applikations-INI-Datei-Schlüssel “DocMgrSortOrder“ in der Sektion [DocumentManager] voreingestellt werden und im Dokumenten-Manager über einen Knopf gewechselt werden. Mögliche Einstellungen:
0 (Default)	= CreateDate desc, CreateTime desc
1		= ItemNote
2		= NextProcessDate desc, NextProcessTime desc
3		= FinishDate desc, FinishTime desc

It is now possible to predefine the sort-order of the document-manager with the new application-ini-file-key “DocMgrSortOrder” in the section [DocumentManager] this order can also be changed with a butoon in the document-manager. Possible settings:
0 (Default)	= CreateDate desc, CreateTime desc
1		= ItemNote
2		= NextProcessDate desc, NextProcessTime desc
3		= FinishDate desc, FinishTime desc

13.3.2003	(5.03.37/341/DD)	 Wenn eine Notiz oder ein Dokumenten-Ordner bei einem Datensatz angehängt wurde, kann man mit dem neuen Applikations-INI-Datei-Schlüssel in der Sektion [Config] “NoteRedIfAvail=1 (Vorgabewert) oder 0“ und dem Applikations-INI-Datei-Schlüssel in der Sektion [DocumentManager] “DocMgrRedIfAvail=1 (Vorgabewert) oder 0“ einstellen, ob das entsprechende ICON in Masken und Browsern in roter Farbe erscheinen soll. Dazu sind zwei neue Icons im PICTURES-Verzeichnis der Anwendung einzuspielen: “ NoteRed.bmp“ und “DocMgrRed.bmp“.

It is now possible to highlight the icons of the note-manager or document-manager if a note or a document has been linked to a record. This could be configurated by the new application-ini-file-key in section [Config] “NoteRedIfAvail=1 (default value) or 0“ and the new application-ini-file-key in section [DocumentManager] “DocMgrRedIfAvail=1 (default value) or 0“. For this two new icons have to be placed into the pictures-directory of the application: “ NoteRed.bmp“ and “DocMgrRed.bmp“.

18.2.2002	 (5.03.36/340/DD)	 Keine Meldung mehr im Script-Monitor bei den String-Kalkulationen “POS()“ und 
		“COPY()“ mit leeren Strings.

	No more warnings in the script-monitor with the string-calculations “POS()” and “COPY()”, using empty strings.

18.2.2002	 	(5.03.35/339/DD)	 Vier neue Applikations-INI-Datei-Schlüssel in der Sektion [Config], die direkt mit den 
		im  Werkzeugkasten einstellbaren Debugmöglichkeiten verknüpft sind:
ScriptDebug=0
ScriptDebugOnError=1
SQLDebug=0
SQLDebugOnError=1

4 new application-INI-file keys for the section [Config], that are directly relatet to the debugoptions in the toolbox:
ScriptDebug=0
ScriptDebugOnError=1
SQLDebug=0
SQLDebugOnError=1

17.2.2002	(5.03.34/338/VD)	 Der Fehler, dass Überschriften von Query-Dateien bei unkompilierten Querys nicht 
		korrekt aus der Sprach-Datei geladen wurden, ist behoben.

The error, that headlines in uncompiled queryfiles where not loaded from out of the languagefile, has been removed.

15.2.2002	 (5.03.33/337/GH)	 Neuer optionaler Parameter für den Befehl VIEW:
VIEW [browser]{,[bool]{,'Head'{,'Info'{,ReturnOnOne{,NoExecute}}}}
			Falls der VAR_BOOL-Wert NoExecute TRUE ist (default = FALSE),  wird davon ausgegangen, dass 
			das Query bereits mit EXECUTE ausgeführt wurde, und nur noch gezeigt werden muss. 

New optional parameter for the command VIEW:
VIEW [browser]{,[bool]{,'Head'{,'Info'{,ReturnOnOne{,NoExecute}}}}
If the VAR_BOOL-value NoExecute is TRUE (default = FALSE), it will be assumed that the query has already been executed and must be shown only.

15.2.2003	(5.03.32/336/VD)	 Alle Befehle von CARA, die mit String-Parametern aufgerufen werden, wie z. B. VIEW oder GET_YES_NO, sind ab jetzt  Multilanguage fähig (siehe Änderungsstand 5.00.00/215/AG). Dies gilt auch für die Titel der Querydateien und die Titel der Masken.

All commands in CARA, that have string-parameters, as e.g. VIEW or GET_YES_NO, are multilanguage-able now. This also works for mask-titles and external queryfile-titles.

14.2.2002	 (5.03.31/335/DD) In der  CARA.MSG-Datei kann ab jetzt unter Message-Nummer 493 der 
		Vorgabewert für die Bezeichnung eines Aktenordners im Dokumentmanager angegeben werden.

	In the cara-msg-file under msg-no. 493 the defaultvalue for the name of a file in the document manager 
	can be placed.

14.02.2002	(5.03.30/334/DD) ??.

	
31.01.2002	(5.03.29/333/DD) Bei ASCII-Imports wird ab jetzt die UpdateTime ohne Nachkommastellen beim
	 Insert angegeben.

	The UpdateTime will be inserted on ASCII-Imports without any deciamls form now on.

30.01.2002	(5.03.28/332/DD) Im GET_STRING – Befehl kann man ab jetzt als Eingabemaske  'pppppppp'
	anstelle von 'XXXXXXXXXXXX' angeben und damit eine Passwort-Eingabe forcieren.

	Giving 'pppppp' Instead of 'XXXXXXXXX' as the stringmask for the GET_STRING – command, 
	will cause a pasword-input.

09.01.2002	(5.03.27/331/DD) Der Fehler, das defekte Script-Dateien im Debug-Modus nicht angezeigt wurden,
	sondern kommentarlos nicht gestartet wurden, ist behoben.

	The error, that korrupt scripts where stoped without any comment in debug-mode has been removed.

12.12.2001	(5.03.26/330/DD) Ein neuer Applikations-INI-Datei-Schlüssel in der Sektion [CONFIG]:
	UserLoginFile=0 oder 1. Schreibt in das PrintSet-Verzeichnis eine Datei mit dem Namen “usrlg.dat“, 
	in der alle Daten des Logins verzeichnet werden.

	A new application-ini-file-keysin the section [CONFIG]: UserLoginFile = 0 or 1. Writes into the
 	PrintSet-directory a file with the name “usrlg.dat”, that holds all the login relevant data.

05.12.2001	(5.03.25/329/DD) Diverse Verbesserungen im internen Umgang mit Case-Sensitiven SQL-Servern:	Buff2Strings() verbessert, SQL-Util-Zugriffe auf LockRes überarbeitet.

	Some improvings in dealing with case-sensitive SQL-Servers: Buff2Strings() improved, SQL-Util-
	Querys upon LockRecs improved.

3.12.2001	(5.03.24/328/DD)  MySQL-Library-Update 1.8 > 1.9, Orpheus-Library-Update 3.03 > 4.0 und 
	Async-Professional-Update  3.1 > 4.0 durchgeführt.

	Realized MySQL-Library-Update 1.8 > 1.9, Orpheus-Library-Update 3.03 > 4.0 and 
	Async-Professional-Update  3.1 > 4.0.

21.11.2002	(5.03.23/327/DD)  Vier neue Constanten vom Typ VAR_NUM:
[NOTES_FLAG_DEMAND]		(256)
[NOTES_FLAG_FREE_TEXT]		(512)
[NOTES_FLAG_INTERN]			(1024)
[NOTES_FLAG_PRINT_FRONT]		(2048)
[NOTES_FLAG_PRINT_BACK]		(4096)
Diese beinhalten die Binärflags, die im Notizmanager verwendet werden um das RecFlag-Feld zu setzten.

Four new constants of  type VAR_NUM:
[NOTES_FLAG_DEMAND]		(256)
[NOTES_FLAG_FREE_TEXT]		(512)
[NOTES_FLAG_INTERN]			(1024)
[NOTES_FLAG_PRINT_FRONT]		(2048)
[NOTES_FLAG_PRINT_BACK]		(4096)
These are holding the binary code, that are used by the note-manager to set the RecFlag-field.

19.11.2001	(5.03.22/326/DD)  Vier neue globale Variablen vom Typ VAR_BOOL, die Einfuß auf Einstellungen im Werzeugkasten haben:
1.	[ADVANCE_ON_ENTER]
2.	[SEARCH_ON_ENTER]
3.	[SAVE_AND_CLEAR_ON_HASH]
4.	[USE_SOUNDS]
	
	Four new global vars of type VAR_BOOL, that are able to influence the settings in the toolbox: 
1.	[ADVANCE_ON_ENTER]
2.	[SEARCH_ON_ENTER]
3.	[SAVE_AND_CLEAR_ON_HASH]
4.	[USE_SOUNDS]

6.11.2001		(5.03.21/325/DD)  Neuer Befehl: LIST_SORT [list] sortiert die Liste aufsteigend.

	New command: LIST_SORT [list] sorts the list ascending.

24.10.2001	(5.03.20/324/DD)  CARA ist nun MySQL-fähig. Man benötigt ein spezielles Compilat und die DLL “libmysql.dll“ im CARA-Verzeichnis.

CARA can now use MySQL. A special compiled version is necessary and the DLL “libmysql.dll” in the cara-directory.

24.10.2001	(5.03.16/324/DD) Zwei neue Befehle: BACK_MARK und BACK_JUMP. Mit BACK_MARK wird eine Rücksprungmarke gesetzt, zu der mit BACK_JUMP wieder zurück “gesprungen“ werden kann. Diese Befehle können nur innerhalb einer PROCEDURE, und dort auch nur jeweils einmal, verwendet werden verwendet werden.

Two new commands: BACK_MARK and BACK_JUMP. With BACK_MARK a returnpoint can be set to which can be returned with BACK_JUMP. These commands can only be used in a PROCEDURE and only be used once within each PROCEDURE.

24.10.2001	(5.03.15/323/DD) Ein neuer Applikations-INI-Datei-Schlüssel in der Sektion [CONFIG]:
	DataPort=
	Für SQL-Server die über eine IP angesprochen werden können, kann hier die Port-Adresse hinterlegt werden.
	
	A new application-ini-file-keysin the section [CONFIG]: DataPort =
	For sql-server that can be treated with an IP, the Port-Adress can be placed here.

24.10.2001	(5.03.14/322/DD) Ein neuer Applikations-INI-Datei-Schlüssel in der Sektion [CONFIG]:
	DataHost=
	Für SQL-Server die über eine IP angesprochen werden können, kann hier die Host-IP hinterlegt werden.
	
	A new application-ini-file-keysin the section [CONFIG]: DataHost =
	For sql-server that can be treated with an IP, the Host-IP can be placed here.

24.10.2001	(5.03.13/321/DD) Ein neuer Applikations-INI-Datei-Schlüssel in der Sektion [SQL]:
	SingleCharSize=
	Für SQL-Server, bei denen SingelCharAsBool=1 ist, kann hiermit gesteuert werden, wie groß ein CHAR(1) Feld in Wahrheit vom Server verwaltet wird. In MySQL ist das 3 ind Orcale ist das 2...
	
	A new application-ini-file-keysin the section [SQL]: SingleCharSize =
	For sql-server, that are using SingelCharAsBool=1, the real fieldsize (that the sql-server uses to handle it) can be set. With MySQL it is 3, with Oracle is it 2…

24.10.2001	(5.03.12/320/DD) Ein neuer Applikations-INI-Datei-Schlüssel in der Sektion [SQL]:
	CaseSensitiveTables=
	Damit können SQL-Server, die die Tabellenbezeichner Case-Sensitive verwalten für folgende Befehle unabhängig von der Schreibweise angesteuert werden (die Groß- und Kleinschreibung wird einfach im Hintergrund mit der Tabellendefinition auf dem SQL-Server abgeglichen) : DELETE, INSERT, UPDATE, SELECT, DROP TABLE.
	
	A new application-ini-file-keysin the section [SQL]: CaseSensitiveTables =
	With this key a sql-server, that is using case-sensitive table-names, can handle the table-names independend from the case-sensitive-demand. (the correct form of uppercase and lowercase letters are compared with the table definition on the sql-server in the background and than replaced) ; DELETE, INSERT, UPDATE, SELECT, DROP TABLE.

12.10.2001	(5.03.11/319/DD) Ein neuer Applikations-INI-Datei-Schlüssel in der Sektion [SQL]:
	InterpretBlankAs=
	Wodurch ein Leer-Zeichen in einer Zeichenkette vor dem Suchen durch das hier angegebene Zeichen ersetzt wird. Bei manchen SQL-Servern kann z.B. nicht nach dem Artikel “K A4 E 000“ gesucht werden, ohne diesem Bezeichner ein Wildcard voran zustellen. Dann wäre InterpretBlankAs=? eine gute Wahl. Dadurch werden alle Leer-Zeichen durch dieses Standard-Wildcard ersetzt, welches dann selbst vor der Weitergabe an den Sql-Server durch das dort hinterlegte Wildcard für einzelne Buchstaben ersetzt wird. Wenn InterpretBlankAs= keinen Wert enthält, wird das Minuszeichen unverändert an den SQL-Server weitergereicht.

	A new application-ini-file-keysin the section [SQL]: InterpretBlankAs=
	Where any blank-char in a string will be replaced by the here given value, befor a serach-command will be executed. In some SQL-Servers is it not possible to serach e.g. For an article like “K A4 E 00“ without placing a wildcard in front of this string. In this case it would be good to use InterpretBlankAs=?. So all blanks will be replaced by the singe standard wildcard. This will be replaced by the value for single wildcards of the specific SQL-Server (given in the same section) before giving a query to execution. If InterpretBlankAs= has no value, the minus sign will be passed unchanged to the SQL-Server.

14.09.2001	(5.03.10/318/DD) Ein neuer Applikations-INI-Datei-Schlüssel in der Sektion [SQL]:
	InterpretMinusAs=
	Wodurch ein Minus-Zeichen in einer Zeichenkette vor dem Suchen durch das hier angegebene Zeichen ersetzt wird. Bei manchen SQL-Servern kann z.B. nicht nach dem Artikel “K-A4-E-000“ gesucht werden, ohne diesem Bezeichner ein Wildcard voran zustellen. Dann wäre InterpretMinusAs=? eine gute Wahl. Daruch werden alle Minus-Zeichen durch dieses Standard-Wildcard ersetzt, welches dann selbst vor der Weitergabe an den Sql-Server durch das dort hinterlegte Wildcard für einzelne Buchstaben ersetzt wird. Wenn InterpretMinusAs= keinen Wert enthält, wird das Minuszeichen unverändert an den SQL-Server weitergereicht.

	A new application-ini-file-keysin the section [SQL]: InterpretMinusAs=
	Where any minus-char in a string will be replaced by the here given value, befor a serach-command will be executed. In some SQL-Servers is it not possible to serach e.g. For an article like “K-A4-E-00“ without placing a wildcard in front of this string. In this case it would be good to use InterpretMinusAs=?. So all minus will be replaced by the singe standard wildcard. This will be replaced by the value for single wildcards of the specific SQL-Server (given in the same section) before giving a query to execution. If InterpretMinusAs= has no value, the minus sign will be passed unchanged to the SQL-Server.

21.08.2001	(5.03.09/317/DD) Neue Maske-Option FORCE_FILTER die im Options-String der Definitions-Datei (erste Zeile der “SetDoc“ Datei) angegeben werden kann. Wenn diese Option angegeben wird, kann eine Masken-Suche nur ausgelöst werden, wenn mindestens eine einschränkende Angabe für die Suche gemacht wurde. Das ist bei besonders großen Datenmengen wichtig, um geringere Datenmengen im Netz zu erzwingen und um Zeit zu sparen.

	New mask-option FORCE_FILTER which can be set in the mask-definition-file in the first line of the SetDoc-file. If this option is set, the user MUST define at last one filter that reduces the amount of records, that ar returned from the server. This is usefull in case of large datafiles to save time and net-trafic.

07.08.2001	(5.03.08/316/DD) CALC [anyStr] AS CHAR([otherStr]) hat beim Ersetzen des Inhaltes von [otherStr] nicht korrekt gearbeitet. Der Fehler ist behoben.

	CALC [anyStr] AS CHAR([otherStr]) hast not replaced the contens of [otherStr] propperly. This error has been removed.

07.08.2001	(5.03.07/315/MB) Fehler aus Release (4.03.25/185) vom 04.04.2000 beseitigt: [Browser!BROWSER_HOOK_MARK] wurde funktionstüchtig gemacht. Er schien nie gearbeitet zu haben...

	Error out of release (4.03.25/185) from 04.04.2000 repaired. [Browser!BROWSER_HOOK_MARK] now works...

26.07.2001	(5.03.06/314/DD) Zwei neue Applikations-INI-Datei-Schlüssel in der Sektion [SQL]:
	SetTime4AllUpdates=0 (nein) oder 1 (ja)
	SetUser4AllUpdates=0 (nein) oder 1 (ja)
	Wodurch gesetzt werden kann ob bei jedem Update die Zeit und der User gesetzt werden soll. Wenn  SetTime4AllUpdates nicht gesetzt ist, wird  SetUser4AllUpdates ignoriert.

	Two new application-ini-file-keys in the section [SQL]:
	SetTime4AllUpdates=0 (no) oder 1 (yes)
	SetUser4AllUpdates=0 (no) oder 1 (yes)
	With this, it could be set if with every update-query the time and the user should be saved. If SetTime4AllUpdates is not set, SetUser4AllUpdates will be ignored.

19.07.2001	(5.03.06/313/DD) Erweiterung der Änderung 16.01.2000 / (4.02.11/151). Zusätzlich zur UpdateTime wird jetzt auch die UpdateID bei jeder Update-Abfrage gesetzt.

	In Addition to the 16.01.2000 / (4.02.11/151) every update-query will now also set the UpdateID.

19.06.2001	(5.03.05/312/GH) Im Benutzerrechte-Dialog ist ab jetzt ein Hilfe-Knopf verfuegbar. Dazu passend ist in der Sektion [Help] in Applikations-INI-Datei der Schluessel “Rights“ vorhanden..

	A help-button is availiable in the user-rights-dialog from now on. Also in the section [help] of the application-ini-file has a related key: “Rights”.

01.06.2001	(5.03.04/311/GH) Wenn in der Applikations-INI-Datei als HelpExtension “.chm“ angegeben wurde und dies in Verbindung mit dem HelpMain-Eintrag einen Dateinamen ergibt, der mittels der Windows-HtmlHelp aufgerufen werden kann, dann werden alle Hilfeaufrufe ueber die Windows-Html-Hilfe abgewickelt. Alle Mask-Help-Ids muessen dann die Seitenbezeichnung (mit Extension)  der einprogrammierten Hilfeseite enthalten. Ausserdem muessen auch alle Angaben in der Help-Sektion inkl. Extension gemacht werden.

	If the HelpExtension-key in the application-ini-file is “.chm” and it is an executable HtmlHelp-file in connection with the HelpMain-key, the windows-HtmlHelp will be used to give out the applications help. Then all MASK_HELP_IDs must hold the complete pagename incl. its extension that has been used in the compiled help. Also all keys in the help-section must have the extensions included.

14.05.2001	(5.03.03/310/DD) Das Initialisieren von Zeit-Feldern im Dokumentmanager wurde geändert.

	The Initialisation of time-fields in the document-manager has been changed.

14.05.2001	(5.03.02/309/DD) Der Fehler, dass man durch Doppelklick in einem Tree-Feld ohne Eintragungen einen Absturz der CARA-Engine forcieren konnte, ist beseitigt.

	The Cara-Engine could be forced to cause an runtime error by double-clicking an empty tree-field. This error has been removed.

04.05.2001	(5.03.01/308/DD) Durch die Änderung 5.02.15/303 vom 25.04.2001 wurden beim Säubern der Masken nicht die Vorgabewerte der Feld-Flaggen wiederhergestellt, wenn diese zuvor mit FIELD_FLAG_ON_OFF geändert wurden. Der Fehler ist behoben.

	With the release of version 5.02.15/303 from 25.04.2001 the field-flags where not reseted to the default values when clearing the mask, if the flags have been changed with the command FIELD_FLAG_ON_OFF. This error has been removed.

25.04.2001	(5.03.00/307/DD) Das Verhalten der Engine im Bezug auf das Abwarten bereits gestarteter Hooks wurde grundsätzlich verändert. Es wird nun versucht eventuelle Threads abzuwarten.

	The behavior of the engine in case of waiting for the execution of a started hook has been changed basicly. Now possible threads should be avoided.

25.04.2001	(5.02.18/306/DD) Neuer Schlüssel in der Applikation-INI-Datei, Sektion [Config] MaxWaitForCnt=. Der Vorgabewert ist 25000. Dies ist die Anzahl der Wait-Loops, die maximal auf das Beenden eines Hooks in einer  Maske oder einem Browser gewartet werden. Dieser Wert findet sich dann auch in jeder Stations-INI-Datei und kann dort abweichend eingestellt werden.

	New key in the application-INI-file, section [Config] MaxWaitForCnt=. The default-value is 25000. This is the maximal amount of wait-loops, that waited fr the end of a mask- or browser-hook. This value is also saved to the station-ini-file and can be fixed for every station seperatly there.

25.04.2001	(5.02.17/305/DD) Neuer Befehl 
	FILE_LIST [listResult], 'strFileFilter', 'strStartDirectory' {, boolWithSubDirs}. Gibt in [listResult] vom Typ VAR_LIST alle Dateinamen und Verzeichnisnamen von 'strStartDirectory' zurück, die dem Dateifilter 'strFileFilter' genügen. Wenn boolWithSubDirs den Wert TRUE enthält, werden auch alle Unterverzeichnisse mit Inhalt gelistet.
 
	New command FILE_LIST [listResult], 'strFileFilter', 'strStartDirectory' {, boolWithSubDirs}. Returns in [listResult] (type VAR_LIST) all file- and directory-names from 'strStartDirectory' that are satisfying the 'strFileFilter'. If boolWithSubDirs is TRUE, all the subdirectories will also be listed.

25.04.2001	(5.02.16/304/DD) Neuer Befehl FILE_EXT [strResult], 'FullFileName' gibt aus einem Dateinamen ('FullFileName') mit Pfad nur die Dateinamen-Erweiterung ([strResult]) zurück (inkl. dem Punkt zwischen dem Dateinamen und der Erweiterung).
 
	New command FILE_EXT [strResult], 'FullFileName' returns out of a complete filename with path ('FullFileName') only the extension of the filename ([strResult]) (incl. the dot between the filename and the extension).

25.04.2001	(5.02.15/303/DD) Der Befehl FIELD_FLAG_ON_OFF hat einen neuen optionalen Parameter.  FIELD_FLAG_ON_OFF [mask],'field','optOn' {, 'optOff' {, boolNoFastMode}}. Die bisherige Nutzung wird damit automatisch geändert in den neuen Schnellmodus. Sollten ausser den Feld-Flaggen [FIELD_FLAG_ACTUAL], [FIELD_FLAG_PROTECTED], [FIELD_FLAG_BLOCKED], [FIELD_FLAG_HIDDEN], [FIELD_FLAG_MODIFIED] oder [FIELD_FLAG_MODIFIED_ALWAYS] andere Flaggen gesetzt werden, so muss man ab jetzt den neuen Parameter mit TRUE übergeben.

	The command FIELD_FLAG_ON_OFF has a new optional parameter.
	FIELD_FLAG_ON_OFF [mask],'field','optOn' {, 'optOff' {, boolNoFastMode}}. The previous usage will be changed hereby automaticly to the new fast modus. If there should be set other field-flags than [FIELD_FLAG_ACTUAL], [FIELD_FLAG_PROTECTED], [FIELD_FLAG_BLOCKED], [FIELD_FLAG_HIDDEN], [FIELD_FLAG_MODIFIED] or [FIELD_FLAG_MODIFIED_ALWAYS], the new parameter must be set to TRUE.

25.04.2001 	(5.02.14/302/DD) Es gibt eine neue Untervariable (vom Typ VAR_STR) für alle Variablen vom Typ VAR_QUERY und VAR_BROWSER: [name!QUERY_ID]. In dieser Variable kann man den Namen der zuletzt über QUERY_LOAD geladenen Abfrage finden, bzw. diesen Wert einfach setzten, um die Koordinaten des Anzeigefensters eines Browsers in der Stations-INI-Datei abzulegen bzw. diese von dort wieder zu laden.

	A new sub-variable (type VAR_STR) for all variables of the type VAR_QUERY or VAR_BROWSER is availiable: [name!QUERY_ID]. In this variable the name of the last over QUERY_LOAD retrieved querys can be found, respectively just could be set for saveing and loading the window-coordinates of the shown browser in the station-ini-file.

17.04.2001 	(5.02.13/301/DD) Im Notizmanager können von nun an auch Daten in den Querverweisen/Relationen selektiert werden, die sich über mehrere Tabellen erstrecken. Der “ORDER BY-Fehler“ist somit behoben.

	A selction with a join can be made in the documentmanager register “relations“. The “order by error“ has been removed.

17.04.2001 	(5.02.12/300/DD) Die User-Daten werden ab jetzt auch dann richtig von der Engine verarbeitet, wenn keine UserClause in der INI-Datei angegeben wurde.

	From now on, the uer-data will be treated right, even if there is no UserClause given in the INI-file.

20.03.2001 	(5.02.11/299/DD) Wenn Text1 im Notizmanager vorhanden war, wurde dieser nicht sofort beim Öffnen des Managers angezeigt. Der Fehler ist behoben.

	If Text1 was filled in the notemanager, the text was not displayed with the opening of the manager. This error has been removed.

19.03.2001 	(5.02.10/298/DD) Die Farben für die hervorgehobenen Farben in Browsern- und Grids können ab jetzt im Werkzeugkasten über den Punkt “Browser- und Grid Farben“ eingestellt werden. Diese werden ind die Stations-INI-Dateien geschrieben. Wenn man Programm-Globale Einstellungen haben möchte, kann man eine solche Sektion (“[Colors]“) in die Applications-INI-Datei kopieren.

	The highlited and special colors of browsers and grids can be setup in the toolbox from now on with the item “Browser- und Grid Farben“. The values will be written to the station-ini-file. If a so changed set should become a global colorset for the application, just copy the section “[Colors]“ from out of the changed station-ini-file into the application-ini-file.

18.03.2001 	(5.02.09/297/DD) Der Notizmanager erscheint ab jetzt stets mit der vorgesehenen vollen Fensterbreite und zeigt den ersten verfügbaren Text sofort an. 

	The Notemanager will raise with the full window size from now on always and move to the first alailiable text.

18.03.2001 	(5.02.08/296/DD) In der Applikations-INI-Datei gibt es ab jetzt in der Sektion [DocumentManager] einen Schlüssel, der eine Vereinfachte Eingabe- und Anwendungsumgebung für der Dokumenten-/Termin-Manager ein- und ausschalten kann: DocMgrDetailsOn=1 (ein) oder 0 (aus). Diese Einstellung kann auch während der Laufzeit gewechselt werden, indem man im Dokumenten-Manager-Detail-Dialog die Lupe ein bzw. ausstellt. Durch diese Einstellung wird der Detail-Dialog auf einen reinen Termin-Manager reduziert. Man kann dort dann nur noch eine Bemerkung, eine Notiz, Datum und Uhrzeit der Wiedervorlage und Datum und Uhrzeit der Erledigung hinterlegen. Dadurch verkürzen sich die Eingabezeiten erheblich, wenn es sich nur um einen Termin oder eine Aktennotiz handelt. Um die Eingabezeiten noch mehr zu verkürzen, werden bei Applikationen mit eingeschalteten Benutzerrechten der Eingabe-Mitarbeiter, der Wiedervorlage-Mitarbeiter und der Erledigung-Mitarbeiter kommentarlos durch den aktuell angemeldeten Benutzer gefüllt, wenn eine Eingabe dazu erforderlich ist und der Anwender keine entsprechenden Angaben gemacht hat.

	In the applikation-ini-file in the section [DocumentManager] is a new key availiable that switches to a simplified user interface:  DocMgrDetailsOn=1 (on) oder 0 (off). This switch can also be changed while runtime, by clicking the “Lupe“-icon in the document-manager-detail-dialog. By this key the document-manager will be reduced to a timer. Only the note, the memo, date and time of the next process and date and time of the finishing. So the input-times for a process is much shorter, if only a file-note or a date should be inserted. If the new key is TRUE, the users that created, finished or should process the date are set (in the background) to the actual logged in user (works only with versions that have user-rights switched on). So the input-times are shortened again.

18.03.2001 	(5.02.07/295/DD) In allen Browsern und Grids führt ein Click mit der rechten Maustaste ab jetzt ebenfalls dazu, dass die angeklickte Browserzeile zur aktuellen Datenzeile wird.

	In all browsers and grids a right mouse click will make the clicked dataline to the actual dataline.

7.03.2001 	(5.02.06/294/DD) In der ODA-Version wird ab jetzt beim Aufruf einer Variable vom Typ VAR_DATABASE der entsprechende Datenbank-Alias in der Registry automatisch angelegt. Der User muss also beim ersten Aufruf der Fremddatenbank Administrator-Rechte haben. Achtung: Wenn hier ein Fehler vorkommt, werden KEINE Meldungen ausgegeben. In der ADO-Version können “nur“ weitere Datenbanken angesprochen werden, die sich ebenfalls durch ADO ansprechen lassen. Als “Pfad“ der Datenbank muss in Falle der ADO-Version der Connection-String angegeben werden z.B. 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\top50\database\univdb_u.mdb;Persist Security Info=False'

	The registry-keys for a foreign database called by a variable of VAR_DATABASE in the ODA-version are generated automaticly in the background from now on. The user must have admin rights when he calls the database the first time. Attention: if an error occurs while the database-connect no messages will be displayed. In the ADO-version on this way (VAR_DATABASE) “only“ databases of the type ADO-database can be connected. The “path“ of the database must be the connection-string in this case. E.g. 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\top50\database\univdb_u.mdb;Persist Security Info=False'

17.03.2001 	(5.02.05/293/DD) Ab jetzt eine ADO (OLE DB) Version von CARA erhältlich. Damit sind folgende Versionen (in der Reihenfolge der Entstehung) erhältlich: DAO, BDE, PSQL und ADO. Alle Versionen können auf Wunsch mit Syska-DLL-Einbindung und/oder mit DocuWare-Einbindung verfügbar gemacht werden. In der INI-Datei muss bei dieser Version keine DataBase angegeben werden. Lediglich der DataAlias muss mit dem Connection-String gefüllt werden. Z.B.
	DataAlias=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=O:\Test.mdb;Persist Security Info=False
	Folgende Datenbanken lassen sich derzeit durch ADO ansprechen:
	+ Microsoft Jet OLE DB 4.0 Provider
	+ Microsoft OLE DB Provider for Internet Publishing
	+ Microsoft OLE DB Provider for ODBC Drivers
	+ Microsoft OLE DB Provider for OLAP Services
	+ Microsoft OLE DB Provider for Oracle
	+ Microsoft OLE DB Provider for SQL Server
	+ Microsoft OLE DB Simple Provider
	+ Microsoft OLE DB-Provider für DTS-Pakete
	+ MS Remote
	+ MSDataShape
	+ Pervasive OLE DB Provider
	+ SQL Server DTS Flat File OLE DB Provider

	From now on a ADO (OLE DB) Version of CARA is availiable. So the following versions exists (in order of appearence): DAO, BDE, PSQL und ADO. All versions can be compiled (on request) with  Syska-DLL-connection and/or with DocuWare-connection. In the ini-file of this version no DataBase must be set. Only the DataAlias must contain the connection-string. E. g.
	DataAlias=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=O:\Test.mdb;Persist Security Info=False
	See obove the list of possible databse connections via OLEDB.

15.03.2001 	(5.02.04/292/HB) Neuer Befehl: 
	QUERY_SET_EDIT_FIELD [query oder browser], 'strFldName', 'strValue', floatID, boolNeedUpdate
	Verändert den Inhalt des editierbaren Feldes mit dem Namen 'strFldName', wobei der Inhalt durch 'strValue' ersetzt wird. Dies geschieht in dem Datensatz mit der RecordID floatID. Falls boolNeedUpdate TRUE ist, wird der Datensatz im Hintergrund auch gleich per Update in die Tabelle geschrieben, anderenfalls dient dieser Befehl nur zum Verändern der Darstellung. 

	New command:
	QUERY_SET_EDIT_FIELD [query oder browser], 'strFldName', 'strValue', floatID, boolNeedUpdate
	Changes the value of an editable field with the name 'strFldName'. The value will be replaced by 'strValue'. This will work on the record with the recordid floatID. If boolNeedUpdate is TRUE, the record will be updated in the table, otherwise only the displayed value changes.

15.03.2001 	(5.02.03/291/HB) Falls ein Label innerhalb einer Eingabe-Maske eine speziele Schriftfarbe hatte, wurde beim Säubern der Maske der gesamte Label farbig. Der Fehler ist behoben.

	Labes with a changed text color got the same background as the font color when the mask has been cleared. This error has been removed.

15.03.2001 	(5.02.02/290/HB) Beim Eingeben von Sonderzeichen oder bei fehlerhaften Eingaben ertönt nur noch dann ein Warnton, wenn der Schalter UseSounds= in der Applikations-INI-Datei TRUE ist.

	While inserting special chars or while keybord related errors occures a warning sound “beeps“. This warning soud can be switched on and off with the key UseSounds= in the application-ini-file.

14.03.2001 	(5.02.01/289/DD) Der Fehler, dass bei der Volltextsuche auch Felder mit einbezogen wurden, die nicht mit der Option FTS gekennzeichnet waren, ist behoben

	Incase of a fulltextsearch some fields where involved without the option FTS. This error has been removed.

13.03.2001 	(5.02.00/288/DD) Neue Feldoption für STRING-Felder im SetDoc : FTS. Damit kann für das entsprechende Feld der FullTextSearch-Modus angeschaltet werden. Das Feld erscheint dadurch gelb hinterlegt und wird beim Aufruf der Volltextsuche mit allen anderen Feldern zusammen, die diese Option ebenfalls haben, berücksichtigt. Die Volltextsuche berücksichtigt nur die Eingabe des Feldes, aus der heraus die Suche aufgerufen wird (STRG-T). Es müssen keinerlei Jokerzeichen eingegeben werden. Darüberhinaus werden alle Leerzeichen der Eingabe vor der Suche durch Jokerzeichen ersetzt. Aus der Eingabe “o k“ wird dadurch “*o*k*“. Sollten Eingaben in anderen Volltext-Suchfeldern bestehen, werden diese zusätzlich wie bei der normalen Suche berücksichtigt. Die Volltextsuche wird nur gestartet, wenn sie aus einem Volltext-Suchfeld heraus aufgerufen wird.
	
	New fieldoption for string-fields in the setdoc: FTS. Where fulltextsearch can be switched on for string-fields. The field will then appear with a yellow background and will be considered with all other fields together, that have this option too. The fulltextsearch only considers the input of the field from which it has been called (strg t). No wildcards needs to be inserted. All spaces will be replaced by a wildcard too. So the input “o k“ will be interpreted as “*o*k*“. If there are inputs in other fulltextsearch-fields, they will be considered also in the same way they are normally used within a searchcall. The fulltextsearch will only be started, if it is called from out of a fulltextsearch-field.

13.03.2001 	(5.01.28/287/DD) Innerhalb einer DocuWare-Version kann man ab jetzt auf dem DocumetManager-Button (in Masken und Browsern) die rechte Maustaste betätigen und im darauf erscheinenden PopUp-Menü einstellen, ob ein normaler Click auf diesen Knopf den internen oder den externen Document-Manager startet. Die Vorgabe kann über die Applikations-INI-Datei in der Sektion [DocumentManager] über den Schlüssel DocMgrClickIntern= voreingestellt werden.

	Within a DocuWare-version a right click on the document-manager-button pops up a menu (in masks and browsers) where the user can switch the behavior of a normal (left) click between the internal or external document-manager. The default-calue can be set in the application-ini-file in the section [DocumentManager] with the key DocMgrClickIntern=.

13.03.2001 	(5.01.27/286/DD) In den Masken gibt es ab jetzt eine neue Variable vom Typ VAR_STR:

[mask!MASK_ACT_FIELD_HELP_ID]	Hier kann man ab jetzt einen zusätzlichen Parameter für die [mask!MASK_HELP_ID] für die Hilfe des aktuellen Felds ablegen. Sollte die [mask!MASK_HELP_ID] leer sein, so wird der Inhalt als Dateiname für die Hilfeseite selbst aufgefasst. Diese Variable kann auch schon direkt in der Masken-Definitions-Datei gefüllt werden. Dort ist es der 2. Parameter in der “HINT“ - Zeile. Es handelt sich um einen String-Parameter, d.h. dieser muss innerhalb einfacher Hochkommata stehen.

	A new variable with the type VAR_STR is availiable for masks from now on:

[mask!MASK_ACT_FIELD_HELP_ID]	An additional parameter for the help of the actual field to the value of the [mask!MASK_HELP_ID] can be placed here. If [mask!MASK_HELP_ID] is empty, the value will be interpreted as the help-page-file-name itself. This variable can also be set directly in the mask-definition-file. It is the 2nd paramter in the “HINT“ - line. The parameter must be given as a string, that means, it must be passed to the engine within single quotes.

12.03.2001 	(5.01.26/285/DD) Der Notizmanager hat Notizen beim Speichern seit der Version  5.01.12/271/DD intern umgebrochen. Dieser Fehler ist behoben. Der Umbruch ist von den Eintragungen in den TableFld-Daten abhängig oder kann mittels der neuen Optionen von NOTE_WRITE unterdrückt werden.

	The notemanager formatted notes while saving, since version  5.01.12/271/DD. This error has been removed. The wordwrap depends on the data saved in the TableFld-Table or it can be suppressed with the new options of the NOTE_WRITE - command.

12.03.2001 	(5.01.26/284/DD) Der Opcode-Compiler funktionierte nicht mehr, seit CARA auf kleingeschriebene Dateinamen umgestellt wurde. Der Fehler wurde behoben.

	The opcode-compiler failed since the filenames have been lowercased for unix. This error has been removed.

07.03.2001 	(5.01.24/283/DD) Der Befehl NOTE_WRITE hat zwei neue optionale Parameter:
	NOTE_WRITE [list],[bool],'str',num,float{, 'strXRefName'{, boolNoWordWrap}}
	Falls 'strXRefName' übergeben wird, wird die Notizbreite nicht aus dem Tabellennamen sondern aus der XReferenz des entsprechenden Eintrags in der Tabelle “TableFld“ ermittelt. Falls boolNoWordWrap FALSE ist wird mit der unter 'str' (TableName) oder 'strXRefName' verfügbaren Notizbreite der Text umgebrochen. Default für boolNoWordWrap ist TRUE.
	
	The command  NOTE_WRITE has two new optional parameter:
	NOTE_WRITE [list],[bool],'str',num,float{, 'strXRefName'{, boolNoWordWrap}}
	If 'strXRefName' is passed with a value, the notewidth will not be extracted out of the tablename but out of the xreference of the related record in the table “tablefld“. If boolNoWordWrap is FALSE, the text will be formatted with wordwrap at a width of the value found under 'str' (tablename) or 'strXRefName'. The default for boolNoWordWrap is TRUE.

07.03.2001 	(5.01.23/282/DD) Die Änderung 5.01.16/275/DD wurde nur unter bestimmten Umständen wirksam. Dieser Fehler wurde behoben.

	Change  5.01.16/275/DD only worked under some circumstances. This error has been removed.

07.03.2001 	(5.01.22/281/DD) In den Masken gibt es ab jetzt eine neue Variable vom Typ VAR_STR:

[mask!MASK_HELP_ID]	Hier kann man ab jetzt einen zum Help-Device passenden Dateinamen hinterlegen, der auf eine Datei verweist, die als Hilfeseite angezeigt werden soll. Diese Variable kann auch schon direkt in der Masken-Definitions-Datei gefüllt werden. Dort ist es der 14. Parameter in der “BEGIN“ - Zeile. Es handelt sich um einen String-Parameter, d.h. dieser muss innerhalb einfacher Hochkommata stehen.

	A new variable with the type VAR_STR is availiable for masks from now on:

[mask!MASK_HELP_ID]	If a filename is placed in this variable, pressing the helpkey will show the given helppage, using the help-device from the application-ini-file. This variable can also be set directly in the mask-definition-file. It is the 14th paramter in the “BEGIN“ line. The parameter must be given as a string, that means, it must be passed to the engine within single quotes.

07.03.2001 	(5.01.21/280/DD) Der Befehl NOTE_SHOW hat einen neuen optionalen Parameter:
	NOTE_SHOW  'str',num,float,bool{,'xRef'}. Falls 'xRef' angegeben wird, wird anstelle des Tabellennamens beim Öffnen der Notiz die X-Referenz in der Tabelle “TableFld“ zum Ermitteln der
	Notizfenster-Breite verwendet.

	The command NOTE_SHOW has a new optional parameter:
	NOTE_SHOW  'str',num,float,bool{,'xRef'}. If 'xRef' has a value, it will be used instead the tablename to retrieve the notewindow-width out of the table “TableFld“ when the note is opened.

07.03.2001 	(5.01.20/279/DD) In den Browsern gibt es ab jetzt eine neue Variablen vom Typ VAR_STR:

[browser!XREF_NAME]	Wenn der Wert dieser Variable gesetzt ist, wird beim Aufruf des Notizmanagers die Notizbreite nicht anhand des Tabellennamens in der Tabelle TableFld gesucht, sondern anhand der hier angegebenen X-Referenz. 

	A new variables with the type VAR_STR is availiable for browsers from now on:

[browser!XREF_NAME]	If this value is set, the notewidth in the notemanager will not be retrieved by the tablename out of the table “TableFld“. Instead it will be retrieved by the xref-field, using this value.

07.03.2001 	(5.01.19/278/DD) In den Masken gibt es ab jetzt eine neue Variablen vom Typ VAR_STR:

[mask!MASK_XREF_NAME]	Wenn der Wert dieser Variable gesetzt ist, wird beim Aufruf des Notizmanagers die Notizbreite nicht anhand des Tabellennamens in der Tabelle TableFld gesucht, sondern anhand der hier angegebenen X-Referenz. Diese Variable kann auch schon direkt in der Masken-Definitions-Datei gefüllt werden. Dort ist es der 13. Parameter in der “BEGIN“ - Zeile. Es handelt sich um einen String-Parameter, d.h. dieser muss innerhalb einfacher Hochkommata stehen.

	A new variables with the type VAR_STR is availiable for masks from now on:

[mask!MASK_XREF_NAME]	If this value is set, the notewidth in the notemanager will not be retrieved by the tablename out of the table “TableFld“. Instead it will be retrieved by the xref-field, using this value. This variable can also be set directly in the mask-definition-file. It is the 13th paramter in the “BEGIN“ line. The parameter must be given as a string, that means, it must be passed to the engine within single quotes.

07.03.2001 	(5.01.18/277/DD) In den Masken gibt es ab eine neue Variablen vom Typ VAR_STR:

[mask!MASK_FOCUS_FIELD_NAME]	Wenn der Wert dieser Variable gesetzt ist, wird der Fokus nach dem Initialisieren der Maske auf dieses Feld gesetzt. Diese Variable kann auch schon direkt in der Masken-Definitions-Datei gefüllt werden. Dort ist es der 12. Parameter in der “BEGIN“ - Zeile. Es handelt sich um einen String-Parameter, d.h. dieser muss innerhalb einfacher Hochkommata stehen.

	A new variable with the type VAR_STR is availiable for masks from now on:

[mask!MASK_FOCUS_FIELD_NAME]	If this value is set, the focus will be set to the given field  after the initialisation of the mask. This variable can also be set directly in the mask-definition-file. It is the 12th paramter in the “BEGIN“ line. The parameter must be given as a string, that means, it must be passed to the engine within single quotes.

07.03.2001 	(5.01.17/276/OG) Beim Lesen der Textbausteine im Notizmanager wird ab jetzt auch auf den INI-Datei-Schlüssel FilterNeedsUpper aus der Sektion [SQL] der Applikations-INI-Datei geachtet.

	On reading templates, using the notemanager, the key FilterNeedsUpper out of the application-ini-file, section [SQL] will be considered from now on.

07.03.2001 	(5.01.16/275/DD) Beim Befehl NEW_RECORD wird der 4. Parameter boolUseDefRec ab jetzt immer mit TRUE interpretiert, egal was der Programmierer übergibt. Die Engine überprüft selbständig, ob ein entsprechendes Record verfügbar ist und arbeitet in jedem Fall fehlerfrei weiter. Aus Gründen der Kompatibilität wird die Befehlsstruktur nicht geändert, so dass auch ältere Sourcecodes weiterhin fehlerfrei laufen werden.

	The 4th parameter of the command NEW_RECORD (boolUseDefRec) will be interpreted always as TRUE from now on. It does not matter what the programer passes to the engine. The engine will check if a default-record is availiable and work error free in any case. On the base of compatibility the commands structure will  not be changed, so older source-codes will work error free in future.

05.03.2001 	(5.01.15/274/DD) Der Fehler, dass nach dem Laden einer Notiz mit dem Befehl MEMO_READ die Ergebnisvariable FALSE zurücklieferte wenn die Notiz keine Zeilen enthielt, ist behoben.

	After loading a note with the command MEMO_READ the result variable returned FALSE if the note had no lines. This error has been removed.

05.03.2001 	(5.01.14/273/DD) Der Fehler, dass nach dem Laden einer Notiz mit dem Befehl MEMO_READ die Ergebnisvariable stets FALSE zurücklieferte, ist behoben. 

	After loading a note with the command MEMO_READ the result variable always returned FALSE. This error has been removed.

04.03.2001 	(5.01.13/272/DD) Die Tabelle TableFld wurde um das Integer-Feld “Templates“ ergäntzt. Das entsprechende Script wurde ebenfalls verändert. 1. Man kann jetzt das Query zum Ermitteln der Relations-Felder in einem Memo editieren. 2. Man kann eine Choicer-Listen-Nummer auswählen und dem Feld “Templates“ zuordnen. Wenn eine solche Zuordnung vorgenommen wurde, wird ab jetzt an der zur Tabelle entsprechenden Programmstelle im Notizmanager ein zusätzliches Icon sichbar über das man Textvorlagen bzw. Textbausteine auswählen kann. Diese konnen über das Auswahl-Listen-Modul eingepflegt werden (Script Choicer.csh). 
	
	The table TableFld has been extended by the field “Templates“, The related script has been modified also. 1. The query for determining the relation-fields now can be edited in a memo. 2. A choicer-list-number can be related to the field “Templates“. If such a relation has been made, a special icon will be shown in the notemanager, when it is called with the correlating table. Over this icon text-templates can be choosen. This templates can be administrated with the script “choicer.csh“. 

04.03.2001 	(5.01.12/271/DD) Der Source zum Laden von Texten in den Notizmanager/Maskenmemo/VAR_LIST war an insgesamt drei unterschiedlichen Stellen implementiert. Dies wurde durch eine einzige Routine ersetzt.
	
	The source for loading a text into a note/memo/list-var was implemented three times at different positions. This has been replaced through only one routine.

04.03.2001 	(5.01.11/270/DD) Beim Laden von Texten in eine Notiz des Notizmanagers wird der Text ab jetzt an der Stelle eingefügt, an der der Cursor steht. Vorher wurde er stets hinten an den Text angefügt.

	Loading a text into a note, using the note-manager, will insert the text at the cursor position from now on. Previous the text always has been appended at the end.

03.03.2001 	(5.01.10/269/DD) Neuer Masken-Hook: MASK_HOOK_NOTEMGR_EXIT, der immer dann aufgerufen wird, wenn der Notiz-Manager aus einer Maske heraus geöffnet und danach geschlossen wurde. Ausserdem wird das Document-Manager-Icon und das Note-Manager-Icon nach einer entsprechenden Action aus einem Grid heraus ebenfalls in der dazugehörigen Maske aktualisiert, wenn die [MASK_RECORD_ID] gleich der RecordID des Datensatzes ist, der im Grid aktuell ist und zu dem der entsprechende Manager aufgerufen wurde.

	New mask-hook: MASK_HOOK_DOCMGR_EXIT, will always called after the note-manager has been opened from out of a mask and after that has been closed. Additionally the document-manager-icon and the note-manager-icon of a mask will be actualized after the corresponding action from out of a grid, if the [MASK_RECORD_ID] is equal to the RecordID of the actual record in the grid to which the adequate manager has been called.

02.03.2001 	(5.01.09/268/DD)  Ab jetzt werden Fließkommazahlen, die an Befehle übergeben werden, die eine Integer-Zahl erwarten, wie Integerzahlen behandelt.

	From now on floating-point-numbers, that are passed to commands, which are expection an interger-number, are treated as interger-numbers.

02.03.2001 	(5.01.08/267/OG) Die Schnellsuche in Browsern und Grids berücksichtigt ab jetzt auch den in der Applikations-INI-Datei-Sektion [SQL] befindlichen Schlüssel FilterNeedsUpper=.

	The fast search in browsers and grids now uses the key FilterNeedsUpper= from the application-ini-file-section [SQL].

02.03.2001 	(5.01.07/266/OG) Die Schnellsuche in Browsern und Grids kann nun mit dem Betätigen der numerischen Plus-Taste, genau wie in Maskenfeldern, abgeschlossen werden.

	The fast search in browsers and grids now can be finished by pressing the num-pad-plus-key, like in mask-fields.

02.03.2001 	(5.01.05/264/JUT) Das automatische Laden von Notizen in die Memo-Felder einer Maske berücksichtigt jetzt auch die ORACLE spezifischen Zeilenümbrüche.
	
	The automatic loading from notes into mask-memo-fields is now also ready for the ORACLE specific line feeds.

02.03.2001 	(5.01.04/263/OG) Alle Zugriffe auf Dateien aus einer CARA-Applikation heraus erfolgen ab jetzt komplett in klein geschriebenen Buchstaben - das gilt für den kompletten Dateinamen inkl. Pfad. Das gilt nur nicht für die Pfade: “Programme“, “Gemeinsame Dateien“,  “Microsoft Shared“, “Windows“,  “System“ - diese werden aus der Registry ausgelesen und in der dort abgelegten Schreibweise eingesetzt. Um alle Dateinamen eines Verzeichnisses auf Kleinschrift umzustellen (bis auf die Pfade) wurde ein kleines Tool geschrieben: “rename2lowercase.exe“ befindet sich ab jetzt im CARA-Verzeichnis.

	All files that are accessed from out of a CARA-application will be accessed with a complete lowercased filename and path. This is not true for the following paths:: “Program Files“, “Common Files“,  “Microsoft Shared“, “Windows“,  “System“ - they will be read out of the Registry and used in the there stored way. For renaming the files in a complete directory-structure with all subdirectories (but not the directory-names), a little tool has been written: “rename2lowercase.exe“ it is placed in the CARA-directory in future.

19.02.2001 	(5.01.03/262/DD) Folgende neuen globalen Konstanten stehen jetzt in der CARA-Engine zur Verfügung: 
	[SQL_VENDOR], diese bezieht ihren Inhalt aus der [SQL]-Sektion der Applikations-INI-Datei, Schlüssel Vendor=... 
	[SQL_INIT_SCRIPT], diese bezieht ihren Inhalt aus der [SQL]-Sektion der Applikations-INI-Datei, Schlüssel InitScript=... 
	[SQL_CONCATE], diese bezieht ihren Inhalt aus der [SQL]-Sektion der Applikations-INI-Datei, Schlüssel Concate=... 
	[SQL_COMMENT_SIGN], diese bezieht ihren Inhalt aus der [SQL]-Sektion der Applikations-INI-Datei, Schlüssel CommentSign=... 
	
	The following global constands are now avaliable in the CARA-engine:
	[SQL_VENDOR], the value is comming from the [SQL]-Section of the application-INI-file, key Vendor=... 
	[SQL_INIT_SCRIPT], the value is comming from the [SQL]-Section of the application-INI-file, key InitScript=... 
	[SQL_CONCATE], the value is comming from the [SQL]-Section of the application-INI-file, key Concate=... 
	[SQL_COMMENT_SIGN], the value is comming from the [SQL]-Section of the application-INI-file, key CommentSign=... 

13.02.2001 	(5.01.02/261/DD) In Browsern und Grids, in denen man Datensätze markieren kann, kann man jetzt den markierten Zeilen den Status “erledigt“ geben. Dies wird vom Selektionsmanager mit abgespeichert.
		
	In browsers and grids, where records could be marked, the status of marked lines could be set to “done“. This also will be saved from the selection-manager.

13.02.2001 	(5.01.01/260/DD) Der Fehler, dass Datumsfelder im Browser oder Grid falsch angezeigt wurden, ist behoben. Um die Darstellung von Datumsformaten in Zukunft zu verbessern, gibt es in der [SQL] Sektion der Applikations-INI-Datei einen neuen Schlüssel DatePictureSelectRes=. Für alle bestehenden Versionen von IDEAL ist hier kein Eintrag notwendig. Falls aber eine abweichende Date-Maskierung im Browser das Ergebnis liefert, dass kein Datum angezeigt wird, so kann man z.B. über DatePictureSelectRes=yyyy-mm-dd wieder zu einer sinnvollen Anzeige umstellen.

	The error, that datefields were displayed wrong in a browser or a grid has been removed. To improve  the display of date-formats in futur, a new key has been added to the [SQL] section of the application-INI-file DatePictureSelectRes=. For all existing versions of IDEAL no value has to be inserted. But if a date-mask, that is returned from a SQL-server, displays no date, then, for example the following value may deliver a usefull display DatePictureSelectRes=yyyy-mm-dd.

12.02.2001 	(5.01.00/259/MB) Im Browser oder Rechte-Maustaste-Menü im Grid steht ab jetzt bei Listen, in denen das Markieren von Datensätzen erlaubt ist ein neues Tool zur Verfügung: Der Seleketionsmanager. Damit lassen sich die Auswahlen benennen und Speichern und später wieder laden und / oder erweitern.

	In browsers or in the right-mousekey-menu of a grid a new tool is availiable from now on: the selectionmanager. With this tool the selections made in a list could be named and saved. Later they could be reloaded and / or extended.

09.02.2001 	(5.00.47/258/DD) Wenn in der Sektion [SQL] in der Applikations-INI-Datei der Schalter “VENDOR“ auf “ORACLE“ gesetzt wurde, wird ab jetzt nur noch ein LineFeed anstelle eines CarriageReturn+LineFeed in den Notizen gespeichert also #10 anstelle #13#10.

	If the key “VENDOR“ in the section [SQL] in the application-ini-file is set to “ORACLE“, only a LineFeed instead of a CarriageReturn + LineFeed  will be saved in the notes. This means a #10 instead of a #13#10.
	
09.02.2001 	(5.00.46/257/DD) Neuer Befehl FILE_SLASH [strResult], boolHaveSlash gibt den Dateipfad ([strResult]) mit einem BackSlash am Ende zurück wenn boolHaveSlash TRUE ist anderenfalls ohne BackSlash. Die Funktion verifiziert natürlich vorher, ob überhaupt eine Änderung des übergebenen Strings in [strResult] vorgenommen werden muss.
	
	New command FILE_SLASH [strResult], boolHaveSlash returns the path given in [strResult] with a backslash at the end if boolHaveSlash is TRUE otherwise the path will have no bckslash at the end. The function of course checks before if any change is necessary.

09.02.2001 	(5.00.45/256/DD) Neuer Befehl FILE_PATH [strResult], 'FullFileName' gibt aus einem Dateinamen ('FullFileName') mit Pfad nur den Pfad ([strResult]) zurück.

	New command FILE_PATH [strResult], 'FullFileName' returns out of a complete filename with path ('FullFileName') only the path ([strResult]).

09.02.2001 	(5.00.44/255/DD) Neuer Befehl FILE_NAME [strResult], 'FullFileName' gibt aus einem Dateinamen ('FullFileName') mit Pfad nur den Dateinamen ([strResult]) zurück.
 
	New command FILE_NAME [strResult], 'FullFileName' returns out of a complete filename with path ('FullFileName') only the filename ([strResult]).

09.02.2001 	(5.00.43/254/DD) Neue CSH-SQL-Syntax:
	[D “Eingabe-Maske wie z.B. XXXXXXX oder ####### oder dd.mm.yyyy“]FeldName. Ist wie ein editierbares Browser-Feld, kann auch berechnet werden aber vom User nicht geändert werden.

	New CSH-SQL-syntax: [D “ExitMask like XXXXXXXXXXX or ####### or dd.mm.yyyy“]FieldName. Usage as a editable browser-field, could be calculated but not be changed by a user. 
	
01.02.2001 	(5.00.42/253/TW) In Browsern und Grids wird ab jetzt der Editier-Modus abgeschaltet, wenn eine Aktion über ein Icon der Icon-Leiste, den Doppelklick oder die rechte Maustaste eingeleitet wird.
	
	From now on the edit mode will be switched off in browsers or grids, if any icon in the icon-panel, a doubleclick or a right mouse click action is initiated by a user.

22.01.2001 	(5.00.41/252/GH) Neuer INI-Datei-Eintrag in der Sektion [CONFIG]. PrintRightsScript=. Mit diesem Schlüssel kann angegeben werden, mit welchem Script ein Benutzerrechte-Modell ausgedruckt werden kann. Es wird im Parameter 1 ([RECORD_ID1]) die RecordID des im  Benutzerrechte-Dialog geladenen Rechtemodells übergeben. Im Parameter 2 ([PAR_STR2]) der Name des Modells. Der Default ist “RIGHTS_PRN.CSH“.

	New INI-file-key in section [CONFIG]. PrintRightsScript=. With this key a script can be named, that will print out the rights-model, that is loaded in the user-rights-dialog. Paramter 1 ([RECORD_ID1]) will hold the RecordID of the loaded model and parameter 2 ([PAR_STR2]) will hold the name of the model. The default is “RIGHTS_PRN.CSH“.

18.01.2001 	(5.00.40/251/DD) Der Befehl QUERY_ADD_WHERE wurde um einen optionalen Parameter ergänzt. QUERY_ADD_WHERE	[name],union,'where-clause'{|boolAddWhereOrAnd}.
			Wenn boolAddWhereOrAnd TRUE ist (default), wird im Query nachgesehen, ob schon ein “WHERE“
			existiert und, falls nicht, wird dieses angefügt, falls doch, wird ein “AND“ angefügt. Wenn
			boolAddWhereOrAnd FALSE ist, wird die Bedingung zwar eingefügt, aber kein “WHERE“ oder “AND“
			angefügt, dies muss in der Bedingung schon vorhanden sein. (z.B. “OR“). 
			ACHTUNG:	Der neue optionale Parameter ist mit einem Pipe-Zeichen (|) von der Where-Clause
					zu trennen NICHT MIT EINEM KOMMA!

			The command QUERY_ADD_WHERE has a ne optional parameter. 
			QUERY_ADD_WHERE	[name],union,'where-clause'{|boolAddWhereOrAnd}.
			If boolAddWhereOrAnd is TRUE (default), the query will be searched for the occurrence of a
			 “WHERE“, is not so, this will be inserted, if so, an “AND“ will be inserted. If  boolAddWhereOrAnd is
			FALSE, no “WHERE“ or “AND“ will be inserted, this has to be in the new clause already (e.g. “OR“).
			ATTENTION:	The new parameter has to be seperated from the where-clause with a pipe-sign (|)
					AND NOT WITH A KOMMA!

18.01.2001 	(5.00.39/250/DD) Im OpCode-Compiler kann man ab jetzt ganze Applikationen kompilieren.
	
	Now the opcode-compiler can compile whole applications.

18.01.2001 	(5.00.38/249/DD) Mit einem Klick der rechten Maustaste im Hauptfenster der Anwendung kann ab jetzt nicht nur die Terminliste des aktuellen Tages angefordert werden, sondern aus einer Liste verschiedener Zeiträume selektiert werden.

	With a right mouse-click in the main-application-window not longer the timer of the actual day will be shown immediately, the user now can choose out of a list of different spaces of time.

18.01.2001 	(5.00.37/248/DD) Neuer INI-Datei-Eintrag in der Sektion [CONFIG]. SaveAndClearOnHash= Wenn dieser Schlüssel gesetzt ist, kann in Masken-Eingabe-Feldern mit der Route-Taste (#) gespeichert werden und danach wird sofort die Maske gesäubert um eine neue Eingabe einzuleiten. Dieser Schlüssel kann auch im Werkzeugkasten gesetzt werden. Der Default ist FALSE.

	New INI-file-key in the section [CONFIG]. SaveAndClearOnHash= If this key is set to true, using the hash-key (#)  in a mask-input-field will save the actual record and clear the mask afterwards. So new inputs can be made immediately. This value can be set in the tool-box too. The default is FALSE.

18.01.2001 	(5.00.36/247/DD) Neuer INI-Datei-Eintrag in der Sektion [CONFIG]. UseSounds= Wenn dieser Schlüssel gesetzt ist, wird der in SaveSoundFile= angegebene Sound nach dem erfolgreichen Speichern abgespielt. Dieser Schlüssel kann auch im Werkzeugkasten gesetzt werden. Der Default ist FALSE.

	New INI-file-key in the section [CONFIG]. UseSounds= If this key is set to true, the sound, defined by SaveSoundFile= , will be played on succesfull save-operations. This value can be set in the tool-box too. The default is FALSE.

18.01.2001 	(5.00.35/247/DD) Neuer INI-Datei-Eintrag in der Sektion [CONFIG]. SaveSoundFile= Hier kann angegeben werden welcher Sound nach dem erfolgreichen Speichern abgespielt werden soll. Der Default ist “C:\WINDOWS\MEDIA\Musica Maximieren.wav“.

	New INI-file-key in the section [CONFIG]. SaveSoundFile= This key holds the filename for a soundfile, that will be played on succesfull save-operations. The default is “C:\WINDOWS\MEDIA\Musica Maximieren.wav“.

21.12.2000 	(5.00.34/246/DD) Das Abspeichern von Notizen wurde so überarbeitet, daß ein fehlerhaftes “Doppel-Speichern“ nicht mehr möglich ist.
	
	The saveing of a not has been modified in a way, that makes it impossible to have “double-saved“ notes.

21.12.2000 	(5.00.33/245/OG) Das Comment-Sign wird ab jetzt nicht mehr in Strings “gefunden“.
	
	The comment-sign will not be found in strings any more.

20.12.2000 	(5.00.32/244/GH) Im Browser und in der Maske kann jetzt mit Strg-F12 der Datensatz Anleger und der letzte Updater angezeigt werden. Das SQL-Satement war bisher fehlerhaft.
	
	In browser and masks the creator and last updater of a record now can be displayed. The SQL-Statement was wrong until now.

20.12.2000 	(5.00.31/243/OG) Beim Beenden einer Anwendung wird ab jetzt immer ein “Commit“ an die Datenbank gesendet, gleichgültig, ob sich diese in einer Transaction befindet oder nicht. Dadurch kann man in der BDE z.B. für Oracle-Server den Autocommit-Mode “off“ stellen und trotzdem am Ende der Anwendung alle offenen Datenbankaktionen mit einem commit abschliessen.
	
	With closing an application, a commit will be send to the database, it does not matter if there is a transaction runnig or not. So the Autocommit-Mode in the BDE could be turned “off“ (for an Orcale-Server for example) and all database-actions will be commited at the end.

20.12.2000 	(5.00.30/242/DD) Der Befehl QUERY_ADD_STRING hat zwei neue optionale Parameter: QUERY_ADD_STRING [name],'string' oder [strings]{,[add_kommas] oder [values] {, numStart {, numLines}}}
	Durch numStart kann festgelegt werden, ab welcher Zeile aus [strings] (und gegebenenfalls [values]) und mit numLines wieviele Zeilen aus [strings] (und gegebenenfalls [values]) zum Query hinzugefügt werden sollen.

	The Command QUERY_ADD_STRING has two new optional parameters: QUERY_ADD_STRING [name],'string' oder [strings]{,[add_kommas] oder [values] {, numStart {, numLines}}}
	With numStart can be fixed from wich line of [strings] (and, should the occasion arise, [values]) and how many lines from [strings] (and, should the occasion arise, [values]) will be added to the query.

20.12.2000 	(5.00.29/241/DD) Neuer INI-Datei-Eintrag in der Sektion [SQL]. MaxFlds4Update= Hiermit kann festgelegt werden, wieviele Felder max. innerhalb einer SQL-Update-Anweisung verwendet werden dürfen. Auf diesen Wert kann man über die globale Variable [SQL_MAX_FIELDS_4_UPDATE] zugreifen. Der Wert ist per Vorgabe auf 10000 eingestellt, wodurch Update-Anweisungen innerhalb des Programms nicht gesplittet werden. Unter Access wurde jedoch im Zusammenhang mit der ODE gelegentlich festgestellt, daß Update-Anweisungen mit mehr als 150 Feldern fehlschlugen. Für die ODE wurde dann auch noch der Befehl QUERY_ADD_STRING geändert.
	
	New ini-file-key in section [SQL]. MaxFlds4Update= This value fixes the max. amount of fields that can be changed within one sql-update-statement. This value can be reached by the global variable [SQL_MAX_FIELDS_4_UPDATE]. The default value is 10000, that enshures, that no update-statement in the program will be splitted. Using the ODE with an Access-Database causes errors in update-statements with more than 150 fields. For the ODE the command QUERY_ADD_STRING has been changed also.

20.12.2000 	(5.00.28/241/HB) Neue VIEW_FLAG für das Arbeiten in editierbaren Browser-Grids: [BROWSER_FLAG_ENTER_IS_TAB]. Per Vorgabe ist diese Flag nicht gesetzt. Durch Einschlaten der Flag wird bewirkt, daß beim Betätigen der Enter-Taste zum nächsten Eingabefeld in der gleichen Browserzeile gesprungen wird und nicht zur nächsten Zeile.
	
	New VIEW_FLAG for editable browser-grids: [BROWSER_FLAG_ENTER_IS_TAB]. On default this flag is off. By switching it on, a stroke of the return-key will force the input-field to the next field in the same grid line and not jump to the next line.

11.12.2000 	(5.00.27/240/HB) Der Befehl MASK_UPDATE hat ab jetzt einen weiteren optionalen Parameter MASK_UPDATE [mask] {, boolUnmodify {, boolProtectAll}}. boolProtectAll  ist default auf FALSE. Wenn dieser Wert TRUE ist, werden alle Eingabefelder auf Protected gesetzt. Achtung: der Focus darf zu diesem Zeitpunkt nicht auf einem Eingabefeld liegen. Besser auf einem Button.
	
	The command MASK_UPDATE has a new optional parameter. MASK_UPDATE [mask] {, boolUnmodify {, boolProtectAll}}. boolProtectAll is default FALSE. If this value is TRUE, all inputfields will be protected. Attention: the focus can not be an an inputfield at this time, better use a button.

10.12.2000 	(5.00.26/239/DD) Ab jetzt kann im Eingabemasken auch mit der Taste F9 der Druck ausgelöst werden.
	
	From now on printing can be started in dialogmasks by pressing the F9 key.

28.11.2000 	(5.00.25/238/DD) Von der Termin-Notify-Liste kann nun auch bei vergebenen Benutzerrechten in den Dokumentenmanager verzweigt werden und dann können dort auch Änderungen gespeichet werden. Die Meldung, dass man nicht über genügende Rechte verfüge, unterbleibt.
	
	It is now possible to access the document-manager from out of the timer-notify-list and have the propper rights to change and save items, in case of using the user-rights. The message, that the user does not have the apropriate right to do so, will not appear any more.

28.11.2000 	(5.00.24/237/DD) In der INI-Datei, Sektion [Config] über den Schlüssel “SearchOnEnter=“ und im Werkzeugkasten kann jetzt eingestellt werden, dass die Suche in einer Maske auch durch das Betätigen der ENTER-Taste ausgelöst werden kann. Diese Einstellung macht besonders Sinn auf LapTops.
	
	In the INI-file, section [Config], via the key “SearchOnEnter=“ and in the toolbox it is now possible so set, that the search in a mask can be executet by pressing the enter-key. This setting is specially usefull for LapTops.

26.11.2000 	(5.00.23/237/DD) Es gibt nun eine Termin-Notify-Liste, die alle 60 Sekunden prüft, ob der angemeldete User einen termin hat. Diese Liste bezieht sich nur auf den aktuellen Tag. Sollten die Benutzerrechte nicht angewendet werden, werden alle Termine an alle Benutzer gemeldet. In der Liste kann man die Termine, die nicht weiter gemeldet werden sollen, mit einer Check-Box „abhaken“. Will man einen Termin „erledigen“ oder ansehen oder ändern, so muß man die entsprechende Zeile in der Liste nur doppelt anklicken. Man kann diese Liste jederzeit aufrufen, indem man die rechte Maustaste irgendwo im Hauptfenster der Anwendung anklickt. Dies geht jedoch nur, wenn der “Entwickler-Modus“ abgeschaltet ist.
	
	A teimer-notify-list is now availiable. Every 60 seconds it will be chekct if a date for the logged  user has to be done. The list only shows dates of the actual day. If the user-rights are not switched on, all dates will be shown to all users. In the list, the dates can be checked in a check-box, so that they will not trigger the list any more. By doble klicking an item, the documanager can be accessed, to change or finish the item. The list can be called by clicking the right mouse button anywhere in the main-window - except the developer-modus is switched on.
	
21.11.2000 	(DD) Hinweis: Wenn bei einer Neuinstallation alles problemfrei  läuft, aber genau im Anschluß daran keine neue ADRESSE gespeichert werden kann. Z.B. ein neuer Kunde. Dann sollte in der INI-Datei in der Sektion [SQL] der Schlüssel DatePicture4Modify=mm/dd/yyyy gesetzt werden.
	
	Note: If a new installation worked propper, but right after it a new adress could not be inserted. E.g. a Customer. Then the key  DatePicture4Modify in the ini-file in the section [SQL] should be set to  DatePicture4Modify=mm/dd/yyyy.

21.11.2000 	(5.00.22/236/HB) Neue Feldoption für MEMO-Felder im SetDoc : WordWrap. Damit wird er Wortumbruch bei Memo-Feldern eingeschaltet.
	
	New fieldoption for memo-fields in the setdoc: WordWrap. Where wordwrapping can be switched on for memo-fields.

18.11.2000 	(5.00.21/235/DD) PervasiveSQL bezieht die Liste der Tabellen einer Anwendung nicht aus der Delphi-Session sondern aus der Tabelle ddfield. Für die Benutzung durch die Programmierer ändert sich dadurch nichts.
	
	PervasiveSQL retrieves the table-list not out of the delphi-session, therefore the ddfield-table will be used. For the usage to the programer there is no difference.

18.11.2000 	(5.00.20/234/DD) PervasiveSQL meldet scalare-Ergebnisse (sum(), year() etc.) als AutoInc-Felder. Die Interpretation innerhalb der Scripte wurde auf VAR_NUM umgeleitet,
	
	PervasiveSQL declares scalar-results ()sum(), year() etc.) as autoinc-fields. Within the script-interpretation this type will be treated as VAR_NUM.

18.11.2000 	(5.00.19/233/DD) PervasiveSQL meldet numeric-Felder als BCD-Felder. Die Interpretation innerhalb der Script wurde auf VAR_FLOAT umgeleitet,
	
	PervasiveSQL declares numeric-fields as BCD-fields. Within the script-interpretation this type will be treated as VAR_FLOAT.

13.11.2000 	(5.00.18/232/OG) Der Fehler, daß Char-Felder, die boolean zu interpretieren waren (INI-Datei-Schlüssel “SingleCharAsBool“) in verschiedenen Situationen falsch ausgegeben wurden ist behoben.
	
	The error, that char-fields, that have to be interpreted as boolean (INI-file-key  “SingleCharAsBool“) have been exported wrong in some cases, has been fixed.

13.11.2000 	(5.00.17/231/OG) Die Fehlermeldungen im ASCII-Datenimport wurden alle um den Tabellen-Namen erweitert.
	
	The error-messages in the ascii-data-import have all been extended by the tablename.

13.11.2000 	(5.00.16/230/JUT) Der Fehler, der beim Interpretieren der CSH-Syntax in Querys auftrat, und nur bei einem Unterschied in den INI-Eintragungen “StringQuote“ und “StringQuoteDefault“ erfolgte, ist behoben.
	
	The error, that came along with the interpretation of CSH-Syntax in querys, and only occured, when a difference between the INI-keys “StringQuote“ and “StringQuoteDefault“ was made, is fixed.

04.11.2000 	(5.00.15/229/OG) Neuer INI-Datei-Eintrag in der Sektion [SQL]. InitScript=
	Wenn hier eine Scriptdatei benannt wird, so wird diese unmittelbar nach dem Datenbank-Connect ausgeführt. Darin können dann zur Initialisierung der Datenbank notwendige Abfragen etc. ausgeführt werden. Wenn nach der Ausführung im [GLOB_RES_STR1] der Wert [UPDATE_ABORT] enthalten ist, wird die Applikation nicht gestartet sondern die Ausführung abgebrochen.

	New INI-file-item in the section [SQL]. InitScript=
	If a script-file is named here, it will be executed right after the databse-connect. Special querys for the initialisation of the database could be placed here. If the value of the global script variable [GLOB_RES_STR1] is [UPDATE_ABORT] after the execution of this script, the application will not be started, the execution will be aborted.
	
04.11.2000 	(5.00.14/228/OG) Neuer INI-Datei-Eintrag in der Sektion [SQL]. CommentSign=--
	Dies bewirkt, daß alle an einer SQL-Anweisung beteiligten Zeilen nach dem Vorkommen des CommentSign untersucht werden und ab dem Fundort abgeschnitten werden. Die Untersuchung innerhalb von Anführungszeichen (innerhalb von Strings) unterbleibt natürlich. 
Wichtig: Das Trennzeichen für mehrere hintereinandergeschaltete SQL-Anweisungen ist ein Semikolon. Dies dazu notwendigen Untersuchungen werden vor dem Kontrollieren des CommentSigns vorgenommen, d.h. Innerhalb von Kommentaren sollte man keine Semikolon verwenden!

	New INI-file-item in the section [SQL]. CommentSign=--
	All lines from a SQL-statement will be checked for the occurence of this CommentSign and cut off from the position where it has been found. This will not happen, when the CommentSign has been found inside a string-definition that is encapsaled with qoutation signs.
Note: 	The sign that distinguishes between the end of one SQL-statement and the begining of the next SQL-statement is the semicolon (;). The query-pharser will do the inspection for this special sign before the inspection of the CommentSign. That means, that a semicolon should not be used within comments!

28.10.2000 	(5.00.13/227/DD) Drei neue globale Variablen, deren Werte in der INI-Datei in der Sektion [DocumentManager] gesetzt werden können:
	INI-Dateieintrag		>>	passende globale Variable
	WorkHoursPerDay=8.0		>>	[DOCU_MGR_WORK_HOURS_PER_DAY]
	WorkDaysPerMonth=20.0	>>	[DOCU_MGR_WORK_DAYS_PER_MONTH]
	WorkMonthsPerYear=11.0	>>	[DOCU_MGR_WORK_MONTHS_PER_YEAR]

	Three new global variables, their values could be set in the INI-file within the section [DocumentManager]:
	INI-fileentry			>>	correlating global variable
	WorkHoursPerDay=8.0		>>	[DOCU_MGR_WORK_HOURS_PER_DAY]
	WorkDaysPerMonth=20.0	>>	[DOCU_MGR_WORK_DAYS_PER_MONTH]
	WorkMonthsPerYear=11.0	>>	[DOCU_MGR_WORK_MONTHS_PER_YEAR]

18.10.2000 	(5.00.12/226/OG) Der Vendor=ORACLE Schlüssel in der INI-Datei, Sektion [SQL], wird jetzt beim automatischem Datenimport (ASCII_2_TABLE)  berücksichtigt.

	The key Vendor=ORACLE in the INI-file will now be used, while imporing data automaticly with the ASCII_2_TABLE command.

18.10.2000 	(5.00.11/225/GH) Neuer Masken-Hook: MASK_HOOK_DOCMGR_EXIT, der immer dann aufgerufen wird, wenn der Dokumenten-Manager geschlossen wurde. Für den Befehl DOCUMENT_CREATE [boolRes] gibt es nun auch einen neuen optionalen Parameter DOCUMENT_CREATE [boolRes] {, [mask]}, falls eine Maske beim Aufruf angegeben wurde, wird der  [mask! MASK_HOOK_DOCMGR_EXIT] nach dem Verlassen des Dokumenten-Managers ebenfalls aufgerufen. Der Befehl  DOCUMENT_DIRECT id wurde ebenfalls so verändert:  DOCUMENT_DIRECT id {, [mask]}. Ebenso wurde der Befehl 
	DOCUMENTS 'tablename', recordid {,'header'{, ItemID{,[mask]}}} verändert.

	New mask-hook: MASK_HOOK_DOCMGR_EXIT, will always be executetd when the document-manager will be closed. For the command DOCUMENT_CREATE [boolRes] a new optional parameter si now availiable DOCUMENT_CREATE [boolRes] {, [mask]}, if a mask is passed to this command, the [mask! MASK_HOOK_DOCMGR_EXIT] will be called after the document-manager has been close. The command DOCUMENT_DIRECT id has been changed the same way:  DOCUMENT_DIRECT id {, [mask]}. Also the command 
	DOCUMENTS 'tablename', recordid {,'header'{, ItemID{,[mask]}}} has been changed.

10.10.2000 	(5.00.10/224/OG) Die Anbindung an Oracle über die CARA-BDE-Version wurde realisiert. Dabei wurde ein neuer INI-Datei-Schlüssel in der Sektion [SQL] notwendig: Vendor= in diesem Fall z.B. Vendor=ORACLE, dadurch ändert sich das Verhalten der Engine im Bereich der Datum- und Zeitsformatierung bei Update- und Insert-Anweisungen.

	The connect to an oracle-sql-db-server, over the CARA-BDE-Version has been done. Therefor a new INI-key in section [SQL] was necessary: Vendor= in this case e.g.  Vendor=ORACLE, then the behavior of the engine changes for formatting the date and time fields in an update- or insert-statement.

19.09.2000 	(5.00.09/223/TW) Im MASK_KEY_HOOK wird ab jetzt das Feld, aus dem der Hook heraus aufgerufen wird modifiziert gesetzt, wenn eine Eingabe gemacht wurde.

	If a field has been modified, this will be recognized in case of a MASK_KEY_HOOK from now on.

19.09.2000 	(5.00.08/222/TW) Die Routine ACT_REC_ID gibt ab jetzt niemals mehr einen Wert doppelt aus.

	The routine ACT_REC_ID now will never return a specific value twice.

31.08.2000 	(5.00.07/221/DD) Der Fehler, dass uninitialisierte Datumswerte in einer Maske nicht in die Datenbank gespeichert werden konnten ist behoben. Es wird in diesem Fall immer das Datum “01.01.1980“ geschrieben.

	The error, that uninitialized date-fields of a mask could not be saved, is fixed. In this case the date “01.01.1980“ will be saved.

29.08.2000 	(5.00.06/220/DD) Der Fehler, dass nicht in die Registry geschrieben werden konnte (auf NT/2000-Systeme) ist behoben.

	The error, that the registry entrys could not be made on NT/2000-machines, is fixed.

23.08.2000 	(5.00.05/219/TW) Neue Masken-Variable (VAR_BOOL) [mask!WILD_CARD_ON_ALL_MOD_STR_FLDS]. Wenn diese Variable den Wert TRUE hat, werden hinter alle modifizierten String-Felder einer Maske beim erstellen des Masken-Querys beim Suchen WildCards gesetzt.

	New masl-avriable (VAR_BOOL) [mask!WILD_CARD_ON_ALL_MOD_STR_FLDS]. If this variable is TRUE, all modified string fields of a mask will be concatinated with a wildcard if the search-query will be created for the search.

23.08.2000 	(5.00.04/218/TW) Neuer INI-Datei-Schalter in der Sektion [SQL]. DatabaseBDEParam=SERVER NAME. Er dient dazu beim Einsatz der BDE den BDE-Parameter zu benennen, hinter dem sich die Datenbank-Datei einer Anwendung gefunden werden kann. Wenn der Parameter korrekt bezeichnet wurde, kann man dann in der neuen globalen Varibale (VAR_STR) [SQL_DATABASE_FILE_NAME] diesen Wert abrufen. Falls die ODA Version verwendet wird, ist dieser INI-Eintrag nicht notwendig, der Inhalt der neuen Variable wird aber trotzdem korrekt gesetzt. 

	New INI-file key for the section [SQL]. DatabaseBDEParam=SERVER NAME. It is used when the BDE is used to name the BDE-parameter, that holds the value for the database-filename. If the parameter has been named korrekt, the value can be found in the new global variable (VAR_STR) [SQL_DATABASE_FILE_NAME]. In case of using the ODA-version this INI-key will not be used. In any case the new variable will be set korrektly.

23.08.2000 	(5.00.03/217/TW) Neuer INI-Datei-Schalter in der Sektion [SQL]. YearOfDateField=year( der über die globale Variable (VAR_STR) [SQL_YEAR_OF_DATE_FIELD] verfügbar gemacht wurde. Er dient zur angepassten Programmierung bei SQL-Syntax-Unterschieden. So ist bei MS-Access z.B. “YearOfDateField=year(“ und bei INTERBASE (ab 6.x) “YearOfDateField=EXTRACT(YEAR FROM “ zu setzten. Das gleiche gilt für MonthOfDateField= mit (VAR_STR) [SQL_MONTH_OF_DATE_FIELD] und DayOfDateField= mit (VAR_STR) [SQL_DAY_OF_DATE_FIELD].

	New INI-file key for the section [SQL]. YearOfDateField=year( that has been published with the globale variable (VAR_STR) [SQL_YEAR_OF_DATE_FIELD]. It is usefull for coding in case of SQL-syntax-dialects. E.g. in MS-Access “YearOfDateField=year(“ should be used and with INTERBASE (ab 6.x) “YearOfDateField=EXTRACT(YEAR FROM “. Same for MonthOfDateField= with (VAR_STR) [SQL_MONTH_OF_DATE_FIELD] and DayOfDateField= with (VAR_STR) [SQL_DAY_OF_DATE_FIELD].

23.08.2000 	(5.00.02/217/TW) Neuer INI-Datei-Schalter in der Sektion [SQL]. CloseQuerys4Transact=1 ist nur für Entwickler und kann über die global Variable (VAR_BOOL) [SQL_CLOSE_QUERY_4_TRANSACT] im Source-Code zu einer entsprechend angepassten Programmierung verwendet werden.

	New INI-file key for the section [SQL]. CloseQuerys4Transact=1 is only for developers and can be used via the global var (VAR_BOOL) [SQL_CLOSE_QUERY_4_TRANSACT] to program special related code.

23.08.2000 	(5.00.01/216/TW) Neuer INI-Datei-Schalter in der Sektion [SQL]. SingleCharAsBool=1 bedeutet, dass ein Datenbank-String-Feld mit der Länge 1 { text(1) oder char(1) } als Boolean-Feld zu interpretieren ist. Dies ist besonders für Datenbanken, die den Typ Boolean nicht “kennen” wie z.B. INTERBASE oder ORACLE. Abrufbar ist der Wert in der globalen Variable (VAR_BOOL) [SQL_SINGLE_CHAR_AS_BOOL].

	New INI-file key for the section [SQL]. SingleCharAsBool=1 means, that a database-string-field with length 1 { text(1) or char(1) } has to be treated as a Boolean-field. This is intresting for databases that do not have a boolean data type like INTERBASE oder ORACLE. The value could be found in the global var (VAR_BOOL) [SQL_SINGLE_CHAR_AS_BOOL].

14.08.2000 	(5.00.00/215/AG) Multilanguage-Fähigkeit in CARA. Ab jetzt kann in der Applikations-INI-Datei die Applikations-Message-Datei angegeben werden: z. B. MainMsg=IDEAL.MSG. Die Datei ist genauso aufgebaut wie die CARA.MSG Datei. Mit dieser Änderung werden zusätzlich folgende globale Variablen vom Typ VAR_STR zur Verfügung gestellt (nähere Anweisungen sind in der IDEAL.MSG Datei dokumentiert) [GLOB_MSG_PARAM1]..[GLOB_MSG_PARAM4]. Im Befehl MESSAGE kann ab jetzt in der Head-Angabe und / oder in der Info-Angabe folgende Syntax verwendet werden: MESSAGE '@Msg Nummer Bemerkung'. Dann wird nach die entsprechnede Nachricht aus dem Message-File angezeigt. Wenn die Msg-Nummer durch ein Leerzeichen getrennt weitere Informationen enthält, so werden diese als Bemerkung gewertet. Falls die Nachricht nicht gefunden werden kann, wird Bemerkung als Nachricht verwendet. Das Gleiche gilt für SQL-Anweisungen mit der CSH-Syntax N "" und für die Masken-Definitionselemente HINT und ITEM-Element "Inhalt", Menü- und Choicer-Zeilen. 
	
	Multilanguage-capabiltity for CARA. From now on a messageßfile could be defined in the application-INI-file: e. g. MainMsg=IDEAL.MSG. This file has the same structure as the CARA.MSG file. With this change also the following global variables of type VAR_STR are availiable (more detailed informations are included in the IDEAL.MSG file) [GLOB_MSG_PARAM1]..[GLOB_MSG_PARAM4]. The command MESSAGE now can have the following syntax in the head and / or info definition: MESSAGE '@msg-no comment'. Then the related message from out of the message file will be displayed. If the msg-no is seperated with a blank from a comment, then on one hand the source code is more readable and on the other hand this comment will be used instead of the message if the message could not be found in the message file. The same will work on SQL-qurerys with CSH-syntax N "" and for the mask-definition-elements HINT and the ITEM-Element "contense", menu- und choicer-captions. 

13.08.2000 	(5.00.00/214/KP) Neuer Befehl: GET_COLOR [ColorNameStr] {, 'header'}
	Gibt in [ColorNameStr] (vom Typ VAR_STR) den Namen der selektierten Farbe zurück. Wenn 'header' übergeben wird, hat der Auswahldialog diese Überschrift. Als Farbnamen können alle Farben erwartet werden, dia auch bei der Farbangabe eines Dialogelementes in einer Masken-Definition angegeben werden können. (Siehe auch [FIELD_FLAG_MAROON]..[FIELD_FLAG_YELLOW])

	New comman: GET_COLOR [ColorNameStr] {, 'header'}
	Returns in [ColorNameStr] (type VAR_STR) the name of the selected color. If 'header' is defined, the choose-dialog will have this headline. All the colors, that can be given to a dialog-element in a mask-definition could be aspected. (See also [FIELD_FLAG_MAROON]..[FIELD_FLAG_YELLOW])

10.08.2000 	(5.00.00/213/AG) Zuordnung von Bitmaps auf TREE-Zeilen. Damit ist verbunden: Eine neue Sektion in der INI-Datei und Änderung der Befehle TREE_ADD, TREE_MODIFY und TREE_ITEM. 
	1.	INI-Sektion [Pictures]:
		In der Applikations-INI-Datei kann ab jetzt die Sektion [Pictures] angelegt werden. Darin können max. 9 Bilddateien angegeben werden, die während 
		der Laufzeit auf Tree-Zeilen zugeordnet werden können (P1= bis P9=). Falls hinter dem Namen der Bilddatei, die sich auf jeden Fall im Picture-Path 
		der Anwendung befinden muss, ein Pipezeichen und eine Ziffer (1..5) befindet, wird dies folgendermassen interpretiert: 1..3=falls in einem Tree-Query 
		eine Query-Zeilen-Farbe verwendet wird, wird das entsprechende Bitmap verwendet um diese Farbe zu symolisieren. Bitmap Nr. 4 steht für Zeilen, 
		die protected sind und Bitmap Nr. 5 für Knoten-Zeilen.
		Beispiel:	[Pictures] 
				P1=green.bmp|1
				P2=blue.bmp|2
				P3=red.bmp|3
				P4=Clean.bmp|4
				P5=Exit.bmp
				P6=Help.bmp

	2.	Vorher	TREE_ADD [Mask], 'TreeFieldID', [Result],[ItemID],'Text',RecordID,'TableName',RecFlag
		Jetzt	TREE_ADD [Mask], 'TreeFieldID', [Result],[ItemID],'Text',RecordID,'TableName',RecFlag,'IconName'
				Beim Anlegen einer neuen Zeile kann jetzt auch der Name der Bitmap-Datei (einer der max. 9 Namen aus der INI-Sektion [Pictures]) 
				angegeben werden.
	3.	Vorher	TREE_MODIFY [Mask],'TreeFieldID',[Result],[ItemID],'Text',RecordID,'TableName',RecFlag
	   	Jetzt	TREE_MODIFY [Mask],'TreeFieldID',[Result],[ItemID],'Text',RecordID,'TableName',RecFlag,'IconName'
				Beim Ändern einer Tree-Zeile kann jetzt auch der Name der Bitmap-Datei (einer der max. 9 Namen aus der INI-Sektion [Pictures]) 
				angegeben werden.
	4.	Vorher	TREE_ITEM [Mask], 'TreeFieldName', ActionID, [Result], [ItemID], {[RecordID] {, [TableName] {, [RecFlag] {, [Hirarchie] {, [Text] }}}}}
		Jetzt	TREE_ITEM [Mask], 'TreeFieldName', ActionID, [Result], [ItemID], {[RecordID] {, [TableName] {, [RecFlag] {, [Hirarchie] {, [Text] {, [IconName]}}}}}}
				Beim Laden einer Tree-Zeile kann jetzt auch der Name der Bitmap-Datei (einer der max. 9 Namen aus der INI-Sektion [Pictures]) 
				abgerufen werden.

	Relating bitmaps to tree-lines. With this changes comes: A new section in the INI-file and changes of the commands TREE_ADD, TREE_MODIFY and TREE_ITEM. 
	1.	INI-Section [Pictures]:
		In the application-INI-file from now on the section [Pictures] could be inserted. In this section max. 9 piucture-files could be assigned that could be 
		used while run-time to relate them to tree-lines (P1= to P9=). All picture-files have to be placed in the picture-path of the application. If there is a 
		pipe-sign behind a picture-name it will be interpreted in the following way: 1..3=if in a tree-query a query-line-color is used, the related bitmap will be 
		used to display this case. Bitmap 4 is for the display of protected lines reseved and bitmap 5 displays tree-knots.
		Example:	[Pictures] 
				P1=green.bmp|1
				P2=blue.bmp|2
				P3=red.bmp|3
				P4=Clean.bmp|4
				P5=Exit.bmp
				P6=Help.bmp

	2.	Befor	TREE_ADD [Mask], 'TreeFieldID', [Result],[ItemID],'Text',RecordID,'TableName',RecFlag
		now		TREE_ADD [Mask], 'TreeFieldID', [Result],[ItemID],'Text',RecordID,'TableName',RecFlag,'IconName'
				When adding a new line to a tree the bitmap name (one of the max. 9 out of the INI-section [Pictures]) could also be passed to the CARA-engine.
	3.	Befor	TREE_MODIFY [Mask],'TreeFieldID',[Result],[ItemID],'Text',RecordID,'TableName',RecFlag
	   	now   	TREE_MODIFY [Mask],'TreeFieldID',[Result],[ItemID],'Text',RecordID,'TableName',RecFlag,'IconName'
				When modifying a line in a tree the bitmap name (one of the max. 9 out of the INI-section [Pictures]) could also be passed to the CARA-engine.
	4.	Befor	TREE_ITEM [Mask], 'TreeFieldName', ActionID, [Result], [ItemID], {[RecordID] {, [TableName] {, [RecFlag] {, [Hirarchie] {, [Text] }}}}}
		now		TREE_ITEM [Mask], 'TreeFieldName', ActionID, [Result], [ItemID], {[RecordID] {, [TableName] {, [RecFlag] {, [Hirarchie] {, [Text] {, [IconName]}}}}}}
				When loading a line from a tree the bitmap name (one of the max. 9 out of the INI-section [Pictures]) could also be called from the CARA-engine.

10.08.2000 	(5.00.00/212/AG) Neue globale Variable vom Typ VAR_STR [TREE_SEPARATORS]. Durch Pipe-Zeichen getrennt können in dieser Variable Zeichenketten abgelegt werden, die dazu verwendet werden Felder in TREE-Zeilen zu unterscheiden. Wenn mehr Felder angezeigt werden sollen, als Trenn-Zeichenketten vorhanden sind, wird stets die jeweils letzte Zeichenkette als Separator aller verbleibender Felder verwendet.
	Beispiel: CALC [TREE_SEPARATORS] AS ' - |, '	D.h., dass das erste Feld vom zweiten durch ein Minuszeichen zwischen zwei Leerzeichen 
									vom zweiten Feld getrennt dargestellt wird. Alle anderen Felder werden durch ein Komma und 
									ein Leerzeichen voneinander getrennt.

 	New global variable of type VAR_STR [TREE_SEPARATORS]. With pipe-signs separated strings could be placed in this varible. The strings are used to separate the fields that are displayed in tree-lines. If there are more fields than separator-strings, then always the last separator-string will be used for the rest fields.
	Example: CALC [TREE_SEPARATORS] AS ' - |, '	That means, that the first field will be separated from the second through a dash between two 
									blanks. All the other fields are separated by a komma and a blank.

09.08.2000 	(5.00.00/211/GH) In Masken werden ab jetzt Choicer, die an BIT_BUTTON oder SPEED_BUTTON gebunden wurden, nur noch beim Click mit der rechten Maustaste gezeigt. Der Click auf die linke Maustaste reagiert ab jetzt genauso wie bei Knöpfen ohne Choicer.

09.08.2000 	(5.00.00/210/GH) In Masken sind zwei neue Variablen verfuegbar: [mask.MASK_MEMOS_READ] und [mask.MASK_MEMOS_WRITE], beide sind vom Typ VAR_BOOL und per Default auf TRUE.Mit diesen Variablen laesst sich steuern, ob in der Maske gezeigte Memos automatisch gelesen oder gespeichert werden.

17.07.2000 	(5.00.00/209/TW) Der Befehl MASK_UPDATE hat ab jetzt einen neuen optionalen Parameter.
	MASK_UPDATE [mask] {, boolUnmodify}. Wenn boolUnmodify = TRUE ist (Default-Wert=FALSE), werden alle Masken-Variablen auf unmodified gesetzt (außer Maskenvariablen mit der Option ALWAYS_MODIFIED).

06.07.2000 	(5.00.00/208/DD) Neuer INI-Datei-Schalter in der Sektion [SQL]. FreeInterfaceDisconnect=0 bedeutet, dass nicht nach jedem Ausführen eines Querys im freien SQL-Interface die Datenbank geschlossen und wieder geöffnet wird. Dies ist besonders für den Fall gedacht, dass man beim Einloggen in eine Datenbank unbedingt das Passwort eingeben muss, obwohl man dies normalerweise in der INI-Datei angeben kann. Der Default-Wert ist  FreeInterfaceDisconnect=1. Darüberhinaus muss ab für Passworte oder User-Namen, die normalerweise "leer" sind ein "@" angegeben werden. D.h. Wenn zum Einloggen in die Datenbank kein Passwort notwendig ist, kann man DataPasswort=@ angeben - dann wird das Datenbank-Einlogg-Fenster unterdrückt, obwohl "kein" Passwort angegeben wurde.

15.06.2000 	(5.00.00/207/SS) Einführung der BDE Version und Änderung des Dokumanagers. Neuer Befehl:
			DOCUMENT_CREATE [boolRes]
	Erlaubt es einen Dokumentenordner-Eintrag aus der Engine heraus anzulegen, wobei alle in
			der Detail-Maske des Dokumentenmanagers vorkommnenden Felder über einen neuen
			Satz an globalen Variablen vorbelegt werden kann:
			[DOCU_MGR_REL_REC_ID] 			(VAR_FLOAT)
									RecordID des relationalen Datensatzes
			[DOCU_MGR_REL_REC_FLAG]			(VAR_NUM)
									RecFlag des relationalen Datensatzes
			[DOCU_MGR_TABLE_NAME]			(VAR_STR)
									Tabellen-Name des relationalen Datensatzes
			[DOCU_MGR_HEADER]		 		(VAR_STR)
									Überschriften-Anhang für den Ordner (nur
									Anzeige, wird nicht gespeichert)
			[DOCU_MGR_REGISTER_NO]			(VAR_NUM)    
									Welches Register soll im DocMgr geöffnet sein
			[DOCU_MGR_HEADER_ID]				(VAR_FLOAT)
									ID des zugehörigen Ordners
			[DOCU_MGR_ITEM_NOTE]				(VAR_STR)
									Bemerkungszeile
			[DOCU_MGR_ITEM_ID]				(VAR_FLOAT)
									RecordID des (neuen) Ordner-Eintrages
			[DOCU_MGR_NOTE_FILE_NAME]		(VAR_STR)
									Textdatei mit dem Langtext
			[DOCU_MGR_LEVEL]				(VAR_NUM)
									Dokumentenlevel 
			[DOCU_MGR_CREATOR_ID]			(VAR_FLOAT)  
									Anleger (Mitarbeiter) ID
			[DOCU_MGR_CREATE_DT_ID]			(VAR_FLOAT)  
									gepackt: Date & Time vom Anlagebeginn
			[DOCU_MGR_CREATE_RUN_DT_ID]       	(VAR_FLOAT)
									gepackt: Date & Time vom Anlageende
			[DOCU_MGR_CREATE_TYPE_ID]         	(VAR_FLOAT)
									ID des Choicereintrages für die Anageart
			[DOCU_MGR_NEXT_PROC_ID]			(VAR_FLOAT)
									Wiedervorlage (Mitarbeiter) ID
			[DOCU_MGR_NEXT_PROC_DT_ID]		(VAR_FLOAT)
									gepackt: Date & Time vom
								 	Wiedervorlagebeginn
			[DOCU_MGR_NEXT_PROC_RUN_DT_ID] 	(VAR_FLOAT)  
									gepackt: Date & Time vom 
									Wiedervorlageende
			[DOCU_MGR_NEXT_PROC_TYPE_ID]	(VAR_FLOAT)  
									ID des Choicereintrages für die 
									Wiedervorlage
			[DOCU_MGR_FINISH_ID]				(VAR_FLOAT)
									Erlediger (Mitarbeiter) ID
			[DOCU_MGR_FINISH_DT_ID]			(VAR_FLOAT)
									gepackt: Date & Time vom Erledigerbeginn
			[DOCU_MGR_FINISH_RUN_DT_ID]		(VAR_FLOAT)  		
									gepackt: Date & Time vom Erledigerende
			[DOCU_MGR_FINISH_TYPE_ID]			(VAR_FLOAT)  
									ID des Choicereintrages für das Erledigen
			[DOCU_MGR_FILE_PATH]				(VAR_STR)
									Zugeordnete Datei
			[DOCU_MGR_FILE_TYPE_ID]			(VAR_FLOAT)
									ID des Choicereintrages für den Dateityps
			[DOCU_MGR_PROGRAM_ID]			(VAR_FLOAT)
									ID des Choicereintrages für das Programms
			[DOCU_MGR_TEMPLATE]				(VAR_STR)
									Vorlage-Datei
			[DOCU_MGR_X_REF_ID_01]			(VAR_FLOAT)  
									RecordID einer X-Referenz
			[DOCU_MGR_X_REF_ID_02]			(VAR_FLOAT)
									RecordID einer X-Referenz
			[DOCU_MGR_X_REF_ID_03]			(VAR_FLOAT)
									RecordID einer X-Referenz
			[DOCU_MGR_X_REF_ID_04]			(VAR_FLOAT)
									RecordID einer X-Referenz
			[DOCU_MGR_X_REF_ID_05]			(VAR_FLOAT)
									RecordID einer X-Referenz
			[DOCU_MGR_X_REF_ID_06]			(VAR_FLOAT)
									RecordID einer X-Referenz
			[DOCU_MGR_X_REF_ID_07]			(VAR_FLOAT)
									RecordID einer X-Referenz (unbenutzt)
			[DOCU_MGR_X_REF_ID_08]			(VAR_FLOAT)
									RecordID einer X-Referenz (unbenutzt)
			[DOCU_MGR_X_REF_ID_09]			(VAR_FLOAT)
									RecordID einer X-Referenz (unbenutzt)
			[DOCU_MGR_X_REF_ID_10]			(VAR_FLOAT)
									RecordID einer X-Referenz (unbenutzt)
			[DOCU_MGR_CATEGORY_ID]			(VAR_FLOAT)
									RecordID der Dokumenten-Manager-Kategory
			[DOCU_MGR_THREAD_NO]				(VAR_NUM)													Gesprächsfaden Nummer

10.06.2000 	(4.03.46/206) Der Befehl GET_YES_NO 'head','question',[num] {,option} hat ab jetzt, einen neuen optionalen Parameter: option. Dieser Parameter ist com typ VAR_NUM und kann folgende (neuen) Werte annehmen:
			[ALIGN_LEFT]		Der Anzeigetext ist am linken Rand ausgerichtet.
			[ALIGN_RIGHT]		Der Anzeigetext ist am rechten Rand ausgerichtet.
			[ALIGN_CENTER]	Der Anzeigetext wird mittig ausgerichtet.

09.06.2000 	(4.03.45/205) Im Befehl MASK_COMMAND [mask],num1{,num2{,num3}} kann ab jetzt, wenn num1 den Wert [MASK_COMMAND_NOTES] enthält für num3 die ID der Notiz angegeben werden, die direkt angewählt sein soll.

09.06.2000 	(4.03.44/204) Die Befehle QUERY_LOAD, QUERY_ADD_WHERE und QUERY_ADD_STRING können ab jetzt auch mit Variablen vom Typ VAR_MASK angesprochen werden.

08.06.2000 	(4.03.43/203) Der Aufruf von Dokumenten aus dem Dokumanager heraus wird ab jetzt komplett über den Befehl "ShellExecute" abgewickelt.

02.06.2000 	(4.03.42/202) Es gibt einen neuen Masken-Hook : [Mask!MASK_HOOK_DATE], der angesteuert wird, wenn in einer Maske der Kalender aufgerufen wurde und nicht mit ESC oder Abbruch verlassen wurde. In der neuen Variable [Mask!MASK_DATE_RESULT]  vom Typ VAR_DATE kann man das eingegebene Datum ablesen.

26.05.2000 	(4.03.41/201) Wenn in einer Maske nach dem Suchen nur ein Datensatz gefunden werden konnte, so wird dieser stets sofort in die Maske geladen. Dieser Prozess unterbindet jedoch die Listen-Ansicht des Suchergebnisses und ermöglicht dadurch nicht, z.B. den Listengenerator für den Datenexport zu verwenden. Ab jetzt kann man, nach dem der Datensatz in die Maske geladen wurde, auf das Back2List-Icon (im Daten-Spinner in der Mitte) klicken, und erhält dadurch die Listenansicht.

25.05.2000 	(4.03.40/200) In Dialogelemente vom Typ PICTURE können ab jetzt Bilder von folgenden Datei-Typen geladen und gezeigt werden : *.tif;*.tiff;*.jpg;*.jpeg;*.jpe;*.pcx;*.bmp;*.ico;*.cur;*.png;*.wmf;*.emf bedingt können auch Bilder vom Typ *.gif geladen werden, jedoch nur, wenn diese keine Animationen enthalten. Mit der rechten und linken Maustaste kann man auf dem Bild ein Zoom out/in erzeugen (wie bei den Printjobs). Falls das angezeigte Bild zu gross wird, erscheinen Scrollbalken an den Rändern. Die Option "STRECH" ist für dieses Dialogelement daher nicht mehr notwendig und ab jetzt ungültig.

22.05.2000 	(4.03.39/199) Änderung des Befehls SCRIPT. An ein Script können ab jetzt (wie bisher auch) 32 Parameter übergeben werden. Diese können jedoch sowohl numerisch sein, als auch alphanumerisch. Die numerischen Werte sind (wie bisher auch) über die Variablen [RECORD_ID1] bis [RECORD_ID32] verfügbar, die alphanumerischen Werte über die Variablen [PAR_STR1] bis [PAR_STR32]. Sollte z.B. der 4. übergebene Parameter der String "Test" sein, so wird [RECORD_ID4] den Wert "0.0" enthalten und [PAR_STR4] den Wert "Test"! 
	Wichtig: In allen absoluten String-Wert-Angaben dürfen keine Kommata enthalten sein, in Variablen-Werten ist dies gestattet. Beispiele:
	VAR_STR AString, 'an initial value, for example'
	SCRIPT 'ATest.CSH',1,'AStringValue',3	> erlaubt, alles ok
	SCRIPT 'ATest.CSH',1,[AString],3		> erlaubt, alles ok
	SCRIPT 'ATest.CSH',1,'AString, AValue',3	> NICHT erlaubt, in der Parameterangabe für den zweiten Parameter wurde ein String absolut (also direkt in Hochkommata) übergeben, der ein Komma enthält.

22.05.2000 	(4.03.38/198) Beim Addieren von Sekunden zu einer Variable vom Typ VAR_TIME trat gelegentlich ein Fehler auf, der mit Fließkommazahlen-Umwandlungen zusammen hing. Der Fehler ist behoben.

20.05.2000 	(4.03.37/197) Neuer Befehl FILE_COPY [boolRes], 'strSourceName', 'strDestName'
	Kopiert die Datei 'strSourceName' nach 'strDestName'. [boolRes] wird TRUE, wenn die Operation erfolgreich verlaufen ist, anderenfalls ist das Ergebnis FALSE.

20.05.2000 	(4.03.36/196) Erweiterung einer Berechungsmethode für String-Variablen (VAR_STR). Die Funktion DIGITS liefert von einem String lediglich die enthaltenen Ziffern zurück und alle die Zeichen, die sich in einem zusätzlich übergebbaren Filter-String aufgeführt werden. 
	Syntax:	CALC [AStr] AS DIGITS(S {, F})
	Beispiel:	CALC [TmpStr] AS DIGITS('Tel.: 06187/8384-0')
			Dies ergibt in [TmpStr] den Wert '0618783840'.  
	          		CALC [TmpStr] AS DIGITS('Tel.: 06187/8384-0', '/-')
			Dies ergibt in [TmpStr] den Wert '06187/8384-0'.  

09.05.2000	(4.03.35/195) Der Befehl LIST_DISPLAY funktioniert wieder fehlerfrei, er verursachte seit dem  28.01.2000 Windows-Ausnahme-Fehler.

01.05.2000	(4.03.34/194) Neue Applikations-INI-Datei-Schlüssel für die Section [SQL]:
			TimePicture4Select= In welchem Format müssen Zeitwerte an den SQL-Treiber weitergegeben werden, wenn eine Zeit in einer WHERE-Clause auftauchen soll. Z.B. TimePicture4Select=hh:mm:ss (Vorgabewert). Im Embedded-SQL der CARA-Scripte sollte die System-Variable [SQL_TIME_PICTURE_4_SELECT] verwendet werden, da der Wert TimePicture4Select aus der INI-Datei an diese Variable weitergegeben wird.
	TimePicture4Modify= In welchem Format müssen Zeitwerte an den SQL-Treiber weitergegeben werden, wenn eine Zeit in einer INSERT- oder UPDATE-Clause auftauchen soll. Z.B. TimePicture4Modify=hh:mm:ss (Vorgabewert). Im Embedded-SQL der CARA-Scripte sollte die System-Variable [SQL_TIME_PICTURE_4_MODIFY] verwendet werden, da der Wert TimePicture4Modify aus der INI-Datei an diese Variable weitergegeben wird.

30.04.2000	(4.03.33/193) Neuer Befehl:
	FORCE_DIR [boolRes], 'strDirectoryPath'
	Erzeugt den gesamten Pfad der in 'strDirectoryPath' übergeben wird (das angegebene Laufwerk muß natürlich existieren). Der Befehl wurde erfolgreich ausgeführt, wenn in [boolRes] TRUE zurückgegeben wird.

30.04.2000	(4.03.32/192) Die Liste der Tabellen einer Anwendung kann im ASCII-Import oder in einer Maske nun auch beim MSSQL-Server angezeigt werden.

30.04.2000	(4.03.31/191) Die Befehle QUERY_DESCR_TOP und QUERY_DESCR_NEXT haben zwei weitere, neue optionale Parameter. Der normale Befehlsaufbau war bisher
	QUERY_DESCR_XXXX [name], [string], [numDataType]  und lautet nun
	QUERY_DESCR_XXXX [name], [string], [numDataType] {, [numDataSize] {, [boolIsIndex]}}.
	Dabei kann mit [numDataSize] die Speicherkapazität (Größe) des Feldes ermittelt werden, und [boolIsIndex] ist TRUE, wenn das Feld indiziert ist.

18.04.2000	(4.03.30/190) Neuer Befehl:
	FILE_STR_SEARCH [numRes], FileName, SearchStr {, SearchOpt}.
	Sucht in der Datei "FileName" den "SearchStr" und gibt die Position an, an welcher der Such-String gefunden wurde (0=kein Ergebnis). Es können nur Datein mit einer maximalen Grösse von 2MB verwendet werden. Die "SearchOpt" kann wie eine Binär-Flagge aus folgenden Werten zusammengesetzt werden:
          	[FIND_AND_REPLACE_OPT_NONE]		: keine Effekte (0 = DEFAULT)  
          	[FIND_OPT_CASE_SENSITIVE]       		: Soll auf die Groß- und Kleinschreibung
							  des "SearchStr" Rücksicht genommen
							  werden?
				
18.04.2000	(4.03.29/189) Neuer Befehl:
	FILE_STR_REPLACE [boolRes], FileName, SearchStr, ReplaceStr {, ReplaceOpt {, Filler}}.
	Sucht in der Datei "FileName" den "SearchStr" und ersetzt diesen durch den "ReplaceStr". Es können nur Datein mit einer maximalen Grösse von 2MB verwendet werden. Es werden alle Vorkommen von "SeachStr" ersetzt. Sollte ein Fehler auftauchen, ist das Ergebnis FALSE, anderenfalls, auch wenn keinerlei Änderungen an der Datei vorgenommen wurden, ist das Ergebnis TRUE. Die "ReplaceOpt" kann wie eine Binär-Flagge aus folgenden Werten zusammengesetzt werden:
          	[FIND_AND_REPLACE_OPT_NONE]		: keine Effekte (0 = DEFAULT)  
          	[REPLACE_CHANGE_FILE_LENGTH_NO]	: die Dateilänge bleibt unverändert,
							  falls der "ReplaceStr" kleiner als der
							  "SearchStr" ist, wird der Rest der
							  Zeichen durch das erste Zeichen im
							  Filler ersetzt. Wenn der Filler nicht
							  übergeben wird, wird ein Leerzeichen
							  (#32) als Filler verwendet. Wenn der
							  "ReplaceStr" länger als der "SearchStr"
							  ist, wird der ReplaceStr gekürzt.
          	[REPLACE_ONLY_FIRST]	   :		: Soll nur das erste Vorkommen von
							  "SearchStr" ersetzt werden ?
          	[FIND_OPT_CASE_SENSITIVE]       		: Soll auf die Groß- und Kleinschreibung
							  des "SearchStr" Rücksicht genommen
							  werden?

14.04.2000	(4.03.28/188) Mit dem Befehl SET_LABEL kann man nun auch die Zeichenketten der Masken-Dialogelemente "BIT_BUTTON" und "SPEED_BUTTON" setzen.

13.04.2000	(4.03.27/187) In den Masken-Dialogelementen "BIT_BUTTON" und "SPEED_BUTTON" kann man nun eine Zeichenkette als Bezeichner und/oder dazu ein Bild angeben. Die Bezeichner müssen nun immer im ersten Feld der VIEW - Zeile stehen und der Bild-Dateiname im zweiten Feld. Sollte eine Bilddatei angegeben werden, kann man hinter dem Dateinamen (getrennt durch ein Pipe-Zeichen "|")  angeben, wieviele Bilder die Bilddatei enthält (z.B. 2 wenn ein 256 und ein 16 farbiges Bild nebeneinander in einem Bitmap übergeben werden).

11.04.2000	(4.03.26/186) Neuer Befehl LIST_2_QUERY [liste], [query oder browser oder maske].
	Fügt die Zeilen der [liste] and das [querys] (oder browsers oder maske) an.

04.04.2000	(4.03.25/185) Es gibt einen neuen Browser-Hook : [Browser!BROWSER_HOOK_MARK], der angesteuert wird, wenn in einem Browser eine Zeile markiert wird. Wenn die [Browser!BROWSER_ACTION] ungleich 0 ist, wird die User-Aktion wieder rückgängig gemacht. D. h. wenn ein User eine Zeile markiert hat, wird diese wieder demarkiert und wenn der User eine Zeile demarkieren will, wird diese wieder markiert.

04.04.2000	(4.03.24/184) Es gibt einen neuen Masken-Hook : [Mask!MASK_HOOK_GRID_MARK], der angesteuert wird, wenn in einem Grid eine Zeile markiert wird. Wenn die [Mask!MASK_ACTION] ungleich 0 ist, wird die User-Aktion wieder rückgängig gemacht. D. h. wenn ein User eine Zeile markiert hat, wird diese wieder demarkiert und wenn der User eine Zeile demarkieren will, wird diese wieder markiert.

04.04.2000	(4.03.23/183) In der RecordID-Anzeige im Browser oder der Make (über die Taste F12) kann man jetzt die RecordID kopieren, da das Feld nicht mehr protected ist.

14.03.2000	(4.03.22/182) Die Berchnungsmethode für VAR_STR, VAR_BOOL, VAR_NUM und VAR_FLOAT : ASIGN_PART(S,P,PD,D{,F{,Upper}}) extrahiert aus dem String S den durch P erkennbaren Teil. Alle Teile sind durch den Delimiter D getrennt. Wenn P erkannt wurde, wird versucht den "rechten" Teil des durch P gekennzeichneten Teils zu ertrahieren. "Links" und "Rechts" wird dabei durch den Delimiter PD unterschieden. Wenn F nicht ller ist, werden alle Zeichen von F aus dem Ergebnis gefiltert. Wenn Upper TRUE ist, wird das Ergebnis in Großbuchstaben zurückgegeben.

			Beispiel: 	CALC [S] AS 'P1=1;P2=2;P3=3;;P5=5;;P7=7'
				CALC [P] AS ASIGN_PART([S],'P3','=',';',' ',TRUE), dann steht in [P] '3'.

12.03.2000	(4.03.21/181) Ein neuer (boolean) Schlüssel für die Sektion [Config] in der Applikations-INI-Datei wurde hinzugefügt: ShowIconErrors= der Defaultwert ist TRUE (d.h. 1)  und stellt sicher, daß ein Fehler, der beim Laden von Programm-Icons (meist aus dem Pictures-Verzeichnis) angezeigt wird. Bei Hintergrundjobs werden oft keinerlei Icons benötigt und das Fehlen der Icons ist normal, das Anzeigen entsprechender Fehler überflüssig.

12.03.2000	(4.03.20/180) Die Applikations-INI-Datei-Schlüssel UseDatabase, UseMainWindow und UseMenu, UseScript wurden erneut überarbeitet und arbeiten nun wieder einwandfrei. Ein neuer (boolean) Schlüssel für die Sektion [Config] in der Applikations-INI-Datei wurde hinzugefügt: StationIniFile= der Defaultwert ist TRUE (d.h. 1)  und stellt sicher, daß eine Stationsabhängige-INI-Datei zu der Applikation angelegt wird. Dies geschieht stets im PrintSet-Pfad der Anwendung. Wenn der Wert FALSE (d.h. 0) ist, unterbleibt das Anlegen einer Stations-INI-Datei, wodurch auch keinerlei Informationen über die Größe und Lage der geöffneten Fenster einer Applikation gespeichert werden. Bei den zugehörigen Tests stellte sich auch heraus, daß Hintergrundjobs, die einen Timer verwenden sollen, nur unter Verwendung eines Hauptfensters  (UseMainWindow=1) funktionieren. Zur CARA-Dokumentation wurden ein paar Dateien (BackGroundJob*.*) hinzugefügt, die z.B. einen zeitgesteuerten Hintergrungdjob wochentags zwischen 18:00 und 19:00 Uhr ausführen.

08.03.2000	(4.03.19/179) Die Berchnungsmethode für VAR_STR, VAR_BOOL, VAR_NUM und VAR_FLOAT : REVERSE_PART(S,P,D) extrahiert aus dem String S den P'ten Teil, der durch den Delimiter D getrennt ist von rechts ausgehend.
			Beispiel: 	CALC [S] AS 'P1;P2;P3;;5;;P7'
				CALC [PStr] AS REVERSE_PART([S],2,';'), dann steht in [PStr] der Wert ''.
				Nach CALC [PStr] AS REVERSE_PART([S],6,';') steht in [PStr] 'P2'.
			Wichtig:	REVERSE_PART() kann auf VAR_STR, VAR_NUM, VAR_FLOAT und
				VAR_BOOL angewendet werden. 
			Beispiel: CALC [Num] AS REVERSE_PART([S],3,';'), dann enthält [Num] eine 5.

01.03.2000	(4.03.18/178) Die Berchnungsmethode FLOAT_EXTRACT (Release 4.03.12/175 vom 26.02.2000) heisst ab jetzt F_EXTRACT. Die Berchnungsmethode INT_EXTRACT (Release 4.03.11/174 vom 26.02.2000) heisst ab jetzt I_EXTRACT. Denn alle numerischen Berechnungen die ein INT() enthielten, schlugen seit der Einführung dieser Berschnungsmethoden fehl. 

01.03.2000	(4.03.17/177) Im Browser steht ab jetzt eine weitere Options-Flagge zur Verfügung: [BROWSER_FLAG_OK_ON_STARTING] mit der es möglich ist, bei einem Browser, bei dem sowohl der BROWSER_HOOK_OK gesetzt ist, als auch eine STARTING WITH - Anwesiung im SQL-Statement enthalten ist, direkt nach erfolgreichem Auffinden des Datensatzes aus der  STARTING WITH - Anwesiung den OK-Hook anzusteuern, ganz so als ob der Benutzer den Datensatz mit ENTER oder einem Maus-Doppelklick ausgewählt hätte. Damit kann man kaskadische Auswahlen z.B. nacheinander  geschalteter Choicer öffnen. Diese neue Flagge wird unmittelbar nach dem ersten Ausführen wieder aus der VIEW_FLAG gelöscht. D.H. man muß sie vor jedem "Gebrauch" neu setzten.

28.02.2000	(4.03.16/179) Ab jetzt werden das Menü und die Icons im Hauptfenster einer Anwendung erst nach der kompletten Initialisierung für die Benutzer freigegeben.

26.02.2000	(4.03.15/178) Bis zur Version 5 hat CARA nun eine "Haltbarkeit" bis zum 01.05.2000.

26.02.2000	(4.03.14/177) Der neue Schlüssel "ShortDatePicture=" im der Config-Sektion der Applikations-Ini-Datei kann jetzt gesetzt werden.Gibt das Format für kurze Datumseingaben an. Beispiel: "dd.MM.yyyy" . Dies  trägt dann beim Programmstart ohne weitere Warnung die entsprechenden Werte in die Registry ein. Das Format ist normalerweise "dd.MM.yy" und muß nur dann "hochgeschaltet" werden, wenn innerhalb der Anwendung häufig Datumswerte mit einem Datum größer als das Jahr 2030 eingegeben werden muß. Man kann unabhängig von CARA mit START /  Einstellungen / Systemsteuerung / Ländereinstellungen im Register "Datum" rechnerabhängige Einstellungen vornehmen. Die dort gezeigte Datumsgrenze (nur Win98 und Win2000 oder besser)  kann natürlich auch verändert werden, anstelle das Format zu ändern. Man sollte sich die Verwendung dieses INI-Schlüssels reiflich überlegen, da noch eine Menge Programme im Umlauf sind, bei denen das Verstellen des kurzen Datumformates zu Problemen führt.

26.02.2000	(4.03.13/176) Das Verhalten des Befehls QUERY_REFRESH war bei Querys mit CSH-Syntax nicht korrekt, der Fehler ist behoben.

26.02.2000	(4.03.12/175) Neue Berechungsmethode für Float-Variablen (VAR_FLOAT). Die Funktion FLOAT_EXTRACT übergibt den binären Inhalt einer String-Variable an eine Variable vom Typ VAR_FLOAT. Die Länge des Strings kann folgende Werte annehmen: 4 (single), 6 (real48), 8 (double), 10 (extended). Diese Funktion kann man beim Auslesen von binär Dateien häufig verwenden um Fließkommawerte zu lesen.
	Syntax:	CALC [AnyFloat] AS FLOAT_EXTRACT(AString)
	Info zu Wertebereichen von Fließkommazahlen:
	Typ		Bereich				Signifikante	Größe
								Stellen		in Byte
	Real48		2.9 x 10^-39	..	1.7 x 10^38	11-12		06
Single		1.5 x 10^-45	..	3.4 x 10^38	07-08		04
Double / Real	5.0 x 10^-324	..	1.7 x 10^308	15-16		08
Extended	3.6 x 10^-4951	..	1.1 x 10^4932	19-20		10

Bemerkung: Alle Fließkommazahlen in CARA werden als Extended-Werte behandelt.

26.02.2000	(4.03.11/174 Neue Berechungsmethode für Num-Variablen (VAR_NUM). Die Funktion INT_EXTRACT übergibt den binären Inhalt einer String-Variable an eine Variable vom Typ VAR_NUM. Die Länge des Strings kann folgende Werte annehmen: 1 (byte), 2 (integer), 4 (longint), 8 (int64). Diese Funktion kann man beim Auslesen von binär Dateien häufig verwenden um numerische Werte zu lesen.
	Syntax:	CALC [AnyNum] AS INT_EXTRACT(AString)
	Info zu Wertebereichen von Integerzahlen:
	Typ	Bereich	Byte
Byte	0	..	255		1
Shortint	-128	..	127		1
Word	0	..	65535		2
Integer	-32768	..	32767		2
Cardianl	0	..	4294967295		4
Longint        	-2147483648	..	2147483647		4
Int64 	-46126860141324220610	..	46126860141324220609		4

Bemerkung: Alle Integerzahlen in CARA werden als Int64-Werte behandelt.

17.02.2000	(4.03.10/173) Neue Berechungsmethode für String-Variablen (VAR_STR). Die Funktion MOVE_INT übergibt den Inhalt einer Num-Variable an einen String in Binäriformat. Die Länge kann mitangegeben werden, sie kann folgende Werte annehmen: 1 (byte), 2 (integer), 4 (longint), 8 (int64). Es ist zu bedenken, daß der Wert in der übergebene Varaiable (Typ VAR_NUM) zu der Übergabelänge passen muß, ansonsten werden wichtige Informationen abgeschnitten.
	Syntax:	CALC [AnyStr] AS MOVE_INT(Num,Len)

	Beispiel:	CALC [TmpStr] AS MOVE_INT(12345,4)
Dies gibt in [TmpStr] die binäre Darstellung der Zahl 1234 als LongInteger.

04.02.2000	(4.03.09/172) Neuer Befehl QUERY_2_LIST [query oder browser oder maske], [liste].
	Fügt die Definitions-Zeilen des [querys] (oder browsers oder maske) an die [liste] an.

03.02.2000	(4.03.08/171) Neuer Befehl LIST_FILE_WRITE [list], [result], 'filename' erlaubt es den Inhalt Variable [list] vom Typ VAR_LIST in die Textdatei 'filename' zu schreiben. Wenn die Operation erfolgreich ist, wird die Variable [result] vom Typ VAR_BOOL TRUE.

03.02.2000	(4.03.07/170) Neuer Befehl LIST_FILE_READ [list], [result], 'filename' erlaubt es in die Variable [list] vom Typ VAR_LIST den Inhalt der Textdatei 'filename' einzulesen. Wenn die Operation erfolgreich ist, wird die Variable [result] vom Typ VAR_BOOL TRUE.

01.02.2000	(4.03.06/169) Neuer Befehl DOCUMENT_DIRECT id erlaubt es mit der ID eines Ordner-Eintrages (DocMgrI.RecordID)  direkt das hinterlegte Dokument mit dem dazugehörigen Programm aufzurufen. Sollt das Dokument nicht existieren und eine Vorlage angegeben worden sein, wird die Vorlage automatisch kopiert.

31.01.2000	(4.03.05/168) In Masken-Definitionen können im Feldnamen (Tabellen-Feld-Name) und im Bezeichner ab jetzt Script-Varaiblen verwendet werden. (Nur nicht bei Masken, die im Main-Script initialisiert werden.) Beispiele:
  	ITEM 7201010, 'LABEL', 12.50, 2.00, 40.00, 1.00, ''
  	VIEW          '[BezeichnerVar]', '', '[FeldBezVar]',0
	oder 
  	ITEM 7201010, 'STRING', 12.50, 2.00, 40.00, 1.00, ''
  	VIEW          '[DefaultWertVar]', '', 'M.[FeldIDVar]ID',0

31.01.2000	(4.03.04/167) Wenn man den User-Timer (DocMgrUserTimerScript in der Applikations-INI-Datei s.u.) aus dem Dokumenten-Manager heraus aufruft, dann werden ab jetzt folgende Parameter an das Script übergeben:
	[RECORD_ID1] = User-RecordID für den der Timer aufgerufen wird
	[RECORD_ID2] = RecordID des Ordner-Eintrages aus dem heraus aufgerufen 
			    wird (DocMgrI.RecordID)
	[RECORD_ID3] = RecordID des Ordners aus dem heraus aufgerufen wird
			    (DocMgrH.RecordID)
	[RECORD_ID4] = Datum und Uhrzeit gepackt in einer RecordID, ab der der Timer 		    gezeigt werden soll. (NEU!)

28.01.2000	(4.03.03/166) In Masken-Definitionen können ab jetzt die Eingabemasken von String-Feldern einfach eine Zahl enthalten - dies ergibt dann die Eingabelänge. Beispiel:
  	ITEM 7201010, 'STRING', 12.50, 2.00, 40.00, 1.00, ''
  	VIEW          '', '10', 'PLZ',0
	genau wie : 
  	ITEM 7201010, 'STRING', 12.50, 2.00, 40.00, 1.00, ''
  	VIEW          '', 'XXXXXXXXXX', 'PLZ',0

28.01.2000	(4.03.02/165) Es gibt eine neue Option für Masken-Definitionen. Mit SHRINK in der Definitionszeile der Maske kann ab jetzt erreicht werden, daß beim Setzten der [FIELD_FLAG_HIDDEN] die Maskenhöhe neu bestimmt wird - schaltet man das "unterste" Dialogelement "unsichtbar", so wird die Maske automatisch kürzer, umgekehrt wird sie länger. Folgerichtig gibt es nun auch eine entsprechende Flaggen-Constante [MASK_FLAG_SHRINK].

26.01.2000	(4.03.01/164) In Menü-Items kann man ab jetzt hinter dem ScriptNamen (aber noch in den Hochkommata) durch Kommas getrennt Parameter an das Script übergeben, die dort als [RECORD_ID1] bis (max.) [RECORD_ID32] verfügbar sind.
	Beispiel:
      	ITEM 1510,'&Anreden','Choicer.CSH,0,110001'
	An das Script CHOICER.CSH wird beim Aufruf des Menüpuntes "Anreden" die [RECORD_ID1] mit dem Wert 0 und die [RECORD_ID2] mit dem Wert 110001 übergeben.

	Gleiches gilt für Choicer-Definitionen. ABER: Die [RECORD_ID1] ist, wenn der  Aufruf des Scriptes nicht über einen Info-Hook vom Programmierer selbst gesteuert wird,  immer mit dem Wert der RecordID des aktuellen Datensatzes der zu Grunde liegenden Maske gefüllt. Falls also ein Wert an das Script übergeben werden soll, muß dieser in der 2. Zahl hinter dem Script auftauchen.  Beispiel:
    	ITEM  117010, '&Verkaufshistorie', 'KUNDEN6.CSH,100,5', 'Artikel-Detail'
 	An das Script KUNDEN6.CSH wird beim Aufruf des Infopunktes "Verkaufshistorie" die  [RECORD_ID1] mit dem Wert des in der aktuell in der Maske geladenen Datensatzes (und nicht der hier angezeigte Wert 100) und die [RECORD_ID2] mit dem Wert 5 übergeben.

26.01.2000	(4.03.00/163) Neuer Variablen-Typ VAR_DATABASE (auch verfügbar GLOBAL_DATABASE und LOCAL_DATABASE). Die Initialisierung/Anmeldung der Variable siehr folgendermaßen aus:
	VAR_DATABASE name,alias{,user{,password{,path or connectinfo}}}
	name		=	Variablenbezeichner
	alias		=	siehe CARA-Dokumentation (CARA.RTF) Abschnitt
				Application-INI-Datei, Sektion [config], DataAlias
	user		=	User, der an der Datenbank angemldet wird
	password	=	Passwort, mit dem sich der User anmeldet. Wenn sowohl
				user und passwort leer übergeben werden, wird der
				Datenbank-Login-Dialog gezeigt
	path/connect	=	siehe CARA-Dokumentation (CARA.RTF) Abschnitt
				Application-INI-Datei, Sektion [config], DataBase
	Wenn ein Alias unter ODA (oder BDE in der Folgeversion CARA 5.x) bereits korrekt angelegt ist, kann natürlich die Angabe für path/connect entfallen. Falls kein Kontakt zur Datenbank hergestellt werden kann, wird die Varaiable gar nicht angemeldet. Man muß also nach der Anmeldung der Datenbank zunächst prüfen, ob es die Varaibale überhaupt gibt:

    	VAR_STR      MyDBPath
    	CALC [MyDBPath] AS CON([DATA_PATH],'Test.mdb')
    	VAR_BOOL     ORes
    	VAR_BROWSER  MyDBQ
    	VAR_DATABASE MyDB,Test,Admin,,[MyDBPath]
    	IDENTIFIER_EXIST 'MyDB',[QRes]
    	IF [QRes]=FALSE
	  MESSAGE 'Achtung Fehler','Datenbank wurde nicht geöffnet',[MESSAGE_ERROR]
	END_IF       

	Zu diesem Variablen-Typ gibt es nur einen (neuen) Befehl : QUERY_SET_DATABASE [query or browser or mask]{,[database]}
	Mit diesem Befehl kann man eine Variable vom Typ VAR_QUERY, VAR_BROWSER oder VAR_MASK an eine Variable vom Typ VAR_DATABASE binden - alle Datenzugriffe werden dann mit der angegebenen [database] durchgeführt. Sollte keine [database] übergeben worden sein, wird die Standard-Datenbank an die Abfrage-Variable gebunden. Das Beispiel ginge dann folgendermaßen weiter:
    	QUERY_SET_DATABASE [MyDBQ],[MyDB]		
	Alle Datenbank-Operationen, diesem Zeitpunkt mit dem Browser [MyDBQ] vorgenommen werden, wenden sich direkt an die Datenbank "Test" bzw. [MyDB].

24.01.2000	(4.02.22/162) Beim Öffnen einer Maske kann man ab jetzt folgende Zeilen verwenden, um einen direkten Ladevorgang eines Datensatzes zu erreichen:
	CALC [Mask!MASK_RECORD_ID] AS [RECORD_ID1]
	MASK_UPDATE [Mask]
	MASK_COMMAND [Mask], [MASK_COMMAND_SEARCH]

24.01.2000	(4.02.21/161) Der Befehl OFCK_HOLE_KOSTENSCHABLONE stehet ab jetzt über die OFCK50.DLL zur Verfügung. (Siehe Syska.htm im CARA\HELP-Verzeichnis.)

24.01.2000	(4.02.20/160) Für Browser und Grids gibt es ab jetzt eine neue Option : [BROWSER_FLAG_EDIT_ON_ENTER] damit wird, wenn im Browser/Grid überhaupt Felder zum Editieren enthalten sind und der Browser bzw. das Grid den Fokus erhält, automatisch in den Editiermodus geschaltet. Achtung: man sollte diese Option nicht nutzen, wenn im dem Browser/Grid Zeilen enthalten sind, die "protected" sein können.

21.01.2000	(4.02.19/159) Der Befehl DOCUMENTS hat einen weiteren optionalen Parameter: DOCUMENTS 'tablename', recordid {,'header'{, ItemID}}.  Wenn in ItemID die RecordID eines gültigen Aktenordner-Eintrags ist, dann wird das Detail-Fenster direkt nach dem Ordner-Fenster geöffnet. Außerdem wird, wenn im Feld "FilePath" der Tabelle DocMgrI (Dateiname des Aktenordner-Eintrages) ein gültiger Scriptname steht, das entsprechende Script ausgeführt, wenn der Eintrag "erledigt" wurde und abgespeichert wird. In diesem Fall wird unmittelbar nach der Ausführung des Scriptes der Aktenordner wieder geschlossen. Dieses Verhalten soll zu folgendem Zweck verwendet werden können: Ein Vorgang (z.B. Verkauf eines Autos) hat z.B. zur Folge, daß man nach zwei Wochen nochmals beim Kunden anrufen muß (z.B. eine erste Inspektion anbieten und Nachfragen ob alles in Ordnung ist) -  Bei diesem Telefonat soll dann der Benutzer eine bestimmte Maske ausfüllen - das Aufrufen des Scriptes für diesen speziellen Zweck kann man somit an den Termin koppeln und automatisieren. Wenn der Telefontermin zudem von der Anwendung selbst gespeichert wird (z. B. Automatisch nach dem Verkauf eines Fahrzeuges wird ein Termin in die Terminliste des Verkäufers gespeichert) kann man jeden beliebigen Workflow abbilden. Sollte der Ablauf des aufgerufenen Scriptes (als [RECORD_ID1] steht in dem Script die ID des Aktenordnereintrages zur Verfügung)  nicht zufriedenstellend verlaufen, kann man einfach die FinisherID, FinishDTID, FinishDate und die FinishTime zurücksetzten und den Termin damit weiterhin als unerledigt definieren. Als  [RECORD_ID2] steht in dem aufgerufenen Script die Aktenordner-ID zur Verfügung.

19.01.2000	(4.02.18/158) In der Application-INI-Datei kann ab jetzt in der Sektion  [DocumentManager] der Schlüssel "DocMgrCheckScript=" verwendet werden. Dazu kann ein Script definiert werden, das beim Programmstart ausgeführt wird und z.B. den Termin-Status des Mitarbeiters, der sich eingeloggt hat, anzeigen. 
	Außerdem steht der Schlüssel "DocMgrUserTimerScript=" zur Verfügung: Wenn im Dokument-Manager ein Item (Akteneintrag) definiert wird, kann man mit der rechten Maustaste auf den Auswahlknopf eines Mitarbeiters (für den Anleger des Eintrages –Creator-, den Wiedervorlage-Mitarbeiter –NextProcessor- oder  den Erlediger –Finisher-) klicken um entweder den aktuell eingeloggt Mitarbeiter zu setzten oder ein Script für den Timer eines Mitarbeiters aufzurufen. Der Scriptname für den Timer wird im o.g. Schlüssel gesetzt. An das Script wird in der [RECORD_ID1] die ID des Mitarbeiters übergeben, in der [RECORD_ID2] die ID des Akteneintrages und Schließlich in [RECORD_ID3] die ID des Aktenordners. Achtung: bis auf die [RECORD_ID3] können diese ID's auch 0 sein!

19.01.2000	(4.02.17/157) Wenn in einem Browser die Option RETURN_ON_ONE gesetzt war, und ein BROWSER_HOOK_OK gesetzt war, wurde der Hook nicht angesteuert, wenn nur ein Datensatz gefunden werden konnte - das Problem ist beseitigt.

19.01.2000	(4.02.16/156) Gelegentlich tauchte beim Wechseln von Register-Laschen ein Schutzverletzung auf - das Problem ist beseitigt (wenn das GridQuery keine Daetn enthielt wurde trotzdem versucht eine RecordID zu ermitteln).

19.01.2000	(4.02.15/155) Seit dem Release  4.02.11 konnten keine langen Texte im Notizmanager verändert und dann gespeichert werden. Das Problem ist behoben.

18.01.2000	(4.02.14/154) Im Befehl NEW_RECORD war seit dem Release 4.02.12 ein Fehler, wodurch nur noch neue Datensätze in Tabellen angelegt werden konnten, in denen ein Datensatz mit der RecordID 0 vorhanden war. Der Fehler ist behoben.

17.01.2000	(4.02.13/153) In Extended-Feldern der Masken könenn ab jetzt auch Masken von folgendem Aufbau verwendet werden : "##,###,###.##" was zu einer Eingabe führt , die dan  ev. folgendermaßen aussieht : "123.123,45".

16.01.2000	(4.02.12/152) NEW_RECORD hat einen neuen Parameter (boolCopyID). Die neue Syntax ist folgendermaßen:
	NEW_RECORD [boolRes],'tablename',[recordid] {{{, boolUseDefRec}, boolUseID}, boolCopyID}.
	Wie bisher legt dieser Befehl in der Tabelle 'tablename' einen Datensatz mit einer neuen RecordId an und gibt die neu erzeugte Datensatz-Id in [recordid] zurück. Der Erfolg der Operation kann in [boolRes] abgelesen werden. Es werden max. 10 Versuche gemacht in die Tabelle 'tablename' zu speichern. Wenn der neue optionale Parameter boolUseDefRec den Wert TRUE hat, geht das Anlegen eines Records sehr viel schneller - wenn sich in der Tabelle 'tablename' ein Datensatz befindet, dessen RecordID = 0 oder 1 ist. (Der Wert 0 oder 1 oder wie auch immer wird in der Tabelle TableFld festgelegt ! s.o.) Wenn der neue optionale Parameter boolUseID den Wert TRUE hat, wird versucht mit der RecordID zu speichern, die in [recordid] übergeben wurde - es wird vom System dann nur mit dieser RecordID und nur ein einziges Mal versucht zu speichern! 
	Wenn boolCopyID = TRUE ist, muß in [recordid] eine bereits bestehende RecordID übergeben werden und  boolUseID muß in diesem Fall mit FALSE übergeben werden. Dann wird ein neuer Datensatz mit dem Inhalt vom Ausgangsdatensatz angelegt und die neue ID in [recordid] zurückgegeben.

16.01.2000	(4.02.11/151) An alle SQL-Anweisungen, die ein UPDATE ausführen wird ab jetzt in die SET-Anweisung folgender String eingefügt : " , UpdateTime = [ActuelleZeitID] ". Dadurch kann stets die ODE eingesetzt werden. Wenn die (neue) VIEW_FLAG [BROWSER_FLAG_SET_UPDATE_TIME] nicht gesetzt ist, unterbleibt das Setzten der UpdateTime (per Default ist diese Flag bei jdem Query und Browser gesetzt). Die [VIEW_FLAG] ist ab jetzt eine Variable, die auch zu jedem Query verfügbar ist. Im freien SQL-Interface ist diese Option abgeschaltet!

16.01.2000	(4.02.10/150) Im Main-Script kann ab jetzt ebenfalls der Befehl CARA_HALT verwendet werden.

12.01.2000	(4.02.09/149) Der Fehler, daß die Modusbox in der Masken-Knopf-Leiste stets zweimal betätigt werden mußte, ist beseitigt.

09.01.2000	(4.02.08/148) TREE_SET dauerte beim erneuten/zweiten Aufruf sehr lange, speziell wenn die zuvor gezeigte Liste sehr lang war. Der Fehler ist behoben.

04.01.2000	(4.02.07/147) In der Application-Ini-Datei kann man ab jetzt den Schalter ForceDBDrvInstall folgendermaßen einstellen:
	ForceDBDrvInstall=0	Es erfolgt nur eine Installation wenn notwendig, d.h. wenn
				weder DAO 3.5 mit JetEngine 3.0, noch DAO 3.6 mit
				JetEngine 4.0 installiert ist. In diesem Fall wird, wenn der
				InternetExplorer 5 (oder höher) installiert ist, DAO 3.6 mit
				JetEngine 4.0 installiert, anderenfalls DAO 3.5 mit JetEngine
				3.0.
	ForceDBDrvInstall=1	Es erfolgt eine erzwungene Installation der zuletzt
				verwendeten DAO-Version. CARA findet dabei selbständig
				heraus, welche Version vorhanden ist. Sollten beide
				Versionen vorhanden sein, wird nur DAO 3.6 mit JetEngine
				4.0 neu installiert.
	ForceDBDrvInstall=5	Es erfolgt eine erzwungene Installation der von DAO 3.5 mit
				JetEngine 3.0.
	ForceDBDrvInstall=6	Es erfolgt eine erzwungene Installation der von DAO 3.6 mit
				JetEngine 4.0. Wichtig : der InternetExplorer 5 (oder höher)
				muß installiert sein.

04.01.2000	(4.02.06/146) Neue Konstanten : [APPLICATION_LICENCE_TAKER] beinhaltet den Namen, der bei der Lizenz eingetragen ist. [DEMO_VERSION_SIGN] beinhaltet den String, der als [APPLICATION_LICENCE_TAKER] verwendet wird um die Demo-Version zu kennzeichnen. z.B. 'Demo-Version'. 
	Wenn also [APPLICATION_LICENCE_TAKER]=[DEMO_VERSION_SIGN] ist, dann handelt es sich um eine Demo-Version.

30.12.1999	(4.02.05/145) Neuer Befehl : INTERPRET.
	Syntax : INTERPRET [boolRes], 'FileName' o. [listLines] {, [listVars]} 
	Dieser Befehl erlaubt es während der Laufzeit eine Reihe von Script-Zeilen dynamisch nachzuladen und zu interpretieren. 

	Die geladenen Zeilen dürfen alle bekannten Befehle enthalten außer PROCEDURE und END_PROC und natürlich auch nicht SCRIPT_BEGIN und SCRIPT_END. Um die Interpretierung der dynamisch geladenen Zeilen vorzeitig zu beenden kann der Befehl EXIT_PROC verwendet werden. Interne Info: Die dynamisch geladenen Zeilen werden wie der Inhalt einer Procedur behandelt und angesteuert.

	Diese Scriptzeilen können entweder aus einer Text-Datei (FileName) kommen oder aus einer Variable vom Typ VAR_LIST ([listLines]). In [boolRes] wird zurück gegeben, ob der "nachgeladene" Source-Code interpretiert werden konnte. Es wird keine Interpretierung veranlasst, wenn die dynamisch geladenen Zeilen nicht die Syntax-Prüfung "bestehen". D.h. Es dürfen keine unvollendeten IF-Bedingungen, WHILE-Schleifen oder QUERYs im dynamischen Source enthalten sein.

	Die geladenen Zeilen können auf alle globalen Variablen und alle Script-Variablen zurückgreifen und diese auch verändern. Lokale Varaiablen der aufrufenden Procedur sind nicht erreichbar. Außerdem stehen folgende lokalen Variablen automatisch zur Verfügung : V01 bis V20 (alle vom Typ VAR_FLOAT)

	Zusätzlich zu den bekannten Variablen können für die Interpretierung der geladenen Zeilen lokale Variablen über eine Variable vom Typ VAR_LIST zur Verfügung gestellt werden ([listVars]).  Die Syntax für diese Liste ist folgendermaßen:
			VariablenName,Wert
	Beispiele	MeinString,'ho, ho, ho'		Erzeugt LOCAL_STR da ein
							Hochkomma in der Wertangabe
							vorhanden war.
			MeinDatum,17.09.1958	Erzeugt LOCAL_DATE da ein
							interpretierbares Datum in der
							Wertangabe übergeben wurde.
			MeineZeit,17:17:00		Erzeugt LOCAL_TIME da eine
							interpretierbare Zeit in der
							Wertangabe übergeben wurde.
			MeineZahl,1.4151		Erzeugt LOCAL_FLOAT da in der
							Wertangabe eine Zahl mit 
							Dezimalpunkt gefunden werden
							konnte.
			MeineGanzeZahl,20		Erzeugt LOCAL_NUM da in der
							Wertangabe eine Zahl ohne 
							Dezimalpunkt gefunden werden
							konnte.
			MeinBool1,TRUE		Erzeugt LOCAL_BOOL da in der
							Wertangabe ein Boolean-Ausdruck
							gefunden werden konnte. Erlaubte
							Boolean-Ausdrücke sind : (Ja, Nein),
							(Yes, No), (True, False), (Right,
							Wrong), (Richtig, Falsch), (1, 0),  
							(-1,0), (on,off), (ok, not ok)
			MeinTest1,     			Erzeugt gar nichts, da kein Wert
							übergeben wurde.
			MeinTest2     			Erzeugt gar nichts, da kein Wert
							übergeben wurde.

27.12.1999	(4.02.04/144) Neue Berechungsmethode für String-Variablen (VAR_STR). Die Funktion DWORD liefert in einem String die übergebenen Ziffern als Worte zurück. Dies ist beim Drucken von Schecks sinnvoll, wenn man den Betrag in Worten ausdrücken soll. Wichtig : Es werden keine Dezimalstellen berücksichtigt.
	Syntax:	CALC [AnyStr] AS DWORD(aStr o. aNum o. Afloat)
			Es können also Variablen vom Typ VAR_STR, VAR_NUM oder
			VAR_FLOAT übergeben werden oder auch absolute Werte.

	Beispiel:	CALC [TmpStr] AS DWORD('4096.00')
			Dies ergibt in [TmpStr] den Wert 'vier - null - neun - sechs'.  

27.12.1999	(4.02.03/143) Neue Berechungsmethode für String-Variablen (VAR_STR). Die Funktion DIGITS liefert von einem String lediglich die enthaltenen Ziffern zurück. 
	Beispiel:	CALC [TmpStr] AS DIGITS('Tel.: 06187/8384-0')
			Dies ergibt in [TmpStr] den Wert '0618783840'.  
	Natürlich können auch Variablen vom Typ VAR_STR an die Funktions DIGITS übergeben werden. 
	Beispiel: 	CALC [TmpStr] AS 'Fax: 06187/8384-50'
			CALC [TmpStr] AS DIGITS([TmpStr]) 
			Dies ergibt in [TmpStr] den Wert '06187838450'. 

17.12.1999	(4.02.03/142) Der Befehl MASK_CLEAR wurde um einen optionalen Parameter erweitert: MASK_CLEAR [mask] {, boolChange2Def}. Wenn boolChange2Def=TRUE ist (Defaultwert), werden alle Felder so dargestellt, wie dies in der Maskendefinition angegeben ist. Dies entspricht dem bisherigen Standardverhalten. Anderenfalls, wenn boolChange2Def=FALSE ist, werden nur die Feldinhalte entfernt und die Modified-Flags zurückgestellt. D.h. Die Hidden-Flag und die Protected-Flag der Maskenfelder bleiben unverändert, wenn  boolChange2Def=FALSE ist - alles andere bleibt wie gewohnt.

14.12.1999	(4.02.02/141) Neue Berechungsmethode für numeriche Variablen (VAR_FLOAT und VAR_NUM). Die Funktion CRC liefert die Check-Summe eines Strings. Beispiel: CALC [TmpNum] AS CRC([TmpStr]) 

14.12.1999	(4.02.01) Neue globale boolean Konstante [APPLICATION_LOGIN], gibt zurück, ob sich der User eingeloggt hat.

28.11.1999	(4.02.00/140) CARA wird ab jetzt mit der JetEngine 4.0 (DAO 3.6) ausgeliefert. Dazu ist es absolut notwendig, daß der Internet-Explorer 5 installiert ist, sonst kann das System keinen Kontakt zur Datenbank herstellen.

28.11.1999	(4.01.55/139) Als weitere Feld-Option beim Definieren von Masken, existiert nun auch der Wert  "PASSWORD" wodurch die Darstellung der eingegebenen Zeichen von dem Zeichen "*" überlagert werden. - Man kann also die Eingabe nicht vom Bildschrim ablesen, wie dies bei Passwort-Eingaben üblich ist.

28.11.1999	(4.01.54/138) Es gibt einen neuen Masken-Hook : [Mask!MASK_HOOK_GRID_ENTER], der angesteuert wird, wenn ein Grid den Focus erhält.

28.11.1999	(4.01.53/137) Der Fehler, daß beim Editieren von Browsern bei eingesetztem Post-Edit-Hook das Bearbeitungsergebnis immer in die nächste (falsche) Zeile geschrieben wurde, ist behoben.

28.11.1999	(4.01.52/136) Der Fehler, daß der [Mask!MASK_HOOK_CATCH] nach den letzten Änderungen nicht mehr angesteuert wurde, ist behoben.

16.11.1999	(4.01.51/135) Der Fehler, daß beim GRID_SET die Variable [Res] immer FALSE zurückgegeben hat, ist behoben. Es empfiehlt sich besonders bei diesem Befehl, die Variable [Res] vor dem Aufruf auf FALSE zu setzten.

16.11.1999	(4.01.50/134) Der Fehler, daß beim Ansteuern des [Mask!MASK_HOOK_GRID_POST_EDIT] auch der [Mask!MASK_HOOK_POST_EDIT] angesteuert wurde, ist behoben.

16.11.1999	(4.01.49/133) Der Fehler, daß nur jeweils [Mask!MASK_CATCH_DEF1] oder [Mask!MASK_CATCH_DEF2] innerhalb der Maske verwendet werden konnten, ist behoben.

16.11.1999	(4.01.48/132) Der Fehler, daß man mit FIELD_FLAG_GET nicht den Protected-Status des Feldes ermitteln konnte ist behoben.

16.11.1999	(4.01.47/131) Als Eigenschaft für eine Masken-Feld-Definition kann nun auch das Hot-Word "PASSWORD" verwendet werden. Alle Eingaben werden dann innerhalb dieses Feldes durch "Sternchen" verdeckt. So kann man z.B. die Eingabe von Passwörtern ermöglichen. Z.B.:
ITEM 5000022, 'STRING', 15.00, 4.00, 11.00, 1.00, 'PASSWORD'
VIEW          '', 'XXXXXXXXXXXXXXXXXXXXXXXX', 'Code', 5000220
HINT          'Bitte geben Sie dn Zugangs-Code ein.'

16.11.1999	(4.01.46/130) Neuer Befehl : MASK_NEXT_FOCUS [mask], 'AfterFieldName'. Dieser Befehl setzt den Focus auf das nächste Feld, das dem 'AfterFieldName' folgt. Als 'AfterFieldName' kann sowohl der FieldName als auch die ItemID des Feldes in der [mask] angegeben werden.

06.11.1999	(4.01.45/129) Um die ASCII-Daten in eine Tabelle einlesen können (wobei die ASCII-Datei genau zu der Tabelle passen muß), wurde ein neuer SQL-Befehl implementiert : 
ASCII_2_TABLE TableName {FileName}, Wenn kein FileName angegeben wird, wird der TableName mit der Extension ".txt" verwendet. Falls der FileName keinen Pfad enthält, wird der PrintSet-Pfad verwendet. Der Befehl kann als gewöhnlicher SQL-Befehl verwendet werden.

06.11.1999	(4.01.44/128) Um die Daten einer ganze Daten-Tabelle in eine ASCII-Datei überführen zu können, wurde eine neuer SQL-Befehl implementiert : 
TABLE_2_ASCII TableName {FileName}, Wenn kein FileName angegeben wird, wird der TableName mit der Extension ".txt" verwendet. Falls der FileName keinen Pfad enthält, wird der PrintSet-Pfad verwendet. Der Befehl kann als gewöhnlicher SQL-Befehl verwendet werden.

06.11.1999	(4.01.43/127) Es gibt zwei neue Masken-Hooks : [MASK_HOOK_POST_DELETE] und [MASK_HOOK_GRID_POST_DELETE], die nach dem Löschen angesteuert werden. Außerdem, wird ab jetzt, wenn man im Delete-Hook oder Post-Delete-Hook als Rückgabewert für die Mask-Action den Wert 11111 setzt, das Lupen- bzw. Grid-Query automatisch "refreshed".

27.10.1999	(4.01.42/126) Im Developer-Modus wird ab jetzt unten links in der Maske als dritter Wert die Anzahl für das Neuzeichnen der Maske während der Laufzeit ausgegeben.

23.10.1999	(4.01.41/125) Der Fehler, daß CARA unkontrollierte Abstürze während des normalen Betriebes erzeugte (erst seit dem 28.09.1999 Version 4.01.28) ist behoben. Es handelte sich um eine fehlerhafte Programmierung innerhalb der TRIM() Funktion.

23.10.1999	(4.01.40/124) Der Befehl TREE_SET wurde erweitert: In der [QueryList] werden in der hirarchischen Reihenfolge die Query-Dateinamen der einzelnen Tree-Ebenen übergeben - dies hat sich nicht geändert. Einer der Dateinamen kann nun mittels des Zusatzes "dateiname_des_querys|EACH_ITEM_QUERY" eine Sonderfunktion übernehmen: Nach dem der Tree (ohne das speziell gekennzeichnete Query) vollständig aufgebaut wurde, werden alle Tree-Items nochmals durchlaufen und zu jedem Item wird das EACH_ITEM_QUERY ausgeführt - sollte dieses Query zu Ergebnissen führen, so werden die Ergebniszeilen an das jeweilge "Mutter-Item" angehängt. Zu diesem Zwecke ist auch die neue Variable [TREE_MOTHER_QUERY_REC_ID], die innerhalb des speziell gekennzeichneten Querys verwendet werden kann um auf das "Mutter-Item" zu verweisen, in die CARA-Engine aufgenommen worden.

23.10.1999	(4.01.39/123) Um Transaktionen mit der ACCESS-Datenbank durchführen zu können, müssen alle Querys, die innerhalb einer Tansaktion verwendet werden, vorher geschlossen werden.  Dies ist wichtig, da  ACCESS sonst die Transaktion automatisch abbricht, was aber der Datenbank-Engine von Borland nicht weiter mitgeteilt wird - dies führt zu einem direkten Absturz der CARA-Engine. Der Befehl mit dem man ein Query, Browser oder Masken-Query schließt ist neu und heißt: QUERY_CLOSE [Query oder Browser oder Maske], [boolRes].

13.10.1999	(4.01.38/122) Um Externe-Programme aufzurufen gab es bisher den EXTERN - Befehl. Wenn aber ein Standard-Programm zum Aufruf z.B. eines speziellen Dokumenten-Typs {z.B. "http://www.cshgermany.com" (eine URL)  oder "mailto:info@cshgermany.com" (eine E-Mail) oder "http://www.cshgermany.com/index.htm" (eine HTML-Seite) ) oder "Mein Dokument.txt" (ein Text) oder "Meine Vorlage.dot" (eine MS-Word-Vorlage)}  verwendet werden soll, dann mußte bisher über den Befehl GET_EXTERN_DEVICE mittels der Extension das notwendige Programm ermittelt werden - dies ist jetzt nicht mehr notwendig. Der neue Befehl SHELL_EXECUTE 'operation', 'filename', 'parameters', 'directory', option erledigt dies. 'operation' kann 'open', 'print' oder auch '' (leer) übergeben werden. 'filename', 'parameters', 'directory' sprechen für sich selbst und option ist wie im Befehl EXTERN zu verwenden.

07.10.1999	(4.01.37/121) Alle QUERY_LIST_XXXXXXX Befehle lassen sich jetzt mit dem aktuellen Masken-Query oder, falls ein View offen ist, mit View-Query ausführen. Dabei wird einfach die Masken-Variable anstelle der Query- bzw. Browser-Variable an den Befehl übergeben. Wenn man die View-Query-Optionen verändern möchte, kann man dazu eine neue Maken-Variable [Mask!VIEW_FLAG] verwenden  - siehe auch 15.09.1999 (4.01.25) .

07.10.1999	(4.01.36/120) Der Spinner in einer Maske bezieht sich ab jetzt entweder auf das Masken-Query (wie bisher) oder, falls ein View offen ist, auf das View-Fenster (wie bisher) oder falls ein GRID den Focus hat auf das GRID (neu).

07.10.1999	(4.01.35/119) Der QUERY_HOOK_REC_CHANGE wird ab jetzt auch angesteuert wenn in einem BROWSER/GRID der letzte Datensatz markiert wird - siehe auch 06.10.1999 (4.01.30).

06.10.1999	(4.01.34/118) CARA.EXE kann ab jetzt mit mehr als einem Parameter aufgerufen werden. Der erste Parameter bleibt wie bisher der Applikations-INI-Datei vorbehalten. Im zweiten Parameter kann ein Script-Datei-Name übergeben werden, der beim Programm-Start direkt ausgeführt werden soll. Der Scriptname muss ohne Pfad angegeben werden, da das Script, wie bisher auch, über die Applikations-Einstellungen gefunden wird. Im Parameter 3-6 können Record-ID's angegeben werden, die in dem aufgerufenen Script als [RECORD_ID1] bis [RECORD_ID4] verfügbar sind.

06.10.1999	(4.01.33/117) Es gibt ab jetzt 5 User-Button, die in einer Masken-Icon-Zeile miterscheinen können. Dazu muß in dem Masken-Option-String der Wert USER1 oder USER2 etc. stehen. Die Button steuern den MASK_HOOK_BUTTON an und übergeben als [Mask!MASK_ACT_FIELD_ID] den Wert 1 bzw. 2 etc. Als [Mask!MASK_ACT_FIELD_NAME] wird der Wert USER_BUTTON_1 oder  USER_BUTTON_2 etc. übergeben. Die Button-Icons liegen im PICTURE-Unterverzeichnis und können applikationsweit während der Laufzeit nicht gewechselt werden. 

06.10.1999	(4.01.32/116) Wenn in der Tabelle DocMgrI mit HeaderID=0 Datensätze eingefügt werden, so werden diese automatisch beim Start der Anwendung als AutoExec-Script ausgeführt. 
Bedingungen:	Im Feld FilePath muß ein gültiger Scriptname (ohne Path) stehen. 
		Im Feld NextProcessDTID steht ein gepacktes Datum+Zeit für den
		spätesten Ausführungszeitpunkt. Das entsprechende Datum muß in
		NextProcessDate und die Zeit in NextProcessTime gespeichert
		werden. 
		Sollte in NextProcessorID eine MitarbeiterID stehen, wird dieses
		Script nur dann ausgeführt, wenn sich der entsprechende Mitarbeiter
		anmeldet. 
		Der Wert, der in dem Feld ItemNote steht, wird während der Laufzeit
		des Scriptes im Panel des Hauptfensters angezeigt. 
BEVOR der Process gestartet wird, wird in das Feld FinishDTID die gepackte aktuelle Zeit gespeichert, in FinisherID die MitarbeiterID des angemeldeten Mitarbeiters. In FinishDate das Datum und in FinishTime die Zeit. - So wird verhindert, daß ein und dasselbe Script auf zwei verschiedenen Rechnern ausgeführt wird. 
An das aufzurufende Script wird als [RECORD_ID1] die RecordID des DocMgrI-Datensatzes übergeben, und [RECORD_ID2] bis [RECORD_ID11] werden von den Inhalten der Felder XRef01ID bis XRef10ID gefüllt. 
Wenn der Process nochmals ausgeführt werden soll, weil er erfolglos war, muss nur die FinishDTID wieder auf "0" gesetzt werden.

06.10.1999	(4.01.31/115) Der Befehl OFCK_BUCHUNG_EINFUEGEN wird ab jetzt über die OFCK50.DLL mittels der Routine OFCK_BuchungenEinfuegenDirekt ausgeführt, da beim Verwenden der Funktion OFCK_BuchungenEinfuegen ein Fehler mit den Kostenstellen aufgetreten ist. 

06.10.1999	(4.01.30/114) Der QUERY_HOOK_REC_CHANGE wird ab jetzt auch angesteuert wenn in einem BROWSER/GRID nur ein Datensatz ist und dieser markiert wird.

28.09.1999	(4.01.28/113) In der ODE wurden Datensätze mit Feldern, die genau 255 Zeichen lang waren fehlerhaft eingelesen - das Problem wurde beseitigt.

23.09.1999	(4.01.27/112) Beim QUERY_REFRESH eines GRID-Querys wurden die Spaltenüberschriften nicht korrekt gesetzt. Dieser Fehler ist behoben.

15.09.1999	(4.01.26/111) Wenn in der Tabelle TableFld die Felder UseDefID (boolean) und DefinedID (numeric) enthalten sind, werden für die dort hinterlegten Werte beim Programmstart eingelesen und beim Speichern von Datensätzen dazu verwendet, um die Tabellenbeschreibung schneller zu bekommen. Der hiermit erreichbare Geschwindiglkeitsvorteil ist erheblich! Im Programm IDEAL kann man z.B. die TableFld-Tabelle neu anlegen um bei den gängigen Tabellen diesen Vorteil sofort anzuwenden. Um diesen Vorteil nutzen zu können, muß man in der Applikation-INI-Datei den Schlüssel "ReadTableNameAndDefID" in der Sektion [SQL] auf 1 setzen.

15.09.1999	(4.01.25/110) Alle QUERY_LIST_XXXXXXX Befehle lassen sich jetzt mit Querys und mit Browsern verwenden.

14.09.1999	(4.01.24/109) Das Login-Fenster kann jetzt in seiner Größe verändert werden und CARA speichert die Einstellung in die Stations-INI-Datei im PrintSet-Verzeichnis, so daß die Einstellung erhalten bleibt.

09.09.1999	(4.01.23/108) In der Application-INI-Datei befinden sich vier neue Schlüssel, die mit vier neuen globalen Variablen korrespondieren und die Anzahl der Nachkommastellenbei Zahlen regeln : 
FloatDigitsShort=	Für Zahlen mit wenigen Nachkommastellen.
FloatDigitsNormal=	Für Zahlen mit normal vielen Nachkommastellen.
FloatDigitsLong=	Für Zahlen mit vielen Nachkommastellen.
FloatDigitsExtend=	Für Zahlen mit sehr vielen Nachkommastellen.
Die korrespondierenden Variablen heißen : [FLOAT_DIGITD_SHORT], [FLOAT_DIGITD_NORMAL], [FLOAT_DIGITD_LONG] und [FLOAT_DIGITD_EXTEND].

Bei der Definition von Querys, können diese Varaiblen in der Masken-Anweisung der CSH-Sysntax verwendet werden. Z.B: :
SELECT [M "[FLOAT_DIGITS_LONG]"]BelegPreis FROM Posten

Die Variablen können ebenfalls in der Feld-Maske der Maskendefinitionen eingesetzt werden, hierbei ist auf Großschreibung zu achten. Z.B. :
ITEM 5000022, 'EXTENDED', 15.00, 4.00, 11.00, 1.00, 'PROTECTED'
VIEW          '0.0', '#########.[FLOAT_DIGITS_LONG]', 'BelegPreis', 5000220
HINT          'Preis, ggf. nach Abzug des Rabattes'

08.09.1999	(4.01.22/107) In den Feldoptionen eines Masken-Items kann man nun auch folgendes angeben : FONTSIZE2.2, wobei FONTSIZE das Schlüsselwort ist und z.B. "2.2" ein Multiplikator für die normale Schrifthöhe ist. In diesem Falle würde die Schrift also mit 2.2facher Größe gegenüber der normalen Masken-Schrift ausgegeben.

08.09.1999	(4.01.21/106) CARA.EXE kann jetzt auf NT-Clients verwendet werden, auch wenn man auf dem Client selbst keine Administrator-Rechte hat. Für die Installation ist dies jedoch nicht der Fall, dazu muß man weiterhin Administrator-Rechte haben, denn es werden Registry-Einträge getätigt.

01.09.1999	(4.01.20/105) Folgende Befehle wurden für die Syska-Fibu-DLL (OFCK50.DLL) neu hinzugefügt : OFCK_INIT_HOLE_BUBE, OFCK_HOLE_BUBE, OFCK_HOLE_SALDO und OFCK_HOLE_FREIE_KONTO_NUMMER. Die Beschreibung ist in der Datei "Syska.htm" zu finden. Mit diesen Befehlen sind ebenfalls einige neue globale Syska-Variablen verfügbar geworden : [OFCK_Bube.XXXXXXX]

19.08.1999	(4.01.19/104) Mit CALC [AStr] AS HEX(num) kann man eden Wert num (VAR_NUM oder absolut) in Hex-Format ausgeben.

19.08.1999	(4.01.18/103) Mit CALC [AStr] AS OCT(num) kann man eden Wert num (VAR_NUM oder absolut) in Octal-Format ausgeben.

19.08.1999	(4.01.17/102) Mit CALC [AStr] AS BIN(num) kann man jeden Wert num (VAR_NUM oder absolut) in Binär-Format ausgeben.

16.08.1999	(4.01.16/101) Im ASCII-Import-Tool ist die Check-Box für die Umlautkonvertierung von OEM (DOS) nach ANSI (Windows) nicht mehr automatisch angeklickt, denn häufig liegen die ASCII-Import-Dateien schon in ANSI-Format vor -  da diese Dateien meist selbst von von einer Windows-Software erstellt wurden.

30.07.1999	(4.01.15/100) Die Stations-INI-Datei der Application (z.B. Ideal.INI) befand sich pro Station bisher immer im Windows-Verzeichnis. Auf verschiedenen NT-Rechnern, auf denen User kein Schreibrecht für das Windwos-Verzeichnis besitzen/besaßen, wurde dadurch zum Programmstart eine allgemeine Schutzverletzung ausgelöst. Deshalb werden ab jetzt die Stations-Ini-Dateien im PrintSet-Verzeichnis der Applikation abgelegt Der Dateiname ist ab jetzt auch nicht mehr "ApplikationsName.ini" sondern "StationsKürzel.ini". Wenn das Verzeichnis nicht vorhanden ist, wird es angelegt.

17.07.1999	(4.01.14/99) Der Befehl WAIT_CURSOR funktioniert wieder so, wie es in der Delphi2-Version von CARA üblich war. Darüber hinaus wird der WAIT_CURSOR ab jetzt automatisch immer dann ein geschaltet, wenn ein Masken-Hook angesteuert wird und danach wieder abgeschaltet - dadurch kann man fast alle WAIT_CURSOR-Befehle aus den Scripten entfernen.

17.07.1999	(4.01.13/98) Wenn ein QUERY_REFRESH auf eine Variable vom Typ VAR_QUERY oder VAR_BROWSER angewendet wurde, wurden die Feldvariablen erst nach einem weitern GET_DATA Befehl auf den neuesten Stand gebracht. - Dieser Fehler ist behoben.

17.07.1999	(4.01.12/97) Wenn eine Maske geöffnet wurde und sich darin ein Register befand, konnte erst nach dem ersten Wechsel des Register-Tabs auf die Variablen [Mask!MASK_ACT_REG_ID] und [Mask!MASK_ACT_REG_TAB] zugegriffen werden. - Dieser Fehler ist behoben.

17.07.1999	(4.01.11/96) Der Befehl MASK_UPDATE arbeitet seit heute sehr viel schneller, da die Dialog-Elemente gegenüber den Masken-Feld-Variablen indiziert wurden. Bei größeren Masken mit z.B. 200 Feldern kann dies ca. 40 mal schneller sein.

17.07.1999	(4.01.10/95) Der Befehl QUERY_REFRESH hat einen neuen optionalen Parameter. QUERY_REFRESH [query oder browser oder maske]{, boolReload {, 'strStartingWithClause'}} Wenn ein Query oder Browser oder auch Maske (d.h. deren Query) erneuert werden soll, weil z.B. im Hintergrund Daten eingefügt oder gelöscht wurden, so können diese Änderungen hiermit im Query auf den neuesten Stand gebracht werden. Der Datencursor steht nach dieser Aktion wieder auf dem ersten Datensatz außer, wenn eine Maske übergeben wurde, die einen offen View hat, dann steht der Datencursor auf dem zuletzt aktiven Datensatz. Falls boolReload TRUE wurde, wird das zugehörige Query anhand der zur Maske gehörenden QueryID bzw. ViewID erneut geladen und dann ausgeführt. So kann man z.B. während eine Maske offen ist das im View sichtbare Query wechseln. Mit dem neuen optionalen Parameter 'strStartingWithClause' kann man nach dem Refresh einen Sprung zu einem bestimmten Datensatz fordern. Z.B. : 'STARTING WITH P.RecordID = 7464645342561'

16.07.1999	(4.01.09/94) Der Befehl NEW_RECORD erhält zwei weitere optionale Parameter : NEW_RECORD [boolRes],'tablename',[recordid] {{, boolUseDefRec}, boolUseID}. Wie bisher legt dieser Befehl in der Tabelle 'tablename' einen Datensatz mit einer neuen RecordId an und gibt die neu erzeugte Datensatz-Id in [recordid] zurück. Der Erfolg der Operation kann in [boolRes] abgelesen werden. Es werden max. 10 Versuche gemacht in die Tabelle 'tablename' zu speichern. Wenn der neue optionale Parameter boolUseDefRec den Wert TRUE hat, geht das Anlegen eines Records sehr viel schneller - wenn sich in der Tabelle 'tablename' ein Datensatz befindet, dessen RecordID = 0 oder 1 ist. (Der Wert 0 oder 1 oder wie auch immer wird in der Tabelle TableFld festgelegt ! s.o.) Wenn der neue optionale Parameter boolUseID den Wert TRUE hat, wird versucht mit der RecordID zu speichern, die in [recordid] übergeben wurde - es wird vom System dann nur mit dieser RecordID und nur ein einziges Mal versucht zu speichern!

16.07.1999	(4.01.08/93) Neuer Masken-Hook: [Mask!MASK_HOOK_PRE_SEARCH] vor jedem Suchvorgang (auch bei Spinner-Betätigung).

16.07.1999	(4.01.07/92) Der [Mask!MASK_HOOK_ABSOLUTE] existiert ab heute nicht mehr. Er wurde bisher nie verwendet und mußte bei jedem Hook-Aufruf einer Maske berücksichtigt werden. Der Performance-Gewinn stand bei dieser Entscheidung im Vordergrund..

12.07.1999	(4.01.06/91) Neuer Masken-Hook: [Mask!MASK_HOOK_GRID_EXIT] Wenn ein GRID den Fokus verliert.

12.07.1999	(4.01.05/90) Neuer Befehl (ähnelt in der Funktionsweise sehr dem Befehl TREE_SET, benötigt aber kein Masken-Dialogelement) : LIST_BUILD [ResList],[QueryList]
Hierbei werden in der VAR_LIST [ResList] alle Datensätze mittels der VAR_LIST [QueryList] gesammelt. 
[QueryList] muß eine Liste von Query-ID's (Dateinamen) enthalten, die zum Aufbau der Datenliste notwendig sind. Begonnen wird mit dem ersten Query in der Liste. Für diese speziellen Querys wird eine spezielle CSH-Syntax genutzt: Wenn in eckigen Klammern [] vor einem Feldnamen der Kenner "K" für Knoten (oder "X" für NICHT Knoten) und eine entsprechende Bedingung gesetzt wird, erkennt die CARA-Engine, daß die Datenliste hier einen in die Tiefe verweisenden Knoten enthält. In diesem Fall wird in der [QueryList] nach dem nächsten Query gesucht (falls kein weiteres Query angegeben wird, wird stets das letzte in der Hirarchie mögliche Query verwendet). Außerdem kann man innerhalb des entstehenden Query-Stacks (je nachdem wie tief der Baum verzweigt) auf das jeweils vorhergehende mittels des reservierten Wortes [LIST_MOTHER_QUERY!feldname] zugreifen. 

Die Zeilen der Liste bauen sich folgendermaßen auf:
1. Hierarchie-Ebene + Semikolon
2. RecFlag des Datensatzes + Semikolon
3. RecordID des Datensatzes + Semikolon
4. Tabellen-Name des Datensatzes + Semikolon
5. Beschreibung der Datenzeile

Die Beschreibung setzt sich aus den Feldinhalten der ersten Felder zusammen, die im Query angefragt werden. Ab einschließlich dem ersten versteckten Feld (CSH-Syntax HIDDEN [H]) wird kein weiterer Feldinhalt mehr angezeigt. Wichtig : Es ist sinnvoll Querys mit sehr wenigen Feldern zu verwenden, da die Liste dann sehr viel schneller aufgebaut wird.
Zu jeder Zeile wird auf diese Weise die RecordID, RecFLag, TableName und die Hirarchie gehalten - damit dies möglich ist, sollte die RecordID und die RecFlag in der Feldliste von jedem List-Query aufgeführt werden!

Hier ein Beispiel für LIST_BUILD:

PROCEDURE SetUpList
  WAIT_CURSOR TRUE

  LIST_APPEND [ListQuerys], '2421Lst1'
  LIST_APPEND [ListQuerys], '2421Lst2'

  LIST_BUILD [ResList], [ListQuerys]

  WAIT_CURSOR FALSE
END_PROC

Und hier die zwei Querys aus diesem Beispiel:

Beispiel für das Query 2421Lst1:

Stücklisten-MainList

SELECT A.Artikelnummer, A.Bezeichnung1, S.StckListenName, 
       [H KA="1"]A.StckFlag,
       S.RecordID, S.RecFlag, S.ArtikelID, A.RecordID
  FROM STCKLIST S, ARTIKEL A 
 WHERE (S.ArtikelID = A.RecordID) 
   AND (S.ArtikelID > 0)

Beispiel für das Query 2421Lst1:

Stücklisten-Positionen (SubList n)

  SELECT S.PosNr, A.Artikelnummer, S.Stckzahl, 
         A.Bezeichnung1, A.Zeichnungsnummer, 
         [H KA="1"]A.StckFlag, 
         S.RecordID, S.RecFlag, A.RecordID 
    FROM STCKPOS S, ARTIKEL A, StckList L 
   WHERE (S.ArtikelID  = A.RecordID) 
     AND (S.ArtikelID  > 10) 
     AND (S.StckListID = L.RecordID)
     AND (L.ArtikelID  = [LIST_MOTHER_QUERY!A.RecordID])
ORDER BY S.StckListID, S.PosNr

Die CSH-Syntax für Knoten kann an mehreren Feldern "und" und "oder" verknüpft werden: "K" für Knoten "A" für "AND", dann folgt der Vergleichsoperator "=" oder  ">" oder ">=" oder "<=" oder "" oder "<" oder "<>" oder ">>" (like) oder "<<" (not like), dann folgt der Vergleichswert, der immer in Hochkommata geschachtelt werden muss. 

06.07.1999	(4.01.04/89) Wenn der Entwickler-Modus im Werkzeugkasten einschaltet ist, stehen im Monitor-Fenster ebenfalls der SQL-Monitor-Schalter und der Script-Monitor-Schalter zur Verfügung.

06.07.1999	(4.01.03/88) Wenn der Entwickler-Modus im Werkzeugkasten einschaltet ist, stehen im freien SQL-Interface ebenfalls der SQL-Monitor-Schalter und der Script-Monitor-Schalter zur Verfügung.

01.07.1999	(4.01.02/87) Neuer Masken-Hook : [Mask!MASK_HOOK_CATCH] dieser Hook wird nur angesteuert, wenn eine der neuen Masken-Variablen [Mask!MASK_CATCH_DEF1] oder [Mask!MASK_CATCH_DEF2] sinnvolle Werte enthalten. Diese neuen Variablen  müssen mit einer speziellen Syntax gefüllt werden. Beispiel: 
CALC [Mask!MASK_CATCH_DEF1] AS '51@2@Scanner@Eingabe@XXXXXXXXXXXXXXXXXXXXXXXXX' 
Dabei ist der erste Wert ein Key-Code (z.B. "51" = §) und der zweite ein Key-State (z.B. "2" = SHIFT). Wenn die Taste mit dem Key-Code gedrückt wird und der entsprechende Key-State vorliegt (ALT, SHIFT, CTRL oder keiner), dann öffnet sich ein String-Eingabefenster dessen Head der dritte Parameter ist (z.B. "Scanner") und dessen Prompt der vierte Parameter ist (z.B. "Eingabe"). Die Eingabemaske ist der fünfte Parameter (z.B. "XXXXXXXXXXXXXXXXXXXXX"). In diesem Eingabefenster werden alle weiteren Eingaben gesammelt bis ENTER eingegeben wird. Anschließend stehen die Eingaben in [Mask!MASK_CATCH_VAL1] oder [Mask!MASK_CATCH_VAL2] zur Verfügung. Wenn [Mask!MASK_HOOK_CATCH] auf eine PROCEDURE verweist, wird diese dann angesteuert. Innerhalb des Hooks ist immer nur entweder [Mask!MASK_CATCH_VAL1] oder [Mask!MASK_CATCH_VAL2] mit Werten gefüllt, dadurch kann man unterscheiden von welcher ...CATCH_DEF... die Eingabe stammt.
Diese Technik dient dazu Barcode-Scanner-Eingaben oder Kartenleser-Eingaben abzufangen, egal in welchem Dialogelement der User gerade steht.

01.07.1999	(4.01.01/86) Neuer (erster) Query-Hook : [Query!QUERY_HOOK_REC_CHANGE] dieser Hook wird nur bei Querys angesteuert, die an ein GRID gebunden sind oder bei BROWSERN. Der Hook wird immer dann angesteuert, wenn im GRID oder BROWSER der Datensatz gewechselt wird.

01.07.1999	(4.01.00/85) Neues Dialog-Element GRID für Masken. Ein GRID ist ein Datenbrowser, der innerhalb einer Maske gezeigt werden kann (ähnlich wie ein TREE). Mit einem einzigen Befehl kann das Datengrid initialisiert werden. Es kann während der Laufzeit ständig aktualisiert werden und auch in der Größe und Lage verändert werden. Zusätzlich stehen für das GRID sechs neue Hooks zur Verfügung, um auf alle Ereignisse reagieren zu können, die durch das GRID ausgelöst werden können.

Dieses Dialogelement wurde im IDEAL-Programm erstmalig in der Datei KndStExt.CSH im Zusammenhang mit der Mask 117.DOC eingesetzt. Diese Dateien zeigen die Möglichkeiten, die das GRID bietet.

Eine typische Deklaration sieht folgendermaßen aus:
ITEM 2421001, 'GRID', 1.00, 1.00, 50.00, 28.00, ''
VIEW          '', 'X', '', 0
Hierbei wird im Wesentlichen nur der Bereich definiert, den das Daten-Grid später anzeigt. Das Daten-Grid wird dann z.B. von einem FormShow-Hook gefüllt. Dazu steht ein neuer Befehl zur Verfügung:

GRID_SET [Mask], 'GridFieldID', [Query], [Res], Options {, x,y,w,h}
Hierbei wird in der [Mask] das GRID 'GridFieldID' mittels der VAR_QUERY [Query] aufgebaut. In der VAR_BOOL [Res] wird zurückgegeben, ob die Operation erfolgreich verlaufen ist. Die VAR_NUM Options geben an, was der User alles mit dem GRID machen kann. Hierbei gelten alle Optionen, die auch für den Datentyp VAR_BROWSER gelten (suche nach "BROWSER_FLAG_".in der CARA-Dokumentation). Mit den Werten x,y,w,h können die Koordinaten verändert werden.

Bevor der Befehl GRID_SET ausgeführt wird, muß das übergebene [Query] gesetzt werden und der Befehl EXECUTE muß ausgeführt werden. Beispiel:

VAR_MASK  KreditorMask,'Kreditor'
VAR_QUERY Q
VAR_BOOL  QRes
VAR_NUM   GridOption 

; Alle Optionen einschalten...
CALC [GridOption] AS [BROWSER_FLAG_ICON_DOC_MGR]
CALC [GridOption] AS [GridOption]+[BROWSER_FLAG_ICON_OK]
CALC [GridOption] AS [GridOption]+[BROWSER_FLAG_ICON_DELETE]
CALC [GridOption] AS [GridOption]+[BROWSER_FLAG_SELECT_ALLOWED]
CALC [GridOption] AS [GridOption]+[BROWSER_FLAG_ICON_NOTES]
CALC [GridOption] AS [GridOption]+[BROWSER_FLAG_ICON_LIST_GEN]
CALC [GridOption] AS [GridOption]+[BROWSER_FLAG_ICON_SEARCH]
CALC [GridOption] AS [GridOption]+[BROWSER_FLAG_ICON_HELP]
CALC [GridOption] AS [GridOption]+[BROWSER_FLAG_ICON_USER]
CALC [GridOption] AS [GridOption]+[BROWSER_FLAG_SHOW_DEMAND_NOTE]
CALC [GridOption] AS [GridOption]+[BROWSER_FLAG_ICON_INSERT]

; Ein editierbares Query geht auch:
QUERY [Q]
  SELECT [W15 C2A>>"*es*"  N"Nachname"]Name1,
         [W15 E "XXXXXXXXXXXXXXXXXXXXXXX"]Name2,
         [H]Kreditorennummer,
         RecFlag, IDUser, LevelUser, UpdateTime, 
         UpdateID, Mandant, EventFlag, RecordID
    FROM Kreditoren
END_QUERY
EXECUTE [Q],[QRes]
IF [QRes]
  GRID_SET [KreditorMask], '1000888', [Q], [QRes], [GridOption]
END_IF

Folgende Hooks stehen zur Verfügung:

[Mask!MASK_HOOK_GRID_POST_EDIT]	Wenn das GRID editierbar ist und ein Feld geändert wurde. Innerhalb dieses Hooks stehen folgende Variablen zur Verfügung:           [Mask!MASK_GRID_EDIT_VALUE]           [Mask!MASK_GRID_EDIT_FIELD] [Mask!MASK_GRID_EDIT_REC_ID]

[Mask!MASK_HOOK_GRID_OK]		Wenn im GRID ein Datensatz gewählt wurde.
[Mask!MASK_HOOK_GRID_DELETE]		Wenn im GRID ein Datensatz gelöscht werden soll.
[Mask!MASK_HOOK_GRID_USER]		Wenn im GRID eine User-Aktion ausgelöst werden soll.
[Mask!MASK_HOOK_GRID_INSERT]		Wenn dem GRID ein Datensatz hinzu gefügt werden soll.

Innerhalb dieser Hooks stehen zwei neue Masken-Variablen zur Verfügung : [Mask!MASK_ACT_GRID_ID] die ID des aktuellen GRIDs und der [Mask!MASK_ACT_GRID_NAME] der Name des aktuellen GRIDs.

Um ein GRID mit anderen Daten auszustatten, ist es lediglich notwendig ein QUERY_REFRESH auf das an das GRID gebundene Query anzuwenden oder nach einer erneuten Definition des Querys eine EXECUTE durchzuführen.

30.06.1999	(4.00.07/84) Neue Masken-Variable[mask!MASK_HOT_KEY_LIST]
Wenn in einer Maske der [mask!MASK_HOOK_KEY] angemeldet wurde, kann unter Umständen die Tastatureingabe etwas zu langsam werden, da dieser Hook bei jedem Tastendruck angesteuert wird. Will man aber, das dies nur bei ganz bestimmten Tasten geschieht, füllt man die neue Variable, die vom Typ VAR_STR ist, auf folgende Weise:
KeyValue1@KeyState1|KeyValue2@KeyState2|...|KeyValueN|KeyStateN
Beispiel: CALC [mask!MASK_HOT_KEY_LIST] AS '107@1|13@1' 
Dadurch wird der Tastatur-Hook nur angesteuert, wenn die Taste 107 (NUM+) gedrückt wurde - ohne daß gleichzeitig ALT, SHIFT oder STRG gedrückt wurde und wenn die Taste 13 (ENTER) gedrückt wurde.
Um die Tasten-Codes zu erhalten, kann man im Werkzeugkasten den Punkt "Key-Code anzeigen" ausführen.

26.06.1999	(4.00.06/83) Neuer Befehl : FIELD_FLAG_ON_OFF [mask],'field','optOn','optOff'
Liest die Flagge des Feldes 'field' in der [mask] und setzt dann die Optionen im String 'optOn' und schaltet die Optionen im String 'optOff' aus. Die Optionen-String können sich aus mehreren Optionen zusammensetzten. Dieser Befehl ist sehr viel schneller, als die Kombination der Befehle FIELD_FLAG_GET, FLAG_SET, FIELD_FLAG_SET. Beispiel:
FIELD_FLAG_ON_OFF [Msk],'Fld','[FIELD_FLAG_BLOCKED]+[FIELD_FLAG_PROTECTED]',''

26.06.1999	(4.00.05/82) Zwei neue Masken-Variablen stehen zur Verfügung : MASK_ACT_REG_ID die ID des aktuellen Registers und der MASK_ACT_REG_TAB der Name des aktuellen Tabs.

15.06.1999	(4.00.04/81) Das Initialisieren von VAR_DATE und VAR_TIME Variablen beim Anmelden kann nun sowohl mit, als auch ohne einfache Hochkommata geschehen. Es ist also nun möglich VAR_DATE TestDate, 01.01.1999 oder VAR_DATE TestDate, '01.01.1999' anzugeben. Beispiel für Time : VAR_TIME TestTime, 00:12:00 oder VAR_TIME TestTime, '00:12:00'

11.06.1999	(4.00.03/80) Neuer Befehl TREE_DELETE [Mask],'TreeFieldID',[Result],[ItemID]
Löscht eine Zeile und alle deren Kinden (wenn vorhanden) aus dem Baum. VAR_NUM [ItemID] muß die ID eines Items des Baumes enthalten. Wenn die Operation erfolgreich war, wird in der VAR_BOOL [Result] TRUE zurückgegeben.

11.06.1999	(4.00.02/79) Neuer Befehl TREE_MODIFY [Mask],'TreeFieldID',[Result],[ItemID],'Text',RecordID,'TableName',RecFlag
Ändert eine Zeile im Baum. 'Text' ist der im Baum angezeigte Text. RecordID, 'TableName' und RecFlag sollten so gewählt werden, daß der Programmierer in den Hooks ..._TREE und ..._TREE_CHANGE die angefügten Zeilen unterscheiden kann. VAR_NUM [ItemID] muß die ID eines Items des Baumes enthalten. Wenn die Operation erfolgreich war, wird in der VAR_BOOL [Result] TRUE zurückgegeben.

11.06.1999	(4.00.01/78) Neuer Befehl TREE_ADD [Mask],'TreeFieldID',[Result],[ItemID],'Text',RecordID,'TableName',RecFlag
Fügt eine neue Zeile in den Baum ein. 'Text' ist der im Baum angezeigte Text. RecordID, 'TableName' und RecFlag sollten so gewählt werden, daß der Programmierer in den Hooks ..._TREE und ..._TREE_CHANGE die angefügten Zeilen unterscheiden kann. Wenn ItemID einen Wert der größer oder gleich Null ist, so wird das neue Item des Baumes ein "Kind" der angegeben ID. Wenn die Operation erfolgreich war (VAR_BOOL [Result] = TRUE) wird die ID des neuen Baum-Items in VAR_NUM [ItemID] zurückgegeben.

10.06.1999	(4.00.00/77) Die CARA-Engine ist ab heute in Delphi4 C/S programmiert. Die Vorgängerversion war Delphi2 Professional. Eine deutlich bessere Verarbeitungszeit der Masken ist ein erstes Merkmal. In Kürze folgen die ersten SQL-Server-Versionen.

03.06.1999	(3.21.03/76) Neuer Befehl QUERY_COUNT [QB], [NumRes] gibt die Anzahl der Records in der VAR_NUM [NumRes] zurück, die im Query oder Browser [QB] verfügbar sind. Dieser Befehl kann nach dem EXECUTE ausgeführt werden, noch bevor ein GET_DATA erfolgt.

03.06.1999	(3.21.02/75) Der Fehler, daß eine im MainScript vorinitialisierte Maske beim Auslösen der Suche zu einem Ausnahme-Fehler führte, insofern das MaskenQuery eine CSH-Syntax enthielt, ist besetigt.

02.06.1999	(3.21.01/74) Alle Masken-ICONS (wie z.B. Speichern, Suchen etc.) werden, während eine dieser Aktionen ausgelöst wurde, gesperrt, bis daß alle Hintergrundarbeiten erledigt wurden. Auf diese Weise können Fehler vom User vermieden werden.

27.05.1999	(3.21.00/73) Neues Dialog-Element TREE für Masken. 

Für dieses Dialogelement steht ein Beispiel mit allen Möglichkeiten zur Verfügung : Tree.EXE (Dieses selbstauspackende Archiv enthält ein Beispiel für IDEAL, in dem man alle Stücklisten in einem Baum sehen kann. Es besteht aus den Dateien 2421.msk, 2421Tre1.sql, 2421Tre2.sql und STLTree.csh). 

Eine typische Deklaration sieht folgendermaßen aus:
ITEM 2421001, 'TREE', 1.00, 1.00, 50.00, 28.00, ''
VIEW          '', 'X', '', 0
Hierbei wird im Wesentlichen nur der Bereich definiert, den der Daten-Baum später anzeigt. Der Daten-Baum wird dann z.B. von einem FormShow-Hook gefüllt. Dazu steht ein neuer Befehl zur Verfügung:
TREE_SET [mask],[QueryList],'TreeFieldID'{,x,y,w,h}
Hierbei wird in der [Mask] der Baum 'TreeFieldID' mittels der VAR_LIST [QueryList] aufgebaut. 
[QueryList] muß eine Liste von Query-ID's (Dateinamen) enthalten, die zum Aufbau des Baumes notwendig sind. Begonnen wird mit dem ersten Query in der Liste. Für diese speziellen Querys wurde eine neue CSH-Syntax entwickelt: Wenn in eckigen Klammern [] vor einem Feldnamen der Kenner "K" für Knoten (oder "X" für NICHT Knoten) und eine entsprechende Bedingung gesetzt wird, erkennt die CARA-Engine, daß der Baum hier einen in die Tiefe verweisenden Knoten enthält. In diesem Fall wird in der [QueryList] nach dem nächsten Query gesucht (falls kein weiteres Query angegeben wird, wird stets das letzte in der Hirarchie mögliche Query verwendet). Außerdem kann man innerhalb des entstehenden Query-Stacks (je nachdem wie tief der Baum verzweigt) auf das jeweils vorhergehende mittels des reservierten Wortes [TREE_MOTHER_QUERY!feldname] zugreifen. 

Die Zeilen, die im Baum angezeigt werden, setzen sich aus den Feldinhalten der ersten Felder zusammen, die im Query angefragt werden. Ab einschließlich dem ersten versteckten Feld (CSH-Syntax HIDDEN [H]) wird kein weiterer Feldinhalt mehr angezeigt. Wichtig : Es ist sinnvoll Querys mit sehr wenigen Feldern zu verwenden, da der Baum dann sehr viel schneller aufgebaut wird.
Zu jeder Zeile wird in Hintergrund die RecordID, RecFLag, TableName und die Hirarchie gehalten - damit dies möglich ist, sollte die RecordID und die RecFlag in der Feldliste von jedem Tree-Query aufgeführt werden!. Diese können mit dem Befehl TREE_ITEM abgerufen werden.

Hier ein Beispiel für TREE_SET:

PROCEDURE SetUpTree
  WAIT_CURSOR TRUE

  LIST_APPEND [TreeQuerys], '2421Tre1'
  LIST_APPEND [TreeQuerys], '2421Tre2'

  TREE_SET [WorkMask], [TreeQuerys], '2421001', 1, 1, 50, 28

  WAIT_CURSOR FALSE
END_PROC

Und hier die zwei Querys aus diesem Beispiel:

Beispiel für das Query 2421Tre1:

Stücklisten-MainTree

SELECT A.Artikelnummer, A.Bezeichnung1, S.StckListenName, 
       [H KA="1"]A.StckFlag,
       S.RecordID, S.RecFlag, S.ArtikelID, A.RecordID
  FROM STCKLIST S, ARTIKEL A 
 WHERE (S.ArtikelID = A.RecordID) 
   AND (S.ArtikelID > 0)

Beispiel für das Query 2421Tre1:

Stücklisten-Positionen (SubTree n)

  SELECT S.PosNr, A.Artikelnummer, S.Stckzahl, 
         A.Bezeichnung1, A.Zeichnungsnummer, 
         [H KA="1"]A.StckFlag, 
         S.RecordID, S.RecFlag, A.RecordID 
    FROM STCKPOS S, ARTIKEL A, StckList L 
   WHERE (S.ArtikelID  = A.RecordID) 
     AND (S.ArtikelID  > 10) 
     AND (S.StckListID = L.RecordID)
     AND (L.ArtikelID  = [TREE_MOTHER_QUERY!A.RecordID])
ORDER BY S.StckListID, S.PosNr

Die CSH-Syntax für Knoten kann an mehreren Feldern "und" und "oder" verknüpft werden: "K" für Knoten "A" für "AND", dann folgt der Vergleichsoperator "=" oder  ">" oder ">=" oder "<=" oder "" oder "<" oder "<>" oder ">>" (like) oder "<<" (not like), dann folgt der Vergleichswert, der immer in Hochkommata geschachtelt werden muss. 

Mit dem Ereignis [Mask!MASK_HOOK_TREE] kann man auf einen Doppelklick auf eine Baumzeile reagieren. In der [Mask!MASK_FIELDID] steht dann die Feld-ID der Baumes und in [Mask!MASK_ACT_FIELD_NAME] steht die ID der Baumzeile.

Mit dem Ereignis [Mask!MASK_HOOK_TREE_CHANGE] kann man auf einen Wechseln des Benutzers von einer Baumzeile auf eine andere reagieren. In der [Mask!MASK_ACT_FIELD_ID] steht dann die Feld-ID der Baumes und in [Mask!MASK_ACT_FIELD_NAME] steht die ID der Baumzeile.

Mit dem Befehl TREE_ITEM kann man dann innerhalb des Baumes navigieren und auf die Zeilendaten zugreifen:

TREE_ITEM [Mask], 'TreeFieldID', ActionID, [Result], [ItemID], {[RecordID] {, [TableName] {, [RecFlag] {, [Hirarchie]}}}}

Führt eine (oder mehrere) Action in dem Baum 'TreeFieldID' der [Maske] aus. Wenn die geforderte Action erfolgreich abgewickelt werden konnte, wird das Ergebnis in der VAR_BOOL [Result] abgelegt. Je nach Action wird aus der VAR_NUM eine Zeilen-ID des Baumes ausgelesen bzw. eine gewünschte Zeilen-ID zurückgegeben. Ebenfalls in Abhängigkeit der ActionID weden auf Wunsch die hinter dem Zeileneintrag gehaltenen Daten in der VAR_FLOAT [RecordID], der VAR_NUM [RecFlag], dem VAR_STR [TableName] und der VAR_NUM [Hirarchie] zurückgegeben. Folgende Werte kann ActionID annehmen:

TREE_ITEM_GET_FIRST		Gibt die ID der ersten Baumzeile zurück.
TREE_ITEM_GET_LAST		Gibt die ID der letzten Baumzeile zurück.
TREE_ITEM_GET_PREV	Gibt die ID der nächsten Baumzeile zurück. Wenn diese Zeile in der Hirarchie tiefer liegt, wird trotzdem dahin verzweigt.
TREE_ITEM_GET_NEXT	Gibt die ID der vorherigen Baumzeile zurück. Wenn diese Zeile in der Hirarchie tiefer liegt, wird trotzdem dahin verzweigt.
TREE_ITEM_GET_FIRST_CHILD	Gibt die ID des ersten "Kindes" der aktuellen Baumzeile zurück. Wenn die aktuelle Zeile keine "Kinder" hat, geschieht nichts.
TREE_ITEM_GET_LAST_CHILD	Gibt die ID des letzten "Kindes" der aktuellen Baumzeile zurück. Wenn die aktuelle Zeile keine "Kinder" hat, geschieht nichts.
TREE_ITEM_GET_PREV_CHILD	Gibt die ID des vorherigen "Kindes" der aktuellen Baumzeile zurück. Wenn die aktuelle Zeile keine "Kinder" hat, geschieht nichts.
TREE_ITEM_GET_NEXT_CHILD	Gibt die ID des nächsten "Kindes" der aktuellen Baumzeile zurück. Wenn die aktuelle Zeile keine "Kinder" hat, geschieht nichts.
TREE_ITEM_GET_PREV_SIBLING	Gibt die ID der Baumzeile zurück, die in der Hirarchie gleichhoch angesiedelt ist wie die aktuelle Baumzeile und vor der akruellen Baumzeile liegt.
TREE_ITEM_GET_NEXT_SIBLING	Gibt die ID der nächsten Baumzeile zurück, die in der Hirarchie gleichhoch angesiedelt ist wie die aktuelle Baumzeile.
TREE_ITEM_GET_PREV_VISIBLE	Gibt die ID der Baumzeile zurück, die vor der aktuellen Baumzeile liegt und sichtbar ist.
TREE_ITEM_GET_NEXT_VISIBLE	Gibt die ID der nächsten sichtbaren Baumzeile zurück.
TREE_ITEM_GET_PARENT	Gibt die ID der "Mutter" zurück. Wenn keine "Mutter" verfügbar ist, wird das Resultat FALSE zurück gegeben.
TREE_ITEM_GET_ACTUAL	Gibt die ID der aktuellen Baumzeile zurück.
TREE_ITEM_GET_DIRECT	Gibt Werte der übergebenen ID zurück. Wie z.B. RecordID und TableName etc.
TREE_ITEM_IS_VISIBLE	Gibt zurück, od die Baumzeile mit der übergebenen ID sichtbar ist oder nicht.
TREE_ITEM_EXPAND	Expandiert den aktuellen Konten und alle seine Kinder-Knoten und deren Kinder-Knoten etc.
TREE_ITEM_COLLAPSE	Kollabiert den aktuellen Konten und alle seine Kinder-Knoten und deren Kinder-Knoten etc.
TREE_ITEM_EXPAND_SINGLE	Expandiert den aktuellen Konten aber keines seiner Kinde-Knoten.
TREE_ITEM_COLLAPSE_SINGLE	Kollabiert den aktuellen Konten aber keines seiner Kinde-Knoten.
TREE_ITEM_EXPAND_ALL	Expandiert den gesamten Baum.
TREE_ITEM_COLLAPSE_ALL	Kollabiert den gesamten Baum.
TREE_ITEM_SET_ACTUAL	Setzt die aktuelle Baumzeile auf die die Zeile, zu der die übergebene ID passt.

26.05.1999	(3.20.52/72) In allen QUERY_LOAD - Anweisungen können nun Querys geladen werden, die Variablen der laufenden Anwendung bzw. des aktuellen Scriptes enthalten. Diese werden dann vor dem Ausführen des Querys ersetzt. Ausnahme : LOCAL_XXXX definierte Variablen können nicht verwendet werden.

25.05.1999	(3.20.51/71) NoteCounter beim Suchen wird jetzt immer initialisiert.

25.05.1999	(3.20.50/70) Neues Dialog-Element PICTURE für Masken. Eine typische Deklaration sieht folgendermaßen aus: 
ITEM 1000781, 'PICTURE', 2, 2, 20‚ 6, ''
VIEW          'DateiName', 'AutoSize oder Stretch oder leer', 'D.Pic1', 0
HINT          'Bitte geben Sie den Text 1 des aktuellen Datensatzes an'
Hierbei ist der intressante Teil in der Masken-Definition untergebracht. Es können die reservierten Worte 'AutoSize' oder 'Stretch' eingegeben werden. Bei AutoSize wird das Bild in Originalgröße dargestellt. Bei Stretch wird das Bild mit den Masken-Koordinaten dargestellt und bei Bedarf gestaucht oder auseinander gezogen. Wenn keine der Optionen verwendet wird, wird von dem Bild nur der Teil gezeigt, der durch die vorgegebenen Koordinaten möglich ist. Mit dem DateiNamen kann ein Bild direkt beim Öffnen der Maske angezeigt werden.

Folgender Befehl sind gleichzeitig erstellt worden: 
PICTURE_SET [mask],'fieldname','filename'{,x,y,w,h}
Läd das Bild 'filename' in das Picture 'fieldname' der Maske [mask]. Optional können auch noch die Koordinaten der Picture-Position gesetzt werden.

24.05.1999	(3.20.40/69) Neues Dialog-Element MEMO für Masken. Eine typische Deklaration sieht folgendermaßen aus: 
ITEM 1000777, 'MEMO, 2, 2, 20‚ 6, ''
VIEW          '', 'Kreditoren;RecordID;1', 'D.Text1', 0
HINT          'Bitte geben Sie den Text 1 des aktuellen Datensatzes an'
Hierbei ist der intressante Teil in der Masken-Definition untergebracht. Jeweils durch Semikolon getrennt müssen drei Parameter genau in nachstehender Reihenfolge auftauchen:
1. Parameter
Der Tabellen-Name mit dem die Notiz verbunden ist.

2. Parameter
Das Datenfeld in der aktuellen Maske, das die ID der relationelen Zuordnung zur Notiz darstellt - das reservierte Wort "RECORDID" steht dabei für den aktuell geladenen Datensatz.

3. Parameter
Die NoteID die beschreibt welche Notiz geladen werden soll. Hierbei sind alle Grund-Notiztypen (Text1=1, Text2=2, Intern=3 und Immer=4), alle freien Notiztypen aus der INI-Datei (100, 101, 102...) und Notizen mit einer ID >= 10000 verwendbar. Alle Notiztypen bis zur ID 10000 haben zur Folge, daß Änderungen im Notizmanager-Icon (durch ein Ausrufungszeichen) sichtbar werden. Bei Notizen mit ID's >= 10000 weisen keine sichbaren Hinweise auf deren Vorhandensein hin.

Will man beispielsweise den Artikel-Text1-Notiz in einer Maske anzeigen, in der z.B. Auftragspositionen gezeigt werden. So lautet die Tabelle der Maske (in der Definitionszeile) sicherlich "POSTEN" (oder ähnlich). In der Maske muß sich dann irgendwo (z.B. versteckt = HIDDEN) das Feld P.ArtikelID befinden. Die Feld-Definition des passenden Memo-Feldes lautet dann 'ARTIKEL;P.ArtikelID;1'.

Alle Memofelder können ebenfalls zum Suchen innerhalb einer Maske verwendet werden - jedoch unter Beachtung der folgenden zwei Einschränkungen:

1. Einschränkung
Das Suchkriterium muß in der ersten Zeile des Memos eingegeben werden

2. Einschränkung
Das Masken-Query muß mit Alias-Schreibweise aufgesetzt werden, auch wenn darin nur eine einzige Tabelle befragt wird.

Folgende Befehle sind gleichzeitig erstellt worden: 
MEMO_GET [mask],[list],'fieldname'
Läd den Text des Memo 'fieldname' aus der Maske [mask] in die VAR_LIST [list].

MEMO_SET [mask],[list],'fieldname' {,x,y,w,h}
Läd den Text der VAR_LIST [list] ind das Memo 'fieldname' der Maske [mask]. Optional können auch noch die Koordinaten der Memo-Position gesetzt werden.

MEMOS_READ [mask]
Aktualisiert den Inhalt aller in der Maske [mask] befindlichen Memos, indem deren Inhalt erneut aus der Datenbank gelesen wird.

MEMOS_WRITE [mask]
Schreibt den Inhalt aller in der Maske [mask] befindlichen Memos in die Datenbank (dies geschieht aber auch automatisch bei jedem vom User initiiertem Speichern).

19.05.1999	(3.20.31/68) Mit der neuen Konstante [PIXEL_2_PRINT_UNIT] kann man die Breite eines Notizfeldes umrechnen in die Breite bei der Druckausgabe. Z.B. Wenn die Notizbreite 300 Pixel ist, dann ist die Druckbreite in mm/10 300*[PIXEL_2_PRINT_UNIT] = 7950 mm/10 bzw. 7,95 cm.

14.05.1999	(3.20.30/67) Es gibt eine neue Option für Masken-Definitionen. Mit PRNMENU in der Definitionszeile der Maske kann ab jetzt das Drucker-PopUp-Menü unterbunden werden. Folgerichtig gibt es nun auch eine entsprechende Flaggen-Constante [MASK_FLAG_PRINT_MENU].

14.05.1999	(3.20.29/66) Die Tastaturbelegung des Druck-PopUp-Menüs wurde von [ALT P], [ALT V] und [ALT S] nach [Strg Q], [Strg W] und [Strg E] geändert, da die ALT-Tasten für das Hauptmenü reserviert bleiben sollen.

14.05.1999	(3.20.28/65) Der Fehler, daß man in einem Eingabefeld einen Suchfilter eingeben konnte und dieser beim Betätigen des Such-Icons mit der Maus unberücksichtigt blieb, ist behoben. Der Fehler trat nur dann auf, wenn man das Feld nicht verließ (z.B. Mit TAB) und die Suche auch nicht mit einer Taste aufgerufen hatte.

13.05.1999	(3.20.27/64) Zu den bereits bekannten Pfad-Variablen (wie z.B. [DATA_PATH]) existiert nun eine weitere Pfad-Variable [PRINTSET_PATH]. Dieser Pfad wird in der Neuinstallation mit erzeugt und dient zum Ablegen der Druckereinstellungen der jeweiligen Station zu jedem Druckjob. In den Masken-Definitions-Dateien kann mittels des Hot-Words PRINTSET_PATH auf diesen Pfad zurückgegriffen werden.

12.5.1999(3.20.26/63) Dokumentations-Nachtrag: Mit CALC [AString] AS ANSI2OEM([AString) kann ein ANSI (Windows) String in ein OEM (DOS) String umgewandelt werden.

12.5.1999(3.20.25/62) Dokumentations-Nachtrag: Mit CALC [AString] AS OEM2ANSI([AString) kann ein OEM (DOS) String in ein ANSI (Windows) String umgewandelt werden.

1.(3.20.24/61) Der Fehler, daß ein Choicer in der Maske auf einer GROUP_BOX nicht aufgerufen werden konnte, ist beseitigt.

12.5.1999(3.20.23/60) Auf dem Druck-Knopf der Masken befindet sich jetzt ein PopUp-Menü für die rechte Maus-Taste. Mit diesem Menü kann der Benutzer direktes Drucken, Vorschau oder direktes Drucken mit Setup wählen. Im Script existiert eine neue Masken-Varaiable [Maske!MASK_ACT_PRINT_MODE] die folgende Werte annehmen kann: [PRINT_OUT_DEFAULT] (der Benutzer hat die linke Maustaste gedrückt), [PRINT_OUT_DIRECT] (für direkten Druck), [PRINT_OUT_DIRECT_SETUP] (direkter Druck mit vorherigem Setup) oder [PRINT_OUT_PREVIEW] (Vorschau).

12.5.1999(3.20.22/59) Neuer Befehl : QUERY_LIST_CLEAR [browser]. Setzt die Selektions-Liste des [browser] zurück, d.h. daß nach dem Aufruf dieses Befehls keine Datensätze mehr selektiert sind.

12.5.1999(3.20.21/58) Neuer Befehl : QUERY_LIST_ADD [browser],float{,status}. Fügt zur Selektions-Liste einen weiteren Datensatz hinzu. Der Wert in float bestimmt die Datensatz-RecordID, der status kann ggf. gleichzeitig gesetzt werden.

10.5.1999(3.20.20/57) Neues Dialog-Element : "REGISTER" für Masken. Eine typische Deklaration sieht folgendermaßen aus: 
ITEM 1000001, 'REGISTER', 2, 2, 70, 13, ‚''  oder  'CLIENT'
VIEW          'TabReg1', 'TabReg&1;TabReg&2;TabReg&3;TabReg&4', 'D.Register', 0
HINT          'Bitte wählen Sie das Register'
Im ersten Teil des VIEW wird der Default-Tab-Name angegeben. Im zweiten Teil werden alle benötigten Tab's (mit Hotkey wenn gewünscht) durch Semikolon getrennt aufgelistet. Darauf folgt der Name des Dialog-Elements und ggf. die ID der "Mutter".
Um ein anderes Dialog-Element genau auf eine bestimmten Register-Tab zuzuordnen geht man folgendermaßen vor:
ITEM 1000101, 'String', 2, 2, 20, 1, ''
VIEW          '', 'XXXXXXXXXXXXXXXXXXXXXXXXXXX', 'Name1', 1000001, 'TabReg1'
D.h. nach der ID des "Mutter"-Dialog-Elements wird noch der Name des Register-Tabs angegeben.
Will man ein bestimmtes Register während der Laufzeit "protected", "actual" oder "hidden" setzten (oder wieder umgekehrt), so muß man den Namen des Registers, gefolgt von einem Pipe-Zeichen ("|"), gefolgt vom Namen des Tabs angeben. Z.B. :
PROCEDURE SetProtected VS FldName, VB How
  FIELD_FLAG_GET [AMask],[FldName],[FieldFlag]
  FLAG_SET [FieldFlag],[FIELD_FLAG_PROTECTED],[How]
  FIELD_FLAG_SET [AMask],[FldName],[FieldFlag]
END_PROC

...
; das ganze Register protecten...
CALL SetProtected 'REGISTER', TRUE
...

...
; ein Tab protecten...
CALL SetProtected 'REGISTER|TabReg1', TRUE
...

Wichtig: eine einzelnes Register-Tab kann nicht "hidden" gesetzt werden, es wird dann von der CARA-Engine automantisch "protected" gesetzt.
Zu jeder Maske gibt es ab jetzt die Variable bzw. den Hook [MaskName!MASK_HOOK_REG_TAB] dieser Hook wird immer dann angesteuert, wenn der Benutzer eines der Register-Tabs anklickt oder wenn mit der Dialog-Element-Flagge FIELD_FLAG_ACTUAL ein bestimmtes Register-Flag aktiviert wird. Für den MASK_HOOK_ABSOLUTE existiert dem entsprechend die [MASK_HOOK_ID_REG_TAB]. Innerhalb des MASK_HOOK_REG_TAB steht wie auch beim MASK_HOOK_BUTTON die MASK_ACT_REG_ID (in diesem Fall als die ID des gesamten Registers) und der MASK_ACT_REG_TAB (in diesem Fall der Name des Tabs) zur Verfügung.

8.5.1999(3.20.12/56) Bestätigung: Nach dem Anklicken einer Check-Box bzw. eines Radio-Button wird automatisch der PostEditHook ausgeführt. Die Annahme, daß, wenn man unmittelbar nach dem Verändern eines Radio-Buttons auf den Speicher-Knopf drückt, der PostEditHook nicht ausgeführt würde, ist daher falsch. Sollten im PostEditHook jedoch zeitaufwendige Befehle ausgeführt werden, empfiehlt es sich, WAIT_CURSOR (TRUE) zu setzen.

08.05.1999	(3.20.12/55) Der Fehler, daß im Listengenerator leere Felder nicht exportiert wurden, ist behoben.

07.05.1999	(3.20.11/54) CARA kann jetzt auch Applikationen im Netzwerk ohne Laufwerksangabe starten, z.B.: \\CSH_NT1\CSH\CARA\CARA.EXE \\CSH_NT1\CSH\IDEAL\IDEAL.INI , als Arbeitsverzeichnis ist dann \\CSH_NT1\CSH\CARA anzugeben. Wichtig: In einem solchen Fall muß in den Scripten der CARA-Applikation darauf geachtet werden, daß keine Laufwerksangaben verwendet werden dürfen. Es muß stets mit Angaben gearbeitet werden, die den Pfad aus Systemvariablen zusammensetzen, wie z.B. CALC [FileName] AS CON([PROG_PATH],'Unterverzeichnis\DateiName.Ext'), dadurch werden die Dateien von Windows gefunden. Wenn die Pfadangabe für den Aufruf von CARA ein Leerzeichen enthält, dann müssen diese Angaben in doppelten Anführungszeichen erfolgen, dies enspricht dem Windows-Standard. Z.B.: "\\CSH_NT1\CARA SUPER\CARA.EXE" "\\CSH_NT1\IDEAL POWER\IDEAL.INI"

7.5.1999(3.20.10/53) Folgende Befehle wurden neu implementiert: GLOBAL_NUM, GLOBAL_STR, GLOBAL_FLOAT, GLOBAL_BOOL, GLOBAL_DATE, GLOBAL_TIME, GLOBAL_LIST, GLOBAL_QUERY, GLOBAL_BROWSER, GLOBAL_MASK, GLOBAL_TEXT, GLOBAL_STREAM, GLOBAL_PRINT und GLOBAL_COM um in beliebigen Scripten globale Variablen anmelden zu können - bisher ging dies nur im Main-Script, wenn man dort "normale" Variablen anmeldete.

07.05.1999	(3.20.01/52) Folgender Fehler war in der CARA-Engine : Wenn man den Datenspinner in einer Maske anklickte, und dann in einem möglicherweise darauffolgenden PostSearchHook viele zeitaufwendige Befehle ausführte, konnte man in der dazu benötigten Verarbeitungszeit bereits wieder auf den Spinner klicken, ohne das alle Befehle ausgeführt waren (z.B. beim schnellen Blättern durch die Datensätze in den Aufträgen). Um diesen Fehler zu vermeiden springt CARA ab jetzt immer dann sofort aus der Spinner-Routine, wenn der WAIT_CURSOR TRUE ist. D.h. wenn ein zeitaufwendiger PostSearchHook auszuführen ist, schaltet man zu Beginn der Hook-Routine den WAIT_CURSOR auf TRUE und am Ende der Routine wieder auf FALSE. Dann werden die dadurch entstehenden möglichen Fehler und Fehlermeldungen vermieden.

03.05.1999	(3.20.00/51) Neuer Befehl : DOCUMENTS 'tablename', recordid {,'header'}. Ruft den Dokumenten-Manager zu dem Datensatz mit der Datensatz-ID recordID aus der Tabelle tablename auf. Der Dokumenten-Manager wird nur geöffnet, wenn die Tabelle tablename existiert und die DatensatzID recordID in dieser Tabelle existiert – oder wenn recordID genau den Wert 0 enthält (globale Ordner für eine spezifische Tabelle). Ausnahme: Wenn tablename den Wert [GLOBAL_FILES] enthält, dann wird der Dokumenten-Manager in jedem Fall geöffnet– auf diese Weise kann man eine beliebige Anzahl von Datensatz- und Tabellen unabhängigen Dokumenten-Ordnern anlegen. Falls 'header' übergeben wird, wird in der Fenstertitel-Leiste des Dokumenten-Managers diese Information mit angezeigt. Dies soll dem User besonders bei freien Ordnern helfen einen Bezug zu den angezeigten Daten zu erkennen.

22.03.1999	(50) Die neue Konstante [APPLICATION_INI_FILE] verweist auf die Applikation-INI-Datei.

19.4.1999(49) Nachtrag zum Befehl MASK_COMMAND [mask],num1{,num2{,num3}}, hier können nun zwei optionale Parameter übergeben werden. Außerdem hat sich die Bedeutung des 1. optionalen Parameters geändert , früher war dies der einzige optionale Parameter. Beschreibung:
MASK_COMMAND führt das Ereignis num1 in der [mask] aus. num1 kann folgende Werte annehmen: 
[MASK_COMMAND_DATE]	Kalender	(Shift F3)
	[MASK_COMMAND_CLEAR]	"Reinigen"	(Shift F8)
	[MASK_COMMAND_NOTES]	Notizen	(Shift F6)
	[MASK_COMMAND_DOC_MGR]	Dokumente	(Alt F6)
	[MASK_COMMAND_SPINNER]	Datensatz wechseln
			num3 kann hier
			folgende Werte
			annehmen:
			[FIRST_REC]
			[LAST_REC]
			[NEXT_REC]
			[PREV_REC]
	[MASK_COMMAND_EXIT]	Verlassen	(ESC)
		num2 kann hier auch folgenden Wert annehmen:
		[MASK_OPT_EXIT_ALL_HOOKS]
		dadurch wird die Maske geschlossen, egal 	welche "Hooks" noch 
		offen sind. Die offenen "Hooks" werden nicht mehr ausgeführt.

[MASK_COMMAND_SEARCH]	Suchen	(F7)
[MASK_COMMAND_SAVE]	Seichern	(F2)
[MASK_COMMAND_INFO]	Info-Choicer	(F5)
	[MASK_COMMAND_DELETE]	Löschen	(F8)
[MASK_COMMAND_PRINT]	Drucken	(Strg P)
	[MASK_COMMAND_MODI]	Modus wechseln	(F6)

	Mit einem Wert in num2 kann man steuern, welcher Hook nach dem Ausführen des Ereignisses nicht ausgeführt werden soll. num2 ist wie eine Option-Flag aufgebaut, d.h. durch Addition mehrerer Werte kann man das Ausführen mehrerer Hooks vermeiden. Außerdem kann man durch Addition des Wertes 
[MASK_HOOK_SKIP_ENGINE_FUNCTIONS] erreichen, daß nicht nur die Script-Hook übersprungen werden, sondern auch noch die Ausführung der Hook-Prozesse der CARA-Engine. num2 kann folgende Werte annehmen : 
		[MASK_HOOK_ID_POST_EDIT]
		[MASK_HOOK_ID_PRE_EDIT]
		[MASK_HOOK_ID_SEARCH]
		[MASK_HOOK_ID_SPINNER]
		[MASK_HOOK_ID_INFO]
		[MASK_HOOK_ID_POST_SAVE]
		[MASK_HOOK_ID_PRE_SAVE]
		[MASK_HOOK_ID_DELETE]
		[MASK_HOOK_ID_PRE_CLEAR]
		[MASK_HOOK_ID_POST_CLEAR]
		[MASK_HOOK_ID_EXIT]
		[MASK_HOOK_ID_BUTTON]
		[MASK_HOOK_ID_PRINT]
		[MASK_HOOK_ID_SHOW]
		[MASK_HOOK_ID_MODI]
		[MASK_HOOK_ID_FOCUS_GET]
		[MASK_HOOK_ID_FOCUS_LET]
		[MASK_HOOK_ID_IS_READY]
		[MASK_HOOK_ID_HELP]
		[MASK_HOOK_ID_KEY]

Warnung:	Dieser Befehl kann unter folgenden Umständen zum Absturz des Computers führen: Wenn z.B. innerhalb einer Ereignisroutine das gleiche Ereignis mittels dieses Befehles wieder aufgerufen wird und dadurch eine endlose Verschachtelung verursacht wird. Oder, wenn Die Maske mit dem EXIT Befehl geschlossen wird und danach noch auf Dialogelemente, die sichtbar sein müssen zugegriffen wird.

11.4.1999(48) Folgende Konstanten wurden verfügbar gemacht:
ACT_RIGHT_ID		RecordID des aktuellen Rechte-Modells, das dem 
aktuellen User zugeordnet wurde und beim Anmelden 
geladen wurde. Wenn keine Rechte vergeben wurden oder der Supervisor/Administrator angemeldet ist, wird der Wert 0 in ACT_RIGHT_ID abgelegt.
ACT_RIGHT_FLAG		Rechte-Flagge, die dem aktuell ausgeführten Script
aufgrund des aktuellen Rechte-Modells zugeordnet 
wurde. Sie setzt sich zusammen aus den folgenden 
Flaggen:
RIGHT_FLAG_NONE
RIGHT_FLAG_DELETE
RIGHT_FLAG_DOC_MGR
RIGHT_FLAG_INSERT
RIGHT_FLAG_LEVEL_0
RIGHT_FLAG_LEVEL_1
RIGHT_FLAG_LEVEL_2
RIGHT_FLAG_LEVEL_3
RIGHT_FLAG_LIST_GEN
RIGHT_FLAG_NOTES_1
RIGHT_FLAG_NOTES_2
RIGHT_FLAG_NOTE_INTERN
RIGHT_FLAG_NOTE_ALWAYS
RIGHT_FLAG_NOTE_FREE
RIGHT_FLAG_READ
RIGHT_FLAG_WRITE

9.4.1999     (47) Der VIEW-Befehl hat einen neuen Parameter:
		VIEW [browser]{,[bool]{,'Head'{,'Info'{,ReturnOnOne}}}}
	Falls der VAR_BOOL-Wert ReturnOnOne TRUE ist, wird, falls die Ergebnismenge des Browsers genau ein Record beträgt, der Browser gar nicht geöffnet sondern sofort im Hintergrund ein GET_DATA ausgeführt und zurück zur Scriptverarbeitung gesprungen. Falls mehr als ein Record gefunden wird, wird der Browser geöffnet. Wenn ReturnOnOne FALSE ist (default) wird der Browser gleichgültig von der Anzahl der gefundenen Records geöffnet.

6.4.1999(46) Drei neue Konstanten : [WINDOWS_PATH] verweist auf das Windows-Verzeichnis, [SYSTEM_PATH] verweist auf das System-Verzeichnis und [COMMON_FILES_PATH] verweist auf das Gemeinsame-Dateien-Verzeichnis der aktuellen Windows-Installation.

26.03.1999	(45) Zu der Variablen VAR_BROWSER gibt es den neuen Hook [browser!BROWSER_HOOK_POST_EDIT] : Wenn im Browser Felder direkt durch Editieren verändert wurden, bevor gespeichert wird, wird die hier hinterlegte Routine ausgeführt. Innerhalb dieses Hooks sind die Variablen [browser!VIEW_EDIT_VALUE], [browser!VIEW_EDIT_REC_ID] und [browser!VIEW_EDIT_FIELD] verfügbar, die anzeigen, was der User eingegeben hat und in welchem Feld und Datensatz das geschehen ist.
Innerhalb eines Querys kann man Felder editierbar machen, indem man die CSH-SQL-Syntax [E "feldmaske"] dem Feldnamen voranstellt

26.3.1999(44) Wenn der "Entwicklermodus" eingeschaltet ist, kann man sowohl in der Maske, als auch im Browser jederzeit mit der Tastenkombination [Strg O] den SQL-Monitor anschalten und mit [Strg I] den Script-Monitor. Entsprechende Icons sind ebenfalls sichtbar.

26.03.1999	(43) Im Browser kann man nun jederzeit die rechte Maustaste verwenden um ein Popup-Menü aufzurufen, mit dem man die gleichen Funktionen erhält, die der Browser auch per Icon-Steuerung bietet. Dies ist besonders interessant für Masken mit "Lupe", da man in Browsern ohne Icon-Leiste sonst keinen Listengenerator, Editiermodus etc. aufrufen kann.

22.03.1999	(42) Mit der neuen Masken-Variable [Mask!MASK_HEAD_LINE] kann man die Überschrift einer Maske während der Laufzeit verändern.

22.03.1999	(41) Der Wert, der in MASK_ACTION nach einem MASK_HOOK_DELETE, wird ab jetzt folgendermaßen interpretiert: Wenn die MASK_ACTION nach diesem Hook den Wert 11111 enthält, wird das Query "refreshed", und die Löschroutine von CARA wird nicht mehr abgearbeitet (wie bei jedem anderen Wert größer Null), wodurch die gelöschte(n) Zeile(n) sofort sichtbar werden. Ausnahme: Enthält die MASK_ACTION den Wert 22222 wird mit der Löschroutine von CARA weitergemacht, ohne jedoch die Frage zu stellen, ob die Daten wirklich gelöscht werden sollen.

27.2.1999(40) In der INI-Datei können nun noch zwei weitere Pfadangaben gemacht werden : PicturePath und DocumentPath. Es stehen darüber hinaus zwei weitere reservierte Worte für SetDoc-Dateien (Maskendefinitionen) PICTURE_PATH und DOCUMENT_PATH. In den Scripten existieren außerdem noch die Variablen [PICTURE_PATH] und [DOCUMENT_PATH].

11.02.1999	(39) Neue CALC-Möglichkeiten für Strings:
			PLACE(Src,SP,L,R)	Ersetzt in dem String Src abder 
						Startposition SP genau L Zeichen durch 
						den Inhalt von ReplaceStr (R). Sollte 
						L=0 übergeben werden, werden genau 
						soviele Zeichen aus Src entfernt wie R 
						lang ist. Sollte R keine Zeichen 
						enthalten, so werden L-Zeichen aus Src 
						entfernt. Wenn R über die Länge von Src 
						hinausreicht, wird Src länger.

9.2.1999(38) Folgende Variablen stehen ab jetzt zur Verfügung : [SQL_DEFINE_BOOLEAN] [SQL_DEFINE_DATE] [SQL_DEFINE_FLOAT] [SQL_DEFINE_LONGINT] [SQL_DEFINE_RECORDID] [SQL_DEFINE_STRING] [SQL_DEFINE_TIME]. Diese Variablen können in der Applikations-INI-Datei gesetzt werden. In Der Section [SQL]. Dort können entsprechend die Schlüssel DefineRecordID=, DefineFloat=, DefineString=, DefineLongint=, DefineBoolean=, DefineDate= und DegineTime= gesetzt werden.

9.2.1999(37) Beim Start der Anwendung wird nach der Datei "Update.CSH" gesucht. Wenn diese Datei vorhanden ist (im Special- oder Script-Verzeichnis) wird sie ausgeführt. In der Applikations-INI-Datei kann auch der Schlüssel UpdateScript= in der Section [Config] gesetzt werden.

5.2.1999(36) In den Feldoptionen einer Masken-Definition können nun neben PROTECTED und HIDDEN auch BLOCKED verwendet werden.

5.2.1999(35) Beim Formatieren von Zahlen mit Tausenderpunkt kam es bei negativen Zahlen, die eine durch drei ganzzahlig teilbare Anzahl von Ziffern vor dem Komma gab zu einem Fehler. So wurde z.B. aus "–567.89" der Wert "-.567,89" oder aus "–100999" der Wert "-.100.999". Der Fehler ist behoben.

5.2.1999(34) Der neue Befehl NEW_RECORD [boolRes],'tablename',[recordid] legt in der Tabelle 'tablename' einen Datensatz mit einer neuen RecordId an und gibt die neu erzeugte Datensatz-Id in [recordid] zurück. Der Erfolg der Operation kann in [boolRes] abgelesen werden. Es werden max. 10 Versuche gemacht in die Tabelle 'tablename' zu speichern.

1.2.1999(33) Paramter von Proceduren (variable und nicht variable) können ab jetzt (endlich) ebenso wie lokale Variablen an andere Proceduren übergeben bzw. weitergegeben werden. Dieses Feature beschränkte sich bisher (leider) auf globale Variablen.

18.01.1999	(32) Für WAIT_INFO kann jetzt ein dritter Parameter übergeben werden. Wenn dieser bool –Wert TRUE gesetzt wird, so wird ein Abbruch-Knopf eingeblendet. Falls der User diesen Knopf betätigt, wird die globale Script-Variable [WAIT_BREAK] den Wert TRUE erhalten, man kann dann im Script auf diese Useraktion reagieren. Wichtig : Wenn die WAIT_INFO ohne Abbruch-Knopf schon geöffnet wurde, kann durch ein reines Update des Fensters der Abbruch-Knopf nicht eingeblendet werden, man muß dann das Fenster mit END_WAIT einmal schließen und erneut öffnen um den Knopf einblenden zu können.

10.1.1999(31) Der Befehl FIELDS lautet ab jetzt VARS.

10.1.1999(30) Der Befehl COMMANDS listet alle Befehle der Script-Sprache.

10.1.1999(29) Der Befehl DEBUG_ON_ERROR_EXIT sorgt dafür, daß ein Script nach dem ersten Fehler verlassen wird.

10.01.1999	(28) Erheblich verbesserte Fehleranzeigen.

08.01.1999	(27) Neuer Befehl FILE_RENAME [res], 'old_filename','new_filename'. Benennt die Datei 'old_filename' in 'new_filename' um. [res] ist vom Typ VAR_BOOL und erhält den Wert TRUE, wenn die Operation erfolgreich war.

07.01.1999	(26) Der Delay-Befehl füht nun während des "Wartens" ständig ein PROCESS_MESSAGES durch. Dadurch kann man während einer Wartezeit Rechenzeit an andere Applikationen abgeben.

06.01.1999	(25) Neue Masken-Variable :  [mask!MASK_QUERY_REFRESH], Normalerweise ist diese Variable TRUE, woduch in Masken-Querys im Hintergrund upgedated werden, wenn Inserts oder Updates ausgeführt werden. Der User hat dadurch stets seine Eingaben sofort sichtbar. Wenn dieses Verhalten unterbunden werden soll, muß diese Variable FALSE gesetzt werden.

06.01.1999	(24) Neue Option für den Befehl MASK_COMMAND. Wenn man ein MASK_COMMAND_EXIT ausführt, kann man verlangen, daß alle offenen "Hooks" nicht mehr abgearbeitet werden. (Option [MASK_OPT_EXIT_ALL_HOOKS])

03.01.1999	(23) WAIT_INFO 'head','info'. Zeigt ein Fenster mit der Überschrift 'head' und dem Inhalt 'info'. Das Fenster wird beim Verlassen des Scriptes automatisch geschlossen (falls in dem Script nicht der Befehl END_WAIT verwendet wurde). Wenn der Befehl wiederholt verwendet wird, wird kein zweites Fenster geöffnet sondern lediglich der Fensterinhalt und die Überschrift erneuert.

03.01.1999	(22) END_WAIT. Schließt das Fenster, daß mit WAIT_INFO geöffnet wurde.

30.12.1998(21) Es wird eine Anbindung für die Syska-Fibu erstellt. Damit kann man auf die OFCK50.DLL der Fa. Syska (Karlsruhe) zugreifen. Die Dokumentation wird bereits im HTML.Format vorgenommen. In diesem Zusammenhang weisen wir darauf hin, daß die gesamte CARA-Dokumentation auf HTML umgestellt wird. Dies wird in den nächsten Monaten mehr und mehr die vorliegende Dokumentation ersetzten.

30.12.1998	(20) Eine neue Technologie zur Verbindung von getrennten Datenbeständen wurde von der CSH bereitgestellt: Offline – Data – Exchange (ODE). Die dazugehörenden Befehle und Beispiele werden in Kürze ebenfalls in HTML dokumentiert vorgelegt. Zur Zeit kann man im Source-Verzeichnis unter Special ein ODE-Verzeichnis finden, in dem die Scripte und Dokumentation (im Textformat) vorliegen.

30.12.1998	(19) Neue CALC-Möglichkeiten für Strings:
	VAR_REPLACE(S)	Ersetzt alle in S vorkommenden 
		Variablen durch deren Inhalt.
		Beispiel :	CALC [ANum] AS 42
			CALC [AStr] AS 'Test [ANum]'
			VAR_REPLACE [Astr]
		In [Astr] steht nun 'Test 42'.

30.12.1998(18) Beim Anmelden von Variablen können jetzt genau wie bei Konstanten sofort initialisierende Werte mit übergeben werden. Z.B. : VAR_NUM PI, 3.14151

30.12.1998       (17) Es gibt eine neue Berechnung für Boolean-Variablen : 
CALC [KlammerAuf] AS CHAR(#91)
CALC [KlammerZu] AS CHAR(#93)
CALC [TestID] AS 7763451236
CALC [TmpStr] AS CON([KlammerAuf],'TestID',[KlammerZu],'>',[EPSILON])
CALC [TmpBool] AS IF([TmpStr])
Die Variable [TmpBool] enthält dann TRUE oder FALSE wenn die in der IF-Klammer
befindliche Aussage "wahr" oder "falsch" ist.

1.(16) Prozeduren können jetzt auch mittels String-Variablen aufgerufen werden:
CALC [TmpStr] AS 'InitVars'
CALL [TmpStr]

30.11.1998(15) Neue INI-Datei-Optionen: CurrencyStr und CurrencyID für die Verwaltung einer Systemwährung, zusätzlich neue Systemvariablen [CURRENCY_STR] und [CURRENCY_ID].

23.11.1998(14) TIMER_START installiert einen Timer der jeweils nach einer frei bestimmbaren Anzahl von Millisekunden ein Script ausführt. Mit TIMER_STOP kann ein Timer wieder verworfen werden.

			FILE_DELETE zum Löschen von Dateien.

20.11.1998	(13) Neuer Hook in der Maske, für Tastatur-Events MASK_HOOK_KEY, folgende Variablen sind nun ebenfalls neu verfügbar : [mask!MASK_ACT_KEY] und [mask!MASK_ACT_STATE] – siehe CARA.RTF

			SET_MAIN_HEADER 'header'
Setzt den Header der Anwendung und den Titel, der in der Taskleiste angezeigt wird.

17.11.1998(12) INI_READ [res],[value],type,'filename','key','section'
	Liest aus der INI-Datei 'filename' aus der 'section' den 'key' vom Typ type in die zu type passende Variable [value], in der boolean Variable [res] steht, ob die Funktion erfolgreich ausgeführt werden konnte. type muß numerisch übergeben werden und kann folgende Werte annehmen:
			[SCRIPT_NUM]		für VAR_NUM
			[SCRIPT_STRING]	für VAR_STR
			[SCRIPT_BOOLEAN]	für VAR_BOOL
			Der Inhalt der Variable [value] ist der Default-Wert für den Schlüssel.

			INI_WRITE [res],[value],type,'filename','key','section' 
			Schreibt in die INI-Datei 'filename' in die 'section' in den 'key' vom Typ type den Inhalt der zu type passenden Variable [value], in der boolean Variable [res] steht, ob die Funktion erfolgreich ausgeführt werden konnte. type muß numerisch übergeben werden und kann folgende Werte annehmen:
			[SCRIPT_NUM]			für VAR_NUM
			[SCRIPT_STRING]			für VAR_STR
			[SCRIPT_BOOLEAN]	für VAR_BOOL

			INI_READ_SECTION [res],[names],[values],'filename','section'
			Liest aus der INI-Datei 'filename' die 'section', wobei in die VAR_LIST [names] die einzelnen Schlüssel der Section gelesen werden und die zugehörigen Werte der Schlüssel in die VAR_LIST [values]. In der boolean Variable [res] steht, ob die Funktion erfolgreich ausgeführt werden konnte.

			INI_WRITE_SECTION [res],[names],[values],'filename','section'
			Schreibt in die INI-Datei 'filename' die 'section', wobei in der VAR_LIST [names] die einzelnen Schlüssel der Section stehen müssen und die zugehörigen Werte der Schlüssel in der VAR_LIST [values] angegeben werden müssen. In der boolean Variable [res] steht, ob die Funktion erfolgreich ausgeführt werden konnte.

			INI_DELETE_SECTION [res],'filename','section'
			Löscht in der INI-Datei 'filename' die 'section'. In der boolean Variable [res] steht, ob die Funktion erfolgreich ausgeführt werden konnte.

			Neue CALC-Operation für VAR_STR, VAR_BOOL, VAR_NUM und VAR_FLOAT.PART(S,P,D) extrahiert aus dem String S den P'ten Teil, der durch den Delimiter D getrennt ist.
			Beispiel: 	CALC [S] AS 'P1;P2;P3;;5;;P7'
				CALC [PStr] AS PART([S],2,';'), dann steht in [PStr] der Wert 'P2'.
				Nach CALC [PStr] AS PART([S],6,';') steht in [PStr] der Wert ''.
			Wichtig:	PART() kann auf VAR_STR, VAR_NUM, VAR_FLOAT und VAR_BOOL 
				angewendet werden. Beispiel: CALC [Num] AS PART([S],5,';'), dann 					enthält [Num] den Wert 5.

31.8.1998(11) In der Applikations-Ini-Datei kann angegeben werden, ob eine Linie unter dem Hauptmenü der Anwendung eingeblendet werden soll. ShowLinePanel=1

31.8.1998(10) In der INI-Datei der Applikation und der Station können nun unter der Section [Icons] im Hauptfenster der Applikation die ICON-Leisten besser konfigureiert werden.

14.08.1998	(9) SEKTION [Icons] in der Applikations- und Stations-INI-Datei.

11.8.1998(8) Der Befehl QUERY_REFRESH wurde um einen Parameter erweitert. Neben dem Query, dessen Inhalt "refreshed" werden soll, kann man nun noch einen Boolean-Wert übergeben. Wenn dieser Wert TRUE ist, wird das Query auch erneut geladen – anderenfalls (oder falls der neue Parameter gar nicht übergeben wurde) reagiert der Befehl normal. Der neue Parameter funktioniert  nur in Zusammenhang mit einem Masken-Query bzw. Masken-View.

10.8.1998(7) In der INI-Datei der Applikation können nun unter dem Eintrag MainImage= nicht nur bmp-Formate gelesen werden sondern folgende Formate : gif (auch animierte), bmp, emf, wmf und ico!

10.8.1998(6) Einfüge-Icon in den Browser eingebaut. Dadurch gibt es die neue Konstante [BROWSER_FLAG_ICON_INSERT], die man in der VIEW_FLAG eines Browsers an und ausschalten kann. Darüber hinaus verfügt jeder Browser nun über einen zusätzlichen Hook : [browser!BROWSER_HOOK_INSERT]. 
Beispiel : 	FLAG_SET [browser!VIEW_FLAG],[BROWSER_FLAG_ICON_INSERT]
CALC [browser!BROWSER_HOOK_INSERT] AS 'browserInsertHook'
...
PROCEDURE browserInsertHook
	MESSAGE 'Achtung','InsertHook'

	CALL AInsertRoutine [InsertOk]
	IF [InsertOk]
		QUERY_REFRESH [browser]
	END_IF

	; weiter machen ohne, ohne daß das Fenster geschlossen wird
	CALC [browser!VIEW_ACTION] AS 1
END_PROC

25.7.1998(5) Hilfe-System verbessert. Suche auch nach den Worten "HelpPath", "HelpDevice", "HelpExtension", "HelpMain", "[Help]", "MASK_HOOK_HELP"

25.7.1998(4) Bei Pfadangaben in der Applikations-INI-Datei wird erkannt, daß ein Pfad nur vom aktuellen Pfad (beim Programmstart)  weiterverzweigt. Die entsprechende System-Variable wird dann vervollständigt. Beispiel : Die Applikations-Ini-Datei "MyProg.ini" liegt im Verzeichnis "C:\Programme\MyApplication", darüber hinaus sei folgendes angegeben : HelpPath=AOtherHelp. Sollte der AOtherHelp von dem Pfad "C:\Programme\MyApplication" abgehen, so wird in der Systemvariable HELP_PATH anschließend folgender Wert zu finden sein : "C:\Programme\MyApplication\AOtherHelp".

1.(3) Nach dem Login (wenn die Benutzerrechte im System eingeschaltet sind) werden nun die BenutzerID und der Benutzerkürzel richtig an die Scripte weitergemeldet.

25.7.1998(2) Der Listengenerator kann jetzt auch im freien SQL-Interface bei gleichzeitigem Einsatz der Benutzerrechte verwendet werden.

24.7.1998(1) GET_EXTERN_DEVICE Befehl zum Auslesen von Programm-Pfaden und Programm-Namen aus der Registry, passend zu einer Dateierweiterung.

1.	Login mit speziellen Stationen kann jetzt auch mit einem bestimmten Usernamen, aber OHNE Passwort gesehen, dann wird der User und sein rechtemodell trotzdem geladen
2.	Neuer INI-Datei-Schlüssel UserLoginAD = Active Directory – hier werden noch additive Rechtemodelle folgen.
Neue Sektion in der INI-Datei [ActiveDirectoryGroups] Rechtemodell des Active-Directory, die mit gleichem Namen auch in den Benutzerrechten der Anwendung existieren müssen und die Rechte des Users additiv ergeben.