Zum Hauptinhalt springen
Unlisted page
This page is unlisted. Search engines will not index it, and only users having a direct link can access it.

Update-Beschreibung des Clients 4.5

Update-Beschreibung des Clients 4.5 Die Update-Beschreibung informiert über Änderungen in den jeweiligen Releaseständen.

  • CONZEPT 16-Release 4.5.03 - 2002-09-16

GanttGraph

Ein GanttGraph kann bis zu vier Views beinhalten. Diese können vom Anwender durch Ziehen der "Splitter" erzeugt oder zerstört werden.

  • View ermitteln Ein View kann ermittelt werden, indem der Befehl WinInfo() angewendet wird: tHdlView # WinInfo(_WinObject, ViewNo, _WinTypeGanttView) Durch den Aufruf wird das View mit der Nummer "ViewNo" (im Bereich von 1 bis 4) ermittelt. Der Deskriptor ist so lange gültig, bis das View durch Ziehen des "Splitters" durch den Benutzer zerstört wird. Die View-Nummer ist abhängig von der Anzahl und Anordnung der Views im Gantt:

  • 1

    • 1 2
  • 1 2

    • 1 2 3 4
  • View-Eigenschaften Folgende Eigenschaften können prozedural gelesen oder gesetzt werden: Die Eigenschaften CellOfsHorz und CellOfsVert geben die aktuellen Zellursprünge (Scrollposition) im View zurück. Dies ist ein Unterschied zu den gleichnamigen Eigenschaften im GanttGraph- Objekt. Dort geben die Eigenschaften immer nur den zuvor gesetzten Wert zurück. Die Eigenschaft "AutoUpdate" muss bei mindestens einem der Objekte GanttGraph oder View auf true gesetzt sein.

    • Name
    • Custom
    • CellOfsHorz
    • CellOfsVert
    • AutoUpdate

Application-Objekt / WinDialogBox

Das Application-Objekt wurde um zwei neue Eigenschaften "DialogBoxLeft" und "DialogBoxTop" erweitert. Diese definieren die horizontale und vertikale Position von Dialog-Boxen, nachfolgender "WinDialogBox"-Aufrufe.

Enthalten beide Eigenschaften den Wert "-1", so übernimmt das Betriebssystem die Positionierung der Dialogbox. Enthalten beide Eigenschaften einen Wert >= 0, wird die Dialogbox entsprechend den Koordinaten positioniert. Liegen die Positionen außerhalb des primären Bildschirmes, wird die Dialogbox entsprechend justiert.

TreeView-Objekt / WinTreeNodeAdd / WinTreeNodeRemove

  • WinTreeNodeAdd WinTreeNodeAdd(obj[, alpha1[, alpha2[, int3]]]) Der Prozedurbefehl wurde um den Parameter (int3) erweitert. Ist dieser Parameter vorhanden, ist folgende Unterscheidung zu beachten:

  • int3 = 0: Der Knoten wird am Ende hinzugefügt (default).

  • int3 > 0: Der Knoten wird unmittelbar vor dem durch (int3) referenzierten Knoten angelegt. (obj) und (int3) müssen dieselben Elternknoten besitzen.

  • WinTreeNodeRemove Dem Prozedurbefehl WinTreeNodeRemove kann im ersten Parameter ein TreeView-Objekt übergeben werden. Es werden dann alle Node-Objekte im TreeView gelöscht. Der zweite Parameter wird hierbei ignoriert. Beispiel: $TreeView->WinTreeNodeRemove();

Suchpfad ermitteln / WinSearchPathGet

WinSearchPathGet() : int

Zum Ermitteln des Suchpfades steht der neue Prozedurbefehl WinSearchPathGet() zur Verfügung. Er liefert einen Deskriptor auf den zuletzt mit WinSearchPath() gesetzten Suchpfad oder Null, wenn kein Suchpfad gesetzt ist.

Designer-Prozedur-Editor

Im Prozedur-Editor des Designers ist es möglich, spezielle Kommentare einzugeben, die bei Doppelklick ein Shell-Kommando ausführen. Dadurch ist es z. B. möglich, direkt auf eine Web-Adresse zu verweisen oder direkt eine E-mail zu versenden.

Beispiel:

// ***************************************************
// * *
// * Funktion : Hypothenuse berechnen *
// * Autor : <: mailto: pythagoras@samos.gr :> *
// * Beschreibung: <: c:\dokumente :> *
// * Web : <: www.pythagoras.gr :> *
// * *
// ***************************************************

Das in <:...:> eingefasste Shell-Kommando wird ausgeführt, wenn ein Doppelklick auf das Kommando erfolgt. Pro Zeile ist ein Kommando erlaubt, die Zeile muss außerdem eine Kommentarzeile sein, die durch // eingeleitet wird.

Konfigurationsdatei (c16.cfg)

In der Konfigurationsdatei kann die zu verwendende Windows-Codepage mit dem Eintrag codepage=<Codepage> angegeben werden. Ist in der Konfigurationsdatei eine Codepage definiert wird diese Codepage, unabhängig des eingestellten Gebietsschemas (Ländereinstellungen-Gebietsschema) unter Windows, von CONZEPT 16 verwendet. Damit bei der grafischen Druckausgabe die Zeichenumsetzung vorgenommen werden kann, muss bei der Angabe des Fonts die gewünschte Codepage angegeben werden.

Soll beispielsweise der türkische Zeichensatz verwendet werden, sind folgende Einstellungen notwendig:

  • Angabe des Codepage in der Konfigurationsdatei (codepage=1254)
  • Angabe des Codepage bei Fontdefinition (<27>F(100,Arial,1254))

Die Angabe der Windows-Codepage in der Konfigurationsdatei ist dann notwendig, wenn unter Windows nicht das gewünschte Gebietsschema eingestellt ist. Die Angabe der Codepage bei der grafischen Druckausgabe ist grundsätzlich notwendig. Es ist darauf zu achten, dass beim Arbeiten in der gleichen Datenbank alle CONZEPT 16-Clients auch die gleiche Codepage verwenden.

Folgende Codepages werden zur Zeit unterstützt: 1250 - (Latin 2 Central Europe) 1254 - (Latin 5 Turkish).

  • CONZEPT 16-Release 4.5.02 - 2002-09-02

Datentyp caltime

Dieser Datentyp enthält Informationen zum Datum und zur Uhrzeit. Eine Variable dieses Typs verfügt über mehrere Eigenschaften und Methoden. Eine Variable wird wie folgt definiert:

cMoment : caltime;

Eigenschaften

Eigenschaften der Variablen werden mit dem Operator "->" (<Variablenname>-><Eigenschaft>) angesprochen. Folgende Eigenschaften sind vorhanden:

  • vpYear Jahreszahl
  • vpMonth Monat
  • vpDay Tag
  • vpHours Stunden
  • vpMinutes Minuten
  • vpSekonds Sekunden
  • vpMilliseconds Millisekunden
  • vpDate Datumswert
  • vpTime Zeitwert

Folgende Eigenschaften können nur ausgelesen und nicht gesetzt werden:

  • vpLeapYear Schaltjahr
  • vpWeek Kalenderwoche
  • vpWeekYear Jahr der Kalenderwoche
  • vpDayOfWeek Wochentag
  • vpBiasMinutes Zeitzonenabweichung
info

Die Eigenschaft BiasMinutes kann nur abgefragt werden, wenn die Methode vmSystemTime() unmittelbar zuvor aufgerufen wurde.

Methoden

Die Eigenschaften einer Variablen können mit Methoden verändert werden. Die Methoden werden mit dem Operator "->" (<Variablenname>-><Methode>) aufgerufen. Folgende Methoden sind für diesen Datentyp definiert:

  • vmSystemTime() Systemzeit setzen
  • vmMonthModify() Monat ändern
  • vmDayModify() Tag ändern
  • vmSecondsModify() Uhrzeit ändern

Neue Methoden

vmSystemTime()

Diese Methode kann auf Variablen der Typen caltime, date und time angewendet werden. Variablen vom Typ caltime wird die Systemzeit und das Systemdatum, Variablen vom Typ date nur das Systemdatum und Variablen vom Typ time nur die Systemzeit zugewiesen.

vmDayModify(int1)

Mit dieser Methode wird eine Variable vom Typ caltime oder date verändert. Das Datum wird um die in (int1) angegebenen Tage erhöht. Es sind dabei auch negative Werte zulässig, um das Datum zu verkleinern.

Wird durch die Veränderung eine Monats- oder Jahresgrenze überschritten, wird ebenfalls der Monat bzw. das Jahr angepasst.

dRueckgabe->vmSystemTime();
dRueckgabe->vmDayModify(30); // Rückgabe in 30 Tagen

vmMonthModify(int1)

Mit dieser Methode wird eine Variable vom Typ caltime oder date verändert. Das Datum wird um die in (int1) angegebenen Monate erhöht. Es sind dabei auch negative Werte zulässig, um das Datum zu verkleinern.

Wird durch die Veränderung eine Jahresgrenze überschritten, wird ebenfalls das Jahr angepasst. Existiert ein Tag nicht in dem veränderten Monat (zum Beispiel 30. Februar), wird das Datum auf den letzten Tag des Monats gesetzt (je nach Jahr der 28. oder 29. Februar).

dDate # 31.03.2000;
dDate->vmMonthModify(-1); // Datum vor einem Monat
// dDate wird auf den 29. Februar gesetzt

vmSecondsModify(int1)

Mit dieser Methode wird eine Variable vom Typ caltime oder time verändert. Die Uhrzeit wird um die in (int1) angegebenen Sekunden erhöht. Es sind dabei auch negative Werte zulässig, um die Uhrzeit zu verkleinern.

Wird bei einer Variablen vom Typ caltime durch die Veränderung eine Tages-, Monats- oder Jahresgrenze überschritten, wird ebenfalls der Tag, der Monat und das Jahr angepasst.

Anwenden von Methoden auf bestehende Datentypen

Die Methoden vmSystemTime(), vmMonthModify() und vmDayModify() können für den Datentyp date aufgerufen werden. Ebenso stehen die Methoden vmSystemTime() und vmSecondsModify() für den Datentyp time zur Verfügung.

Der Aufruf der Methoden erfolgt über <Varibalenname>-><Methode>.

Beispiel:

local
{
tTime : time;
}

{
tTime->vmSystemTime();
}

Erweiterte Verwendung der Konstanten NULL

Variablen und Felder in CONZEPT 16 können mit dieser Konstanten geleert werden. Zusammengesetzte Datentypen (zum Beispiel caltime) können auf diese Weise mit einer Anweisung geleert werden.

Der Bezeichner eines Arrays kann nicht auf den Wert NULL gesetzt werden.

Beispiele:

local
{
iHdlFrame : int;
fZeichensatz : font;
rRechteck : rect;
iFeld : int[20];
}

{
...
iHdlFrame # NULL;
fZeichensatz # NULL;
rRechteck # NULL;
iFeld # NULL; // unzulässig!
...
}

Erweiterung im Dialog-Assistenten

Der Zustand des Eigenschaften-Fensters wird benutzerbezogen abgespeichert. Beim erneuten Aufrufen des Dialog-Assistenten werden die gleichen Eigenschaften-Gruppen und Ereignis-Gruppen geöffnet bzw. geschlossen dargestellt.

  • CONZEPT 16-Release 4.5.01 - 2002-08-22
info

Zum Betrieb der Client-Version 4.5.01 wird der CONZEPT 16-Server ab Version 1.7.03 benötigt.

Eigenschaft MenuKey

Der Eigenschaft MenuKey kann nun auch die Escape-Taste zugeordnet werden. Im Objekteditor von MenuItem- oder ToolbarButton-Objekten steht die Escape-Taste in der Liste der Funktionstasten zur Verfügung. Zum Setzen der Escape-Taste zur Laufzeit wird die Konstante _WinKeyEsc verwendet.

COM-Schnittstelle

Beim Aufruf von Methoden eines COM-Objektes, die optionale Argumente erwarten, kann mit dem Schlüsselwort NULL ein Argument übersprungen werden.

  • CONZEPT 16-Release 4.5.00 - 2002-08-14

Zum Betrieb der Version 4.5.00 wird der Server ab Version 1.7.01 benötigt!

Unterstützung der COM-Schnittstelle

Das Component Object Model (COM) ist eine Software Architektur, die es ermöglicht, über eine binäre Schnittstelle auf Anwendungen und Komponenten von verschiedenen Herstellern zu zu greifen. Es beruht auf einem objektbasierenden Modell, das zwischen Schnittstelle und Implementierung trennt. Die Funktionalität wird über eine Sammlung von Objekten angesprochen. Diese Objekte bestehen aus Eigenschaften, Methoden und Ereignissen.

info

In CONZEPT 16 werden COM-Ereignisse nicht unterstützt. Von dieser Ausnahme sind auch Eigenschaften und Methoden betroffen, die keinen entsprechenden CONZEPT 16-Variablen Typ als Argument erwarten oder als Resultat zurückgeben.

Die Objekte sind hierarchisch aufgebaut. Somit kann ein Objekt eine Sammlung von Unterobjekten beinhalten. Statt dafür jeweils einen Befehl zu implementieren, wird auf diese Objekte über eine Eigenschaft zugegriffen, die als Resultat ein Container-Objekt zurückliefert.

Durch das Auslesen von Eigenschaften können somit der Zustand, Informationen oder wiederum andere Objekte abgefragt werden. Durch das Setzen von Eigenschaften kann das Verhalten der Objekte gesteuert werden. Methoden sind mit Funktionsaufrufen vergleichbar, wobei der Unterschied zum Setzen einer Eigenschaft nur vom Design der Komponente bestimmt ist.

COM-Objekte werden in CONZEPT 16 über Deskriptoren abgebildet. Die Eigenschaften werden über den Befehl ComPropSet() gesetzt und über den Befehl ComPropGet() ausgelesen. Parallel dazu wird auch die Kurzschreibweise über Konstanten unterstützt. Die Konstanten zu Eigenschaften von COM-Objekten setzen sich wie folgt zusammen:

cp<Typ><Eigenschaft>

<Typ> ist eine Abkürzung des Datentypes der Eigenschaft. Folgende Kürzel können angegeben werden:

  • <Typ>: CONZEPT 16-Typ COM Typ
  • a: alpha String
  • f: float Float
  • h: Deskriptor Objekt oder Klasse
  • i: int Long oder Single
  • l: logic Boolean
  • x: Extended Array

<Eigenschaft> ist der Name der Eigenschaft eines bestimmten Objektes. Wird eine Eigenschaft gesetzt, die nur gelesen werden kann, erfolgt bei der Verwendung der Konstanten ein Laufzeitfehler. Der Befehl ComPropSet() liefert dagegen false als Ergebnis zurück.

Existiert eine angegebene Eigenschaft nicht, wird bei Verwendung der Konstanten ein Laufzeitfehler generiert. Werden die Befehle ComPropSet() oder ComPropGet() verwendet, wird der Wert false zurückgegeben.

Erweiterte Eigenschaften (x) können nur über Konstanten angesprochen werden. Weitere Informationen befinden sich im Abschnitt Erweiterte Eigenschaften.

Methoden werden mit dem Befehl ComCall() aufgerufen und sind immer Bestandteil eines Objektes.

Folgende Befehle stehen zur Verwendung der COM-Schnittstelle zur Verfügung.

  • ComOpen(alpha1[, int2]):obj Dieser Befehl öffnet eine Verbindung zu einer COM-Schnittstelle In (alpha1) wird der Name der Applikation und des ersten Objektes angegeben. In (int2) kann _ComAppCreate angegeben werden, um die Applikation zu starten. Wird der Parameter nicht angegeben, wird die Verbindung zu einem bereits laufenden Programm hergestellt. Der Befehl gibt den Deskriptor zum COM-Objekt zurück.
  • ComInfo(obj, int1):alpha Informationen zu einem COM-Objekt ermitteln Mit diesem Befehl können die Fehlermeldungen der COM-Schnittstelle ermittelt werden. Diese Fehlermeldungen sind keinem Objekt zugeordnet, in (obj) muss daher 0 übergeben werden. Die Fehlermeldungen werden entweder als Code (int1 = _ComInfoErrCode ) oder als Fehlertext (int1 = _ComInfoErrText ) zurückgegeben.
  • ComPropGet(obj, alpha1, var2[, int3, ..., int6]):logic Eigenschaft eines COM-Objektes abfragen Der Deskriptor des COM-Objektes wird in (obj) und der Name der Eigenschaft in (alpha1) übergeben. Der Wert der Eigenschaft steht anschließend in der in (var3) übergebenen Variablen. Die Variable muss den gleichen Typ wie die Eigenschaft besitzen. Zum Auslesen von erweiterten Eigenschaften werden die Parameter (int3) bis (int6) benötigt. Zum Auslesen einer Eigenschaft kann ebenfalls eine verkürzte Schreibweise mit Konstanten verwendet werden (siehe oben).
  • ComPropSet(obj, alpha1, var2[, int3, ..., int6]):logic Eigenschaft eines COM-Objektes setzen Der Deskriptor des COM-Objektes wird in (obj) und der Name der Eigenschaft in (alpha1) übergeben. Der neue Wert der Eigenschaft wird in (var3) übergebenen. Die Variable muss den gleichen Typ wie die Eigenschaft besitzen. Zum Setzen von erweiterten Eigenschaften werden die Parameter (int3) bis (int6) benötigt.
info

Zu diesem Thema sind in der Beispieldatenbank (DLG45-00.ca1) mehrere Beispiele (Prozeduren: ComExel, ComMapPoint, ComOutlook, ComWord1, ComWord2) enthalten.

Direktes Editieren von RecList- und DataList-Objekten

Daten, die innerhalb einer Liste angezeigt werden, können jetzt direkt in der Liste editiert werden. Zum Editieren eines Feldes wird der Befehl WinLstEdit() aufgerufen.

WinLstEdit(obj, int1[, int2]):obj

In (obj) und (int1) werden die Deskriptoren der Liste und der Spalte angegeben. Der Befehl erzeugt ein Eingabeobjekt in der Liste. Durch die Optionen kann entschieden werden, ob das Eingabeobjekt mit einem ein- ( _WinLstEditLst ) oder zweispaltigen ( _WinLstEdirLstAlpha ) DataListPopup versehen wird.

Die Optionen können mit _WinLstEditClearChanged kombiniert werden. Diese Option setzt das Changed-Flag zurück, dass bei dem Ereignis EvtLstEditFinished übergeben wird.

Das DataListPopup -Objekt kann im Ereignis EvtLstEditStart gefüllt werden. Das Ereignis wird beim Aufruf des Befehls ausgeführt.

sub EvtLstEditStart
(
aEvt : event; // Ereignis
aColumn : int; // Spalte
aEdit : int; // Eingabefeld
aList : int; // Datalist
) : logic

In aEvt werden die Ereignisinformationen übergeben. In aColumn und aEdit stehen die Deskriptoren der Spalte und des erzeugten Edit-Objektes. Wurde beim Befehl WinLstEdit() die Option _WinLstEditLst oder _WinLstEditLstAlpha angegeben, steht in aList der Deskriptor des DataListPopup -Objektes, sonst 0.

Der Rückgabewert wird nicht ausgewertet.

Das Ereignis EvtLstEditCommit wird ausgelöst, wenn der Editiermodus verlassen wird.

sub EvtLstEditCommit
(
aEvt : event; // Ereignis
aColumn : int; // Spalte
aKey : int; // Taste
aFocusObject : int; // Deskriptor des Fokus-Objektes
) : logic

In aEvt werden die Ereignisinformationen übergeben. In aColumn steht der Deskriptor der Spalte. aKey enthält die Taste, mit der das Eingabe-Objekt verlassen wurde. Wurde das Eingabe-Objekt durch Klicken mit der Maus verlassen, wird hier 0 übergeben. Der Deskriptor des Objektes, das als nächstes den Fokus erhält, steht dann in aFocusObject. Befindet sich das Objekt nicht innerhalb der Applikation, wird hier ebenfalls 0 übergeben.

Der Rückgabewert entscheidet darüber, ob der Wert im Edit-Objekt in die Liste übernommen wird. Wird true zurückgegeben, erscheint der Wert in der Liste und das Change-Flag wird gesetzt. Wurde ein Datensatz editiert, sind die Änderungen noch nicht in der Datenbank gespeichert.

Nach dem Ereignis EvtLstEditCommit wird das Ereignis EvtLstEditFinished aufgerufen.

sub EvtLstEditFinished
(
aEvt : event; // Ereignis
aColumn : int; // Spalte
aKey : int; // Taste
aRecID : int; // Datensatz-ID
aChanged : logic; // true, wenn eine Änderung vorgenommen wurde
) : logic

In aEvt werden die Ereignisinformationen übergeben. In aColumn steht der Deskriptor der Spalte. aKey enthält die Taste, mit der das Eingabe-Objekt verlassen wurde. Wurde das Feld eines RecList -Objektes editiert, steht in dem Parameter aRecID die Datensatz-ID des veränderten Datensatzes, sonst 0. Über den Parameter aChanged kann ermittelt werden, ob neue Daten eingegeben wurden.

In diesem Ereignis kann zum Beispiel der veränderte Datensatz gespeichert oder mit dem Befehl WinLstEdit() die nächste Spalte editiert werden.

info

Zu diesem Thema sind in der Beispieldatenbank (DLG45-00.ca1) mehrere Beispiele (Prozeduren: DataListEdit, RecListEdit) enthalten.

Windows XP-Darstellung

Ab der Version 4.5 werden Objekte im Windows XP-Stil dargestellt. Die Ausgabe kann über die Eigenschaft StyleTheme des Application-Objektes (siehe unten) beeinflusst werden.

info

Zu diesem Thema ist in der Beispieldatenbank (DLG45-00.ca1) ein Beispiel (Prozedur: TileScheme) enthalten.

256 Farben in Tile-Grafiken

Der Import von Tile-Grafiken unterstützt jetzt auch 256 Farben-Grafiken. In den aus der Version 4.4 bekannten Eigenschaften kann der Import-Name des Grafik-Tiles wie gewohnt angegeben werden (prozedural oder im Eigenschaftsfenster).

Das entsprechende Objekt lädt dann das Grafik-Tile für die Darstellung aus der Datenbank. Dieses Tile wird dann unabhängig von der aktuellen Farbtiefe des Bildschirmes benutzt.

In manchen Fällen ist es allerdings notwendig, dass eine Applikation auch auf Systemen läuft, die mit 256 oder 16 Farben betrieben werden. In solchen Fällen sollten Tiles mit 16 Farben verwendet werden.

CONZEPT 16 unterstützt die Umstellung der verwendeten Tiles wie folgt: Bei einem System mit 256 oder weniger Farben wird das Tile, wie es in der Eigenschaft eingetragen ist, geladen. Bei mehr als 256 Farben wird ein Bild mit dem angegebenen Importnamen erweitert um .hcm (High Color Mode) geladen. Ist keine Grafik unter dem Namen <Importname>.hcm vorhanden, wird die Tile-Grafik ohne Erweiterung geladen.

Beispiel:

Es wurden zwei Tile-Grafiken für das Menü importiert. Diese besitzen den Importname "tilemenu" und "tilemenu.hcm". Durch die Anweisung TileNameMenu # 'tilemenu' wird die Tile-Grafik "tilemenu" im 16- und 256-Farben-Modus benutzt und die Tile-Grafik "tilemenu.hcm" in allen höherauflösenden Grafikmodi.

info

Eine mit der Endung "hcm" importierte Tile-Grafik muss nicht notwendigerweise 256-Farben besitzen. Es kann sich z. B. auch um eine andere Darstellung der 16-Farben Grafik-Tiles handeln.

Zu den bereits in CONZEPT 16 vordefinierten Tile-Grafiken (wie z. B. _WinImgNew ) in 16 Farben, gibt es nun auch solche mit 256 Farben, die auch nach dem momentan eingestellten Grafikmodus automatisch verwendet werden.

Soll die Ausgabe von 256-Farbe Tiles teilweise oder ganz unterdrückt werden, kann das Application-Objekt benutzt werden. Die Einstellungen erfolgen in der Eigenschaft ColTheme (siehe unten).

info

Zu diesem Thema ist in der Beispieldatenbank (DLG45-00.ca1) ein Beispiel (Prozedur: TileScheme) enthalten.

Application-Objekt

Über den Befehl WinInfo() kann mit dem Parameter _WinApplication das Applikations-Objekt ermittelt werden. Der Rückgabewert ist ein Deskriptor auf ein Objekt vom Typ _WinTypeApplication und dient zur Einstellung applikationsweiter Parameter.

Das Objekt verfügt über folgende Eigenschaften:

  • ColTheme Mit dieser Eigenschaft wird die Darstellung der in CONZEPT 16 vordefinierten Tile-Grafiken und der importierten Tile-Grafiken beeinflusst. Es können folgende Werte angegeben werden:
    • _WinColorTileSystem Bei hochauflösenden Grafik-Modi (> 256 Farben) werden die 256 Farben-Tiles benutzt, sonst die 16 Farben-Tiles.
    • _WinColorTileC16Low Die vordefinierten Tile-Grafiken werden mit 16 Farben dargestellt, die importierten Grafiken verhalten sich wie bei _WinColorTileSystem .
    • _WinColorTileUserLow Die importierten Tile-Grafiken werden mit 16 Farben dargestellt, die in CONZEPT 16 vordefinierten Tile-Grafiken verhalten sich wie bei _WinColorTileSystem .
    • _WinColorTileLow Alle Tile-Grafiken werden mit 16 Farben dargestellt.
  • StyleTheme In dieser Eigenschaft kann die Darstellung der Objekte eingestellt werden. Wird diese Eigenschaft auf _WinStyleThemeSystem gesetzt erfolgt die Anzeige im Windows XP-Stil (default). Bei _WinStyleThemeNone erfolgt die Darstellung wie vor der Version 4.5.00.

Das Setzen der Eigenschaft ist nur möglich, wenn noch kein Dialog auf dem Bildschirm sichtbar gemacht wurde. Idealerweise wird die Eigenschaft vor der Ausführung durch Windialog() / WinDialogRun() oder im Ereignis EvtInit des Dialoges gesetzt.

Im Windows XP-Stil erlauben nicht alle Objekte das Einstellen einer Voder- oder Hintergrundfarbe (zum Beispiel das Button-Objekt).

Locales

Das Locale -Objekt ist ein Systemobjekt, über dessen Eigenschaften regionale Einstellungen in Bezug auf Zahlen- und Währungsdarstellung und das Datums- und Zeitformat abgefragt und geändert werden können.

Das Objekt verfügt über folgende Eigenschaften:

  • Zahlendarstellung
    • LclNumPosSign Positives Vorzeichen
    • LclNumNegSign Negatives Vorzeichen
    • LclNumDecimal Dezimaltrennzeichen
    • LclNumTSep Tausendertrennzeichen
    • LclNumGroup Zahlengruppierung
    • LclNumFract Anzahl der Nachkommastellen
    • LclNumLZero Anzeige mit führender Null
    • LclNumNegMode Darstellung negativer Zahlen
  • Währungsdarstellung
    • LclCurrSymbol Währungssymbol
    • LclCurrSymbolIntl Internationales Währungssymbol
    • LclCurrDecimal Dezimaltrennzeichen
    • LclCurrTSep Tausendertrennzeichen
    • LclCurrGroup Zahlengruppierung
    • LclCurrFract Anzahl der Nachkommastellen
    • LclCurrFractIntl Anzahl der Nachkommastellen bei internationaler Darstellung
    • LclCurrPosSignPos Position des positiven Vorzeichens
    • LclCurrPosSpaceSep Trennung des Währungssymbols vom Wert bei positiven Zahlen
    • LclCurrPosSymPrec Position des Währungssymbols bei positiven Zahlen
    • LclCurrNegSignPos Position des negativen Vorzeichens
    • LclCurrNegSpaceSep Trennung des Währungssymbols vom Wert bei negativen Zahlen
    • LclCurrNegSymPrec Position des Währungssymbols bei negativen Zahlen
  • Datumsformat
    • LclDateSep Datumsseparator
    • LclDateSFormat Kurzes Datumsformat
    • LclDateLFormat Langes Datumsformat
    • LclDateSorder Reihenfolge des Datums bei kurzem Format
    • LclDateLOrder Reihenfolge des Datums bei langem Format
    • LclDateSCentury Darstellung des Jahres
    • LclDateDayLZero Tag mit führender Null
    • LclDateMonthLZero Monat mit führender Null
    • LclDateDayN Namen der Wochentage
    • LclDateDayNS Abkürzungen der Wochentage
    • LclDateMonthN Namen der Monate
    • LclDateMonthNS Abkürzungen der Monate
  • Zeitformat
    • LclTimeSep Zeitseparator
    • LclTimeHourMode 12/24-Stunden Format
    • LclTimeMarkPos Position des Zeitsymbols
    • LclTimeLZero Stunde mit führender Null
    • LclTimeSepAM Zeitsymbol Vormittag
    • LclTimeSepPM Zeitsymbol Nachmittag
    • LclTimeSFormat Kurzes Zeitformat

Ein Locale -Objekt kann mit dem Befehl LocaleLoad() geladen werden.

LocaleLoad(int1, int2):obj

In (int1) und (int2) werden die regionale ID und die regionale Sub-Id für die gewünschten Einstellungen übergeben. Um die in Deutschland üblichen Formate zu lesen muss LocaleLoad() mit den Parametern _LclLangGerman und _LclSubLangGerman aufgerufen werden.

Der Befehl liefert einen Deskriptor zurück, über den mit den Befehlen SysPropGet() und SysPropSet() die Eigenschaften ausgelesen oder verändert werden können.

Soll der Wert in einem Eingabe-Objekt in einem bestimmten Format dargestellt werden, kann der Deskriptor der Eigenschaft Locale des Objektes zugewiesen werden. Die Darstellung erfolgt dann in dem Format, dass im Locale -Objekt angegeben ist.

SysPropGet(obj, int1, var2[, int3]):logic

Auslesen einer Eigenschaft eines Systemobjektes

In (obj) wird der Deskriptor auf das Systemobjekt und in (int1) die Konstante der Eigenschaft übergeben. Die Konstante setzt sich aus _SysProp und dem Namen der Eigenschaft zusammen. In (var2) wird eine Variable übergeben, die anschließend den Wert der Eigenschaft enthält. Der Parameter (int3) wird nur bei Eigenschaften mit mehreren Werten (zum Beispiel LclDateDayN ) benötigt.

Über den Rückgabewert kann festgestellt werden, ob die Funktion ausgeführt werden konnte (true) oder nicht (false).

SysPropSet(obj, int1, var2[, int3]):logic

Setzen einer Eigenschaft eines Systemobjektes

In (obj) wird der Deskriptor auf das Systemobjekt und in (int1) die Konstante der Eigenschaft übergeben. Die Konstante setzt sich aus _SysProp und dem Namen der Eigenschaft zusammen. In (var2) wird der neue Wert Eigenschaft übergeben. Der Parameter (int3) wird nur bei Eigenschaften mit mehreren Werten (zum Beispiel LclDateDayN ) benötigt.

Über den Rückgabewert kann festgestellt werden, ob die Funktion ausgeführt werden konnte (true) oder nicht (false).

Für beide Befehle existiert ebenfalls die verkürzte Schreibweise über Konstanten. Kann die Anweisung nicht korrekt ausgeführt werden, kommt es dann zu einem Laufzeitfehler.

Die Einstellungen in einem Locale -Objekt können für die gesamte Applikation verwendet werden.

LocaleSelect(obj)

Mit diesem Befehl kann zwischen mehreren geladenen Ländereinstellungen gewechselt werden. In (obj) wird der Deskriptor des Locale -Objektes angegeben, das die neue Ländereinstellung enthält. Die Einstellungen betreffen alle A+-Prozeduren und Dialoge.

Sollen die entsprechenden Einstellungen nicht global verwendet werden, können sie in den Cnv-Befehlen oder beim Oberflächenobjekt angegeben werden.

Wird ein Locale -Objekt nicht mehr benötigt, kann es mit LocaleUnload() entfernt werden.

LocaleUnload(obj)
info

Zu diesem Thema ist in der Beispieldatenbank (DLG45-00.ca1) ein Beispiel (Prozedur: Locale) enthalten.

Befehle zur Kommunikation mit der Windows-Zwischenablage

Die Windows-Zwischenablage kann mit den Befehlen ClipBoardRead() und ClipBoardWrite() gelesen und gesetzt werden.

ClipBoardRead():alpha

Dieser Befehl gibt den Inhalt der Zwischenablage zurück. Beim Inhalt der Zwischenablage muss es sich dabei um Zeichen handeln. Es können keine Dateien oder andere Objekte ausgelesen werden.

Dieser Befehl gibt den Inhalt der Zwischenablage zurück. Beim Inhalt der Zwischenablage muss es sich dabei um Zeichen handeln. Es können keine Dateien oder andere Objekte ausgelesen werden.

Dieser Befehl schreibt den Inhalt des Parameters (alpha1) in die Zwischenablage.

Bei der Arbeit mit einem Textpuffer, kann durch die Option _TextClipBoard bei den Befehlen TextRead() und TextWrite() der Inhalt der Zwischenablage in den Textpuffer geschrieben oder der Inhalt des Textpuffers in die Zwischenablage geschrieben werden.

Erweiterungen im Designer

  • Die Eigenschaften und Ereignisse im Eigenschaftsfenster sind zur besseren Überschaubarkeit in Gruppen angeordnet. Durch Doppelklick auf eine Gruppe oder Einfachklick auf das "Plus" Symbol vor der Gruppe, kann diese geöffnet werden.
  • Im Dialog "Einstellungen" besteht nun unter dem Punkt "Drag & Drop" die Möglichkeit der Erzeugung von Eingabeobjekten mit oder ohne Labels.
  • Im Dialog "Einstellungen" besteht nun unter dem Punkt "Raster" die Möglichkeit die Rasterung in Breite/Höhe eines Objektes (bei Neuanlage oder Verschieben/Vergrößern) abzuschalten.
  • Der Öffnen-Dialog für Frame-Objekte wurde dahingehend erweitert, dass auch Menüs geöffnet werden können.
  • Der Designer wurde um zwei Symbolleisten erweitert: eine bildet die gebräuchlichsten Operationen des Datei-Menüs ab, die andere dient zur Schnellaktivierung bereits geöffneter Frame-Objekte.
  • Die Toolfenster (Palette, Eigenschaften, Objekte und Datenbankinfo) können ab sofort frei in der Größe verändert werden. Beim Objektbaum entfällt auch die automatische Positionierung neben das Eigenschaftsfenster.
  • Im Menüpunkt "Anzeige/Toolfenster" gibt es zwei neue Unterpunkte:
    • Links anordnen/Objektbaum rechts Der Menüpunkt entspricht dem Menüpunkt "Links anordnen", jedoch wird zusätzlich der Objektbaum am rechten Bildschirmrand angeordnet. Neu angelegte Frame-Objekte erhalten die Position und Größe des freien Platzes zwischen den Toolfenstern.
    • Rechts anordnen/Objektbaum links Der Menüpunkt entspricht dem Menüpunkt "Rechts anordnen", jedoch wird zusätzlich der Objektbaum am linken Bildschirmrand angeordnet. Neu angelegte Frame-Objekte erhalten die Position und Größe des freien Platzes zwischen den Toolfenstern.
  • Die Knoten des Objektbaumes werden beim Starten des Designers und beim Laden von Frame-Objekten nicht automatisch aufgeklappt. Dies führt zu einem schnelleren Ladevorgang. Das entsprechende Objekt wird erst im Baum aufgeklappt, wenn es im Designer selektiert wird. Desweiteren gibt es im Objektbaum ein Kontextmenü, über das die Möglichkeit besteht, alle Objekte ab der selektierten Node aufzuklappen.
  • Die Eingabehilfe (InputControl) des Eingabeobjektes DateEdit kann über einen Objekt-Editor verändert werden. Der Objekt-Editor kann über das Kontextmenü des DateEdit -Objektes oder über den Menüpunkt Kalender bearbeiten... aufgerufen werden.

Sonstige Erweiterungen

  • Statusbar/Toolbar Die Objekte wurden um die Eigenschaft CurrentInt erweitert. Jeder Toolbar-Button bzw. Statusbar-Button wurde überdies mit der Eigenschaft Group ausgestattet. Zusammen ist dadurch eine Gruppierung der Toolbar- bzw. Statusbar-Buttons möglich, die deren Sichtbarkeit beeinflusst:
    • Ist CurrentInt Null (Default), werden alle sichtbaren Toolbar- bzw. Statusbar-Buttons angezeigt, deren Eigenschaft Group größer oder gleich Null ist.
    • Ist CurrentInt größer Null, so werden alle Toolbar- bzw. Statusbar-Buttons angezeigt, deren Eigenschaft Group mit CurrentInt übereinstimmt oder Null ist.
    • Die Statusbar-Buttons wurden um die Eigenschaften ColFg und ColBkg erweitert. Dadurch kann eine farbliche Hervorhebung des Textes bzw. Hintergrundes erreicht werden.
    • Die Statusbar-Buttons besitzen nun auch die Eigenschaft ClmStretch . Dadurch kann ein Statusbar-Buttons an die Größe der Statusbar angepasst werden. Diese Eigenschaft ist exklusiv, kann also jeweils nur bei einem einzigen Button pro Statusbar gesetzt werden.
  • Label Das Label-Objekt wurde um die Eigenschaft Vertical erweitert. Damit ist es möglich, die Ausgabe um 90 Grad gegen den Uhrzeigersinn zu kippen.
info

Die Ausgabe ist optimiert für True-Type-Fonts. Für Non-True-Type-Fonts kann es zu einer langsameren Ausgabe (insbesondere unter Windows 9x/ME) kommen.

  • DataListPopup Das Objekt DataListPopup wurde um die Eigenschaft MaxLines erweitert. Diese Eigenschaft bestimmt, mit welcher Anzahl Zeilen die DataListPoup dargestellt wird. Eine DataListPopup wird standardmäßig mit maximal 10 Zeilen dargestellt. Sollen beispielsweise in einer DataListPopup die Monate eines Jahres aufgelistet werden, sind ohne zu Scrollen die Monate Januar - Oktober sichtbar. Wird die Eigenschaft MaxLines auf 12 gesetzt, wird die DataListPopup mit 12 Zeilen dargestellt und somit die Monate Januar - Dezember sichtbar. Der zulässige Wert liegen zwischen 1 und 100.
  • RecList und DataList Diese Objekte wurden um die Eigenschaft OrderPass erweitert. Durch Setzen der Eigenschaft wird die Reihenfolge, in der die untergeordneten Objekte (Spalten) durch den Befehl WinInfo() zurückgegeben werden, beeinflusst. Ist die Eigenschaft auf _WinOrderCreate gesetzt, werden die Spalten in der Reihenfolge der Erstellung zurückgegeben, bei _WinOrderShow in der Reihenfolge, in der die Spalten angezeigt werden.
  • Eingabe-Objekte Die Eingabe-Objekte wurden um die Eigenschaft PopupOpen erweitert. Wird diese Eigenschaft auf true gesetzt und verfügt das Objekt über ein Popup -Objekt, wird das Popup -Objekt geöffnet. Durch die Zuweisung von false, wird das Objekt geschlossen.
  • Fehlerkonstante _rDeadlock Wird bei Satz- oder Textoperationen (ReInsert(), RecReplace(), RecDelete(), TextCreate(), TextWrite(), TextCopy() dieses Resultat zurückgegeben, konnte die Funktion nicht ausgeführt werden, da innerhalb einer Transaktion eine Verklemmung aufgetreten ist.