Metainformationen zur Seite
  •  

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
web:webcore [2026/01/23 07:43] – angelegt adminweb:webcore [2026/04/14 06:49] (aktuell) admin
Zeile 1: Zeile 1:
 ====== WebCore ====== ====== WebCore ======
  
 +===== Beachten! =====
 +
 +  * um das erste Eingabeelement im Formular zu fokusieren, kann man SetFocus des Elements im WebFormShow aufrufen. In WebFormCreate funktioniert dieser Aufruf noch nicht.
 +
 +===== Template =====
 +
 +  * Wenn man ein Template mit BootstrapStudio erstellt und dann mit einem WebCore-Projekt verknüpfen möchte, dann kann man die html-Datei z.B. form_main.html nennen.
 +  * Bei der Steuerelement-Synchronisation werden nur Elemente mit ID synchronisiert. 
 +  * styles.css muss aus dem Ornder assets/css eingebunden werden
   * man darf in Delphi keine Daten ändern, die im Template vorgegeben sind. Z.B. den caption eines Buttons   * man darf in Delphi keine Daten ändern, die im Template vorgegeben sind. Z.B. den caption eines Buttons
   * Listenelemente kann man mit ThsWebTools.ElementOuterHtml('zeile') aus dem Template laden. Dann löscht man dieses Element aus dem Template mit ThsWebTools.Remove('#liste') und kann es dann innerhalb z.B. eines TWebListControl als Vorlage verwenden.   * Listenelemente kann man mit ThsWebTools.ElementOuterHtml('zeile') aus dem Template laden. Dann löscht man dieses Element aus dem Template mit ThsWebTools.Remove('#liste') und kann es dann innerhalb z.B. eines TWebListControl als Vorlage verwenden.
 +  * **Wichtig**: Bei TWebListControl muss style auf lsListGroup gesetzt werden, sonst wird der Text nur im letzten Element angezeigt. Das ElementListClassName auf list-group-item setzen, dann gehen die Rahmen weg.
 +  * Den horizontalen Scrollbar bekommt man weg, indem man eine Klasse definiert, die overflow: hidden !important und width: 98% hat und diese den Item-Elementen zusätzlich zuweist : ElementListClassName = "list-group test"
 +
 +
 +===== WebTemplate mit M365-Anmeldung =====
 +
 +  * Projects\Web\KSH\**KshLoginTemplate**
 +  * Die Einstellungen werden in der config.json gemacht
 +    * Achtung: diese Datei muss für Online angepasst werden und darf nicht beim Hochladen ohne Anpassungen mit kopiert werden
 +    * **wichtig:** Für jedes Projet muss der (Online-)Pfad zur Datei in der Constanten **cConfigJsonFile** angepasst werden
 +  * Die Überschrift WebLabel1 muss im Delphi-Formular gesetzt werden, ebenso der Text auf dem Anmelde-Button
 +  * Die RedirectUrl muss in der App in M365 registriert werden unter: "Authentication (Preview)" - als Single-Page-Webanwendung
 +
 +in der config.json wird die Url definiert, mit der ein JWT abgerufen werde soll:
 +z.B. https://services.ksh-m.de:2001/auth/v1/login/jwtbymstoken
 +Dieser Url muss ein gültiges Microsoft AccessToken übergeben werden
 +{ "token": "%s" }
 +mit dem dann im KDB-Service https://graph.microsoft.com:443/v1.0/me aufgerufen wird. 
 +
 +Um ein neues Projekt damit zu starten:
 +
 +  * Verzeichnis KshLoginTemplate kopieren und umbenennen
 +  * Projektdatei des kopierten Verzeichnisses KshLoginTemplate.dproj in Delphi öffnen
 +  * Das Projekt in Delphi umbenennen und speichern
 +  * jetzt kann man das neue Projekt weiterentwickeln, vor allem als erstes die Prozedur **AfterJwtRead** mit sinnvollem Code füllen
 +  * **WICHTIG**: die Adresse zum Testen darf nicht http://127.0.0.1:/... sein, sondern muss http://localhost:8000/... sein
 +
 +==== BootstrapStudio ====
 +
 +  * Neues Projekt anlegen (Bootstrap 5.3)
 +  * Export anpassen
 +    * Exportverzeichnis
 +    * Use a CDN for Libraries
 +    * Export Labels
 +  * Hauptdatei anpassen: form_main
 +    * container
 +    * row
 +    * column
 +    * Heading H1
 +
 +
 +==== Fehlermeldung beim Speichern des Formulars ====
 +
 +  * Sync zwischen pas und dfm
 +  * TWebImageControl.Data = {} - in dfm ganz löschen