Update-Beschreibung des Clients 4.4
Update-Beschreibung des Clients 4.4 Die Update-Beschreibung informiert über Änderungen in den jeweiligen Releaseständen.
- CONZEPT 16-Release 4.4.12 - 2002-06-14
Ab dieser Version wird die Hot-Standby-Option des CONZEPT 16-Servers unterstützt.
Erweiterung des Befehls WinUpdate()
- Option _WinUpdFld2Buf Der Parameter _WinUpdFld2Buf kann nun auch für MdiFrame-Objekte verwendet werden. Beispiel:
$MdiFrame->WinUpdate(_WinUpdFld2Buf);Der Befehl überträgt die Inhalte der Feldpuffer in die Satzpuffer des MdiFrame-Objektes (Eigenschaft "DbRecBuf"). Wird der Befehl mit einem Objekt verwendet, welches kein Frame- und kein RecList-Objekt ist, wird das Frame-Objekt selbständig ermittelt. Beispiel:button->WinUpdate(_WinUpdFld2Buf);Es wird zunächst das übergeordnete Frame-Objekt des Buttons ermittelt. Dann werden die Feldpuffer in die Satzpuffer des Frame-Objektes übertragen. - Option _WinLstRecEvtSkip Der Parameter _WinLstRecEvtSkip kann nur für ein Reclist-Objekt verwendet werden. Mit dieser Option wird das Auslösen des Ereignisses EvtLstSelect bei einem Update auf die RecList unterbunden.
Neue Eigenschaft ChangedTrigger
Mit dieser Eigenschaft wird das Auftreten des Ereignisses EvtChanged und das Verhalten der Eigenschaft Changed gesteuert.
Ist keines der möglichen Flags gesetzt, erfolgt das Ereignis EvtChanged sobald der Benutzer eine Eingabe in einem Eingabe-Objekt tätigt. Wird zum Beispiel ein vier-buchstabiges Wort in ein Edit-Objekt eingetragen, erfolgt das Ereignis vier mal. Die Eigenschaft Changed des Objektes wird bevor das Objekt den Fokus erhält auf false gesetzt. Nach der ersten Änderung durch eine Eingabe über Tastatur, wird die Eigenschaft auf true gesetzt. Die Eigenschaft bleibt solange erhalten, bis der Eingabefokus das Objekt verlassen hat. Die Eigenschaft kann im Ereignis EvtFocusTerm ausgewertet werden.
In der Eigenschaft ChangedTrigger können folgende Flags gesetzt werden:
- _WinChgTriggerCaption Ist dieses Flag gesetzt, wird die Eigenschaft Changed auch dann gesetzt, wenn der Inhalt des Eingabeobjektes durch Änderung der entsprechenden Caption-Eigenschaft oder beim CheckBox-Objekt durch Änderung der CheckState-Eigenschaft verändert wurde. Ist dieses Flag gesetzt wird ebenfalls das Ereignis EvtChanged ausgelöst.
- _WinChgTriggerFldBuf Ist dieses Flag gesetzt, wird die Eigenschaft Changed auch dann gesetzt, wenn der Inhalt der Feldpuffer in das Eingabeobjekt übertragen wurde. Dies erfolgt nur, wenn in der Eigenschaft DbFieldName ein gültiges Datenbankfeld eingetragen ist. Ist dieses Flag gesetzt, wird ebenfalls das Ereignis EvtChanged ausgelöst. Die Übertragung des Inhaltes der Feldpuffer in das Eingabeobjekt erfolgt, wenn das Objekt den Eingabefokus erhält, der Befehl WinUpdate() mit dem Parameter _WinUpdFld2Obj ausgeführt wird oder über das Objekt RecNavigator ein neuer Datensatz gelesen wird.
- _WinChgTriggerNoEvent Ist dieses Flag gesetzt, wird das Ereignis EvtChanged nicht ausgelöst.
Neue Eigenschaft StyleDisplay für Kalender-Objekt
Wird der Eigenschaft StyleDisplay die Konstante "_WinDisplayWeeknumber" zugewiesen, erfolgt die Ausgabe mit Kalenderwochen.
Neue Konstante _TextSingleLock
Das Sperren eines internen Textes erfolgt über die User-ID. Mit dem Parameter_TextSingleLock wird der gleiche Text für den gleichen Benutzer nur einmal gesperrt. Beim Versuch, denselben Text ein zweitesmal zu sperren, wird das Resultat _rLocked zurückgeliefert.
Neue Eigenschaft AutoWrap für TextEdit-Objekt
Ist diese Eigenschaft gesetzt, wird nicht horizontal gescrollt, wenn bei der Eingabe der rechte Rand des Objektes erreicht ist. Anstelle dessen wird der Text in der nächsten Zeile fortgesetzt. Dadurch kann verhindert werden, dass der Benutzer Eingaben tätigt die über den sichtbaren Bereich des Eingabeobjektes hinausreichen.
- CONZEPT 16-Release 4.4.11 - 2002-04-09
Zum Betrieb der Version 4.4.11 wird der Server 1.6.05 benötigt.
Neue Eigenschaften des TextEdit-Objektes
- DbTextBuf Diese Eigenschaft kann nur prozedural gesetzt und ausgelesen werden. Als Wert wird der Deskriptor eines CONZEPT 16 Textpuffers übergeben. Dabei wird der Textinhalt automatisch in das TextEdit-Objekt übertragen. Mit dem Befehl WinUpdate() und der Option _WinUpdBuf2Obj kann dies auch nachträglich geschehen. Der umgekehrte Weg, also vom TextEdit-Objekt zum Textpuffer, kann mit WinUpdate und der Option _WinUpdObj2Buf durchgeführt werden. Wird ein Textpuffer mit dem TextEdit-Objekt verknüpft, kann die Eigenschaft _WinPropCaption nicht mehr benutzt werden, d. h. ein Setzen über diese Eigenschaft hat keine Wirkung und das Auslesen liefert immer ein leeres alpha. Das TextEdit-Objekt hat keine Limitierung der Zeilenlänge.
Zur Anbindung des Textpuffers an das TextEdit-Objekt gibt es in der Datenbank dlg44-11.ca1 ein Beispiel (Prozedur 'TextEdit').
- LenghtMax Der Vorgabewert der Eigenschaft LenghtMax ist 0 und erlaubt eine umlimitierte Textlänge. Unter Windows 95,98,ME hat das TextEdit-Objekt systembedingt ein Limit von 65000 Zeichen.
- ScrollBarVisible Mit dieser Eigenschaft wird definiert, ob das TextEdit-Objekt Scrollbars anzeigt oder nicht. Wenn die Eigenschaft auf true gesetzt ist, dann werden immer Scrollbars angezeigt. Wenn kein Text vorhanden ist oder sie nicht benötigt werden, so werden sie automatisch deaktiviert.
Die Eigenschaften DbFieldName und LeaveAtEnd stehen für dieses Objekt nicht mehr zur Verfügung.
Neue Eigenschaft OrderPass bei Notebook-Objekten
Die Reihenfolge, in der Notizbuchseiten durch den Befehl WinInfo() zurückgeliefert werden, kann über die neue Eigenschaft "OrderPass" beim Notebook-Objekt eingestellt werden:
Notebook->wpOrderPass # _WinOrderCreate; // (default)
Die Notizbuchseiten werden in der Reihenfolge der Erstellung zurückgegeben. Diese Vorgehensweise entspricht der bisherigen.
Notebook->wpOrderPass # _WinOrderShow;
Die Notizbuchseiten werden in der sichtbaren Reihenfolge zurückgegeben. D. h. in der Reihenfolge, in der die Registerreiter angeordnet sind.
Die Eigenschaft "OrderPass" wirkt sich auf die Parameter _WinFirst, _WinPrev, _WinNext und _WinLast des WinInfo-Befehls aus.
Neue Eigenschaft TabOrder bei Notebook-Seiten
Mit der Eigenschaft "TabOrder" ist es möglich, die Fokusreihenfolge (bei Betätigung von <TAB> oder <Shift>+<Tab> im Notebook-Objekt zu beeinflussen.
Die Eigenschaft ist bei jeder Notebook-Seite vorhanden:
-
_WinTabOrderNormal (default) Ist diese Ausprägung bei der Notebook-Seite gesetzt, wird diese verlassen, wenn bei Betätigung von
-
<TAB>: der Fokus auf dem letzten sichtbaren und nicht gesperrten Objekt der Notebook-Seite steht. -
<SHIFT>+<TAB>: der Fokus auf dem ersten sichtbaren und nicht gesperrten Objekt der Notebook-Seite steht.
Ist die Eigenschaft "TabStop" beim Notebook-Objekt zurückgesetzt, verbleibt der Fokus in der Notebookseite.
Diese Vorgehensweise ist identisch zu den vorangegangenen CONZEPT 16-Releases.
-
_WinTabOrderPageChild Ist diese Ausprägung bei der Notebook-Seite gesetzt, wird bei Betätigung von
-
<TAB>- die nächste Notebook-Seite aktiviert, die alle folgenden Kriterien erfüllt ("Zugreifbarkeit"): Seite ist sichtbar (Eigenschaft "Visible") Seite darf nicht gesperrt sein ("Disabled") Seite muss mindestens ein nicht gesperrtes und sichtbares Unterobjekt besitzen, dass den Fokus erhält. Anschließend erhält das erste sichtbare und nicht gesperrte Unterobjekt den Fokus. Das Notebook-Objekt wird erst verlassen, wenn die letzte zugreifbare Seite erreicht ist oder die aktuelle Seite die Bedingung bei _WinTabOrderNormal erfüllt.
-
<SHIFT>+<TAB>- die vorhergehende Notebook-Seite aktiviert, die alle Kriterien, wie bei
<TAB>erfüllt. Anschließend erhält das letzte sichtbare und nicht gesperrte Unterobjekt den Fokus. Das Notebook-Objekt wird erst verlassen, wenn die erste zugreifbare Seite erreicht ist oder die aktuelle Seite die Bedingung bei _WinTabOrderNormal erfüllt.
- die vorhergehende Notebook-Seite aktiviert, die alle Kriterien, wie bei
Erweiterung der Eigenschaft Current beim Notebook-Objekt
Bei der Eigenschaft _WinPropCurrent beim Notebook-Objekt kann nun ein optionaler Parameter angegeben werden:
$NoteBook->wpCurrent # 'Page1',_WinFlagNoFocusSet; oder WinPropSet($NoteBook,_WinPropCurrent,'Page1',_WinFlagNoFocusSet);
Bei der erstgenannten Schreibweise wird beim Compilieren überprüft, ob diese Eigenschaft einen optionalen Parameter haben kann. Die zweite Schreibweise WinPropSet() liefert dagegen zur Laufzeit false zurück.
Die Eigenschaft _WinPropCurrent wechselt die aktuelle Notizbuchseite. Hierbei erhält die Notizbuchseite standardmäßig den Focus. Mit der Option _WinFlagNoFocusSet wird der Focus nicht verändert.
Erweiterung der Eigenschaft Caption bei StatusbarButton-Objekten
Für die Eigenschaft "Caption" des Statusbar-Objektes sind folgende neue Makrodefinitionen möglich: $(KEY,) kann folgende Werte annehmen:
- NUM
- Anzeige des Toggle-Status der NumLock-Taste.
- INS
- Anzeige des Toggle-Status der Einfg.-Taste.
- CAP
- Anzeige des Toggle-Status der Umschalt-Taste.
Der Status der Taste wird nur dann in der Statusbar angezeigt, wenn das Objekt, das den Fokus besitzt, ein Eingabeobjekt ist (z. B. TextEdit).
Erweiterungen Textpuffer
Bei Textpuffern können ab dieser Version Texte geladen, gespeichert und verändert werden, deren einzelne Zeilen länger als 250 Zeichen sind. Damit der Text auch noch kompatibel zum alten Textsystem ist, werden solche Zeilen nach 250 Zeichen mit einem weichem Zeilenumbruch gespeichert, d. h. eine Zeile aus 400 Zeichen wird effektiv mit zwei Zeilen zu 250 und 150 Zeichen gespeichert. Die erste Zeile im gespeicherten Text hat im Unterschied zur zweiten kein festes sondern ein weiches Zeilenende.
Der Befehl TextLineWrite() verfügt über die neue Option _TextNoLineFeed. Mit dieser Option wird eine Zeile mit weichem Zeilenumbruch in den Textpuffer geschrieben.
Hdl->TextLineWrite(tStr,_TextNoLineFeed);
Beim Lesen werden die Textzeilen zu maximal 250 Zeichen zurückgeliefert. Über den Befehl TextInfo() mit der Option _TextNoLineFeed kann festgestellt werden, ob die aktuelle Zeile ein festes Zeilenende (Rückgabewert 0) oder ein weiches Zeilenende (Rückgabewert 1) hat.
Die Zeilennummerierung bei TextLineRead(), TextLineWrite() und auch TextInfo(Hdl,_TextLines) beinhalten die Zeilen mit festen als auch die mit weichem Zeilenumbruch.
Textberechtigungen
Die Text-Befehle der A+-Prozeduren berücksichtigen jetzt die Schreib-/Leserechte des jeweiligen Benutzers für interne Texte und Prozeduren. Bei folgenden Befehlen kann daher das Resultat _rNoRights auftreten:
TextCopy() TextDelete() TextRename() TextWrite()
Wird bei TextRead() ein Text ohne ausreichende Leseberechtigung gelesen, so ist das Resultat zwar _rOK, der Textinhalt bleibt aber leer.
Die Überprüfung der Berechtigung kann mit TextInfo() erfolgen:
if (Hdl->TextInfo(_TextAuthRead) = 0)
{
// 0 = keine Leseberechtigung
}
else
{
// 1 = Leseberechtigung
}
if (Hdl->TextInfo(_TextAuthWrite) = 0)
{
// 0 = keine Schreibberechtigung
}
else
{
// 1 = Schreibberechtigung
}
Prozeduren, für die der Benutzer keine Leseberechtigung hat, werden auch im Debugger nicht angezeigt.
SckRead()
Die Option _SckReadMax kann jetzt auch bei Arrays verwendet werden.
Datensatzoperationen in Transaktionen
Bei den Befehlen RecInsert(), RecReplace() und RecDelete() kann die Option _RecEarlyCommit angegeben werden. Diese Option ist nur innerhalb einer expliziten Transaktion (DtaBegin ... DtaCommit) wirksam.
Normalerweise werden alle Änderungen innerhalb einer Transaktion erst am Ende der Transaktion wirksam. Dadurch bleiben aber auch die beteiligten Segmente in der Datenbank bis zum Ende gesperrt. Das führt unter Umständen dazu, dass parallel laufende Transaktionen behindert werden.
Bei Verwendung von _RecEarlyCommit wird die einzelne Änderung sofort wirksam, die entsprechenden Segmentsperren werden wieder aufgehoben. Allerdings werden dann diese Änderungen bei einem Transaktionsabbruch nicht wieder rückgängig gemacht.
Sofern bei einer Operation mit _RecEarlyCommit ein Datensegment berührt wird, welches in der Transaktion bereits verändert wurde, ist die Option _RecEarlyCommit nicht wirksam (daher sollte die Option nicht bei Änderungen in denselben Dateien benutzt werden).
Beispiel:
DtaBegin();
RecInsert(D.Auftrag,...)
...
RecInsert(D.Protokoll,_RecEarlyCommit);
...
DtaCommit();
In diesem Beispiel wird das Einfügen in die Protokolldatei sofort wirksam, dadurch entfallen mögliche Wartezustände oder Verklemmungen bei paralleler Verwendung der Protokolldatei. Bei einem DtaRollback() bleibt die Änderung in der Protokolldatei trotzdem erhalten.
Erweiterung des Ereignisses EvtLstSelect
Das Ereignis wird jetzt auch dann ausgeführt, wenn kein Datensatz in der Liste dargestellt wird. Im Übergabeparameter aRecID wird in diesem Fall der Wert 0 übergeben.
- CONZEPT 16-Release 4.4.10a - 2002-03-15
Neue Eigenschaft MarginLeft
Diese Eigenschaft legt den Abstand des Inhaltes eines Eingabeobjektes zum linken Rand fest.
- CONZEPT 16-Release 4.4.10 - 2002-03-13
Erweiterung des Befehls WinUpdate()
Die neue Konstante _WinUpdFld2Buf überträgt den Feldpuffer in den Puffer der RecList. Ist die Eigenschaft DbRecBuf einer RecList gesetzt, werden Änderungen der Feldpuffer die durch die RecList verursacht werden, auf den ursprünglichen Feldpufferinhalt zurückgesetzt. Dies ist auch der Fall, wenn in dem Ereignis EvtLstSelect das Lesen eines Datensatzes stattfindet. Soll der Feldpuffer des in diesem Ereignis gelesenen Datensatzes erhalten bleiben, muss der Feldpuffer in den Puffer der RecList übertragen werden.
- CONZEPT 16-Release 4.4.09 - 2002-02-27
Erweiterung des Befehls WinFocusSet()
Der Eingabefokus kann bereits nach dem Öffnen eines Dialoges gesetzt werden, noch bevor der Dialog mit WinDialogRun() angezeigt wird.
- CONZEPT 16-Release 4.4.08 - 2002-02-26
Anzahl der Passwortwiederholungen
In der Datei C16.CFG gibt es ab dieser Version die Möglichkeit einzustellen, wie oft ein Passwort beim Öffnen einer Datenbank falsch eingegeben werden darf, d. h. mit der Default-Einstellung passwordretry = 0 wird der Client nach der ersten Falscheingabe geschlossen, mit der Einstellung passwordretry = 1 nach der zweiten Falscheingabe usw. Die maximale Einstellung ist passwordretry = 9.
Neuer A- Prozedurbefehl SetLocale(log1)
Bei allen Operationen welche die Einstellung "länderspezifische Zahlendarstellung" verwenden, musste bisher eine entsprechende Datei in der Verwaltung geladen werden, damit diese Einstellung berücksichtigt wurde. Mit dem Befehl SetLocale() kann die länderspezifische Zahlendarstellung aus einer Prozedur heraus aktiviert (log1 = Y) oder deaktiviert (log1 = N) werden. Bei Aufruf der Verwaltung einer Datei, in der die Einstellung "Länderspezifische Zahlendarstellung" nicht aktiviert ist, wird diese ebenfalls deaktiviert.
Debuggen der Ereignisse EvtLstDataInit, EvtLstRecControl und EvtTimer
Das Debuggen dieser Ereignisse ist ab jetzt möglich sofern der Debugger auf einem anderen Rechner angesprochen wird.
Neuer Befehl SysExecute()
Mit diesem Befehl kann ein Programm gestartet werden.
SysExecute(alpha1, alpha2, int3) : int
--------------------------------------
Argumente: alpha1 - Pfad- und Dateiname des Programms
alpha2 - Argumente
int3 - Flags
Resultat: int - _rOk, _ErrGeneric, Return-Wert des Programms
Mit dieser Funktion wird das Programm (alpha1) mit den Argumenten (alpha2) gestartet. In (int3) können folgende symbolische Konstanten übergeben werden:
- _ExecWait
- Ohne dieses Flag wird das Programm asynchron gestartet und die CONZEPT 16-Prozedur wird unmittelbar weiter verarbeitet. Mit diesem Flag bleibt die CONZEPT 16-Prozedur an dieser Stelle stehen bis das gestartete Programm beendet wird.
- _ExecMaximized
- Das Programm wird maximiert gestartet.
- _ExecMinimized
- Das Programm wird minimiert gestartet.
Konnte das Programm nicht gefunden oder gestartet werden, ist das Ergebnis _ErrGeneric, bei erfolgreichem Start _rOk. In Verbindung mit der Option _ExecWait wird bei erfolgreichem Start der Return-Wert des aufgerufenen Programms zurückgeliefert.
Zu dem Befehl SysExecute() gibt es in der Datenbank dlg44-08.ca1 ein Beispiel (Prozedur 'ControlPanel').
Erweiterung der Befehle TextWrite() und TextRead()
Bei externen Texten können die Optionen _TextOEM (PC-Zeichensatz) und _TextANSI (Windows-Zeichensatz) angegeben werden. Wird keine der beiden Optionen angegeben, ist wie bisher die Option _TextOEM voreingestellt.
Erweiterung des Befehls WinFocusSet()
Der Befehl WinFocusSet() kann ab dieser Version in der Ereignis-Prozedur "EvtInit" verwendet werden, um den Eingabefokus auf ein bestimmtes Objekt zu setzen. Da zu diesem Zeitpunkt der Fokus nicht zugewiesen werden kann, erfolgt die Ausführung des Befehls verzögert. Der Rückgabewert des Befehls ist daher immer Null.
Erweiterung des Befehls WinInfo()
Bei der Übergabe der Konstanten _WinFrameActive, wird der aktive MDI-Frame eines AppFrame-Objektes (obj) zurückgegeben. hdlActiveMdi # hdlAppFrame->WinInfo(_WinFrameActive);
Neue Eigenschaft "_WinPropStyleCloseBox"
Die Eigenschaft ist bei Frame- und AppFrame-Objekten vorhanden.
Ist die Eigenschaft auf false gesetzt, ist die Schließen-Schaltfläche in der Titelleiste des Fensters und der Menüpunkt "Schließen Alt+F4" im Systemmenü deaktiv. Ein Beenden des Fensters ist bei dieser Einstellung nur durch die Applikation möglich. Bei true sind beide aktiv.
Neue Eigenschaften "_WinPropHelpTipTimeDelay" und "_WinPropHelpTipTimeShow"
Die Eigenschaften sind bei allen Fenster-Objekten vorhanden, welche die Eigenschaft "HelpTip" besitzen:
- _WinPropHelpTipTimeDelay
- Die Eigenschaft dient der Einstellung der Verzögerung (in Millisekunden), bis der Tooltip des Objektes angezeigt wird (nachdem die Maus ruht). Default -1 (= 200 Millisekunden) Minimum 0 Maximum 60000 (1 Minute)
- _WinPropHelpTipTime
- Die Eigenschaft dient der Einstellung der Anzeigedauer (in Millisekunden), des Tooltips des Objektes. Default -1 (= 3000 Millisekunden) Minimum 0 (Tooltip wird nicht angezeigt) Maximum 300000 (5 Minuten)
Neue Eigenschaft "_WinPropCustom"
Diese Eigenschaft steht für weitere Objekte zur Verfügung:
- TreeNode
- Interval
- IvlBox
- IvlLine
- MenuItem
- ListColumn
- ToolbarButton
- StatusbarButton
- GanttAxis
Neue Eigenschaften "_WinPropColDisabledBkg" und "_WinPropColDisabledFg"
In diesen beiden Eigenschaften kann die Farbe des selektierten Datensatzes in einem deaktivierten RecList-Objekt gesetzt werden. Standardmäßig sind beide Eigenschaften auf _WinColUndefined gesetzt. Damit werden die Werte aus den Eigenschaften "_WinPropColBkg" und "_WinPropClFg" verwendet.
Neue Eigenschaft "_WinPropClmStretchWidth" bei den Spalten der Objekte RecList und DataList
Diese Eigenschaft wird benötigt, um die ursprüngliche Breite einer Spalte zu speichern, bevor die Eigenschaft "_WinPropClmStretch" auf true gesetzt wird. Soll die ursprüngliche Breite der Spalte wieder hergestellt werden, kann diese aus der Eigenschaft ausgelesen und der Eigenschaft "_WinPropClmWidth" zugewiesen werden. Die Eigenschaft "_WinPropClmWidth" liefert immer die aktuelle Breite der Spalte zurück.
Für Spalten, die mit einer älteren Version gespeichert worden sind, wird beim ersten Aufruf mit dieser Version, der Wert aus "_WinPropClmWidth" übernommen.
Erweiterung der Werte für die Eigenschaft "_WinPropMenuAction" in Toolbar-Buttons
Toolbar-Buttons können zur Anordnung von MDI-Fenstern verwendet werden. Dazu können in der Eigenschaft "MenuAction" folgende Werte eingetragen werden:
- _WinMnuActMdiCascade
- _WinMnuActMdiArrange
- _WinMnuActMdiTileHorz
- _WinMnuActMdiTileVert
- _WinMnuActMdiNext
- _WinMnuActMdiPrev
- _WinMnuActMdiClose
Die Schaltflächen werden in Abhängigkeit der vorhandenen MDI-Fenster automatisch aktiviert und deaktiviert. Ist die Toolbar nicht Bestandteil eines AppFrame-Objektes, werden Schaltflächen mit diesen Menüaktionen deaktiviert.
Erweiterung der Werte für die Eigenschaft "_WinPropImageTile"
Folgende Konstanten wurden hinzugefügt:
- _WinImgMdiCascade
- _WinImgMdiArrange
- _WinImgMdiTileHorz
- _WinImgMdiTileVert
- _WinImgMdiNext
- _WinImgMdiPrev
Erweiterte Eigenschaft _WinPropLstFlags
Die Eigenschaft _WinPropLstFlags wurde um die Option _WinLstRecSelectBuffer erweitert. Ist dieser Wert gesetzt (default), werden vor dem EvtLstSelect-Ereignis die Feldpuffer, die in den Spalten der RecList vorhanden sind, mit dem ausgewählten Datensatz aktualisiert. Dies entspricht dem Verhalten bis zur Version 4.4.07.
Ist der Wert nicht gesetzt, werden die Feldpuffer nicht mit dem selektierten Datensatz gefüllt. Die RecID des ausgewählten Datensatzes wird dem Ereignis EvtLstSelect übergeben. In dieser Funktion kann dann der Datensatz nach Bedarf gelesen werden.
Die Feldpuffer werden nur dann gefüllt, wenn das Ereignis EvtLstSelect gesetzt ist.
Erweiterung der Einstellungsmöglichkeiten des Designers
Im Einstellungsdialog des Designers (Objekterstellung) kann ein Font definiert werden, der bei der Erstellung von Frame-Objekten (Frame, MdiFrame, AppFrame) automatisch der Eigenschaft "Font" zugewiesen wird. Standardmäßig ist der Font "MS Sans Serif", 9 Punkt eingestellt.
Über die Schaltfläche [Frame Font] kann jeder installierte Font eingestellt werden.
Einstellen der minimalen / maximalen Größe eines Frame-Objektes
Die minimiale und maximale Größe eines Frame-Objektes (Eigenschaften AreaWidthMin / AreaWidthMax / AreaHeightMin / AreaHeightMax) kann durch Doppelklick auf die entsprechende Eigenschaft im Eigenschaftsfenster direkt vom Frame-Objekt übernommen werden.
Prozedur-Editor
Steht der Mauszeiger im Prozedur-Editor auf einem Befehl, wird zu diesem Befehl ein Tooltip angezeigt. Aus dem Tooltop ist ersichtlich, welche Parameter der Befehl verarbeitet.
Eine Befehlsliste über <Strg>+<Leertaste> wird jetzt auch dann angezeigt, wenn sich der Mauszeiger auf einem vollständig ausgeschriebenen Befehl befindet.
- CONZEPT 16-Release 4.4.07 - 2001-12-11
Keine anwenderspezifischen Änderungen.
- CONZEPT 16-Release 4.4.06 - 2001-11-30
Dialoge minimiert und maximiert laden
Dialoge können im minimierten oder maximierten Zustand geladen werden. Dazu wird bei den Befehlen WinDialog(), WinDialogRun(), WinAdd() und WinAddByName() die Konstante _WinDialogMinimized oder _WinDialogMaximized angegeben.
Dialoge minimieren, maximieren und wiederherstellen
Dialoge können zur Laufzeit minimiert, maximiert und wiederhergestellt werden. Dazu werden dem Befehl WinUpdate() der Parameter _WinUpdState und einer der Parameter _WinDialogMinimized, _WinDialogMaximized oder _WinDialogNormal übergeben.
Beispiel:
$Frame->WinUpdate(_WinUpdState, _WinDialogMaximized)
$Frame->WinUpdate(_WinUpdState, _WinDialogMinimized)
$Frame->WinUpdate(_WinUpdState, _WinDialogNormal)
Zustand des Dialoges abfragen
Der derzeitige Zustand des Dialoges kann mit dem Befehl WinInfo(_WinState) abgefragt werden. Der Befehl gibt einen Wert zurück, der mit den Konstanten _WinDialogMinimized, _WinDialogMiximized und _WinDialogNormal verglichen werden kann.
Beispiel:
if ($Frame->WinInfo(_WinState) = _WinDialogMinimized)
// Fenster minimiert
...
ScalaLabels im GanttGraphen ausrichten
Im Achsen-Objekt des GanttGraphen lassen sich die Beschriftungen der Skalen mit der Eigenschaft "ScalaTextJustify" linksbündig, rechtsbündig oder zentriert ausrichten. Dazu stehen die Konstanten _WinTextJustLeft, _WinTextJustRight und _WinTextJustCenter zur Verfügung.
Die Ausrichtung erfolgt immer in Laufrichtung des Textes in Abhängigkeit von der Eigenschaft "VerticalText".
- CONZEPT 16-Release 4.4.05 - 2001-11-23
Hintergrundbild für AppFrame-Objekte
Die Eigenschaften "PictureName" und "PictureMode" definieren Name und Darstellungsweise des Bildes:
- PictureName Hier kann ein Importname oder ein externer Dateiname angegeben werden. Sofern es sich um einen Importname handelt, muss das Objekt über den Grafikimport als "Picture" importiert worden sein. Bei Angabe einer externen Datei sind die zulässigen Grafikformate identisch zu den importierbaren (also jpg, tif, bmp).
- PictureMode Folgende Ausgabearten sind möglich:
- _WinPictCenter Zentrierung des Bildes in der Ausgabefläche des AppFrame-Objektes (Default).
- _WinPictStretch Anpassen des Bildes an die Dimensionen der Ausgabefläche des AppFrame-Objektes.
- _WinPictTile Kacheln des Bildes über die gesamte Ausgabefläche des AppFrame-Objektes.
Anzeige von Grafiken im RecList- und DataList-Objekt
Zur Anzeige von Grafiken im RecList- und DataList-Objekt gibt es folgende neue Eigenschaften:
- TileNameUser In dieser Eigenschaft des RecList- oder DataList-Objektes wird der Importname des für die Ausgabe zu verwendenden Bildes angegeben. Das Grafik-Objekt muss über den Grafik-Import als "Tile Button" importiert werden. Die Kachel des Bildes, die ausgegeben werden soll, wird in der Spalte angegeben.
- ClmTypeImage Die Eigenschaft der Spalte hat drei Ausprägungen und wird nur dann ausgewertet, wenn der Spaltentyp "_WinClmTypeInt" (DataList) oder das hinterlegte Datenbankfeld vom Typ "ganzzahlig lang" oder "ganzzahlig kurz" ist (RecList):
- _WinClmTypeImageNone keine Grafik-Ausgabe (Default).
- _WinClmTypeImageC16 der Inhalt der Zelle wird als Nummer eines vordefinierten CONZEPT 16-Bildes interpretiert. Die Nummer muss dabei größer oder gleich 1 sein. Die Eigenschaft "TileNameUser" beim RecList- bzw. DataList-Objekt wird ignoriert.
- _WinClmTypeImageUser der Inhalt der Zelle wird als Nummer einer benutzerdefinierten Kachel interpretiert. Die Nummer muss dabei größer oder gleich 1 sein. Die Eigenschaft "TileNameUser" beim RecList- bzw. DataList-Objekt beinhaltet das verwendete Bild
Zu dem Thema Bildanzeige in einer DataList gibt es in der Datenbank dlg44-05.ca1 ein Beispiel!
Ausgabeformatierung für typgebundene Eingabeobjekte
Die Eingabeobjekte IntEdit, FloatEdit, TimeEdit und DateEdit verfügen ab diesem Release über die selben Formatierungsmöglichkeiten zur Ausgabe, wie die Spaltenobjekte des RecList- und DataList-Objektes.
Die Ausgabeformatierung wird aktiviert, indem im Eingabeobjekt die Eigenschaft "FmtOuput" auf true gesetzt wird. Hat diese Eigenschaft den Wert false, werden keine Ausgabeformatierungen vorgenommen.
Die Art der Ausgabeformatierung wird nach Aktivierung wie gewohnt über die Eigenschaften FmtIntFlags, FmtFloatFlags, FmtTimeFlags und FmtDateStyle/FmtDateString vorgenommen.
Enthält eines der Eingabeobjekte den Eingabefokus, wird in den Eingabemodus umgeschaltet. Nach Verlassen des Feldes wird in den Anzeigemodus umgeschaltet und das Eingabeobjekt unter Berücksichtigung der neuen Eigenschaften formatiert (sofern aktiviert).
Änderung der Eigenschaft "LeaveAtEnd"
Die Eigenschaft "LeaveAtEnd" ist für Edit-, TimeEdit- und DateEdit-Objekte verfügbar.
- Edit-Objekt Das Eingabeobjekt wird verlassen, wenn die maximale Eingabelänge erreicht ist. Ist eine Maske definiert, so ist diese Länge definiert über die Länge der Eingabemaske. Ist keine Eingabemaske definiert, so ist die maximale Eingabelänge definiert durch den Wert der Eigenschaft "LengthMax".
- TimeEdit-Objekt Das Eingabeobjekt wird verlassen, wenn die durch das Eingabeformat vorgegebene Maximalzahl von Zeichen erreicht wurde.
- DateEdit-Objekt Das Eingabeobjekt wird verlassen, wenn die durch das Eingabeformat vorgegebene Maximalzahl von Zeichen erreicht wurde. Die Eigenschaft "LeaveAtEnd" kann nur dann gesetzt werden, wenn die Eigenschaft "InputCheck" den Wert "_WinInpCheckStrict" enthält, da ansonsten keine Maximallänge vorhanden ist. Wird dagegen die Eigenschaft "InputCheck" auf "_WinInpCheckLeave" gesetzt wird die Eigenschaft "LeaveAtEnd" automatisch auf false gesetzt.
Common-Dialog -> Windows System Dialog
Bei den Common-Dialogen wird ein Objekt mit WinOpen() erzeugt, danach können die Eigenschaften gesetzt werden. Mit WinDialogRun() wird dann der Dialog ausgeführt. Abschließend können die veränderten Eigenschaften abgefragt werden und das Dialog-Objekt mit WinClose() geschlossen werden.
Folgende Systemdialoge stehen zur Verfügung:
- _WinComFileOpen - Dialog beim Öffnen einer externen Datei
- _WinComFileSave - Dialog beim Speichern einer externen Datei
- _WinComPath - Dialog zur Pfadauswahl
Die Dialoge werden durch die Übergabe der angegebenen Konstanten anstelle des Dialognamen geladen: hdlFrame # WinOpen(_WinComFileOpen);
Die Dialoge _WinComFileOpen und _WinComFileSave verfügen über folgende Eigenschaften:
- Caption - Fenstertitel des Dialoges
- FileName - Dateiname
- PathName - Verzeichnis
- FileNameExt - Standardmäßige Dateiendung
- FileFilter - Dateifilter
- FileFilterNum - Index von dem ausgewählten Dateifilter
- Flags - Optionen
- _WinComCreatePrompt Wenn eine Datei ausgewählt worden ist, die noch nicht existiert, wird vor dem Verlassen des Dialoges ein Bestätigungs-Dialog angezeigt. Dieses Flag steht nur für den _WinComFileOpen-Dialog zur Verfügung.
- _WinComOverwritePrompt Falls beim Speichern die ausgewählte Datei bereits existiert, wird vor dem Verlassen ein Bestätigungs-Dialog angezeigt. Dieses Flag steht nur für den _WinComFileSave-Dialog zur Verfügung.
- _WinComFileMustExist Der Dialog kann nur mit OK beendet werden, wenn eine existierende Datei ausgewählt worden ist.
- _WinComPathMustExist Der Dialog kann nur mit OK beendet werden, wenn ein gültiger Pfad angegeben ist.
- _WinComExplorer Der Dialog wir mit dieser Option in einer Windows Explorer ähnlichen Darstellung verwendet.
- _WinComNoChangeDir Der Dialog merkt sich das zuletzt vom Benutzer angegebene Verzeichnis. Wird diese Option gesetzt, wird das Verzeichnis nicht gespeichert. Die Option wird nur dann ausgewertet, wenn die Eigenschaft "PathName" nicht gesetzt wurde.
- _WinComNoNetworkBtn Bei der Nicht-Explorer Ansicht kann die Netzwerk-Schaltfläche mit dieser Option ausgeblendet werden.
Der Dialog _WinComPath verfügt über folgende Eigenschaften:
- Caption - Fenstertitel des Dialoges
- TitleText - Text zwischen der Titelzeile und dem TreeView-Objekt. Je nach Einstellungen können zwischen zwei und drei Zeilen, durch StrChar(13) getrennt, angegeben werden.
- PathName - Verzeichnis
- Flags - Optionen
- _WinComEditBox Es wird ein zusätzliches Edit-Objekt angelegt, in dem der Pfad direkt angegeben werden kann.
- _WinComSizeableDialog Der Dialog ist mit dieser Option in der Größe veränderbar und besitzt ein "neueres" Look & Feel.
- _WinComUserHint Zeigt in Verbindung mit _WinComSizeableDialog ein kurze Bedienungsanweisung unterhalb des Treeview-Objektes an.
- _WinComNoNewFolderBtn Mit dieser Option kann verhindert werden, dass aus dem Dialog heraus neue Verzeichnisse angelegt werden.
Bei dem Dialog _WinComPath werden je nach Betriebssystem nicht alle Optionen unterstützt:
- Windows XP
- _WinComNoNewFolderBtn funktioniert nur in Verbindung mit _WinComSizeableDialog . _WinComUserHint funktioniert nur wenn _WinComEditBox nicht gesetzt ist. Die restlichen Optionen werden ohne Einschränkung unterstützt.
- Windows 2000
- _WinComNoNewFolderBtn hat keine Auswirkung.
- Windows ME
- _WinComUserHint und _WinComNoNewFolderBtn haben keine Auswirkung.
- Windows 98
- _WinComEditBox wird unterstützt, alle anderen Optionen sind ohne Wirkung.
- Windows NT 4.0
- Keine der Optionen wird unterstützt
- Windows 95
- Keine der Optionen wird unterstützt
Zu dem Thema Common-Dialoge gibt es in der Datenbank dlg44-05.ca1 ein Beispiel!
Ereignis "EvtChanged" bei Calendar-Objekt
Dem Calendar-Objekt wurde das Ereignis "EvtChanged" hinzugefügt. Das Ereignis wird aufgerufen, wenn das selektierte Datum direkt, also durch Benutzereingabe (z. B. Mausklick im Kalender) verändert wird. Es wird dagegen nicht aufgerufen, wenn das Datum über die Eigenschaft "CaptionDate" verändert wird.
Eigenschaft "TileNameMenu" beim Toolbar-Objekt
Ist die Werkzeugleiste zu klein, um alle Schaltflächen anzeigen zu können, wird am rechten bzw. unteren Rand der Werkzeugleiste die "<<" Schaltfläche angezeigt. Wird diese betätigt, erscheint ein Popup-Menü, sofern die nicht sichtbaren Schaltflächen einen Text besitzen. Außerdem wird links neben dem Text ein Bild (Eigenschaft "ImageTile") angezeigt, sofern vorhanden.
Ist die Eigenschaft "TileNameMenu" gesetzt, werden nicht die Bilder des Toolbar-Objektes sondern die Bilder der hier angegebenen Grafik verwendet. Die Nummer der Kachel ergibt sich weiterhin aus der Eigenschaft "ImageTile".
Neue Prozedurbefehle
1. SysTimerCreate(int1, int2[, int3]) : int
--------------------------------------------
Zeitgesteuerte Ereignisse starten
Argumente: int1 - Zeitintervall in Millisekunden
int2 - Anzahl von Wiederholungen
int3 - Deskriptor des Zielfensters (optional)
Resultat: int - Timer-Deskriptor
Mit dieser Funktion wird in Abständen von (int1) Millisekunden das Ereignis EvtTimer ausgelöst. Der Minimalwert von (int1) beträgt 100 ms.
Bei Angabe von -1 in (int2) wird das Ereignis unbegrenzt wiederholt, ansonsten enthält (int2) die Anzahl der auszulösenden Ereignisse. Bei (int2) gleich 0 wird kein Ereignis ausgelöst.
In (int3) kann der Deskriptor des Frame-Objekts angegeben, welches das Ereignis erhält. Wird (int3) nicht angegeben oder auf 0 gesetzt, erhalten alle Top-Level-Frames (die Frames ohne Parent) das Ereignis. Eine entsprechende Prozedurfunktion für EvtTimer muss beim jeweiligen Frame angegeben werden.
Das Resultat ist der Deskriptor des Timers. Dieser wird bei EvtTimer mitgeliefert und bei SysTimerClose() benötigt.
Das Zeitintervall beginnt erst nach der kompletten Verarbeitung von EvtTimer erneut. Damit wird verhindert, das während der Ereignisverarbeitung bereits ein weiteres Ereignis ausgelöst wird.
Die maximale Anzahl von Timern ist nicht beschränkt. Es ist zu beachten, das ein Timer immer mit SysTimerClose() entfernt werden muss, auch wenn er keine Ereignisse mehr auslöst.
2. SysTimerClose(int1)
----------------------
Zeitgesteuerte Ereignisse stoppen
Argumente: int1 - Timer-Deskriptor
Mit dieser Funktion wird ein Timer gelöscht. Der Deskriptor ist danach nicht mehr gültig. Wird ein ungültiger Deskriptor angegeben, erfolgt der Laufzeitfehler _ErrHdlInvalid.
Zu dem Thema zeitgesteuerte Ereignisse gibt es in der Datenbank dlg44-05.ca1 ein Beispiel!
TreeView-Objekt
Die Anzahl der Gruppen für benutzerdefinierte Bilder im TreeView wurde auf 100 Gruppen erhöht.
Temporäre Dateien
Beim Start von CONZEPT 16 werden alle vom CONZEPT 16-Client angelegten temporären Dateien (c16_xxxxxxxx.tmp), die nicht verwendet werden und älter als 24 Stunden sind, gelöscht.
- CONZEPT 16-Release 4.4.04 - 2001-11-07
Wichtig !!
CONZEPT 16-Server ab Version 1.6.02 wird benötigt.
Grafischer Druckertreiber
Wenn als Ausgabeeinheit der Acrobat PDFWriter verwendet wird, kann mit zusätzlichen Steuersequenzen im Ausdruck der PDF-Dateiname bestimmt werden. Zusätzlich kann der Titel und Verfasser des Dokuments frei definiert werden. Standardmäßig wird der Ersteller des Dokuments mit 'CONZEPT 16' angegeben. Wurde die Applikation über das OEM-Kit reserviert, wir der dort eingetragene Programmname verwendet.
Es stehen folgende Steuersequenzen zur Auswahl:
-
<27>PDFFILE(c:\test.pdf): Name der Datei -
<27>PDFTITLE(Titel des Dokuments): Titel des Dokuments -
<27>PDFAUTHOR(Verfasser des Dokuments): Verfasser des Dokuments -
CONZEPT 16-Release 4.4.03 - 2001-11-01
Hinweis !!
Die Rückgabewerte des Befehls SysOS() sind geändert worden. Der Befehl liefert nun folgende alpha-Werte zurück:
"Windows 95" "Windows 95 OSR2" "Windows 98" "Windows 98 SE" "Windows ME" "Windows NT 4.00" "Windows 2000" "Windows XP"
Import von Grafiken
Über den Menüpunkt "Importieren" des Menüs "Datei" können neben den Resource-Dateien Grafiken importiert werden Für jedes zu importierende Grafik-Objekt muss ein Importname angegeben werden, über den das Objekt in der Datenbank referenziert werden kann. Der Objektname muss mit einem Buchstaben beginnen. Anschließend können optional die Zeichen "A..Z", "a..z", "0..9", "_" und "." folgen. Die Maximallänge beträgt 40 Zeichen. Zwischen Groß- und Kleinschreibung wird nicht unterschieden.
Der Import-Dialog gliedert sich in folgende Bereiche:
Resource
Import von CONZEPT 16-Resourcen (Menü- und Frame-Objekte).
Tile Menu
Import einer Grafik-Datei zur Verwendung bei der Ausgabe von Menüs. Der Inhalt der Grafik-Datei muss dabei zeilen- und spaltenweise in Kacheln eingeteilt sein. Jede einzelne Kachel kann für die Ausgabe im Menü verwendet werden.
-
Limitationen der Grafik-Datei:
-
Format:: BMP
-
Farbtiefe:: 4 BPP
-
Limitationen der Kacheleinteilung:
-
Breite:: 18 Pixel
-
Höhe:: 18 Pixel
-
Maximum Anzahl in Breite:: 20 Kacheln
-
Maximum Anzahl in Höhe:: 20 Kacheln
-
Farbersetzung:
-
Transparenzfarbe:: wird bei der Anzeige durch die Systemfarbe _WinColMenu ersetzt
-
Schattenfarbe:: wird bei der Anzeige durch die Systemfarbe _WinColBtnShadow ersetzt
-
Lichtfarbe:: wird bei der Anzeige durch die Systemfarbe _WinColBtnHighLight ersetzt
Tile TreeView
Import einer Grafik-Datei zur Verwendung im TreeView-Objekt. Der Inhalt der Grafik-Datei muss dabei in Gruppen zu je vier Kacheln eingeteilt sein.
-
Gruppe:
-
Kachel 1:: Graue Darstellung, Knoten geschlossen
-
Kachel 2:: Graue Darstellung, Knoten geöffnet
-
Kachel 3:: Selektierte Darstellung, Knoten geschlossen
-
Kachel 4:: Selektierte Darstellung, Knoten geöffnet
-
Limitationen der Grafik-Datei:
-
Format:: BMP
-
Farbtiefe:: 4 BPP
-
Limitationen der Gruppeneinteilung:
-
Maximale Anzahl :: 20 Gruppen
-
Maximale Breite einer Kachel:: 26 Pixel
-
Maximale Höhe einer Kachel:: 26 Pixel
-
Farbersetzung:
-
Transparenzfarbe:: wird bei der Anzeige ersetzt durch die Hintergrundfarbe im TreeView-Objekt
Tile Button
Der Inhalt der Grafik-Datei muss dabei zeilen- und spaltenweise in Kacheln eingeteilt sein. Jede einzelne Kachel kann für die Ausgabe in einem Button- oder Toolbar-Button-Objekt verwendet werden.
-
Limitationen der Grafik-Datei:
-
Format:: BMP
-
Farbtiefe:: 4 BPP
-
Limitationen der Kacheleinteilung:
-
Breite:: 26 Pixel
-
Höhe:: 26 Pixel
-
Maximum Anzahl in Breite:: 20 Kacheln
-
Maximum Anzahl in Höhe:: 20 Kacheln
-
Farbersetzung:
-
Transparenzfarbe:: wird bei der Anzeige durch die Hintergrundfarbe des Button- oder Toolbar-Button-Objekts ersetzt
-
Schattenfarbe:: wird bei der Anzeige durch die Systemfarbe _WinColBtnShadow ersetzt
-
Lichtfarbe:: wird bei der Anzeige durch die Systemfarbe _WinColBtnHighLight ersetzt
Icon
Import einer Icon-Datei zur Verwendung in den Objekten Icon und Frame.
-
Limitationen der Icon-Datei:
-
Format:: ICO
-
Anzahl Icons:: >=1
Picture
Import einer Grafik-Datei zur Verwendung in einem Picture-Objekt.
-
Limitationen der Grafik-Datei:
-
Format:: BMP, TIF, JPG
Neue Eigenschaften der Frame-Objekte (Frame, AppFrame und MdiFrame)
- TileNameMenu Wird der Eigenschaft der Name einer importierten Menü-Grafik zugewiesen, wird diese bei der Ausgabe von Menüeinträgen im aktuell gesetzten Menü (Eigenschaft "MenuName") oder Kontext-Menü (Eigenschaft "MenuNameCntxt") verwendet.
- TileNameNormal Dieser Eigenschaft kann der Name einer importierten Button-Grafik zugewiesen werden. Die Eigenschaften "TileNameSelected" und "TileNamePressed" müssen ebenfalls zugewiesen werden.
- TileNameSelected Dieser Eigenschaft kann der Name einer importierten Button-Grafik zugewiesen werden. Die Eigenschaften "TileNameNormal" und "TileNamePressed" müssen ebenfalls zugewiesen werden.
- TileNamePressed Dieser Eigenschaft kann der Name einer importierten Button-Grafik zugewiesen werden. Die Eigenschaften "TileNameNormal" und "TileNameSelected" müssen ebenfalls zugewiesen werden.
- NumIcon Dieser Eigenschaft kann die Nummer einer importierten oder externen Icon-Grafik (Eigenschaft "Icon") übergeben werden. Standardmäßßig hat die Eigenschaft den Wert "1", referenziert also das erste Icon der Icon-Grafik.
Neue Eigenschaften des Objekts Toolbar
TileNameNormal TileNameSelected TileNamePressed
Analog zu den gleichnamigen Eigenschaften des Frame-Objekts, jedoch zur Anzeige der ToolbarButton-Bilder.
Neue Eigenschaft des Objekts TreeView
- TileNameUser Der Eigenschaft kann der Name einer importierten TreeView-Grafik zugewiesen werden. Die Kacheln in der Grafik werden von den Knoten-Objekten zur Bildausgabe verwendet.
Neue Eigenschaft des Objekts MenuItem
- ImageTileUser Hat diese Eigenschaft einen Wert größer Null, wird eine Kachel in der Menü-Grafik aus der Eigenschaft "TileNameMenu" des übergeordneten Frame-Objektes referenziert. Die Eigenschaft "ImageTile" wird in diesem Fall ignoriert und nur verwendet, wenn "ImageTileUser" den Wert Null besitzt.
Neue Eigenschaft des Objekts Button
-
ImageTileUser Hat diese Eigenschaft einen Wert größer Null, wird sie an Stelle der Eigenschaft "ImageTile" verwendet, um eine Kachel aus einer importierten Button-Grafik zu referenzieren. Die zu verwendende Button-Grafik wird aus den Eigenschaften "TileNameNormal", "TileNameSelected" und "TileNamePressed" für folgende Button-Zustände selektiert:
-
TileNameNormal:
- Button ist weder gedrückt noch fokussiert
-
TileNameSelected:
- Button ist fokussiert
-
TileNamePressed:
- Button ist gedrückt
Neue Eigenschaft des Objekts Toolbar-Button
- ImageTileUser Analog zur gleichnamigen Eigenschaft im Button-Objekt, jedoch kann pro Toolbar eine Button-Grafik angegeben werden.
Neue Eigenschaft des Objekts TreeNode
- ImageTileUser Hat die Eigenschaft einen Wert größer Null, wird die erste Kachel einer Gruppe aus einer importierten TreeView-Grafik referenziert. Die TreeView-Grafik wird beim TreeView-Objekt (Eigenschaft "TileNameUser") angegeben.
Geänderte Eigenschaft des Objekts Picture
- Caption Zusätzlich zu externen Dateien kann auch eine importierte Picture-Grafik angegeben werden. Wird in der Eigenschaft kein Präfix ("!" und "*") verwendet, wird ein Grafik-Objekt in der Datenbank referenziert.
Geänderte/Neue Eigenschaft des Objekts Icon
- FileName Zusätzlich zu externen Icon-Dateien kann auch eine importierte Icon-Grafik angegeben werden. Wird in der Eigenschaft kein Präfix ("!" und "*") verwendet, wird ein Icon-Objekt in der Datenbank referenziert.
- NumIcon Dieser Eigenschaft kann die Nummer einer importierten oder externen Icon-Grafik übergeben werden. Standardmäßig hat die Eigenschaft den Wert "1", referenziert also das erste Icon der Icon-Grafik.
Neue Konstante _WinLstPosSelected
Die Option bewirkt einen Neuaufbau der Liste wobei die Position des selektierten Datensatzes innerhalb der Liste erhalten bleibt. _WinLstPosSelected ist in Kombination mit _WinLstFromSelected und _WinLstRecDoSelect zu verwenden.
Beispiel:
$RecList->WinUpdate(_WinLstFromSelected |
_WinLstPosSelected |
_WinLstRecDoSelect);
Objekt Checkbox
Das Objekt unterstützt nun auch die Eigenschaft "ReadOnly".
OEM-Kit
Das Ausspielen der Grafiken kann direkt über das OEM-Kit vorgenommen werden. Über "Parameter" können Bilder selektiv und nach Datumsbereich gesichert und eingelesen werden. Bilder sind ebenfalls Elemente einer Definitionsgruppe und lassen sich mit einer Definition sichern und in eine andere Datenbank einlesen.
Überwachung von Feldern und Variablen im Debugger
In der Liste der überwachten Variablen können Felder und Variablen markiert werden. Ist eine Variable markiert, wird der Debugger bei Änderung des Inhalts der Variablen bzw. des Feldes aktiviert und positioniert eine Zeile hinter der Zeile, welche die Änderung verursacht hat. Das Markieren bzw. Demarkieren erfolgt zur Laufzeit der Prozedur über einen Doppelklick auf die gewünschte Variable. Markierte Variablen werden in der Spalte "Status" mit einem grünen Symbol versehen. Ändert sich der Inhalt wird aus dem grünen ein rotes Symbol.
Unterstützung von Windows XP
Ab dieser Version wird das Betriebssystem Windows XP unterstützt.
- CONZEPT 16-Release 4.4.02 - 2001-10-11
Designer
Neues Ereignis EvtPosChanged
sub EvtPosChanged
(
aEvt : event; // Ereignis
aRect : rect; // Größe des Fensters
aClientSize : point; // Größe des Client-Bereichs
aFlags : int; // Aktion
) : logic
Das Ereignis wird ausgelöst, wenn das Objekt (Frame, FrameClient, GroupBox und NotebookPage) in der Position oder Größe verändert wird. Es dient dazu, untergeordenete Objekte auszurichten oder anzupassen. Eine Veränderung des auslösenden Objekts sollte vermieden werden, da es sonst zu Rekursionen kommen kann.
Der Rückgabewert ist ohne Bedeutung.
aRect
In aRect werden die neuen Ausmaße des Objekts angegeben. Dies sind die Außenmaße des Objekts (bei einem Frame zum Beispiel inklusive Rand, Titel usw.). > Wird das Fenster minimiert, stehen in aRect:left und aRect:top -32000.
aClientSize
Die neue Breite und Höhe sind die entscheidenden Werte zur Positionierung und Größenveränderung von untergeordneten Objekten. Sichtbare Objekte müssen zwischen den Werten (0,0) und (aClientSize:x,aClientSize:y) liegen.
aFlags
Gibt die Aktion an, welche durchgeführt wurde. aFlags kann folgende Werte annehmen:
- _WinPosSized: Objekt wurde in der Größe geändert
- _WinPosMoved: Objekt wurde verschoben
- _WinPosMiniMized: Objekt wurde minimiert
- _WinPosMaxiMized: Objekt wurde maximiert
Neue Eigenschaften
AreaWidthMin AreaWidthMax AreaHeightMin AreaHeightMax
Mit diesen Eigenschaften kann eine Mindest- und eine Maximalgröße eines Fensters angegeben werden. Soll ein Fenster beliebig vergrößert und verkleiner werden können, muss in diesen Eigenschaften -1 eingetragen werden (standardmäße Einstellung). Bei der Angabe einer Mindestbreite in der Eigenschaft "AreaWidthMin" oder einer Mindesthöhe in "AreaHeightMin" kann das Fenster in dieser Dimension nicht weiter verkleinert werden. Bei der Angabe einer Maximalgröße in den Eigenschaften "AreaWidthMax" oder "AreaHeightMax" kann das Fenster nicht über diese Werte hinaus vergrößert werden.
Geänderte Eigenschaft Caption bei Picture-Objekt
-
'*' kennzeichnet eine externe Bilddatei. Beispiel : wpCaption # '*f:\bilder\logo.tif'
-
'!' kennzeichnet die Pfadangabe relativ zum Arbeitsverzeichnis des CONZEPT 16-Clients. Beispiel : wpCaption # '!bilder\logo.tif'
-
Ohne Präfix wird ein Grafik-Objekt in der Datenbank referenziert.
Beim Laden eines Frames (z. B. im Designer oder durch WinDialog) aus der Version 4.4.01 wird der Eigenschaft "Caption" automatisch ein "*"-Zeichen vorangesetzt.
Die Eigenschaft "FileName" des Objekts Animation wurde in gleicher Weise angepasst, um eine einheitliche Nomenklatur zu erreichen.
- CONZEPT 16-Release 4.4.01 - 2001-09-25
Designer
Funktionstaste <F8> im Designer
Sofern der Prozedur-Editor den Fokus nicht besitzt, jedoch sichtbar ist, wird der Prozedur-Editor aktiviert und die aktive Prozedur (sofern vorhanden) erhält den Eingabefokus. Hat der Prozedur-Editor dagegen den Fokus oder ist er unsichtbar, ist das Verhalten zum Release 4.4.00 unverändert. Der Menüpunkt "Anzeige/Prozedur-Editor" ist von dieser Änderung nicht betroffen.
Prozedur-Editor
Die Option "Leerzeichen anzeigen" des Prozedurtextes wird nun auch im Profil gespeichert, wird also beim nächsten Start des Designers wiederhergestellt.
Erweiterte Prozedurbefehle
WinDialog/WinDialogRun Neue Option _WinDialogApp bei den Befehlen WinDialog und WinDialogRun. Mit dieser Option wird der Dialog als Applikation gestartet. Ein noch eventuell vorhandener Splashscreen oder der CONZEPT 16-Client werden dabei unsichtbar gemacht. Nach Ausführen des Befehls wird der CONZEPT 16-Client automatisch wieder angezeigt.
WinInfo Neue Konstante _WinContextMenu. Die Konstante liefert innerhalb des Ereignisses EvtMenuInitPopup den Deskriptor des aktuellen Kontextmenüs (sofern in dem Argument aMenuItem 0 übergeben wurde).
Neue Prozedurbefehle
1. WinMenuItemAdd(obj[, alpha1[, alpha2[, int3]]] )
---------------------------------------------------
Menüeintrag anlegen
Argumente: obj - Objekt
alpha1 - Name des Menüeintrags (optional)
alpha2 - Titel des Menüeintrags (optional)
int3 - Position (optional)
Resultat: int
Mit diesem Befehl wird ein Menüeintrag hinzugefügt. Wird in (obj) der Deskriptor eines Menüs oder Kontextmenüs übergeben, wird der Menüeintrag in der ersten Ebene angelegt. Handelt es sich um ein Menü, wird der Eintrag in der Menüzeile angelegt. Bei der Übergabe eines bestehenden Menüeintrags in (obj) wird in dessen Untermenü der neue Eintrag hinzugefügt. Existiert noch kein Untermenü, wird ein neues angelegt. Wird die Position (int3) nicht angegeben, wird der Eintrag immer am Ende hinzugefügt. Name und Titel können direkt beim Aufruf bestimmt werden, alle weiteren Eingenschaften müssen mit Hilfe des Resultats gesetzt werden.
Als Resultat wird der Deskriptor des neuen Menüeintrags zurückgeliefert. Im Fehlerfall ist das Ergebnis 0.
2. WinMenuItemRemove(obj[, logic1] )
------------------------------------
Menüeintrag entfernen
Argumente: obj - Objekt
logic1 - Nur Child-Objekte entfernen
(default : false)
Mit diesem Befehl wird ein Menüeintrag aus dem Menü mit einem eventuell anhängenden Untermenü entfernt. Mit dem optionalen Parameter (logic1) wird nur das komplette Untermenü entfernt.
Neue Konstanten für Eigenschaft MenuKey
Für das Setzen der Funktionstasten zur Laufzeit stehen folgende Konstanten zur Verfügung:
_WinKeyNull
_WinKeyF1
_WinKeyF2
_WinKeyF3
_WinKeyF4
_WinKeyF5
_WinKeyF6
_WinKeyF7
_WinKeyF8
_WinKeyF9
_WinKeyF10
_WinKeyF11
_WinKeyF12
_WinKeyA
_WinKeyB
_WinKeyC
_WinKeyD
_WinKeyE
_WinKeyF
_WinKeyG
_WinKeyH
_WinKeyI
_WinKeyJ
_WinKeyK
_WinKeyL
_WinKeyM
_WinKeyN
_WinKeyO
_WinKeyP
_WinKeyQ
_WinKeyR
_WinKeyS
_WinKeyT
_WinKeyU
_WinKeyV
_WinKeyW
_WinKeyX
_WinKeyY
_WinKeyZ
_WinKeyHome
_WinKeyEnd
_WinKeyPageUp
_WinKeyPageDown
_WinKeyShift
_WinKeyCtrl
- CONZEPT 16-Release 4.4.00 - 2001-08-27
WICHTIG! CONZEPT 16-Server ab 1.6.00 wird benötigt. Geänderte Konstanten
- _WinRlsFromFirst
- _WinLstFromFirst
- _WinRlsFromLast
- _WinLstFromLast
- _WinRlsFromTop
- _WinLstFromTop
- _WinRlsPosTop
- _WinLstPosTop
- _WinRlsPosMiddle
- _WinLstPosMiddle
- _WinRlsPosBottom
- _WinLstPosBottom
- _WinRlsFromSelected
- _WinLstFromSelected
- _WinRlsFromBuffer
- _WinLstFromBuffer
- _WinRlsFromRecID
- _WinLstFromRecID
- _WinRlsDoSelect
- _WinLstDoSelect
- _WinRlsPosTop
- _WinLstPosTop
- _WinHitRlsHeader
- _WinHitLstHeader
- _WinHitRlsView
- _WinHitLstView
- _WinPopupDbRecList
- _WinPopupList
- _WinTypePopupRecList
- _WinTypePopupList
- _WinGridNoHeader
- _WinLstNoHeader
- _WinGridHeader
- _WinLstHeader
- _WinGridHeaderSort
- _WinLstHeaderSort
- _WinGridHeaderStatic
- _WinLstHeaderStatic
- _WinPropGridStyle
- _WinPropLstStyle
- _WinWndHelpDialog
- _WinWndDialogHelp
- _WinWndHelpFrame
- _WinWndFrameHelp
Neue Konstanten Eigenschaft ImageTile _WinImgMarkOneClear _WinImgMarkOneSet _WinImgMarkAllClear _WinImgMarkAllSet _WinImgMarkFilterClear _WinImgMarkFilterSet DbgControl _DbgOff Über die Anweisung DbgControl(_DbgOff) wird der Debug-Modus beendet und es werden keine weiteren Debug-Anweisungen ausgeführt. Die Option wird erst mit dem Entladen der Datenstruktur aufgehoben. DECLARE Sektion Mit Hilfe von DECLARE lassen sich SUB-Funktionen deklarieren und verwenden, ohne das diese bereits implementiert sind.
DECLARE [<prozedur>:]<name> ( <name>:<typ> [[; <name>:<typ> ]] ) [:<typ>]
Diese Angaben entsprechen somit exakt dem Kopf der jeweiligen Subfunktion. Bei der Verwendung von DECLARE müssen bei der zugehörigen Funktion genau die gleichen Argumente bezüglich Namen, Typ und Optionen verwendet werden. DECLARE kann hauptsächlich für folgende Zwecke verwendet werden: a. Deklaration einer lokalen Subfunktion Dies ermöglicht die Verwendung einer Funktion im Prozedurtext vor ihrer Definition.
Beispiel:
DECLARE test2 ( aID : int ) : int;
SUB test1 : int;
{
return(test2(215)); // dies ist ohne DECLARE nicht möglich
}
SUB test2 ( aID : int ) : int;
{
...
}
Die deklarierte Funktion muss dabei im Prozedurtext an späterer Stelle definiert sein, da die Prozedur sonst nicht übersetzt werden kann. b. Deklaration einer externen Subfunktion Dies ermöglicht die Verwendung einer Funktion aus einer anderen Prozedur, ohne das diese bereits vorhanden sein muss. Die Deklaration kann sich dabei auch in einem anderen Prozedurtext befinden, der mittels Include-Anweisung eingebunden wird.
Beispiel:
DECLARE Lib:CheckDate ( aLimit : date ) : logic;
main
{
if (Lib:CheckDate(tStart))
...
}
Bei der Ausführung der Prozedur muss allerdings die deklarierte Funktion in compilierter Form vorhanden sein, sonst erfolgt natürlich ein Laufzeitfehler. Socket-Befehle Mit diesen Funktionen können Daten über eine TCP/IP-Socket-Verbindung ausgetauscht werden.
1. SckConnect ( alpha1, word2 [, int3, int4, alpha5, word6] ) : int
-------------------------------------------------------------------
Socket-Verbindung aufbauen
Argumente : alpha1 - Host
word2 - Portnummer
int3 - Optionen (optional)
_SckOptDelay
_SckOptDontLinger
_SckProxySOCKSv4
_SckProxySOCKSv4a
_SckProxySOCKSv5
int4 - Timeout in Millisekunden (optional)
alpha5 - Proxy (optional)
word6 - Proxy-Portnummer (optional)
Resultat : int - Deskriptor / Fehlerwert
Mit SckConnect wird eine TCP/IP Verbindung zum Host (alpha1) auf Port (word2) aufgebaut. Der Host kann entweder als IP-Adresse (a.b.c.d) oder als Name angegeben werden. Bei der Verwendung des Namens ist zu beachten, das dieser auch auf eine IP-Adresse umgesetzt werden kann (normalerweise durch einen DNS-Server). Durch die Portnummer wird der Service des Zielhosts spezifiziert. Für viele Protokolle sind bestimmte Portnummern standardisiert (TELNET:23, SMTP:25, HTTP:80, POP3:110 etc.). Die Option _SckOptDelay schaltet den Nagle-Algorithmus des TCP/IP-Protokollstacks ein. Damit werden beim Versenden nach Möglichkeit mehrere kleine Datenpakete zu einem größeren Paket zusammengefasst. Dies ist standardmäßig abgeschaltet, da die Verwendung zu einer deutlich höheren Latenz führen kann. Da die Funktion SckWrite auch einen gepufferten Modus anbietet, braucht _SckOptDelay nur in Spezialfällen verwendet werden. Die Option _SckOptDontLinger schaltet den Linger-Modus des TCP/IP-Protokollstacks aus. Dadurch wird bei einem SckClose nicht mehr auf das Versenden noch eventuell ungesendeter Daten gewartet. Optional kann in (int4) ein Timeout definiert werden. Dieser Wert (in Millisekunden) wird beim Öffnen, Lesen und Schreiben des Sockets verwendet. Nach Ablauf des Timeouts wird entweder der Fehlerwert _ErrSckConnectFailed (beim Öffnen) oder _ErrSckTimeout (beim Lesen und Schreiben) zurückgeliefert. Standardmäßig wird ein Timeout von 5000ms verwendet. Durch die _SckProxy-Optionen kann ein SOCKS-Proxyserver verwendet werden, wobei die Versionen 4, 4a und 5 (ohne Authentifizierung) unterstützt werden. Bei Benutzung eines Proxys muss in (alpha5) der Name oder die IP-Adresse des Proxyservers angegeben werden. Der Port des Proxyservers kann optional in (word6) übergeben werden, standardmäßig wird 1080 verwendet. Bei Benutzung von SOCKS v4 (ohne a) ist zu beachten, das der Host in (alpha1) nur als IP-Adresse angegeben werden kann, da erst ab Version 4a eine Namensauflösung möglich ist. Mögliche Fehlerwerte: _ErrSckNoLib _ErrSckHostUnknown _ErrSckCreate _ErrSckConnectFailed _ErrSckProxyUnknown _ErrSckProxyRefused _ErrSckProxyConnectFailed _ErrSckProxyRead _ErrSckProxyWrite
2. SckClose ( int ) : int
-------------------------
Socket-Verbindung beenden
Argumente : int - Socket-Deskriptor
Resultat : int
Mit dieser Funktion wird eine mittels SckConnect geöffnete Verbindung wieder geschlossen. In (int1) wird der Socket-Deskriptor übergeben. Sofern der Deskriptor (int1) nicht definiert ist oder keinen Socket bezeichnet, erfolgt ein Laufzeitfehler. Mögliche Fehlerwerte: _ErrSckClose
3. SckInfo ( int1, int2 [, int3] ) : alpha
------------------------------------------
Socket-Informationen abfragen
Argumente : int1 - Socket-Deskriptor
int2 - Informationstyp
_SckAddrLocal
_SckAddrPeer
_SckHostName
_SckPortLocal
_SckPortPeer
_SckReadyRead
_SckVol
_SckVolRead
_SckVolWrite
int3 - optionaler Wert
Resultat : alpha
Mit diesem Befehl können Informationen über die Socket-Verbindung abgefragt werden. In (int1) wird der Socket-Deskriptor übergeben. Folgende Informationen sind abrufbar (int2): _SckAddrLocal Die lokale IP-Adresse. _SckAddrPeer Die IP-Adresse des Zielhosts. _SckHostName Der lokale Hostname. _SckPortLocal Der lokale IP-Port. _SckPortPeer Der IP-Port des Zielhosts. _SckVol Das übertragene Datenvolumen in Bytes. _SckVolRead Das empfangene Datenvolumen in Bytes. _SckVolWrite Das gesendete Datenvolumen in Bytes. _SckReadyRead Damit kann ermittelt werden, ob Daten zum Lesen vorhanden sind. In (int3) kann eine Wartezeit in Millisekunden angegeben werden, ansonsten wird 100ms lang gewartet. Das Resultat ist 0, wenn keine Daten vorhanden sind. Sofern der Deskriptor (int1) nicht definiert ist oder keinen Socket bezeichnet, erfolgt ein Laufzeitfehler.
4. SckRead( int1, int2, var3 [, int4] ) : int
---------------------------------------------
Daten vom Socket lesen
Argumente : int1 - Socket-Deskriptor
int2 - Optionen
_SckLine
_SckReadMax
var3 - Feld, Variable oder Array
int4 - Anzahl zu lesender Bytes (optional)
Resultat : int - Anzahl der gelesenen Bytes oder Fehlerwert
Mit dieser Funktion werden Daten vom Socket (int1) gelesen. In (var3) muss ein Datenbankfeld, eine Variable oder ein Array angegeben werden. Arrays aus Alphafeldern sind dabei nicht zulässig. Sofern (int4) nicht angegeben ist, wird die der Größe der Variablen (var2) entsprechende Anzahl von Bytes eingelesen. Der Wert in (int4) kann daher auch nicht größer als die Variable selbst sein. Das Resultat gibt die Anzahl der gelesenen Bytes zurück. Ist das Resultat negativ, so ist ein Fehler aufgetreten, und das Resultat enthält den Fehlerwert. Je nach Datentyp werden folgende Formate benutzt: alphanumerisch Es kann sowohl eine feste als auch eine variable Anzahl von Zeichen eingelesen werden. Bei einer festen Anzahl steht in (int4) die Anzahl der zu lesenden Bytes. Bei einer variablen Anzahl wird (int3) weggelassen und die Option _SckReadMax in (int2) verwendet. In diesem Fall werden soviele Zeichen eingelesen, wie momentan empfangen wurden oder bis die maximale Länge erreicht ist. Alternativ kann mit der Option _SckLine eine komplette Zeile gelesen werden, die durch CR/LF abgeschlossen ist. CR/LF wird dabei nicht in die Variable übertragen. Diese Option wird bei vielen zeilenorientierten Protokollen benutzt (SMTP, POP3, etc.). Gleitkomma Es werden 8 Bytes gelesen. Das Format entspricht dem IEEE-Double- Precision-Real-Format (64 Bit). Ganzzahlig kurz Es werden 2 Bytes gelesen. Das Format entspricht dem Intel- Wortformat (16 Bit - little endian). Ganzzahlig lang Es werden 4 Bytes gelesen. Das Format entspricht dem Intel- Doppelwortformat (32 Bit - little endian). Datum Es werden 4 Bytes gelesen. (Byte 1 = Tag, Byte 2 = Monat, Byte 3 = Jahr, Byte 4 ist grundsätzlich leer.) Zeit Es werden 4 Bytes gelesen. (Byte 1 = Stunde, Byte 2 = Minute, Byte 3 = Sekunde, Byte 4 = Hundertstelsekunde.) Logisch Es wird 1 Byte gelesen (Wert gleich 0 entspricht false, Wert gleich 1 entspricht true.) Sofern der Deskriptor (int1) nicht definiert ist oder keinen Socket bezeichnet, erfolgt ein Laufzeitfehler. Mögliche Fehlerwerte: _ErrSckSelect _ErrSckRead _ErrSckReadOverflow _ErrSckTimeout
5. SckWrite( int1, int2, var3 [, int4]) : int
---------------------------------------------
Daten auf den Socket schreiben
Argumente : int1 - Socket-Deskriptor
int2 - Optionen
_SckBuffered
_SckLine
var3 - Feld, Variable oder Array
int4 - Anzahl zu schreibender Bytes (optional)
Resultat : int - Anzahl der geschrieben Bytes oder Fehlerwert
Mit dieser Funktion werden Daten auf den Socket (int1) geschrieben. In (var2) muss ein Datenbankfeld, eine Variable oder ein Array angegeben werden. Arrays aus Alphafeldern sind dabei nicht zulässig. Sofern (int4) nicht angegeben ist, wird die der Größe der Variablen (var2) entsprechende Anzahl von Bytes geschrieben. Der Wert in (int4) kann daher auch nicht größer als die Variable selbst sein. Das Resultat gibt die Anzahl der geschriebenen Bytes zurück. Ist das Resultat negativ, so ist ein Fehler aufgetreten und das Resultat enthält den Fehlerwert. Mit der Option _SckLine in (int2) wird nach einem alphanumerischen Wert automatisch ein CR/LF gesendet. Mit der Option _SckBuffered werden die Daten zunächst zwischengespeichert und entweder beim Erreichen der Puffergrenze (4KB) oder durch den Aufruf von SckWrite mit einer Länge von 0 (int4) geschrieben. Dadurch werden die Daten von mehreren SckWrite-Aufrufen für das Versenden zusammengefasst. Sofern der Deskriptor (int1) nicht definiert ist oder keinen Socket bezeichnet, erfolgt ein Laufzeitfehler. Mögliche Fehlerwerte: _ErrSckSelect _ErrSckWrite _ErrSckTimeout 6. Fehlerwerte Für die Socket-Funktionen sind folgende Fehlerwerte definiert: _ErrSckNoLib Das TCP/IP-Protokoll konnte nicht initialisiert werden. _ErrSckHostUnknown Der Name des Zielhosts konnte nicht in eine IP-Adresse übersetzt werden. _ErrSckCreate Der Socket konnte nicht angelegt werden. _ErrSckConnectFailed Es konnte keine Verbindung zum Zielhost aufgebaut werden. _ErrSckSelect Bei der Socketabfrage ist ein Fehler aufgetreten (beispielsweise durch Abbruch der Verbindung). _ErrSckRead Beim Lesen des Sockets ist ein Fehler aufgetreten (beispielsweise durch Abbruch der Verbindung). _ErrSckReadOverflow Beim Lesen des Sockets mit der Option _SckLine ist die empfangene Zeile länger als die angegebene Variable. _ErrSckWrite Beim Lesen des Sockets ist ein Fehler aufgetreten (beispielsweise durch Abbruch der Verbindung). _ErrSckTimeout Beim Lesen oder Schreiben des Sockets ist ein Timeout aufgetreten. _ErrSckClose Der Socket konnte nicht geschlossen werden. _ErrSckProxyUnknown Der Name des Proxys konnte nicht in eine IP-Adresse übersetzt werden. _ErrSckProxyRefused Der Proxy hat den Verbindungswunsch abgelehnt. _ErrSckProxyConnectFailed Es konnte keine Verbindung zum Proxy aufgebaut werden. _ErrSckProxyRead Bei der Kommunikation mit dem Proxy ist ein Lesefehler aufgetreten. _ErrSckProxyWrite Bei der Kommunikation mit dem Proxy ist ein Schreibfehler aufgetreten. Befehle zum Aufruf einer DLL
1. DllLoad( alpha1, [, alpha2]) : int
-------------------------------------
DLL laden
Argumente : alpha1 - Pfad und Name der DLL
alpha2 - Name der Einstiegsfunktion (optional)
Resultat : int - Deskriptor oder -1
Der Befehl lädt die in (alpha1) übergebene DLL in den Speicher. Der Name der DLL wird ohne Dateierweiterung (.DLL) angegeben. In (alpha2) kann der Name der Einstiegsfunktion in der DLL angegeben werden. Wird keine Einstiegsfunktion angegeben, wird die Funktion C16_DLLCALL angesprungen. Als Resultat wird der Deskriptor der DLL zurückgegeben. Wurde die DLL oder die Einstiegsfunktion nicht gefunden wird -1 zurückgegeben. Nach dem Laden der DLL kann mit dem Befehl DllCall() die Einstiegsfunktion aufgerufen werden.
2. DllCall(int1[[,var]]) : int
------------------------------
Funktion einer DLL aufrufen
Argumente : int1 - Deskriptor der DLL
var - Argumente (optional)
Resultat : int - Rückgabewert der DLL-Funktion
Mit diesem Befehl kann die Einstiegsfunktion einer DLL aufgerufen werden. Die DLL muss zuvor mit dem Befehl DllLoad() geladen worden sein. Der von diesem Befehl zurückgegebene Deskriptor wird in (int1) übergeben. Der Einstiegsfunktion der DLL können bis zu 23 weitere Argumente übergeben werden. Die Argumente werden über Funktionen innerhalb der DLL ermittelt. Bei umfangreicheren DLLs sollte im ersten optionalen Argument ein Code zur Unterscheidung von verschiedenen Funktionen innerhalb der DLL übergeben werden. Die Einstiegsfunktion überprüft dann das erste Argument und entscheidet in einem CASE-Konstrukt, welche Funktion innerhalb der DLL aufgerufen werden soll.
3. DllUnload(int1)
------------------
DLL entladen
Argumente : int1 - Deskriptor der DLL
Mit diesem Befehl wird die in (int1) übergebene DLL entladen. Designer 1. Wird die Fokusreihenfolge für ein selektiertes Objekt verändert, so wird die Änderung nun auch im Designer sofort sichtbar (sofern sich mehrere Objekte überlappen). 2. Anzeige und Änderung der Objektbreite / Objekthöhe. Das Eigenschaften-Fenster erlaubt nun auch die Anzeige und Änderung der Objektbreite bzw. Objekthöhe eines oder mehrerer selektierter Objekte. Diese Option kann im Kontextmenü des Werkzeugfensters "Eigenschaften" über Klick mit rechter Maustaste auf die Liste der Eigenschaften eingestellt werden. Ist die Option ausgewählt, bleibt bei Änderung der Eigenschaften "AreaLeft" und "AreaTop" die Breite bzw. Höhe unverändert. 3. Bewegung des Selektionsrahmens mit der Tastatur. Wird die Option "Tastatursteuerung" in den Einstellungen des Designers ausgewählt, kann die Selektion auch über Pfeiltasten bewegt werden. Unter Zuhilfenahme der <Strg>-Taste wird der Selektionsrahmen um jeweils 3 Rastereinheiten bewegt, ansonsten um eine Rastereinheit. 4. Neuer Menüpunkt "Typisiert markieren" im Menü "Bearbeiten". Der Menüpunkt ist aktiviert, wenn mindestens ein Objekt (jedoch kein Frame-Objekt) selektiert ist. Ausgehend vom ersten selektierten Objekt werden alle weiteren Objekte gleichen Objekt-Typs und auf gleicher Ebene selektiert. 5. Kopieren und Einfügen im Designer Wird beim Verschieben der selektierten Objekte mit der Maus die Strg-Taste gedrückt, wird die Selektion nicht verschoben, sondern in gleicher Ebene kopiert. Sofern Objekte aus der Zwischenablage eingefügt werden und diese außerhalb des sichtbaren Bereichs des neuen übergeordneten Objektes liegen, wird die Selektion im übergeordneten Objekt zentriert. 6. Kopieren und Einfügen in den Objekteditoren (außer Objekt GanttGraph) Es besteht die Möglichkeit Objekte mit den gewohnten Tasten (Strg + X, Strg + C, ...) in die Zwischenablage zu kopieren. Diese bleiben auch nach Beenden des Objekteditors vorhanden. Objekte können somit von einem Objekteditor zu einem anderen (mit Objekten gleichen Typs) kopiert werden. Mit der Tastenkombination <Strg> + <+> können weitere Objekte zu der Zwischenablage hinzugefügt werden. Durch <Strg> + <C>, bzw. <Strg> + <Einfg> werden alle Objekte in der Zwischenablage entfernt und anschließend das selektierte Objekt zur Zwischenablage hinzugefügt. 7. Bei einem Doppelklick auf ein Ereignis im Werkzeugfenster "Eigenschaften" wird im Prozedur-Editor auf die dort angegebene Sub-Funktion positioniert. Prozedur-Editor 1. Prozedurleiste Die Prozedurleiste zeigt alle geöffneten Prozeduren über Registerreiter an. Durch Klicken auf einen Registerreiter kann eine Prozedur direkt aktiviert werden. Die Prozedurleiste kann am linken, rechten, oberen oder unteren Rand des Prozedur-Editors verankert werden. Die Verankerung wird über das Kontextmenü der Prozedurleiste eingestellt. Über einen Klick mit der rechten Maustaste auf die Prozedurleiste erscheint das Kontextmenü. Die Sortierung der Registerreiter (und der Fenster im Fenstermenü) findet ebenso über das Kontextmenü statt: - Nach Name aufsteigend Sortierung der Registerreiter nach dem Name des geöffneten oder neu angelegten Prozedurtextes in aufsteigender Reihenfolge. - Nach Name absteigend Sortierung der Registerreiter nach dem Name des geöffneten oder neu angelegten Prozedurtextes in absteigender Reihenfolge. - Nach Erstell-/Öffnen-Sequenz Sortierung der Registerreiter in der Reihenfolge, in der die Prozedurtexte geladen oder erstellt wurden. 3. Erweiterter Dialog "Suchen und Ersetzen" (<Strg> + F) - Registerseite "Ersetzen" Suchen und Ersetzen von Begriffen. - Registerseite "Gehe zu" Über diesen Dailog besteht die Möglichkeit direkt auf eine Zeile oder Sub-Funktion zu positionieren. 4. Liste aller Befehle und Konstanten Über die Tastenkombination <Strg> + <Leertaste> wird eine Liste aller verfügbaren Prozedurbefehle und Konstanten im Prozedur-Editor angezeigt. Der gewünschte Befehl kann über einen Doppelklick mit der linken Maustaste oder der <Return>-Taste in den Editor übernommen werden. Die Positionierung innerhalb der Liste richtet sich nach dem String, der sich vor dem Cursor befindet. 5. Anzeige der benötigten Argumente in Form einer Bubble-Help Nach Eingabe der "Klammer auf" nach dem Namen des Prozedurbefehls werden alle Argumente, die der jeweilige Befehl benötigt, in einer Bubble-Help angezeigt. 6. Tastenbelegung - Zum Wechseln zwischen geöffneten Prozeduren kann jetzt sowohl <Strg> + <F6>/<Strg> + <Shift> + <F6> als auch <Strg> + <TAB>/<Strg> + <Shift> + <Tab> verwendet werden. - Die Belegung für den Menüpunkt "Startprozedur ausführen" wurde von <Strg> + <F4> auf <Strg> + <R> geändert. Prozeduren im Prozedur-Editor können dadurch durch die windowskonforme Tastenkombination <Strg> + <F4> geschlossen werden. - Die Belegung für den Menüpunkt "Taschenrechner" wurde von <Strg> + <R> auf <Strg> + <Shift> + <R> geändert. Alle Fensterobjekte 1. Neue Eigenschaft "Custom" Die Eigenschaft dient zum Ablegen benutzerdefinierter Daten. Da die Eigenschaft alphanumerischen Typs ist, muss gegebenenfalls eine Konvertierung der abzulegenden Daten erfolgen. 2. Neues Ereignis EvtMenuContext für die Objekte TreeView, RecList, DataList und GanttGraph
sub EvtMenuContext
(
aEvt : event; // Ereignis
aHitTest : long; // Hittest-Code
aItem : long; // Spalte oder Gantt-Interval
aID : long; // RecID bei RecList, Zeile bei DataList
)
: logic
Bei diesen Objekten wird dieses Ereignis ausgelöst bevor das Kontextmenü geladen und angezeigt wird. Innerhalb der Ereignisprozedur kann nun je nach Bedarf ein anderes Menü über die Eigenschaft gesetzt werden. Der Rückgabewert entscheidet ob ein Menü angezeigt wird (true) oder nicht (false). Frame-Objekt 1. Die Eigenschaft "StyleFrame" besitzt folgende neue Ausprägungen: _WinWndDialogMin Ein minimierbares, jedoch nicht in der Größe veränderbares Fenster. _WinWndDialogMax Ein maximierbares, jedoch nicht in der Größe veränderbares Fenster. _WinWndDialogMinMax Ein minimierbares / maximierbares, jedoch sonst nicht in der Größe veränderbares Fenster. Notebook-Objekt 1. Neue Ausprägung der Eigenschaft "StyleRow". Die Ausprägung "_WinStyleRowScroll" erstellt ein Notebook-Objekt, das Schaltflächen zum Scrollen der Notebook-Registerreiter bietet. Die Schaltflächen sind jedoch nur vorhanden, wenn mehr Registerreiter vorhanden sind als sichtbar. 2. Neue Eigenschaft "TabStop". Ist diese Eigenschaft gesetzt, wird der Eingabefokus vom Notebook-Objekt direkt zum ersten untergeordneten Objekt geleitet, das den Eingabefokus erhalten kann. Durch Drücken von <TAB> oder <SHIFT> + <TAB> werden die untergeordneten Objekte zyklisch durchlaufen. 3. Neues Ereignis "EvtPageSelect".
sub EvtPageSelect
(
aEvt : event;
aPage : int;
aSelecting : logic
)
: logic
Das Ereignis wird ausgelöst, wenn eine Notebook-Seite (aPage) aktiviert oder die aktuelle Seite deaktiviert wird. - aPage Der Deskriptor der aktivierten oder deaktivierten Notebook-Seite. - aSelecting Gibt an, ob eine Seite aktiviert oder deaktiviert wurde. Das Ereignis wird zuerst von der Seite ausgelöst, die deaktiviert werden soll (sofern vorhanden) und dann von der Seite, die aktiviert werden soll (bevor diese sichtbar wird). Über den Rückgabewert kann entschieden werden, ob der Vorgang (aktivieren oder deaktivieren) unterbunden werden soll oder nicht. DateEdit-Objekt 1. Neue Eigenschaft "InputCheck". Die Eigenschaft steuert die Art und Weise, in der die Eingabe im Datumsfeld überprüft wird: - _WinInpCheckStrict Das Datum wird während des Eingabevorganges geprüft. Ein nicht korrektes Datum kann nicht eingegeben werden. - _WinInpCheckLeave Es können nur numerische Zeichen und der Dezimalpunkt eingegeben werden. Die Datumsprüfung (inkl. Bereichsprüfung) erfolgt erst, wenn das Feld verlassen wurde. 2. Neue Eigenschaft "DateWindow" Diese Eigenschaft gibt eine Bereichszahl für das Jahrhundert bei 2-stelligen Jahreseingaben an. Ist das eingegebene Jahr kleiner als DateWindow wird 2000 zum Jahr ansonsten 1900 addiert. GanttGraph-Objekt 1. Das Ereignis "EvtMouseItem" liefert für den Hit-Test-Code "_WinHitAxis" im GanttGraph nun folgende Zusatzinformationen: - in "aItem" wird das Axis-Objekt (die Achse) übergeben. - in "aRecID" wird die Nummer der Skala-Zelle (>= 0) übergeben, bzw. -1, wenn der Punkt, der zum Auslösen des Ereignisses führte im Titel der Achse liegt. 2. Neue Eigenschaft "StyleIvl" für Intervalle: Die Eigenschaft ist für das GanttGraph-Objekt unverändert. Bei Intervallen sind jedoch folgende Ausprägungen möglich: _WinStyleIvlGantt
übernimmt Stil, der beim GanttGraph eingestellt ist.
_WinStyleIvlStandard
wie gleichlautende Ausprägung beim GanttGraph-Objekt.
_WinStyleIvlNoArrows
wie gleichlautende Ausprägung beim GanttGraph-Objekt. Die Stile können mit folgenden Ausprägungen kombiniert werden: _WinStyleIvlOpenStart - zeichnet ein nach rechts offenes Intervall. _WinStyleIvlOpenEnd - zeichnet ein nach links offenes Intervall. Beispiel: tInterval->wpStyleIvl # _WinStyleIvlStandard | _WinStyleIvlOpenEnd Das Intervall wird links mit Pfeil gezeichnet, rechts jedoch ohne und es wird am rechten Rand eine gezackte Linie gezeichnet. 3. Neue und erweiterte Prozedurbefehle
WinGanttBoxAdd(obj, rect1[[, int2], alpha3]):int
------------------------------------------------
Farblich hervorgehobenen Bereich (Box) anlegen
Argumente: obj - Objekt
rect1 - Rechteck in Zellkoordinaten
int2 - Füllfarbe (optional)
alpha3 - Objektname (optional)
Resultat: int
Fügt dem Objekt GanttGraph eine Box (einen farblich hervorgehobenen oder schraffierten Bereich) hinzu. Die Koordinaten werden ab Zelle (0,0) gezählt. Fehlt int2, wird _WinColHighLight als Füllfarbe verwendet. alpha3 ordnet der Box einen Objektname zu (wpName). Das Resultat ist ein Deskriptor auf das Box-Objekt im erfolgreichen Fall (_WinTypeIvlBox), sonst 0.
WinGanttLineAdd(obj, int1[[[, int2], logic3], alpha4]):int
----------------------------------------------------------
Hilfslinie (Line) anlegen.
Argumente: obj - Objekt
int1 - Zellkoordinate
int2 - Linienfarbe (optional)
logic3 - Richtung (optional)
alpha4 - Objektname (optional)
Resultat: int
Fügt dem Objekt GanttGraph eine Line (Hilfslinie) hinzu. Der Parameter int1 gibt die Zellkoordinate an (abh. vom Parameter logic3), ab der die Hilfslinie gezeichnet wird. Fehlt logic3 oder ist logic3 true, wird eine horizontale Hilfslinie gezeichnet, ansonsten eine vertikale. Fehlt int2 wird _WinColHighLight als Linienfarbe benutzt. Das Resultat ist ein Deskriptor auf das Line-Objekt im erfolgreichen Fall (_WinTypeIvlLine), sonst 0. alpha4 ordnet der Line einen Objektname zu (wpName). Die Objekte vom Typ _WinTypeIvlBox und _WinTypeIvlLine besitzen die Eigenschaften "ColorBkg" und "Name". Box-Objekte besitzen darüber hinaus die Eigenschaft "BrushType".
WinGanttIvlRemove(obj)
----------------------
Mit diesem Befehl können Intervalle aus dem GanttGraph-Objekt entfernt werden. Der Befehl wurde so erweitert, dass je nach Objekt-Typ von "obj" unterschieden wird: _WinTypeInterval: Ein Intervall soll gelöscht werden. _WinTypeIvlBox : Ein Box-Objekt soll gelöscht werden. _WinTypeIvlLine : Ein Line-Objekt soll gelöscht werden. 4. Erweiterte Eigenschaft "ScalaLabels" Normalerweise ist die Ausgabe der Beschriftung zyklisch, sofern es sich nicht um ein Makro (z. B. $DATE) handelt. So erzeugt beispielsweise die Zuweisung ScalaLabels # "A,B,C" die Beschriftung "A,B,C,A,B,C,A,B,C,..." über die gesamte Achse des Gantt-Objekts. Soll dies verhindert werden, so kann dies per ScalaLabels # "A,B,C~" geschehen. Dies erzeugt nur die Beschriftung "A,B,C" ohne Wiederholung. 5. Neue Eigenschaft "BoundaryColor" Die Eigenschaft setzt die Farbe für das Begrenzungsrechteck. Standardmäßig ist diese hellrot. Bei Auswahl des Wertes _WinColUndefined wird kein Begrenzungsrechteck gezeichnet. TreeView-Objekt Ereignis beim Baum 1. EvtNodeExpand Dieses Ereignis wird beim Schliessen oder Öffnen eines Knotens ausgelöst.
sub EvtNodeExpand
(
aEvt : event; // Ereignis
aNode : int; // Knoten
aCollapse : logic; // schliessen oder öffnen
) : logic
2. EvtMouseItem Das Argument HitTest kann nun auf _WinHitTreeNode abgefragt werden. Eigenschaften des Baums 1. _WinPropCurrentInt Mit Hilfe dieser Eigenschaft kann der Deskriptor des aktuell selektierten Knotens ermittelt und gesetzt werden. Beim Setzen werden dazugehörige Parent-Knoten automatisch aufgeklappt. 2. _WinPropTreeFlags _WinTreeShowSelected - Selektierter Knoten ist markiert auch wenn der Baum den Fokus nicht hat Eigenschaften der Knoten 1. _WinPropNodeDynamic Bei einem Knoten wird normalerweise nur ein Pluszeichen zum Aufklappen angezeigt wenn auch Child-Knoten angehängt sind. Wird die Eigenschaft _WinPropNodeDynamic auf true gesetzt, wird das Pluszeichen immer angezeigt und es wird automatisch das Ereignis EvtNodeExpand zum Aufklappen aufgerufen. Hier können nun dynamisch die Einträge eingefügt werden. Beim Schliessen von "dynamischen"-Knoten werden alle Child-Knoten automatisch gelöscht, das kann verhindert werden in dem die Eigenschaft nach dem Anhängen auf false gesetzt wird. Prozedurbefehle
1. WinTreeNodeAdd(obj[, alpha1[, alpha2]] )
----------------------------------------
Knoten anlegen
Argumente: obj - Objekt
alpha1 - Name des Knotens (optional)
alpha2 - Titel des Knotens (optional)
Resultat: int
Fügt dem Baum oder einem anderen Knoten(obj) einen neuen Knoten zu. Name und Titel können direkt beim Aufruf bestimmt werden, alle weiteren Eingenschaften müssen mit Hilfe des Resultats (Knoten-Objekt) gesetzt werden. Im Fehlerfall wird 0 zurückgeliefert.
2. WinTreeNodeRemove(obj[, logic1])
----------------------------------
Knoten anlegen
Argumente: obj - Objekt
logic1 - Nur Child-Objekte entfernen
(default : false)
Resultat: keines
Enfernt einen Knoten aus dem Baum mit allen anhängenden Child-Knoten. Mit dem optionalen Parameter können sehr einfach nur die Child-Knoten entfernt werden. DataList-Objekt Das DataList-Objekt ähnelt im Aufbau dem RecList-Objekt, doch unterscheiden sie sich beide im Handling mit den Daten, die sie anzeigen. Das RecList-Objekt liest die darzustellenden Sätze jeweils nach Bedarf in den Hauptspeicher ein. Das DataList-Objekt arbeitet nur mit Informationen die im Hauptspeicher stehen (ähnlich wie beim TreeView-Objekt). Dabei repräsentieren die Zeilen einen entsprechenden "Datensatz", dem über die Spalten und deren ColumnType ein FeldTyp zugewiesen wird. Eigenschaften der Liste 1. _WinPropCurrentInt Mit dieser Eigenschaft kann eine Zeile selektiert oder die aktuelle Zeile abgefragt werden. Die erste Zeile fängt bei 1 an und mit 0 wird die Markierung entfernt. Prozedurbefehle
1. WinLstDatLineInfo(obj, int1)
-------------------------------
Zeilen-Informationen
Argumente: obj - Objekt
int1 - Modus
Resultat: int
Wird als Modus _WinLstDatInfoCount übergeben, so liefert dieser Befehl die Anzahl der Zeilen zurück, die sich momentan in der Liste befinden.
2. WinLstDatLineAdd(obj, var1[, int1])
--------------------------------------
Zeile hinzufügen
Argumente: obj - Objekt
var1 - Daten
int1 - Zeile (default : _WinLstDatLineLast)
Resultat: int
Mit (var1) kann man die erste Zelle der Zeile direkt setzen. (var1) kann von verschiedenem Typ sein, nur muss es mit dem ColumType der 1. Spalte übereinstimmen. Bei der Zeile können entweder die Zeile direkt angegeben werden oder eine der beiden Konstanten : _WinLstDatLineCurrent Eine Zeile wird hinter die aktuelle Zeile eingefügt _WinLstDatLineLast Eine Zeile wird am Ende angefügt Als Resultat wird die neue Zeilennummer zurückgeliefert.
3. WinLstDatLineRemove(obj, int1)
---------------------------------
Zeile entfernen
Argumente: obj - Objekt
int1 - Zeile
Resultat: logic
Bei der Zeile können entweder die Zeile direkt angegeben werden oder eine der drei Konstanten: _WinLstDatLineCurrent - die aktuelle Zeile wird gelöscht _WinLstDatLineLast - die letzte Zeile wird gelöscht _WinLstDatLineAll - alle Zeilen werden gelöscht
4. WinLstCellSet(obj, var1[, int1[, int2]])
-------------------------------------------
Zelle setzen
Argumente: obj - Objekt
var1 - Daten
int1 - Spalte (default : 1)
int1 - Zeile (default : _WinLstDatLineLast)
Resultat: logic
Mit var1 wird die angegebene Zelle der Zeile gesetzt. var1 kann von verschiedenem Typ sein, nur muss es mit dem ColumType der angegebenen Spalte übereinstimmen. Bei der Zeile können entweder die Zeile direkt angegeben werden oder eine der beiden Konstanten : _WinLstDatLineCurrent - aktuelle Zeile wird geändert _WinLstDatLineLast - letzte Zeile wird geändert
5. WinLstCellGet(obj, var var1[, int1[, int2]])
-----------------------------------------------
Zelle lesen
Argumente: obj - Objekt
var1 - Daten
int1 - Spalte (default : 1)
int1 - Zeile (default : _WinLstDatLineLast)
Resultat: logic
In var1 wird der Inhalt derangegebene Zelle der Zeile gelesen. Die variable var1 kann von verschiedenem Typ sein, nur muss sie mit dem ColumType der angegebenen Spalte übereinstimmen. Bei der Zeile können entweder die Zeile direkt angegeben werden oder eine der beiden Konstanten : _WinLstDatLineCurrent - aktuelle Zeile wird gelesen _WinLstDatLineLast - letzte Zeile wird gelesen RecList-Objekt Eigenschaften der Liste 1. _WinLstFlags Diese Eigenschaft hat folgende Option: _WinLstRecFocusTermReset Wenn in der Eigenschaft LstFlags der Wert _WinLstRecFocusTermReset gesetzt ist (default), wird bei einem Focuswechsel von der RecList zu einem anderen Objekt der selektierte Datensatz in die Feldpuffer übertragen. Ist dieses Verhalten nicht gewünscht bzw. das Flag ist nicht gesetzt, kann der selektierte Datensatz über die Eigenschaft "DbRecID" ermittelt werden. RecList- und DataList-Objekt Eigenschaften der Liste 1. _WinPropColFg Standard-Vordergrundfarbe, wenn bei der Spalte _WinColParent angegeben wird. 2. _WinPropColBkg Standard-Hintergrundfarbe, wenn bei der Spalte _WinColParent angegeben wird. 3. _WinPropColBkgApp Mit diese Farbe wird der Bereich gezeichnet der außerhalb der Spalten liegt. (4.3 -> _WinPropColBkg) Eigenschaften von Spalten 1. _WinPropClmColFocusBkg _WinPropClmColFocusFg _WinPropClmColFocusOffBkg _WinPropClmColFocusOffFg Mit Hilfe dieser Eigenschaften können die Zellen einer selektierten Zeile individuell eingefärbt werden. Idealerweise im Ereignis EvtLstDataInit. Toolbar-Objekt / ToolbarButton-Objekt 1. Neue Eigenschaft "MenuKey" für ToolbarButton. Die Eigenschaft kann in Analogie zu MenuItem-Objekten gesetzt werden. Es ergeben sich jedoch folgende Bedingungen: Eindeutigkeit 1. Eine durch MenuKey zugewiesene Funktionstaste muss innerhalb des Toolbar-Objektes eindeutig sein. 2. Sind mehrere Toolbar-Objekte in einem Frame vorhanden, so muss jede Funktionstaste über alle Toolbar-Objekte des Frames eindeutig sein. 3. Hat ein Frame-Objekt eine oder mehrere Toolbars und eine Menüleiste, so kann eine Doppelbelegung einer Funktionstaste erfolgen (die Taste x kann sowohl in einer der Toolbars als auch im Menü definiert sein). Dies ist sinnvoll, da Menüs globale Resourcen sind und unabhängig von einem Frame-Objekt editiert werden können. 4. Die Regeln 1-3 gelten auch für AppFrame-Objekte. 5. Die Regeln 1 und 2 gelten für MdiFrame-Objekte. Reihenfolge der Ausführung von Funktionstasten +--- Menü | +--- AppFrame | | | +--- MdiFrame | +--- Frame Beim Betätigen einer Funktionstaste greift folgende Such-Reihenfolge: 1. Menü Ist die gesuchte Taste im Menü definiert, ist die Suche beendet, ansonsten wird mit Schritt 2 fortgefahren. 2. Toolbar(s) im Frame-Objekt oder AppFrame-Objekt. Ist die gesuchte Taste in einer Toolbar des Frame-Objektes definiert, ist die Suche beendet. Ansonsten ist die Taste nicht definiert. Handelt es sich um ein AppFrame-Objekt (mit geladenen MdiFrame-Objekten), wird mit Schritt 3 fortgefahren. 3. Toolbar(s) im MdiFrame-Objekt. Ist die gesuchte Taste in einer Toolbar des MdiFrame-Objektes ist die Suche beendet. Im anderen Fall ist die Funktionstaste nicht definiert. Die Suchreihenfolge ist insbesondere bei Mehrfachbelegungen wichtig. Button-Objekt 1. Neue Eigenschaft "ReturnKeyClick" Wird die Eigenschaft gesetzt, kann unabhängig der Eigenschaften "Default" und "EmulateKeys" der Button mit der Return-Taste aktiviert werden, sofern er den Fokus besitzt. Datenstruktur Im Designer kann über die Menüpunkte "Bearbeiten - Datenstruktur" die Datenstruktur erstellt und geändert werden. Ein paralleles Bearbeiten der Datenstruktur aus dem CONZEPT 16-Client und dem Designer heraus ist nicht möglich. OEM-Kit
Das Ausspielen der Dialoge und Dialogmenüs kann direkt über das OEM-Kit vorgenommen werden. Über "Parameter" können Dialoge und Dialogmenüs selektiv und nach Datumsbereich gesichert und eingelesen werden. Dialoge und Dialogmenüs sind ebenfalls Elemente einer Definitionsgruppe und können mit einer Definition gesichert und in eine andere Datenbank eingelesen werden. Nachselektion Bei Nachselektionen können jetzt auch Vorauswahlen verwendet werden.