horaios Charis (Echt)

Changehistory

5.4.12.1632

  Changes, Improvements
  • Logging with debug level is now routed to the log file (not the trace database).
    Please find more details about logging here: Logging in Charis
  • In setters of the generated code the current object is not locked anymore.
    This seems to have been a reason for Blazor applications to freeze.

4.9.26.1841

  Änderungen, Verbesserungen
  • Blazor Web Apps können modelliert und generiert werden (noch ohne Formulare).

4.9.20.1428

  Änderungen, Verbesserungen
  • TabellenWidget: Die Konfiguration von Spalten und Breiten werden gespeichert und wiederhergestellt.
  • Sprachabhängige Beschriftung der Tool-Buttons von ImageFileWidgets

4.9.9.1807

  Änderungen, Verbesserungen
  • Alle Widgets für den Datentyp "file" (FileWidget, ImageFileWidget etc.) erlauben den Download der Datei, auch wenn das Attribut bzw. das Formular schreibgeschützt ist.

4.8.7.1928

  Änderungen, Verbesserungen
  • SplashForm: Lösungsspezifisches Bild kann angezeigt werden.
    • Application.Image = Resources.applicationImage;
      Application.Run(args);
  • ColorExtension: Neues Property "ForeColorSelected" für Text in einer selektierten Tabellenzeile

4.7.23.1838

  Fehlerbehebungen
  • Bugfix für "Fehlerhafter Code bei POCO-Klassen"
  Änderungen, Verbesserungen
  • Speicherung von Startparametern getrennt nach Dev/Test/Prod

4.7.15.2122

  Fehlerbehebungen
  • Bugfix für "Fehler bei der Größenberechnungen von eingebetteten Forumularen"
  Änderungen, Verbesserungen
  • Alle Projektdateien werden beim Generieren mit einer neuen Version versehen.
  • Variablen in generiertem Code sind "protected" und nicht mehr "private".

4.7.0.3343

  Fehlerbehebungen
  • Bugfix für "Teile eines Formulars werden unsichtbar"
  Änderungen, Verbesserungen
  • FormViewWidget: Es steht eine neue Methode IsReadOnly() zur Verfügung.
  • Application: Die Properties "AccentColor1" und "AccentColor2" stehen zur Verfügung.
  • Charis.Conf: Property "RootKey" wurde entfernt.
    • Vorbereitung für den Umbau der Registry-Werte

4.6.9.2715

  Änderungen, Verbesserungen
  • MapWidget: Erste Version

4.6.6.1815

  Änderungen, Verbesserungen
  • Object: Es gibt eine neue generierte Methode namens "AddObjectFor()". Mit dieser Methode lässt sich auf eine einfache Art und Weise zu einem Attribut vom Typ Multi-Value-Reference ein neues Element hinzufügen.

4.6.3.2023

  Änderungen, Verbesserungen
  • Das Startfenster einer Charis-Anwendung merkt sich den zuletzt Verwendenten Verwendungszweck (beispielsweise "Dev", "Test" oder "Prod").
  • Behebung des Issues "ReferenceWidget: Auswahl des Labels"
  • Die Sichtbarkeit eines Attributs kann über ein Boolean-Attribut gesteuert werden.

4.5.18.1414

  Änderungen, Verbesserungen
  • Charis-Objekt haben eine Methode ToDataObject(), die für jedes Charis-Objekt das passende Daten-Objekt zurückgibt.
  • Code-Generator: Es werden ab sofort DataObject-Klassen (POCO-Klassen) generiert.

4.4.12.2416

  Änderungen, Verbesserungen
  • Der Attributtyp "Geography" wird nun unterstützt. Dieser Datentyp kann auf einer Karte dargestellt werden.

4.3.16.2116

  Änderungen, Verbesserungen
  • Behebung des Issues "Charis-NuGets: Nach dem Code-Generieren soll die IDE selbständig die nötigen Charis-DLLs automatisch von NuGet installieren"
  • Behebung des Problems, dass die selektierte Zeile in einer Tabelle nach der Aktualisierung die erste sichtbare Zeile wird.

4.3.7.1320

  Fehlerbehebungen
  • Bugfix für "Behavior-Buttons zeigen kein Icon"

4.2.22.3338

  Fehlerbehebungen
  • Behebung von Issue "Maximieren von Charis-Fenstern"
  • Behebung von Issue "Projekt-Präfix für generierte Service-Projekte"
  Änderungen, Verbesserungen
  • Ergänzungen für die Unterstützung von Single-Sing-On (SSO)
    • Aufruf von der überschreibbaren Methode AddAdditionalServices()
  Änderungen, Verbesserungen
  • Modeller: Für die Attributtypen "Memo" und "File" wird die Option "lazy loading" automatisch vorgeschlagen.

4.2.5.1255

  Fehlerbehebungen
  • Bugfix für "Behavior-Buttons werden nicht aktiviert bzw. deaktiviert"
  • Modeller: Neue Migrationaufgabe, um die Migration von ViewBehaviors zu vervollständigen

4.2.1.2524

  Änderungen, Verbesserungen
  • Modeller: Beim Generieren eines Formulars werden alle vorhandene Behaviors (ohne Implementierung) automatisch am Formular verfügbar gemacht.
  • Modeller: Behaviors werden ab sofort bei der jeweiligen Entität modelliert - nicht mehr im Formular bzw. Widget. Dadurch bleiben Behaviors auch dann erhalten, wenn ein Formualar bzw. Widget gelöscht wird.

4.1.30.1720

  Änderungen, Verbesserungen
  • Code-Generator: In Charis können ab sofort Services modelliert werden. Für diese Services wird jeweils ein Windows-Service-Projekt generiert.

4.1.24.2116

  Änderungen, Verbesserungen
  • Um die Performance zu verbessern können bestimmte Attribute nachträglich von der Datenbank geladen werden (lazy-loading). Damit man im Lösungscode bei eigenen SQL-Anweisungen nur die anderen Spalten lesen kann, hält jede Base-Klasse ab sofort eine Methode namens "GetColumnNamesAsString()" bereit.
    • Beispiel für die Entität "Aufgabe":
      select {AufgabeBase.GetColumnNamesAsString("x")} from Aufgabe x

4.1.22.1521

  Änderungen, Verbesserungen
  • Wenn ein neues Widget im Formular eingefügt wird und der Datentyp des Attributs ist "memo", dann wird bei dem Widget das Attribut "rows" automatisch auf 2 gesetzt. Dadurch kann von vornherein ein mehrzeiliger Text eingegeben werden.
  • Wenn eine Zeile in einer Tabelle aktiviert wird und im Modell ist weder ein Behavior noch ein Formular hinterlegt, wird eine Fehlermeldung angezeigt.
  • Die Reihenfolge von automatisch generierten Tabseiten in einem Formular richtet sich nach der Reihenfolge der Attribute.

4.1.18.2601

  Änderungen, Verbesserungen
  • Im Modeller kann in der Verwaltung der Entitäten die gefilterte Trefferliste mit dem Button "delete all" auf einmal gelöscht werden.
  • Zusätzliches Widget für Einheit: Wenn bei einem Attribut im Feld "Comment" ein Inhalt der Form "unit: ___" eingegeben wird, wird beim Generieren des passenden Widgets ein zusätzliches Widget rechts nebendran mit der Einheit generiert.
  • Es kann ab sofort ein statischer Text auf ein Formular platziert werden: Attribut, Widgettyp und Widget-Klasse leerlassen und den gewünschten Text in "Tooltip" eingeben. Zusätzlich kann mit Fontname und Fontsize die Formatierung des Textes bestimmt werden. Mit der Höhe und der Breite kann genügend Platz für den Text vorgesehen werden.
  • Das Default-Widget eines Attributtyps ist der oberste Widgettyp in der Tabelle. D.h. der Widgettyp mit dem jeweils kleinsten SortKey.
  • Es gibt nun ein YesNoWidget bei Boolean-Attribute. Der Inhalt ist sprachabhängig. Die Sprache kann beispielsweise mit RuntimeSettings.GuiLanguageIsoCode = "en"; in Program.cs vorgegeben werden. Sonst wird es mit der Sprache des Betriebssystems initialisiert. Aktuell werden nur die Sprachen Deutsch und Englisch unterstützt. Bei allen anderen Sprachen werden "Yes" und "No" verwendet.

4.1.18.1110

  Änderungen, Verbesserungen
  • Für Boolean-Attribute steht ab sofort zusätzlich zur CheckBox das YesNoWidget zur Verfügung.
    • Das YesNoWidget ist ein Dropdown mit den Werten "Yes" und "No".
    • Aktuell gibt es keine Mehrsprachigkeit der Werte. Hier muss noch die Frage geklärt werden, wovon die Sprache abhängen soll.
    • Das YesNoWidget ist dreiwertig: Yes, No oder nichts.
    • Um den Wert eine Attributs zu löschen, muss der Wert in der Textbox (am besten ohne die Liste aufzuklappen) gelöscht werden (Beispielsweise mit Strg+A, Entf und Tab).

4.1.16.1650

  Änderungen, Verbesserungen
  • Modeldaten: Für Modelldaten werden ab sofort statische Properties in der Base-Klasse der jeweiligen Entität generiert. Dadurch kann nun sehr einfach und ohne anfällige String-Vergleiche auf Modelldaten zugegriffen werden.
    • Beispiel: In einer Lösung wurde die Entität "Einsatzprotokollstatus" als ModelData modelliert und es existiert ein Eintrag mit dem Identification-Wert "In Vorbereitung". Dann lässt sich folgender Code schreiben:
      return Equals(Status, EinsatzprotokollstatusBase.InVorbereitung);
  • Im blauen Quadrat links oben im Formular wird nun je nach Einstellung der User-Datenbank die ID oder die LOID als Tooltip angezeigt. Durch einen Doppelklick auf dem Quadrat kann die ID bzw. die LOID in die Zwischenablage kopiert werden.

4.1.10.2212

  Änderungen, Verbesserungen
  • Das SQL-Skript zum Initialisieren einer neuen Modelldatenbank wird zur Laufzeit aus der Vorlage für neue Charis-Lösungen gewonnen.

4.1.9.1444

  Änderungen, Verbesserungen
  • TableView: Der Button "generate columns" generiert für alle in Frage kommende Attribute je eine Spalte. Allerdings sind ab sofort nur die ersten fünf Spalten von vornherein sichtbar. Alle anderen Spalten werden als unsichtbare Spalten vorbereitet und können durch die Benutzer_in zur Laufzeit eingeblendet werden.
  • TableViewColumn: Tabellenspalten haben nun eine Eigenschaft namens "invisible". Wenn diese Option gewählt wird, ist die Spalte nicht vornherein sichtbar. Kann aber durch die Benutzer_in zur Laufzeit eingeblendet werden.

4.1.8.1101

  Änderungen, Verbesserungen
  • EmbeddedFormViewWidget: Die Logik, nach der die Daten eines eingebetteten Formulars aktualisiert werden, hat sich geändert. Die Aktualisierung sollte nun vollständiger und zuverlässiger stattfinden.
  • In einer Data-Migration kann durch das Setzen des Property "RuntimeSettings.ReassureAllTablesAndColumns" dafür gesorgt werden, dass nach der Ausführung aller Data-Migrations erneut die Existenz aller Tabellen und Spalten sichergestellt wird.
      Dadurch kann eine Data-Migration beispielsweise eine Tabelle löschen und sie anschließend wieder vollständig neu erstellen lassen.
  • Über das Property "LoidAsPrimaryKey" in RuntimeSettings kann eine Charis-Lösung auf den Modus umgestellt werden, in dem der Primärschlüssel aller Datenbanktabellen nicht mehr die ID-Spalte sondern die LOID-Spalte ist.
    • Das Property "LoidAsPrimaryKey" sollte in der Main()-Methode in Program.cs vor dem Aufruf von Application.Run() auf "true" gesetzt werden.
    • Der Default-Wert für das Property "LoidAsPrimaryKey" ist (noch) "false".
  • Attribut: Es gibt eine neue Eigenschaft eines Attributs namens "group". Damit lassen sich Attribute in Gruppen einteilen.
    • Beim Generieren von Formularen werden Attribute einer Gruppe jeweils auf einer eigenen Tabseite platziert.
  • Im Interface IObjectAdministration steht nun auch die Methode HasPreviousItem() zur Verfügung.
  • Für den Attributtyp "Memo" wird ab sofort der Spaltentyp "nvarchar(max)" benutzt.
    • Die Spaltentypen "text" und "ntext" sind obsolet.

3.12.9.1041

  Änderungen, Verbesserungen
  • Nach dem Start der Anwendung ist das Hauptfenster fokussiert.
  • Leere Widgets und Read-only-Widgets werden beim Tabben durch das Formular übersprungen.

3.12.1.2808

  Fehlerbehebungen
  • Wenn mehrere Lösungen gegen eine gemeinsame Datendatenbank verwendet werden, löschen sich die Einträge in der Tabelle "DatabaseProperty" nicht mehr gegenseitig aus.
  Änderungen, Verbesserungen
  • In der Anzeige einer Fehlermeldung wird auch der Stacktrace angezeigt.
  • Beim Anlegen einer neuen Modelldatenbank (beispielsweise im Rahmen einer neuen Lösung) wird nun der Inhalt durch ein SQL-Skript initialisiert.
  • Beim Generieren von Formularen und Tabllen werden fehlende Formulare und Tabllen rekursiv mitgeneriert.

3.11.21.2427

  Änderungen, Verbesserungen
  • Bei Validierungen kommt es nicht mehr zu ungewolltem Fensterwechsel.
  • Neuer Projekttyp "Worker" für Konsolenanwendungen

3.11.14.2112

  Änderungen, Verbesserungen
  • Code-Generator: Die Backing-Variable für dynamische Properties werden ab sofort als "protected" deklariert - nicht mehr als "private". Dadurch kann die Methode RefreshDynamicValues() überschrieben werden und individuell angepasst werden. Dies kann benutzt werden, um Properties mit großen Datenmengen aus Performance-Gründen weniger häufig zu aktualisieren.

3.11.13.3323

  Fehlerbehebungen
  • Bugfix für "Deadlock während ReinitValues() - beobachtet bei Barz, Personal"
  • Nach dem Anlegen eines neuen Datensatzes mit Strg+N wird das erste Widget fokussiert.
  • Bugfix für "Wert im Dropdown wird nicht korrekt gesetzt, wenn zwischen Datensätzen gelättert oder ein neuer Datensatz angelegt wird."

3.10.26.1052

  Änderungen, Verbesserungen
  • Im ImageFileWidget werden nun auch die Dateitypen ".msg" und ".zip" mit entsprechendem Icon angezeigt.
  • Es können nun im Lösungscode die durch DevExpress-Filter gefilterten Zeilen berücksichtigt werden. Hierfür kann ein transientes Attribut (multi-value, reference) modelliert und im entsprechenden Widget der Tabelle als "attribute for filtered list" zugewiesen werden.

3.8.12.1337

  Änderungen, Verbesserungen
  • UserEntryPoint: Pro Einstiegspunkt können alle für diesen Einsteigspunkt relevante sprachabhängige Werte als CSV-Datei exportiert und nach Bearbeitung wieder importiert werden.

3.8.9.1743

  Änderungen, Verbesserungen
  • HtmlToText: Eine Hilfsklasse zum Extrahieren von Text aus HTML
  • StringListExtension: Neue Überladungen der Methoden ToCommaSeparatedString() und ToSeparatedString() für Listen von Integern und Objekten.
  • Modeller: Die Liste der Entitäten kann über den Button "sort" nach Namen der Entitäten sortiert werden, wobei die Verwaltungsentitäten nach unten sortiert werden.

3.8.4.1108

  Änderungen, Verbesserungen
  • Einführung der Mehrsprachigkeit
    • Im Modeller können die Inhalte von Widget-Labels, Spaltenüberschriften und Einstiegspunkte etc. mehrsprachig erfasst werden.
    • In jedem Modell können einzelne Attribute als mehrsprachig (language specific) markiert werden. Diese Inhalte können dann von den Kundenbenutzer_innen mehrsprachig erfasst werden.
    • Die GUI und die Inhalte werden in der bei der Benutzer_in konfiguierten Sprache angezeigt.
  • Database: Neue Methode ExecuteScalarString() zum Abfragen eines einzelen String-Wertes
  Änderungen, Verbesserungen
  • Tabelle: Durch die Verwendung eines Zeilenmarkers werden "leere" Zeilen besser sichtbar gemacht.

3.7.27.1821

  Fehlerbehebungen
  • Bugfix für "Diverse Fehlermeldungen beim schnellen Arbeiten im Modeller"
  Änderungen, Verbesserungen
  • Es gibt eine Windows-Nachricht mit der eine Charis-Anwendung dazugebracht werden kann, in einem bestimmten Formular ein bestimmtes Objekt anzuzeigen.
    • Ein Umsetzungsbeispiel dafür findet man in der Lösung Carsus in der Klasse AdresseInAssistNowBearbeitenUserAction (Canotis.BOS.Carsus.Customizing.Entities.SucheInAdressen.UserActions) in der Methode showObject().

3.7.21.1101

  Fehlerbehebungen
  • Bugfix für "Widgets werden nicht disabled"
  Fehlerbehebungen
  • Bugfix für "NullRef-Fehlermeldung"
  Änderungen, Verbesserungen
  • LabelWidget haben keine andere Darstellung im Nur-Lesen-Modus.

3.7.19.2104

  Fehlerbehebungen
  • Bugfix für "Referenzierter Kunde wird nicht mit Anzeige-Attribut dargestellt"
  • Bugfix für "Badges an Hauptaufgaben nicht aktuell"
  Änderungen, Verbesserungen
  • ConsoleProcess: Bei jeder Meldungszeile des aufgerufenen Prozesses kann der Fortschrittsbalken um einen bestimmten Wert (Parameter "increment") bewegt werden.
  • Während der Code-Generierung werden drei von einander unabhängige Fortschrittsbalken angezeigt.
  • Der Button "generate all source code" wurde wieder entfernt. Der Button "generate source code" generiert wieder immer alles.

3.7.18.1846

  Fehlerbehebungen
  • Bugfix für ""Out of memory"-Exception soll nicht mehr auftreten"
    • Issue #291
    • Man kann nun ca. 10 Mal öfter Fenster öffnen als bisher.
  Änderungen, Verbesserungen
  • Entität: Wenn die Option "model data" gewählt wird, wird die Option "copy model data" automatisch mit ausgewählt.
    • Hintergrund: Ein Beispiel für eine Entität, bei der die Option "model data" gesetzt wird, aber die Option "copy model data" nicht gesetzt wird, ist eine Verwaltung für eine Model-Data-Entität.

3.7.9.3211

  Fehlerbehebungen
  • Bugfix für "Zeitwerte werden in der Tabelle nicht korrekt formatiert."
  • Bugfix für "Shortcuts zeigen "Confirmation-Dialog" auch wenn das behavior disabled wurde"
  Änderungen, Verbesserungen
  • LabelWidget hinzugefügt

3.7.3.1821

  Fehlerbehebungen
  • Bugfix für "Fehler beim Zugriff auf eingebettete Resourcen"
  • Bugfix für "DLLs der Lösung sind nach dem Start des Modellers gesperrt."
  Fehlerbehebungen
  • Bugfix für "Nach dem Anlegen eines neuen Objektes wird das falsche Objekt aktiviert."
  Änderungen, Verbesserungen
  • Bootstrapper: Bei neuen Datenbanken werden die Migrationsaufagben ohne Nachfrage ausgeführt.
  • FormView: Beim Verschieben/Kopieren von Widgets wird ein Fortschrittsbalken angezeigt.

3.6.25.2234

  Fehlerbehebungen
  • Bugfix für "Modelldatenbank wird nicht validiert bei neuer Model Data"
    • Issue #280
    • Achtung: Modelldaten werden angelegt bzw. aktualisiert aber nicht mehr gelöscht. Um Modelldaten zu löschen muss eine Datenmigration verwendet werden.
  • Bugfix für "Datum kann nicht gelöscht werden"
  • Bugfix für "Fehler beim Bearbeiten von Werten mit Formatstring mit Einheit"
  Änderungen, Verbesserungen
  • Database Properties: Zu allen verwendeten Assemblies werden die Versionen eingetragen und geprüft.
  • User Settings: Use Case kann durch Dropdown ausgewählt werden.
  • Widget: Option "periodically update value"
  • Widget: Option "automatically commit value"
  • Widget: Fontname und Fontgröße
  • Neues Layout für Attribut- und Widget-Formulare

3.5.20.1730

  Fehlerbehebungen
  • Bugfix für "Preview von custom Widgets"
  • Bugfix für "Names.Tables"
    • Issue #284
      • Es stehen nun zusätzlich zur Verfügung:
        • Names.DatabaseTables....
        • Names.DocumentTemplates....
  • Bugfix für "Text in Dropdown bleibt rechtsbündig"
  • Bugfix für "Assembly-Versionsnummer wird bei allen Projekten hochgezählt"
    • Issue #285
    • Die Version wird beim Objects-Projekt und bei allen Projekten, die das Objects-Projekt referenzieren, hochgezählt.
  • Bugfix für "Rahmen eines Textfeldes (im Widget) ist veränderbar"
  Änderungen, Verbesserungen
  • Auch für Migrationsaufgaben für Modelldatenbanken wird nun ein Bestätigungsfester angezeigt.
  • Im StringWidget findet kein AutoCommit mehr statt. Dies hat sich mit der Trim-Anfoderung nicht vertragen.

3.5.16.1917

  Fehlerbehebungen
  • Bugfix für "Der aktuelle Benutzer wird nicht angelegt, wenn die Datenbank nicht validiert wird."
  • Bugfix für "Extern verändertes Objekt wird nicht aktualisiert."
    • Ursache: Es konnte passieren, dass der Client im Zustand einer Behavior-Ausführung zurückbleibt. Dadruch wurden externe Änderungen ignoriert.
  • Bugfix für "Berechnetes Attribut im Dropdown-Widget wird nicht angezeigt"
  • Bugfix für "Automatischer Trim von Strings"
  • Bugfix für "Generate Widgets soll Owner-Zeiger ignorieren"
    • Issue #290
    • Auch bei "generate columns" werden Owner-Zeiger ignoriert.
  • Bugfix für "Formular "create copy" setzt Entität nicht"
    • Issue #283
    • Hintergrund: Die DeepCopy()-Methode kopiert Owner-Zeiger nicht mehr. Dadurch ist dieser Fehler entstanden.
  Änderungen, Verbesserungen
  • Im Date-Widget findet ab sofort grundsätzlich kein Auto-Commit mehr statt.
  • Im String-Widget findet der Auto-Commit ab sofort nur noch dann statt, wenn das Attribut kein "run code when changed" gesetzt hat.
  • Bootstrapper: Anstelle der "Extended Properties" vom SQL-Server wird eine einfache Tabelle namens "DatabaseProperty" verwendet, um die durchgeführte Validierung der Datenbank zu protokollieren.
    • Die "Extended Properties" erfordern erhöhte Zugriffrechte (db_owner) auf die Datenbank. Dies soll zunächst vermieden werden.

3.5.15.1707

  Änderungen, Verbesserungen
  • CharisSidePanel: Es gibt eine neue Option namens "NoAutoScrollToActiveControl", mit der verhindert wird, dass zu einem Steuerelement, das den Fokus erhält auch automatisch hingescrollt wird. Der Default-Wert ist "false".
  • Bootstrapper: Der aktuelle Benutzer wird auch dann in der Datenbank sichergestellt, wenn keine Validierug der Datenbank notwendig ist.
  • Database: Es steht eine neue Methode namens "ExecuteScalarDecimal()" zur Verfügung. Neben ExecuteScalarInt() und ExecuteScalarDateTime() eignen sich diese Methoden einen einzelnen Wert durch eine SQL-Abfrage zu ermitteln.

3.5.3.1734

  Änderungen, Verbesserungen
  • ReferenceWidget (DropDown): Es gibt eine neue Option namens "filter by contains" - im Gegensatz zu bisher "filter by starts with". Sie bewirkt also, dass Einträge im DropDown durch einen Teilstringvergleich gefunden werden.
  • Fortschrittsanzeige: Wenn bei der Methode Worker.ReportProgress() ein negativer Wert als "percentProgress" übergeben wird, zeigt der Fortschrittsbalken ein selbständig animiertes Band.

3.4.26.1428

  Änderungen, Verbesserungen
  • Beim Start einer Charis-Anwendung wird zuverlässig nur beim ersten Mal die Datenbank validiert - danach nicht mehr.
  • Modeller: Performance-Verbesserung beim Generieren
    • Es werden "geänderte" Dateien neu generiert.
    • Die Quellcodegenerierung läuft parallel zur Datenbankgenerierung.
    • Daten werden beim Start des Modellers bereits im Hintergrund geladen.
  • Es wird eine neue Methode DeepLoad() für Charis-Objekte generiert. Diese Methode lädt ein Objekt vollständig ohne Lazy-Loading-Mechanismen.
  • Die Nutzung von SqLite-Datenbank als Datendatenbank ist besser unterstützt.
  • Modeller: In der Verwaltung von Entitäten kann über einen neuen Button ein Übersichtsdiagramm der Entitäten angezeigt werden.

3.3.20.1234

  Fehlerbehebungen
  • Bugfix für "Unerwünschte Scrollbars erscheinen bei eingebetteten Formularen ohne Rand"
  • Bugfix für "Einfügemarke sprint während der Eingabe an den Anfang"
  Änderungen, Verbesserungen
  • Fortschrittsbalken während DeepCopyFrom()
    Beispiel:
    var max = GetCompositionObjectsCount();
    var progressObserver = new ProgressObserver(worker, max, "Kopieren von ");
    var result = NewObject<Aufmaß>();
    result.DeepCopyFrom(this, progressObserver);
    result.Kunde = Kunde;
    result.Status = null;
    result.WriteToDatabase();
    • Die Methode DeepCopyFrom() hat einen neuen optionalen Parameter vom Typ ProgressObserver.
    • Es muss eine Instanz von ProgressObserver erstellt und an die Methode DeepCopyFrom() übergeben werden. Die Parameter für den Konstruktor von ProgressObserver sind der BackgroundWorker, die Gesamtanzahl der zu kopiereneden Objekte und ein optionaler Präfix für den Text der Fortschrittsanzeige.
    • Die neue generierte Methode GetCompositionObjectsCount() lieferte die Gesamtzahl der zu kopierenden Objekte.
  • Performanceverbesserung durch Aufhebung der Serialisierung des Datenbankzugriffs.
  • Die Beschreibung für Datenmigrationsaufgaben (DataMigrationTask) ist mehrzeilig.

3.3.3.1408

  Fehlerbehebungen
  • Bugfix für "Verhalten von Parameterfenster bei Validatoren"
  • Bugfix für "Generate Columns: Spaltenvorschläge werden doppelt eingetragen"
  • Bugfix für "Exception-Handling bei Migration-Tasks"

3.3.0.3207

  Fehlerbehebungen
  • Bugfix für "Anlegen einer neuen Lösung schlägt fehl"
  Änderungen, Verbesserungen
  • Die URL für die Versionshistorie wird dynamisch berechnet und berücksichtigt den Suffix der Assembly.
  • Das Fehlen der Modelldatenbank (beispielsweise bei einer neuen Lösung) führt nicht mehr zu einer SQL-Exception.
  • ReferenceWidget (DropDown): Ein (mittlerweile) ungültiger Wert wird mit rotem Hintergrund und einer Fehlermeldung angezeigt.
  • ObjectForm: In der Überschrift wird das Zeichen "&" nicht verschluckt.

3.2.22.3344

  Änderungen, Verbesserungen
  • Startverhalten: Wenn eine Charis-Anwendung mit Parametern aufgerufen wird, wird immer eine neue Instanz gestartet - so als ob die Shift-Taste gedrückt gehalten worden wäre.
    • Ohne dieses Verhalten kann es beim Starten des Modellers aus dem SolutionManager dazukommen, dass der neue Modeller nicht gestartet wird bzw. endlos auf das Starten gewartet wird.

3.2.16.2523

  Änderungen, Verbesserungen
  • Code-Generator: In der Base-Klasse wird "using de.horaios.Charis.Objects.Objects" eingetragen.
    • Dies wird beispielsweise für den Datentyp "File" benötigt.

3.2.15.3242

  Fehlerbehebungen
  • Bugfix für "Migrationsaufgaben werden erneut ausgeführt."
  Änderungen, Verbesserungen
  • Es gibt nun einen Satz an Klassen unter dem Begriff "SqlHelper", mit denen SQL-Abfragen generiert werden können. Die vollständige Dokumenation hierzu erfolgt später.
  • Der Name des identifizierenden Attributs wird als "IdentifyingAttributeName" generiert.
  • TableView, Spalten: Es werden mehr Informationen vom Attribut übernommen (FormatString, Comment)
  • FormView, Widgets: Es werden mehr Informationen vom Attribut übernommen (FormatString, Comment, Mandatory)
  • Vertikale Ausrichtung von Widgets wurde verbessert.
  • Neue Features für Attribute
    • Im Fall von "run code for value" kann nun im Modell eine Implementierung angegeben werden.
    • Eine neue Checkbox namens "multi-valued" kann dazu verwendet werden die mehrwertigkeit eines Attributs anzuzeigen. Im Hintergrund werden die Kardinaliäten automatisch entsprechend gesetzt.
    • Attribute können nun als obsolet markiert werden. Die Verwendung eines obsoleten Attributs im Code kann je nach Wunsch eine Compiler-Warnung oder einen Compiler-Fehler verursachen.

3.2.9.3302

  Fehlerbehebungen
  • Modeller: Bugfix für "Die angezeigte Zahl von veränderten Objekten ist falsch."
  • Bugfix für "Badge-Zahlen werden nicht angezeigt."
  • Bugfix für "Datenbankdatei wird nicht in das Verzeichnis des Service-Projektes kopiert."
  Änderungen, Verbesserungen
  • Modeller: Der Prozess der Code-Generierung wurde verbessert.
    • Die Standard-HTML-Vorlage wird nur dann neu generiert, wenn sich die Entität in der Zwischenzeit verändert hat.
    • Verbesserte Darstellung in der Fortschrittsanzeige
  • Datenmigrationsausführung (DataMigrationTaskExecution): Der Verweis auf die Datenmigration (DataMigrationTask) wurde von "Reference by ID" auf "Reference by LOID" umgestellt.
    • Wenn in einer Datenbank mehrere Lösungsmodelle aufeinandertreffen, konnte es zu Kollision von IDs der Datenmigrationen kommen.
    • Durch die Verwendung von "Reference by LOID" ist der Verweis auch über mehrere Lösungsmodelle immer eindeutig.
  • Neuer Attributtyp "Reference by LOID"
    • Der bisherige Attributtyp "Reference" wurde in "Reference by ID" umbenannt.
    • Der neue Attributtyp "Reference by LOID" verweist auf andere Objekte unter Verwendung der eindeutigen LOID (Logical Object Identifier).
    • Technisch ist LOID eine GUID (Globally Unique Identifier) bzw. eine UUID (Universally Unique Identifier).
    • Vorteile von LOIDs gegenüber IDs:
      • Über LOIDs lassen sich Objekte auch über Datenbanken hinweg eindeutig referenzieren.
      • Über LOIDs können Objekte auch in verteilten Szenarien ohne eine zentrale Stelle angelegt werden.
      • LOIDs können nicht erraten werden und bieten somit weniger Angriffsfläche für Missbrauch.
  • ReferencesWidget (Tabelle): Der sichtbare Bereich wird so agepasst, dass die neu angelegte Zeile sichtbar wird.
  • ReferencesWidget (Tabelle): Das Handling der selektierten Zeile ist nun auch dann zuverlässig, wenn die Zeilen der Tabelle durch die Benutzer_in nach einer beliebigen Spalte sortiert vorliegen.
  • Der Zeitraum, in dem eine Modelldatenbank als "neu" angesehen wird, wurde von zwei Minuten auf zwei Stunden erhöht.
    • Hintergrund: Automatische Wartungsarbeiten beim Starten eines Charis-Clients (wie zum Beispiel das Anlegen neuer Datenbankspalten) werden nur ausgeführt, wenn die Modelldatenbank "neu" ist.
    • Nach den zwei Stunden ist der Start eines Charis-Clients beschleunigt, da keine Wartungsarbeiten und auch keine Prüfung für den Bedarf von Wartungsarbeiten stattfindet.
  • Charis.Tools: Neue Extension-Methode für TimeSpan namens "AsString()"
    • Es werden die Formate "dd:HH:mm", "HH:mm" und "HH:mm:ss" unterstützt.
    • Der Standardwert ist "HH:mm".

3.1.12.1545

  Fehlerbehebungen
  • Bugfix für "NullRef-Fehlermeldung beim Schließen eines Fensters"

3.1.12.1410

  Fehlerbehebungen
  • Bugfix für "Im User-Settings-Formular werden die Felder Benutzer und Passwort nicht deaktiviert."
  • Bugfix für "Touch führt nicht zur Ausführung von run-code-for-value Implementierung"
  Änderungen, Verbesserungen
  • Im User-Settings-Formular wird der Suffix "Prod" nicht angezeigt. (Nur die Suffixe Dev und Test werden hinter dem Namen der Lösung angezeigt.)
  • Performance-Verbesserung: Mehrfacher Aktualisierungsbedarf wird gebündelt. Dadurch entsteht eine erhebliche Performance-Verbesserung der GUI.

3.1.9.2208

  Fehlerbehebungen
  • Bugfix für "Labels von E-Mail- und URL-Widgets können nicht mehr angeklickt werden"
  • Bugfix für "Hidden-Attribute werden nicht grau dargestellt"
  Änderungen, Verbesserungen
  • Beim Starten einer Charis-Anwendung wird nun ein neu gestaltetes Fenster für die Einstellungen angezeigt, in dem auch ein Team-Passwort verwendet werden kann.
    • Über ein Team-Passwort kann sich eine Benutzer_in einer Charis-Anwendung einem Team anschließen.
    • Beim Start einer Charis-Anwendung kann das entsprechende Team-Passwort, das nur Team-Mitgliedern bekannt sein sollte, angegeben werden.
    • Die Anwendung besorgt sich dann anschließend mit dem Team-Passwort die Verbindungsdetails zur Team-Datenbank über eine Online-Abfrage bei software.horaios.de.
    • Dadurch können die Verbindungsdetails an zentraler Stelle vorgegeben und jederzeit geändert werden. D. h. die Verbindungsdetails müssen ab sofort nicht mehr im Quellcode hinterlegt werden. Es muss lediglich jeder Benutzer_in einmalig das Team-Passwort mitgeteilt werden.
    • Team-Passwörter können über die neue horaios-Anwendung de.horaios.Credentials verwaltet werden.
  • Die Sqlite-Datei der Modelldatenbank wird ggf. auch in WebApi-Projektverzeichnisse kopiert.
  • StringListExtension: Die Methode ToStringList() hat nun einen optionalen Parameter für das Trennzeichen.
  • StringExtension: Neue Overloads für die Methoden ToDisplayStringDe() und ToDisplayStringEn() mit weniger Parameter
  • StringExtension: Neue Methode um die Domäne aus einer E-Mail-Adresse oder einer URL zu extrahieren (ExtractDomainFromEmailAddresse und ExtractDomainFromHomepage)
  • Code-Signing-Zertifikat erneuert

2.12.13.2437

  Fehlerbehebungen
  • Bugfix für "Checkbox: Read-only sieht aus wie disabled."
  • Bugfix für "Read-Only wird initial nicht als read-only angezeigt."

2.12.9.1231

  Fehlerbehebungen
  • Bugfix für "Generierter Code für Names enthält Fehler"

2.12.8.2545

  Fehlerbehebungen
  • Bugfix für "Ungültiger Code wird generiert, wenn der Name eine Attributs Sonderzeichen enthält."
  • Bugfix für "Ungültiger Code wird generiert, wenn ein Attribut so heißt wie die Entität."
  Änderungen, Verbesserungen
  • Dropdown-Widget (ReferenceWidget): Stabilitätsverbesserungen
    • Deregistrierung von ReferenceableIdsUpdated
    • AssignValueFromObject() wird abgebrochen, wenn das Widget disabled ist.
    • Eigene Implementierung von DeleteValue() wurde entfernt.

2.11.30.1400

  Fehlerbehebungen
  • Bugfix für "FileWidget speichert die zugewiesene Datei nicht."
  • Bugfix für "RealWidget zeigt Nährungszeichen an, obwohl der dargestellte Wert exakt ist."
  • Bugfix für "TimeWidget zeigt Sekunden an, obwohl sie keine signifikanten Ziffern beinhalten."
  • Bugfix für "Der Button, um ein Behavior von der einen zur anderen Liste zu verschieben, hat keinen Effekt."
  • Bugfix für "Die Tastenkombination Strg+3 wird nicht korrekt geparst."
  Änderungen, Verbesserungen
  • Das Attribute "AttributeForFocusedRow" kann dazu benutzt werden, die Selektion in einer Tabelle zu setzen.
  • Während der Code-Generierung wird nun ein durchgängier Fortschrittsbalken angezeigt.
  • Widget: Beim Ändern des Widget-Typs wird die Breite nur dann auf den Standardwert gesetzt, wenn sie vorher dem Standardwert des vorherigen Widget-Typs entsprach.
  • Der Schalter RuntimeSettings.ForceNewWindow kann dazu benutzt werden, das nächste sich öffnende Fenster in jedem Fall als neues Fenster zu bekommen.
      Dieser Schalter sollte mit einem Try-Finally-Block verwendet werden, damit er nicht ungewollte eingeschaltet bleibt.
  • Core-Attribute neuer Entitäten erhalten ab sofort einen deutschsprachigen Namen. Der technische Name bleibt unveränderrt.
  • Für bestimmte Namen wird nun ein passender Code generiert:
    • Entitäten
      • Beispiel: "select x.* from {Names.Entities.Arbeitseinsatz} x"
    • Attribute
      • Beispiel: "where x.{Names.Attributes.Arbeitseinsatz.Mitarbeiter}={mitarbeiter.Id}"
    • Formulare
      • Beispiel: admin.ShowObject(this, Names.FormViews.Anforderung.Anforderungsdokumentation, null, "Anforderungsanalyse");
  • Der Konstruktor der Klasse "ConsoleProcess" verfügt über einen zusätzlichen, optionalen Parameter "percentProgress", über den die Position der angezeigten ProgressBar definiert werden kann.
  • Die Methode ShowObject() verfügt nun über einen zusätzlichen, optionalen Parameter "customName", über den die Überschrift im sich öffnenden Fenster definiert werden kann.

2.12.5.3304

  Änderungen, Verbesserungen
  • Pro Tabelle kann jeweils ein Attribut für die Vorder- und Hintergrundfarbe modelliert werden.
    • Dadurch kann absofort ein Objekt in jeder Tabelle mit unterschiedlichen Farben dargestellt werden.
    • Beispiel: Die Entität Raum aus der Lösung Barz, Unterhaltsreinigung kann je ein Attribut namens "Vordergrundfarbe in Einsatzplan" und "Hintergrundfarbe in Einsatzplan" erhalten. Diese können in der entsprechenden Tabelle, die im Einsatzplanformular verwendet wird, gesetzt werden. Nun muss über Changed-Code bzw. RunCodeForValue dafür gesorgt werden, dass in diesem Attributen der gewünschte Farbwert gesetzt bzw. geliefert wird.

2.11.29.2333

  Fehlerbehebungen
  • Bugfix für "File in Tabelle lässt sich nicht öffnen"
  Änderungen, Verbesserungen
  • Der generierte Code von DeepCopyFrom() kopiert Owner-Verweise nicht mehr.
  • Datenmigrationen werden ab sofort auch dann ausgeführt, wenn sie vor dem Erstellungszeitpunkt der Datendatenbank erstellt wurden.
  • Datenbankspalte für Attributtyp "Memo" wird als "NText" angelegt und ist damit für Unicode-Zeichen geeignet.

2.11.27.2133

  Fehlerbehebungen
  • Bugfix für "Referenzierte Entität nur ReadOnly statt Disabled"
  • Bugfix für "Verzögertes Enable-/ Disable-Verhalten in eigebetten Behaviors"
  • Bugfix für "Image-File-Widget speichert keine Bilder"
  • Bugfix für "Beim Löschen einer Composition werden die Owner nicht benachrichtigt"
  Änderungen, Verbesserungen
  • Wenn bei der Ausführung eines Behaviors ein Fortschrittsbalken angezeigt wird, wird StopBatchMode() noch während der Sichtbarkeit des Fortschrittsbalkens ausgeführt.
    • Dadurch wird nach Aschluss der Behaviorausführung eine "blinde" Zeit ohne Fortschrittsbalken vermieden.
  • RandomValues.PlaceholderTextShort() und RandomValues.PlaceholderTextLong() liefern auch griechischen Text.

2.11.24.3124

  Fehlerbehebungen
  • Bugfix für "Für berechnete Reference-Properties werden Setter generiert"
  Änderungen, Verbesserungen
  • Update des Paketes System.Data.SqlClient auf 4.8.5 aus Sicherheitsgründen

2.11.24.1633

  Fehlerbehebungen
  • Bugfix für "Berechneter Wert verschwindet regelmäßig"
  Änderungen, Verbesserungen
  • Die Widget-Behavior-Icons (z.B. bei Tabellen, Datei) werden nach und nach dem Charis-Stil angepasst.
  • Die Behandlung von veränderten Objekten beim Beenden des BatchModes passiert nun thread-sicher.
  • Der Pfad für die Sqlite-Datei der Modelldatenbank enthält den Namen der ausführende Datei. Dadurch geraten die Dev-, Test- und Prod-Modelle einer Lösung nicht in Konflikt.
  • Anpassungen für Unit-Test-Projekte

2.11.15.2513

  Änderungen, Verbesserungen
  • Die Widget-Behavior-Icons (z.B. bei Tabellen, Datei) werden nach und nach dem Charis-Stil angepasst.
  • Beim Generieren eines PDF-Dokumentes stehen nun zusätzliche Parameter zur Verfügung.
    • DisableSmartShrinking (bool): Wird dieser Parameter auf true gesetzt, findet keine Verkleinerung des Dokumentes statt.
    • PageWidth, PageHeight (decimal): Mit diesen beiden Parametern kann die Größe des Papiers bestimmt werden.

2.11.13.2022

  Fehlerbehebungen
  • Bugfix für "Attributwerte bei einer neu erstellten Instanz werden nicht sofort angezeigt."
    • Konkretes Beipiel in Lösung Barz: Neues Aufmaß zeigt den Adressblock nicht.
    • Hintergrund: Im BatchMode wurden bisher OnAmended-Ereignisse komplett ignoriert.
    • Lösung: Ab sofort werden OnAmended-Ereignisse während des BatchModes registriert und beim Beenden des BatchMode nachgeholt. Mehrfache OnAmended-Ereignisse für ein Objekt führen zu nur einer Behandlung.

2.11.9.2005

  Änderungen, Verbesserungen
  • Die Widget-Behavior-Icons (z.B. bei Tabellen, Datei) werden nach und nach dem Charis-Stil angepasst.
  • Ein StringWidget kann ab sofort vorgeschlagene Werte haben.
    • In einem Attribut vom Typ String kann die Option "suggested values attribute" gesetzt werden.
    • Als "suggested values attribute" kommen Attribute in Frage, die berechnete Multi-Value-String-Attribute sind.
    • In der entsprechenden Methode des berechneten Attributs kann eine beliebige Liste von Strings zurückgegeben werden: Bisher verwendete Werte, Werte aus einer Konfiguration etc.
    • Die Benutzer_in kann trotz der vorgeschlagenen Werte einen anderen Wert eingeben.

2.10.27.2408

  Änderungen, Verbesserungen
  • Die Ausführung von Behaviors findet nun immer im BatchMode statt.
  • Weitere unnötige Aktualisierung der GUI während der Beahvior-Ausführung wird vermieden.
  • Der Fortschrittsbalken wird immer als vollständig angezeigt, wenn die dazugehörige Tätigkeit erfolgreich abgeschlossen wurde.

2.10.24.3242

  Fehlerbehebungen
  • Bugfix für "Enabling Condition setzt Wert nicht auf null"
  • Bugfix für "Parameterausführung trotz blinkender Validatoren"
  • Bugfix für "Der Text eines LabelWidgets ist mit seinem Label nicht korrekt ausgerichtet."
  • Bugfix für "Readonly Dropdown zeigt nach Instanzwechsel beim geöffnetem Fenster keinen Wert."
  • Bugfix für "Behavior werden nicht korrekt verfügbar/nicht verfügbar gemacht."
  • Bugfix für "Besitzerzeiger bei Composition-Instanzen werden manchmal nicht gesetzt."
  Änderungen, Verbesserungen
  • FormViewWidget: Das Attribut "Rows" kann beim WidgetType "Label" benutzt werden.

2.10.23.1744

  Fehlerbehebungen
  • Bugfix für "Da aber nicht gespeicherte Referenzen nicht akzeptabel sind, wurde ein Work-around umgesetzt: Refernzwerte gelten vorerst immer als verändert."
    • Dieser Work-around wurde wieder zurückgenommen.
    • Referenzwerte gelten wieder nur dann als verändert, wenn sie wirklich verändert wurden.

2.10.19.1701

  Fehlerbehebungen
  • Bugfix für "DeepCopyFrom() verursacht unerwünschte Seiteneffekte"
    • Im generierten Code von DeepCopyFrom() wurde der BatchMode (wieder) durch QuietMode ersetzt.

2.10.17.5000

  Fehlerbehebungen
  • Bugfix für "ImageFileWidget zeigt für Grafikdateien nicht die Vorschau sondern nur den Dateityp"
  • Bugfix für "CheckboxGroupWidget reagiert nicht auf Klick"

2.10.17.3135

  Fehlerbehebungen
  • Bugfix für "Referenzwerte werden manchmal nicht gespeichert"
    • Die tatsächliche Ursache wurde nicht gefunden. Da aber nicht gespeicherte Referenzen nicht akzeptabel sind, wurde ein Work-around umgesetzt: Refernzwerte gelten vorerst immer als verändert.
  Änderungen, Verbesserungen
  • Hintergrundaktivitäten werden während einer Behaviorausführung eingeschränkt.
  • Dadurch kommt es zu weniger Seiteneffekte der Nebenläufigkeit und die Performance des Behaviors wird verbessert.
  • Charis verwendet nun fertig gebaute SQL-Statements anstelle von parmetrisierten Kommandos.
    • Dadurch kann das tatsächliche SQL-Statement, das zur Ausführung kommt transparent nachverfolgt werden.
  • SQLite kann nun auch für die Daten-Datenbank verwendet werden.
    • Dadurch werden Anwendungen, die vollständig lokal funktionieren und keine installierte Datenbank als Voraussetzung erfordern, möglich.

2.10.12.2501

  Fehlerbehebungen
  • Bugfix für "Groß-gezogenes Charis-Fenster blockiert nach Minimieren und Wiederherstellen alle anderen Fenster"
  • Bugfix für "Eingebettetes Formular wird nicht aktualisiert"
  Änderungen, Verbesserungen
  • Verbesserung im generiertem Code: Zugriff auf Wert über Property statt privates Element

2.10.6.2218

  Fehlerbehebungen
  • Bugfix für "User-Datenbank wird nicht validiert"
    • Modelldatenbanken werden ab sofort immer validiert.
    • Eine leere Datenbank wird immer validiert.
  • Bugfix für "Rahmen von eingebettenen Formularen ausblenden"
  • Bugfix für "Datumswidget auf die für die Datenbank gültigen Werte einschränken"
  Änderungen, Verbesserungen
  • RealWidget: Beim Editieren werden nicht signifikante Stellen nicht gezeigt.

2.9.28.3206

  Änderungen, Verbesserungen
  • Bei Ganzzahlen und Dezimalzahlen wird zwischen dem gespeicherten, genauem Wert und dem dargestellten und eventuell gerundeten Wert unterschieden.
    • Wenn ein Wert gerundet dargestellt wird, wird dem Wert das Zeichen "≈" vorangestellt.
  • Verbessertes Verhalten beim Start einer Charis-Lösung
    • Es wird nur dann versucht eine Datenbank neu anzulegen, wenn grundsätzlich eine Verbindung zum Datenbankserver hergestellt werden konnte.
    • Die Benutzerdatenbank wird nur dann überprüft, wenn sich das Modell verändert hat - nicht mehr bei jedem Start der Lösung.
  • Datei-Attribute werden durch "Lazy Loading" geladen.
    • Große Dateianhänge und langsame Datenbankverbindungen führen nicht zu großen Wartezeiten.
  • Das Timeout für SQL-Ausführung wurde von 30 Sekunden auf 180 Sekunden erhöht.

2.9.22.1842

  Fehlerbehebungen
  • Bugfix für "Web: Tabelle außerhalb des Fokus wird nicht aktualisiert"

2.9.18.1321

  Fehlerbehebungen
  • Bugfix für "TimeWidget akzeptiert kein Formatstring"
    • Es werden diese Formatstrings für TimeWidget unterstützt:
      • hh:mm:ss für zum Beispiel 09:08:07 oder 14:12:17
      • h:m:s für zum Beispiel 9:8:7 oder 14:12:17
      • hh:mm für zum Beispiel 09:08 oder 14:12
      • h:m für zum Beispiel 9:8 oder 14:12
  Änderungen, Verbesserungen
  • Objekte im Cache werden automatisch stündlich aktualisiert.
      Dadurch erscheinen berechnete Werte, die das aktuelle Datum benützen, auch nach 24:00 Uhr automatisch korrekt.

2.9.17.1334

  Fehlerbehebungen
  • Bugfix für "CheckboxGroupWidget: Wert kann nicht gesetzt werden"
  • Bugfix für "Widgets bleiben disabled"
  • Bugfix für "Changed-Methoden werden im BatchMode nicht aufgerufen"
  • Bugfix für "Nach dem BatchMode wird OnAmended nicht aufgerufen"

2.9.15.1833

  Fehlerbehebungen
  • Bugfix für "Changed-Methode wird zweimal aufgerufen"
  Änderungen, Verbesserungen
  • Die Fehlermeldung in der Methode UpdateObjectFromPersistentValues() wurde verbessert.
    • Der fehlerhafte Wert wird angezeigt.
    • Der Name der betroffenen Datenbankspalte wird angezeigt.
    • Der Zieldatentyp wird angezeigt.

2.9.15.1316

  Fehlerbehebungen
  • Bugfix für "Geerbte Coposition-Attribute werden bei RefreshDynamicValues() nicht gelöscht."
    • Dieser Fehler hat sich beim CheckboxGroupWidget ausgewirkt.

2.9.13.1800

  Fehlerbehebungen
  • Bugfix für "Behaviors in geerbten Entitäten"
  Änderungen, Verbesserungen
  • Aktualisierte Grafiken für Dateitypen (inklusive neuem Dateityp "ACCDB")

2.9.12.2258

  Fehlerbehebungen
  • Bugfix für "Textbox-Widgets werden im Preview nicht korrekt dargestellt."
  Änderungen, Verbesserungen
  • BooleanWidget: Wenn BooleanWidgets (Checkbox) nicht verfügbar sind, wird die Schriftfarbe grau und die Hintergrundfarbe bleibt erhalten.
  • Attribut: Neues Attribut "ExcludeFromExport"
    • Composition-Werte werden im XML-Export rekursiv eingebettet.
    • Mit dem Attribut ExcludeFromExport kann dieses Verhalten abgeschaltet werden.
    • Analog dazu werden Association-Werte im XML-Export nicht eingebettet.
    • Mit dem Attribut EmbeddInXmlExport kann der Wert doch eingebettet werden.

2.9.12.1405

  Fehlerbehebungen
  • Bugfix für "Behavior-Toolbar erscheint nicht."

2.9.12.1131

  Fehlerbehebungen
  • Bugfix für "Caret sprint an den Anfang einer Textbox, wenn der Fokus zu einer anderen Anwendung gelegt wird. Dadurch geht beispielsweise die Stelle zum Einfügen eines kopierten Wertes verloren."
  • Bugfix für "Verkettete Changed-Methoden werden nicht aufgerufen."
  • Bugfix für "Das Setzen eines Attributs vom Typ Datei (file) stößt keine Aktualisierung des Objektes an."
  Änderungen, Verbesserungen
  • Neuer Widget-Typ namens "Image File Toolbar" mit Buttons für Upload, Preview, Download und Delete wurde eingeführt.
  • Attribut: Der Default-Format-String wird nur dann übernommen, wenn das Attribut "format string" noch leer ist.

2.9.8.1735

  Fehlerbehebungen
  • Bugfix für "Entity: 'database table name' zeigt immer Error-Validator an"
  • Bugfix für "Werte verschwinden in read only Widgets"
  • Bugfix für "Lohnabzugsbetrag deaktiviert sich nicht"
  • Bugfix für "Aktualisierung in Formularen funktioniert nicht"
  • Bugfix für "Parameter kann mit Ok geschlossen werden, obwohl Validator blinkt"
  • Bugfix für "NullRef in DeleteInDatabase()"
    • Der generierte Code prüft auf Null vor dem Löschen von Composition-Objekten.
  Änderungen, Verbesserungen
  • Der "i"-Button im Hauptfenster öffnet das Info-Fenster.
  • Im Info-Fenster sind zwei neue Buttons: Homepage und Versionshistorie.
  • Standardformatstring für Attribute vom Typ X

2.9.6.1729

  Fehlerbehebungen
  • Bugfix für "IndexOutOfRangeException während einer langlaufenden Operation"
    • Patronus: Beim Import trat immer wieder eine IndexOutOfRangeException auf.
  • Bugfix für "Dokumenten Templates von andere Lösungen aus zugänglich machen"
  Änderungen, Verbesserungen
  • Behavior: Neues Attribut "EnablingCondition"
    • Mit diesem Attribut kann ein Bool'sches Attribut benannt werden, dass steuert, wann das Behavior verfügbar ist.
    • Wenn diesen Attribut nicht gesetzt ist, ist das Behavior immer dann verfügbar, wenn das Objekt bzw. das Attribut nicht schreibgeschützt (read-only) ist.
    • Issue #226
  • Ab sofort ruft DeleteInDatabase() auch ExecuteSubsequentTasks() auf.
  • Verbesserte Fehlermeldung in der Methode AssignInverseAttribute()

2.9.1.1029

  Fehlerbehebungen
  • Bugfix für "Charis-Entitäten werden nicht vollständig importiert"

2.8.12.1934

  Fehlerbehebungen
  • Bugfix für "Enabling und editable-condition im Konflikt"
  • Bugfix für "Aktualisierung von Widgets in eingebetteten Formularen"

2.8.11.2314

  Fehlerbehebungen
  • Bugfix für "XML-Import aktualisiert falsche Attribute".
    • Bei der Suche nach dem zu aktualisierendem Objekt wurde nicht nur innerhalb der eigenen Composition-Objekte gesucht.
  Änderungen, Verbesserungen
  • RuntimeSettings: Anstelle des Property "BatchMode" gibt es nun die Methoden "StartBatchMode()" und "StopBatchMode()".
  • RuntimeSettings: Neben "BatchMode" gibt es nun auch den "QuietMode".
    • Im BatchMode werden alle Changed-Methoden ausgeführt. Die GUI-Aktualisierung ist redziert.
    • Im QuietMode werden keine Changed-Methoden ausgeführt.
    • Auch für den QuietMode stehen die Methoden "StartQuietMode()" und "StopQuietMode()" zur Verfügung.
  • Auch bei "Object" stehen die Methoden "StartQuietMode()" und "StopQuietMode()" zur Verfügung, um gezielt nur ein einzelnes Objekt in den QuietMode zu versetzen.

2.8.11.1518

  Fehlerbehebungen
  • Bugfix für "Sporadisch auftretende Deadlocks".

2.8.9.1411

  Fehlerbehebungen
  • Bugfix für "WriteToDatabase()" und Value-Änderungen waren nicht "thread-safe".
  Änderungen, Verbesserungen
  • Object hat nun ein öffentliches Property "BatchMode". Damit können nun auch andere Objekte in den BatchMode versetzt werden.
  • Performance-Verbesserungen
    • CheckboxGroupWidget: Einsatz von BatchMode zur Performance-Verbesserungen
    • Widgets, die nicht sichtbar sind, werden nicht aktualisiert.
    • Eingebettet Formulare geben keine Aktualisierungsanfrage nach unten weiter, wenn sie ein anderes Objekt darstellen als das umgebende Formular.
    • Wenn sich ein Referenzwert verändert wird nicht mehr zwangläufig das referenzierte Objekt geladen.
    • Das Anlegen von fehlenden Single-Value-Compositions wird innerhalb der Frage "IsAmended()" angestoßen.
  • Service-Projekte haben ab jetzt Debug als Standard-Logging-Level.

2.8.4.1626

  Fehlerbehebungen
  • Bugfix für "Widget wurde nich anklickbar bei nicht editierbar"
    • Werte, die nicht editierbar sind, müssen beispielsweise noch markiert und kopiert werden können.
  Änderungen, Verbesserungen
  • Das Fortschrittsanzeigefenster ist etwas breiter und die Schriftgröße darin ist etwas kleiner geworden.
  • Bei Fortschrittsmeldungen, die durch einen externen Prozess entstehen, wird ab jetzt der Dateiname des externen Prozesses mit angezeigt.

2.8.2.1524

  Fehlerbehebungen
  • Bugfix für "Wert erscheint nicht im Dropdown-Widget. Liste enthält keine Werte."
      Zu beobachten war der Fehler im FormViewWidget im Widget für "Attribute".
  Änderungen, Verbesserungen
  • Beim Generieren von Standard-Behaviors wird das Öffnen-Behavior als "Default Behavior" gesetzt.
      Bisher wurde das "Default Behavior" nicht gesetzt. Daher konnte es zur Abweichung zwischen Button-Klick auf "Öffnen" und Doppelklick auf einem Eintrag kommen.

2.8.1.1738

  Fehlerbehebungen
  • Bugfix für "Werte in Widgets von eingebetteten Forumlaren aktualisieren sich nicht beim Wechsel des aktuellen Objektes"
    • Dieser Fehler trat auf, wenn Widgets Bedigungen für Read-Only bzw. Disabled haben.
  Änderungen, Verbesserungen
  • Die Bridge-DLLs für SQLite (SQLite.Interop.dll) sind ab jetzt nicht mehr Teil des Projektes und müssen nicht mehr nach jedem Charis-Update auf "copy if newer" gesetzt werden.

2.8.1.1113

  Fehlerbehebungen
  • Bugfix für "DeepCopyFrom() ruft base.DeepCopyFrom() nicht auf"

2.7.28.1434

  Fehlerbehebungen
  • Bugfix für "Seiteneffekte während der DeepCopyFrom()-Ausführung"
    • Der generierte Code für DeepCopyFrom() führt die einzelnen Attributwertzuweisungen in einem "BatchMode" durch. Während des BatchModes werden keine Folgeaktionen von Attributwertzuweisungen (beispielsweise Changed-Code) ausgeführt.
  Änderungen, Verbesserungen
  • Für die Verwendung im Lösungscode gibt es zwei neue "Schalter".
    • RuntimeSettings.BatchMode: Mit diesem Schalter kann die gesamte Anwendung in den BatchMode versetzt werden.
    • Object.BatchMode: Mit diesem Schalter kann ein Objekt in den BatchMode versetzt werden.

2.7.27.2004

  Fehlerbehebungen
  • Bugfix für "Einstiegspunkt für Modeldaten lässt sich nicht öffnen"
    • Im Modell "Unterhaltsreinigung" lässt sich der Einstiegspunkt "Farben" nicht öffnen. Die Bibliothek für "Unterhaltsreinigung" wird gefunden und geladen aber die abhängige Bibliothek "Common" wird nicht geladen.
    • Der Fehler wurde durch einen Umbau des Ladeverhaltens (AppDomain.CurrentDomain.AssemblyResolve) behoben.

2.7.26.1702

  Fehlerbehebungen
  • Bugfix für "Fehlermeldung 'Ambiguous...'"

2.7.24.3325

  Fehlerbehebungen
  • Bugfix für "Fehler, wenn (geerbtes) Attribut im SQL-Select nicht enthalten ist"

2.7.22.1709

  Fehlerbehebungen
  • Bugfix für "NullRef in Widget.handleCreated()"
  • Bugfix für "Widgets auf weiteren Tab-Seiten zeigen keinen Wert"
  • Bugfix für "Beahvior-Parameter zeigt keinen Wert"
  • Bugfix für "Tabelle wird zu oft neu gezeichnet"

2.7.21.1732

  Fehlerbehebungen
  • Bugfix für "Widget-Werte aktualisieren sich nicht"
  • Bugfix für "Hintergrundfarbe von Controls gehen verloren"
  • Bugfix für "Custom-Widgets werden zu oft neu gezeichnet"

2.7.20.3206

  Fehlerbehebungen
  • Bugfix für "Durch Code gesetzter Wert wird im Dropdown-Widget nicht sichtbar"

2.7.20.1940

  Änderungen, Verbesserungen
  • Verwaltung von Entitäten: Neuer Button "import from folder"
      Über diesen Button können eine ganze Gruppe von XML-Dateien mit Entitäten importiert werden.
        Um alle möglichen Verweise aufzulösen, werden die XML-Dateien zweimal hintereinander importiert.
  • Beim XML-Import werden vorhandene Composition-Objekte erhalten.
    • Bisher wurden alle Composition-Objekte gelöscht und komplett neu angelegt.
    • Nun werden vorhandene Conposition-Objekte anhand der LOID bzw. des Identifikationsstrings gefunden und aktualisiert.
    • Objekte, die durch die XML-Datei nicht "bestätigt" werden, werden gelöscht.
  • Modeller: Attribute, Entitäten, Widgets und Formulare, die fehlerhaft sind, werden rot hinterlegt.
  • Eine neue Methode namens ExecuteTasksAfterDeleting() zum Überschreiben steht bereit.
    • Diese Methode wird unmittelbar nach dem Löschen eines Objektes ausgeführt.
    • Eine typische Anwendung ist die Aktualisierung der Verwaltung.
  Fehlerbehebungen
  • Bugfix für diverse Aktualisierungsprobleme

2.7.15.1806

  Fehlerbehebungen
  • Bugfix für "Sichtbarer Bereich in Tabelle verändert sich"
  • Bugfix für "Wert im Widget geht verloren"
  • Bugfix für "SortKey wird bei neuen Objekten nicht sofort gesetzt"

2.7.14.1750

  Änderungen, Verbesserungen
  • Form Views: XML-Export und -Import steht nun zur Verfügung.
  • Entität: Mit dem Button "add attributes from xml" können gezielt die zusätzlichen Attribute aus dem XML in die aktuelle Entität übernommen werden.
    • Vorhandene Attribute werden weder gelöscht noch aktualisiert.
    • Vorhandene Attribute werden anhand der LOID, der Legacy-LOID bzw. des technischen Namens erkannt.

2.7.13.3256

  Fehlerbehebungen
  • Bugfix für "Parameter-Objekt aktualisiert sich nicht"

2.7.12.1608

  Änderungen, Verbesserungen
  • Beim Import von Charis-XML-Dateien werden LOID, Legacy-LOID und Technischer Name verwendet, um eine vorhandene Entität zu finden.

2.7.8.2022

  Fehlerbehebungen
  • Bugfix für "Geänderte Widgets werden nach dem Speichern nicht zurückgesetzt"

2.7.8.1231

  Änderungen, Verbesserungen

2.7.8.1040

  Fehlerbehebungen

2.7.7.1004

  Fehlerbehebungen
  • Bugfix für "Geerbte Verweisattribute"

2.6.9.1423

  Fehlerbehebungen
  • Bugfix für "Dropdown bleibt nach dem Löschen eines Wertes leer"

2.6.1.1612

  Fehlerbehebungen
  • Bugfix für "Parameterwerte gehen verloren"
  • Bugfix für "Eingebettetes Formular aktualisiert sich nicht"

2.5.25.1705

  Fehlerbehebungen
  • Bugfix für "Fehler bei einer Behavior-Ausführung"
  Änderungen, Verbesserungen
  • Titel Bestätigungsfrage
  • Checkboxen sehen aus als wären sie "read only"
  • Ohne installierte Third-Party-Software öffnet sich beim Generieren von Dokumenten sourceforge.net
  • Behavior "Prefered Caption" ist defekt

2.5.11.1752

  Fehlerbehebungen
  • Bugfix für "Selektierte Zeile in Tabelle springt" (Zweiter Versuch)
  • Bugfix für "Titelleiste aktualisiert sich nicht"
  • Bugfix für "Werte im eingebetteten Formular werden nicht angezeigt"
  • Bugfix für "Anzahl veränderter Objekte seit der letzten Code-Generierung wird nicht aktualisiert"
  Änderungen, Verbesserungen
  • Löschen eines Composition-Objektes aktualisiert das Owner-Objekt.

2.5.10.1557

  Fehlerbehebungen
  • Bugfix für "Selektierte Zeile in Tabelle springt"
  • Bugfix für "Dropdown aktualisiert sich nicht"
  Änderungen, Verbesserungen
  • Automatischer Speichervorgang findet zeitlich verzögert statt.
    • Dadurch werden bei vielen aufeinanderfolgenden Attributänderungen weniger Speichervorgänge durchgeführt.

2.5.8.3232

  Fehlerbehebungen
  • Bugfix für "Das Öffnen von Kompositionformularen produziert eine Endlosschleife"

2.5.7.3215

  Änderungen, Verbesserungen
  • Eine Charis-Anwendung startet sich nicht erneut sondern holt die Fenster der laufenden Instanz in den Vordergrund.
    • Dieses Verhalten kann durch das Gedrückthalten der Shift-Taste während des Starts außer Kraft gesetzt werden.
  • Mit der Tastenkombination Strg+6 kann zusätzlich zum Verbose-Level das Loggen der SQL-Anweisungen eingeschaltet werden.
    • Im Umkehrschluss werden mit Strg+5 die SQL-Anweisungen nicht (mehr) geloggt.
  • Minimierte Fenster speichern ihre Position und Größe nicht (mehr).
    • Dadurch gehen die usprüngichen Informationen nicht verloren, wenn beispielsweise die Anwendung geschlossen wird, während manche Fenster minimiert waren.

2.5.6.1329

  Änderungen, Verbesserungen
  • "OverridableExpression" von BOS-Attribute werden beim Import mit der Expression in der Bemerkung abgelegt.

2.5.5.3046

  Fehlerbehebungen
  • Bugfix für "Attributwerte gehen verloren"
    • Beispiel: Rechnungslauf in der Lösung de.de.wohnheim_muenchen.WoVe
  • Bugfix für "Dropdown zeigt keine möglichen Werte"
    • Beispiel: Attributauswahl in Tabellenspalten in der Lösung de.horaios.Charis
  Änderungen, Verbesserungen
  • Performance- und Stabilitätsverbesserungen
    • Verbessertes GUI-Verhalten während einer Behaviorausführung
    • Höhere Thread-Sicherheit
    • Besseres Logging auf Verbose-Level

2.5.2.3349

  Fehlerbehebungen
  • Bugfix für "Fehlermeldung bei der Anlage eines neuen Objektes mit Single-Value-Composition und Code für InitializeNewObject()"
    • Beispiel: Neuer Kunde in der Lösung de.barz_ulm.Kunden
  Änderungen, Verbesserungen
  • Dimension des i-Buttons angepasst
  • Eingebettete Formulare werden asynchron geladen.
  • Standard-Logging-Level für "-Dev"-Projekte ist wieder "Debug". ("Verbose" war zu speicherhungrig.)
  • Performance- und Stabilitätsverbesserungen

2.5.1.3122

  Änderungen, Verbesserungen
  • Performance- und Stabilitätsverbesserungen

2.5.1.1745

  Änderungen, Verbesserungen
  • Die Methode NewComposition() ruft ab sofort InitializeNewObject() nach dem Aufruf von AssignInverseAttribute() auf.
    • Dadurch kann im Code von InitializeNewObject() die Owner-Referenz genutzt werden.
    • Ohne diese Änderung musste die Initialisierung aufgeteilt werden und es musste ein "run code when changed" für das Owner-Attribut genutzt werden.
  • Stabilitätsverbesserungen

2.4.25.3228

  Änderungen, Verbesserungen
  • Stabilitätsverbesserungen

2.4.25.3228

  Fehlerbehebungen
  • Bugfix für "Die erste Zuweisung eines Referenzwertes nach dem Start der Anwendung ist wirkungslos."

2.4.25.3228

  Fehlerbehebungen
  • Bugfix für "Bei bestimmten Attributveränderungen wird eine sehr hohe Prozessorlast produziert."

2.4.25.1623

  Änderungen, Verbesserungen
  • Neuer Widgettyp "Traffic Light" (Ampel) steht zur Verfügung.
    • Ganzzahlwerte können mit diesem Widgettyp dargestellt werden.
    • Der Zahlenwert wird folgendermaßen angewendet:
      Null
      0
      1
      2
    • Es können feste Werte für "width" und/oder "height" angegeben werden.
      • Wenn keine Werte angegeben werden, gelten die Standardwerte (Breite: 85, Höhe: 33).
    • Die Optionen "use additional width" und "use additional height" können genutzt werden.
      • Wenn zusätzlicher Platz zur Verfügung steht, wird die Ampel größer dargestellt.

2.4.25.1622

  Fehlerbehebungen
  • Bugfix für "Fehlermeldung beim Beenden einer Charis-Anwendung"

2.4.25.1118

  Fehlerbehebungen
  • Bugfix für "Composition-Objekte werden gelöscht"
    • Dieser Fehler hat dazu geführt, dass im SolutionManager sämtliche Datenbankzugangsdaten gelöscht wurden.

2.4.22.2357

  Fehlerbehebungen
  • Bugfix für "Anwendung friert ein, wenn das Erreignis UserPreferenceChanged auftritt"
  • Bugfix für "Attributwerte, die gesetzt wurden, gehen verloren"
  Änderungen, Verbesserungen
  • Im Splash-Fenster ist nun mehr Platz für den Produktnamen.
  • Im Einstellungen-Fenster ist der Button "Create shortcut on desktop" nicht mehr sichtbar.
  • Der Standardwert für den Mindest-Log-Level ist vom Suffix der Anwendung abhängig.
    • Suffix "-Dev": Verbose
    • Suffix ".Blazor": Verbose
    • Suffix "-Test": Debug
    • Sonst: Information
  Änderungen, Verbesserungen
  • Blazor-Anwendungen erfordern ab sofort mindestens .NET 6.0 als Laufzeitumgebung.
    • Der Support für .NET 5.0 endet am 8. Mai 2022.
    • Beim Publish des Blazor-Projektes muss als "Target Framework" der Wert "net6.0" ausgewählt werden.
    • Auf den Zielsystemen muss das Hosting Bundle für .NET 6.0 installiert werden.
  Bugfixes
  • Boolean-Werte werden in Tabellen wieder korrekt als zweiwertige Checkboxen dargestellt.

2.4.19.1100

  Fehlerbehebungen
  • Bugfix für "Laufenden Charis-Anwendungen führen zu hoher Prozessorauslastung"
  • Der Fehler "Charis-Anwendungen frieren ein" besteht leider noch.
    • Der Fehler lässt sich zuverlässig reproduzieren, wenn man eine Charis-Anwendung laufen lässt und der Desktop gesperrt wird (bei RDP-Sitzungen die Sitzung getrennt und wieder verbunden wird).

2.4.14.1115

  Fehlerbehebungen
  • Bugfix für "Attributänderung führt zu Endlosschleife"

2.4.13.2845

  Änderungen, Verbesserungen
  • Alle SQL-Abfragen und -Anweisungen werden mit dem Log-Level "Verbose" protokolliert.
  • Der Mindest-Log-Level kann zur Laufzeit verändert werden.
    • Folgende Log-Level stehen zur Verfügung (Quelle: Serilog):
      • Error: When functionality is unavailable or expectations broken, an Error event is used.
      • Warning: When service is degraded, endangered, or may be behaving outside of its expected parameters, Warning level events are used.
      • Information: Information events describe things happening in the system that correspond to its responsibilities and functions. Generally these are the observable actions the system can perform.
      • Debug: Debug is used for internal system events that are not necessarily observable from the outside, but useful when determining how something happened.
      • Verbose: Verbose is the noisiest level, rarely (if ever) enabled for a production app.
    • Der Standardwert für den Mindest-Log-Level ist "Information".
    • Der aktuell eingestellte Mindest-Log-Level lässt sich in der Statuszeile des Hauptfensters ablesen. Der Standardwert wird allerdings nicht angezeigt.
    • Der Mindest-Log-Level kann mit den folgenden Tastenkombinationen eingestellt werden (Achtung: Das Hauptfenster muss hierfür fokussiert sein.):
      • Strg+1: Error
      • Strg+2: Warning
      • Strg+3: Information
      • Strg+4: Debug
      • Strg+5: Verbose
  Fehlerbehebungen
  • Bugfix für "Gelegentliches Einfrieren der Benutzeroberfläche"
  • Bugfix für "Attribute vom Typ Datei (file) werden immer als geändert angezeigt"

2.4.12.1052

  Fehlerbehebungen
  • Bugfix für "Dropdown-Widget zeigt keine möglichen Werte"
  • Stabilitätsverbesserungen
  • Kleine Fehlerbehebungen

2.4.11.1332

  Fehlerbehebungen
  • Kleine Fehlerbehebungen

2.4.10.3303

  Änderungen, Verbesserungen
  • Breaking Change: Die Properties der Charis-Objekte sind nun direkt die Zieldatentypen (string, int?, bool? etc.). Dadurch ist die Verwendung des Properties "Value" nicht mehr notwendig.
  • Im Hauptaufgabenfenster wird in einer neuen Statuszeile die Versionsnummer der Lösung angezeigt. Außerdem gibt es hier einen Info-Button, der die entsprechende Seite auf software.horaios.de öffnet.

2.4.8.1657

  Fehlerbehebungen
  • Der Fehler "Die blauen Pfeil-Buttons zeigen keine unmittelbare Auswirkung" ist behoben.
    • Kundenticket #069 - Fahrzeuge nicht verschiebbar
    • Dieser Fehler war zu beobachten, wenn die zugrundeliegende Liste berechnet (run code for value) ist.
    • Der Fehler ist dadurch behoben, dass nach dem Verschieben die Berechnung der Liste erneut durchgeführt wird.

2.4.5.1307

  Fehlerbehebungen
  • Der Fehler "WriteToDatabase scheitert, wenn beim Tabellennamen ein Schema angegeben ist" ist behoben.

2.4.4.1426

  Fehlerbehebungen
  • Der Fehler "Der Typ des inversen Attributs ist im generierten Code nicht gesetzt" ist behoben.

2.4.3.3154

  Änderungen, Verbesserungen
  • Der Code um Daten aus XML-Dateien einzulesen wird nun generiert.
    • Dadurch kann jedes Charis-Objekt mit einer Anweisung in eine XML-Datei geschrieben werden:
      var filePath = ToXmlFile();
      Und nun auch mit einer Anweisung ein Objekt mit den Daten aus einer XML-Datei aktualisiert werden:
      FromXml(filePath);

2.4.2.2306

  Änderungen, Verbesserungen
  • Entitäten und Attribute können nun als XML-Dataien exportiert und von XML-Dateien importiert werden.
    • Issue #170
    • Auch von Canotis BOS exportierte XML-Dateien mit einer oder mehreren Entitäten können importiert werden.
    • Nutzungshinweis: XML-Dateien von Canotis BOS können mehrfach importiert werden. Dies führt nicht dazu, dass neue Entitäten entstehen sondern vorhandene Entitäten aktualisiert werden. Dies ist sehr nützlich, wenn beim ersten Import nicht alle Referenzen gesetzt werden konnten, weil beispielsweise die Zielentität oder das Zielattribut nocht nicht vorhanden war. Beim zweiten Import könnten sich Referenzen vervollständigen.
    • Nutzungshinweis: Mehrwertige Verweisattribute aus Canotis BOS (Multi-Value-Associations) müssen unter Verwendung einer Zwischenentität umgebaut werden.

2.4.1.1155

  Änderungen, Verbesserungen
  • Eine beliebige Gruppe von Widgets eines Formulares kann in ein anderes Formular verschoben bzw. kopiert werden.
    • Issue #167
    • Als Ziel (target form view) können die anderen Formulare derselben Entität ausgewählt werden. Ggf. muss vorher ein neues Formualr angelegt werden.
    • Nutzungshinweis: Es können bei gedrückter Shift- oder Strg-Taste mehrere Checkboxen gleichzeitig selektiert werden und mit Mausclick auf einer der Checkboxen oder mit der Leertaste auf einmal aktiviert bzw. deaktiviert werden.
    • Wenn die Option "copy widgets" nicht ausgewählt ist, werden die Widgets verschoben.
    • Wenn die Option "copy widgets" ausgewählt ist, werden die Widgets kopiert.

2.3.31.1654

  Fehlerbehebungen
  • Der Fehler "Anwendungen loggen nicht mehr" ist behoben.

2.3.31.1110

  Änderungen, Verbesserungen
  • Formulare (FormViews) haben nun einen Button "create copy", mit dem das gesamte Formular kopiert werden kann.

2.3.29.2426

  Fehlerbehebungen
  • Der Fehler "DeepCopyFrom() kopiert Compositions nicht" ist behoben.
  • Der Fehler "Tabelle: Selektiertes Objekt ist nach dem Löschen nicht aktuell" ist behoben.

2.3.25.1515

  Änderungen, Verbesserungen
  • Für Charis-Objekte wird jeweils eine Methode "DeepCopyFrom()" generiert.
    • Die Implementierung von DeepCopyFrom() kopiert die Werte aller Attribute von der Quelle in das Ziel.
    • Bei Composition-Objekten wird entsprechend die DeepCopyFrom()-Methode rekursiv aufgerufen.
    Code-Beispiel:
    var ziel = NewObject<Anforderung>();
    ziel.DeepCopyFrom(quelle);
    ziel.Sprint.Value = neuerSprint;
    ziel.WriteToDatabase();

2.3.25.1142

  Fehlerbehebungen
  • Der Fehler "Dropdown im Parameterfenster ist anfänglich leer" ist behoben.

2.3.25.0726

  Änderungen, Verbesserungen
  • Die Automatische Generierung des Quellcodes beim Öffnen der Aufgabe "entities" wurde abgeschaltet.
  • Der Einstiegspunkt "entities" zeigt mit einer Zahl den Bedarf der Quellcodegenerierung an.

2.3.24.1149

  Änderungen, Verbesserungen
  • Generierte Behavior-Namen sind spezifischer. Dadurch kommt es zu keiner Verwechslung, wenn ähnliche Attribute vorhanden sind.
    • Beispiel: "Eintrag aus Einträge öffnen" (statt wie bisher "Eintrag öffnen")

2.3.22.2302

  Änderungen, Verbesserungen
  • Migrationsaufgaben für User-Datenbanken können definiert und implementiert werden.
    • Eine Migrationsaufgabe kann im Modell einer Lösung definiert werden.
    • Nach dem Generieren steht eine passende Klasse für die Implementierung bereit.
    • Beim Starten der Lösung wird jede Migrationsaufgabe genau einmal pro User-Datenbank ausgeführt.
    • Die Ausführung wird in einer Instanz von Migrationsaufgabenausführung protokolliert.

2.3.21.0936

  Änderungen, Verbesserungen
  • Der Modeller als ClickOnce-Anwendung akzeptiert nun zusätzlich die Aufrufparameter "username" und "password".
    • Dadurch ist es nun möglich Modelldatenbanken zu nutzen, die nur über SQL-Authentifizierung erreichbar sind.
    • Folgende Aufparameter werden nun akzeptiert:
      • databaseHost (Beispiel "utah\charisdev")
      • userDatabase (Beispiel "de.horaios.Equip")
      • username (Benutzername für SQL-Authentifizierung; bleibt leer bei integrierter Authentifizierung)
      • password (Passwort für SQL-Authentifizierung; bleibt leer bei integrierter Authentifizierung)
      • userDatabaseFileName (Dateipfad zur Sqlite-Datenbankdatei)
      • codingFolder (Beispiel "D:\cpa\Charis\de.horaios.Equip")

2.3.21.2018

  Änderungen, Verbesserungen
  • Im Settings-Fenster werden nur gültige Werte für eine Wiederverwendung gespeichert. Dadurch wird der folgende Effekt vermieden:

2.3.21.1759

  Fehlerbehebungen
  • Bugfix für "Fehlermeldung beim Starten einer Lösung, wenn keine Konfigurationswerte vorhanden sind"

2.3.21.1521

  Fehlerbehebungen
  • Bugfix für "Lösung lässt sich mit den Einstellungen des Settings-Fensters nicht starten."
    Fehlerbeschreibung: Es wird die Fehlermeldung "user database filename is missing" angezeigt.
    Hintergrund: Dieser Fehler trat auf, wenn zuletzt das Settings-Fenster auf der zweiten Tabseite beendet wurde.
    Ursache: Beim Ändern der Tabseite wurde die gespeicherte Einstellung nicht aktualisiert.
  Änderungen, Verbesserungen
  • Das Aufräumen von Objekten im Cache wurde deutlich verbessert.

2.3.19.1608

  Änderungen, Verbesserungen
  • Ein generiertes Behavior zum Öffnen eines Tabelleneintrags erhält die abweichende Bezeichnung (preferred caption) "Öffnen" (nicht "Bearbeiten").

2.3.19.1526

  Änderungen, Verbesserungen
  • Eine rekurisve Struktur führt beim XML-Export (und somit auch beim Generieren von HTML- oder PDF-Dokumenten) nicht mehr zu einer Endlosschleife.

2.3.17.1551

  Fehlerbehebungen
  • Bugfix für "Badge-Worker hört auf zu arbeiten."

2.3.17.1551

  Änderungen, Verbesserungen
  • Das Widget "ImageFile" kann nun auch Icon-Dateien (*.ico) darstellen.

2.3.17.0844

  Änderungen, Verbesserungen
  • Der Modeller wird ab jetzt als ClickOnce-Anwendung bereitgestellt.
    • Die Installationsdatei für den Launcher steht hier zur Verfügung: de.horaios.Charis
  • Die Version entspricht ab jetzt dem Zeitpunkt der Veröffentlichung.
    • Beispiel: 2022-03-17 08:44 → 2.3.17.0844

1.3.86 (2022-03-16)

  Änderungen, Verbesserungen
  • Leere Widgets werden auch im Nur-Lesen-Modus nicht farblich hervorgehoben.
    • Dadurch können Sie auch in Nur-Lesen-Formularen unauffällig zur Gestaltung von Abständen eingesetzt werden.
  • Das Flackern im Hauptfenster bei Verwendung von Mengenanzeigen wurde abgestellt.

1.3.85 (2022-03-14)

  Bugfixes
  • "OK-Button im Parameterfenster kann mehrfach angeklickt werden."
  • "Breadcrumbs wird um falsche Einträge erweitert, wenn man im selben Formular zu einem anderen Objekt navigiert."

1.3.84 (2022-03-14)

  Änderungen, Verbesserungen
  • HTML-Template wird nur aktualisiert, wenn es eine echte Änderung gibt. Dadurch ist der Versionsvergleich der SQL-Server-Exportdatei aussagekräftig geworden.
  • Die erste Zeile in der SQL-Server-Exportdatei der lediglich eine Tool-Signatur und einen Zeitstempel enthält, wird entfernt. Dadurch ist der Versionsvergleich der SQL-Server-Exportdatei aussagekräftig geworden.
  • Die SQL-Server-Exportdatei wird in UTF-8 umgeschrieben. Dadurch ist die Datei deutlich kleiner geworden.
  • Das Objekt, das in einem Formular angezeigt wird, wird vorher aktualisiert (Aufruf der Methode "Refresh"). Dadurch sollten Aktualisierungsprobleme in Dropdown-Widgets reduziert sein.

1.3.83 (2022-03-14)

  Änderungen, Verbesserungen
  • Wenn bei einem Widget der Widget-Typ "references" (Tabelle) gewählt wird, werden in den Attributen "table widget" und "details form view" automatisch die ersten Einträge aus den möglichen Werten gesetzt.
  • Bei einigen generierten Behaviors wird das Attribut "preferred caption" gesetzt: Bearbeiten, Anlegen und Löschen.
  • Wenn das Attribut "preferred caption" einen Wert erhält, wird die Option "show caption" automatisch aktiviert.
  • Das Objekt, das in einem Formular angezeigt wird, wird vorher aktualisiert (Aufruf der Methode "Refresh"). Dadurch sollten Aktualisierungsprobleme in Dropdown-Widgets reduziert sein.

1.3.82 (2022-03-13)

  Neue Features
  • Bei Behaviors kann nun modelliert werden, dass neben dem Icon auch ein Text angezeigt wird. Standardmäßig wird als Text der Name des Behaviors verwendet.
    • Es stehen zwei neue Attribute bereit: "preferred caption" und "show caption".
    • Die Option "show caption" legt fest, ob ein Text angezeigt wird oder nicht.
    • Mit dem Attribut "preferred caption" kann ein Text, der vom Namen des Behavios abweicht, angegeben werden.
    • Anleitung für Nachträgliches Setzen von "preferred caption" bei Behaviors
  • Widget-Behaviors, die als Toolbutton über dem Widget angezeigt werden, können auf Wunsch ein Icon und einen Text (Caption) anzeigen.

Mit und ohne Option "show caption"