Cosa c’è di nuovo in 4D v17

Tradotto automaticamente da Deepl

Questo documento è una raccolta di tutte le funzionalità disponibili in 4D v17, introdotte durante il programma di rilascio della v16 R o nell’ultimo passaggio da 4D v16 R6 a 4D v17. Si noti che per ogni funzione è stato pubblicato un post sul blog per illustrare esempi concreti. È possibile accedere a questi post facendo clic sul titolo della funzione.

Considerate anche che le sezioni con l’etichetta blank sono relative a tutte le nuove funzionalità rilasciate tra 4D v16 R6 e 4D v17.

Questo documento è suddiviso in sette sezioni:

ORDA

4D v17 introduce un concetto innovativo che consente di gestire il database con un approccio orientato agli oggetti: ORDA (Object Relational Data Access).

Ecco le caratteristiche che verranno fornite con questa release:

Creazione, aggiornamento e cancellazione dei dati blank

Con ORDA, le operazioni CRUD (Create, Read, Update e Delete) possono essere eseguite sul database attraverso un livello di astrazione: il datastore, che è un oggetto che fornisce un’interfaccia al modello e ai dati del database attraverso gli oggetti. Con ORDA, le operazioni di creazione, aggiornamento e cancellazione non vengono eseguite su una selezione o su un record corrente, ma su entità:

  • Create: si ottiene istanziando una nuova entità con il metodo new() e salvandola con il metodo save().
  • Aggiornamento: eseguito su un’entità con lo stesso metodo save().
  • Elimina: si esegue su un’entità o su una selezione di entità utilizzando il metodo drop() .

Leggere la documentazione

Interrogare il database blank

Con ORDA, il datastore è un oggetto che fornisce un’interfaccia al modello di database e ai dati attraverso gli oggetti. Inoltre, non si gestisce più la selezione corrente per ogni tabella e record corrente, ma piuttosto entità che sono oggetti. È possibile interrogare facilmente diverse tabelle collegate, gestire relazioni ricorsive su una stessa tabella e utilizzare diversi operatori logici in un’unica interrogazione. 4D v17 offre diversi modi per consentire l’interrogazione della classe di dati (cioè della tabella): è possibile fornire la query come una singola stringa, oppure fornire la query e i valori separatamente usando dei segnaposto, o ancora fornire la query e i valori separatamente usando una collezione costruita dinamicamente. Leggere la documentazione

Andare avanti e indietro tra la selezione corrente e ORDA blank

ORDA può essere integrato nel codice esistente! È possibile aggiornare la selezione corrente di una tabella da una selezione di entità, così come ottenere una selezione di entità dalla selezione corrente di una tabella! A questo scopo sono stati aggiunti nuovi comandi: il comando USE ENTITY SELECTION per aggiornare la selezione corrente nella tabella corrispondente e il comando Create entity selection per ottenere una selezione di entità relativa alla DataClass corrispondente. Leggere la documentazione

Conversione in entità, oggetti e collezioni blank

Con ORDA è possibile separare le entità e le selezioni di entità dal database per lavorare su di esse separatamente. Inoltre, è possibile spostare gli oggetti e le collezioni esistenti nel database. Per esportare un’entità in un oggetto, utilizzare il metodo toObject() e il metodo toCollection() se si desidera esportare una selezione di entità in una collezione. L’importazione di un’entità tramite un oggetto può essere effettuata grazie al metodo fromObject(), mentre l’importazione di una selezione di entità tramite una collezione può essere ottenuta con il metodo fromCollection(). Leggere la documentazione

Gestire i blocchi

Blocco ottimisticoblank

ORDA consente di lavorare con il blocco ottimistico, fornendo una serie completa di metodi per gestire gli errori che potrebbero verificarsi durante il salvataggio di un’entità nel database. Il processo è molto semplice: Dopo aver ricaricato l’entità dal database con il metodo reload(), il metodo touchedAttributes() consente di sapere quali proprietà sono state modificate dall’ultimo caricamento o salvataggio e infine è possibile confrontare le due entità con il metodo diff(). Leggere la documentazione


Blocco pessimistico blank

Oltre al blocco ottimistico, ORDA consente anche di lavorare con il blocco pessimistico, utilizzando il metodo lock() che blocca un’entità, in modo che il salvataggio di un riferimento a questa entità in altri processi fallisca finché l’entità non viene sbloccata. Quindi, d’ora in poi non è più necessario verificare se un’entità è bloccata prima di caricarla, perché quando si cerca di aggiornarla, il metodo save() restituirà uno stato dettagliato che indica i motivi del blocco. Leggere la documentazione

Gestire le entità nella selezione delle entità blank

ORDA fornisce metodi semplici per creare e aggiungere selezioni di entità, nonché metodi per navigare tra le entità in un oggetto di selezione di entità, che consentono di gestire diverse selezioni di entità allo stesso tempo e di navigare tra di esse in modo indipendente. Una selezione di entità viene creata con il metodo newSelection() e le entità vengono aggiunte con il metodo add(). Una selezione di entità fornisce i metodi first() e last() per ottenere la prima e l’ultima entità, mentre un’entità fornisce i metodi previous() e next() per ottenere l’entità precedente e successiva. Leggere la documentazione

Operazioni logiche sulle selezioni di entità blank

Gli operatori logici possono essere utilizzati sulle selezioni di entità, consentendo di ottenere l’intersezione, l’unione o la differenza tra due selezioni di entità, come avviene con gli insiemi nel linguaggio classico. Leggere la documentazione

Calcolo su selezioni di entità blank

ORDA offre un’ottima funzionalità per elaborare i dati attraverso i filtri e ottenere valori aggregati, ma offre anche una serie di operazioni di aggregazione che esaminano ed eseguono calcoli sugli insiemi di dati. Ad esempio, i metodi sum(), average(), count(), min() e max() vengono utilizzati per eseguire le operazioni descritte dai loro nomi! Leggere la documentazione

Linguaggio 4D

Ecco i principali miglioramenti apportati al linguaggio 4D per rendere la vostra esperienza di codifica molto più semplice e intuitiva:

Notazione degli oggetti

La funzione di notazione degli oggetti cambia drasticamente il modo in cui si scrive il codice e si utilizza il motore del database, rendendo la codifica più veloce e più facile da capire. Ad esempio, è possibile scrivere semplicemente $myobject.attribute.subattribute:=5 o accedere a un attributo con $person.children[2].firstname, inoltre è possibile utilizzare la notazione a oggetti come espressione. Ad esempio, si può creare un oggetto del modulo come una variabile di testo e assegnare direttamente l’attributo dell’oggetto, ad esempio [person]relatives.grandfather.grandfather.firstname. Non è più necessario utilizzare OB Get in modo ricorsivo per leggere il valore e assegnarlo a una variabile temporanea, solo per visualizzarlo. Uno dei vantaggi della notazione a oggetti è l’uso di proprietà e valori indefiniti, perché il linguaggio 4D ora accetta valori indefiniti in qualsiasi punto di un’espressione. Inoltre, ogni volta che si assegna un valore indefinito a una variabile, questa viene impostata su un valore predefinito in base al suo tipo.Ciò significa che la lettura della proprietà di un oggetto inesistente non genererà un errore interromperà l’esecuzione del codice. Leggere la documentazione

Oggetti e collezioni condivise

Gli oggetti condivisi e le raccolte condivise sono un modo semplice ed efficiente per condividere informazioni tra processi preemptive. Gli oggetti condivisi e le raccolte condivise si comportano come quelli standard, ma devono essere dichiarati come “condivisi” durante la loro istanziazione con i seguenti nuovi comandi: Nuovo oggetto condiviso e Nuova collezione condivisa. Una volta istanziati, possono essere utilizzati direttamente, come qualsiasi altra variabile, per la lettura. Per la scrittura o la modifica, invece, devono essere circondate dalle parole chiave Use e End use . Leggere la documentazione

Nuovo iteratore: Per ogni/ Fine per ogni blank

Un nuovo ciclo si è aggiunto al linguaggio 4D: For each / End for each, per consentire l’iterazione su tipi di dati avanzati, come le collezioni, senza la necessità di sapere in anticipo quanti elementi appartengono alla collezione prima di entrare nel ciclo. Può anche essere usato per iterare sulle proprietà degli oggetti. È utile se si vuole scrivere del codice generico, senza conoscere in anticipo i nomi delle proprietà dell’oggetto. Leggere la documentazione

Collezioni

Collection è un nuovo tipo aggiunto al linguaggio 4D. Le collezioni sono flessibili e possono accelerare i tempi di sviluppo. A prima vista, una collezione assomiglia a un array, ma mentre un array è un elenco altamente ottimizzato dello stesso tipo (Array longint, Array Text, …), una collezione è una sorta di contenitore che memorizza un elenco di tipi individuali (un longint, poi un testo, poi un numero, poi un’immagine, un oggetto, persino un’altra collezione, ecc); e vi si può accedere con la notazione degli oggetti. Il comando Nuova collezione crea una nuova collezione vuota o precompilata. Per facilitare la manipolazione delle collezioni, vengono forniti alcuni nuovi metodi da utilizzare con la notazione a oggetti. Questi metodi consentono, ad esempio, di aggiungere o rimuovere elementi, ordinare la collezione e molto altro ancora. Sono già disponibili oltre 40 nuovi metodi. Eccone solo alcuni: pop(), push(), concat(), resize(), query(), slice(), .. . Leggi la documentazione

Comando Null

Il nuovo comando Null può essere utilizzato per verificare se un attributo di un oggetto o un membro di una collezione ha un valore sconosciuto o mancante (si pensi alla differenza tra il valore 0 o una stringa vuota “” con un valore non impostato). Permette anche di impostare il valore di un attributo come sconosciuto. Questo comando può essere usato con la notazione degli oggetti. Leggere la documentazione

Sviluppare con gli oggetti

Date all’interno degli oggetti

Le date possono ora essere impostate come date e non come stringhe in un oggetto, rendendo l’uso delle date all’interno degli oggetti più semplice e intuitivo. In questo modo, OB SET e OB Get possono essere utilizzati senza richiedere la costante is date e la notazione dell’oggetto può essere applicata a questi oggetti come a qualsiasi altro oggetto tipico. Per utilizzare le date all’interno degli oggetti, è sufficiente selezionare l’opzione “Usa il tipo di data invece del formato ISO negli oggetti” dalla pagina delle impostazioni di compatibilità in Impostazioni database. Leggere la documentazione

Supporto delle immagini negli oggetti

Le immagini possono ora essere memorizzate in un campo dell’oggetto o in una variabile dell’oggetto. I comandi OB Get e OB SET supportano il nuovo tipo di immagine Is e la possibilità di memorizzare un’immagine in un campo oggetto. È possibile utilizzare anche la notazione degli oggetti. Leggere la documentazione

Convalida di un oggetto JSON

È stata aggiunta una nuova opzione per ridurre i tempi di debug durante l’analisi delle stringhe JSON. Il parametro * di JSON Parse crea informazioni di debug aggiuntive (proprietà __symbols) che forniscono il percorso, la posizione della riga e l’offset della riga di ogni proprietà e sottoproprietà dell’oggetto. Anche se un oggetto è ben formato, potrebbe non soddisfare le specifiche o le norme di contenuto richieste. Il nuovo comando JSON Validate consente di verificare se la struttura dell’oggetto è conforme a una determinata specifica(schema JSON). Leggere la documentazione

Un modo semplice per inizializzare un oggetto

Il comando Nuovo oggetto consente di creare un oggetto vuoto o con proprietà e valori iniziali in una sola riga di codice. Leggere la documentazione

Interrogare un elenco di elementi in un singolo oggetto

È ora possibile effettuare ricerche in un array all’interno di un oggetto utilizzando argomenti collegati. Il comando QUERY BY ATTRIBUTE consente di eseguire query complesse all’interno di un elenco di elementi in un singolo oggetto. Quando si effettua una ricerca negli attributi di un array con più argomenti di query uniti dall’operatore AND, si potrà scegliere di ottenere i record in cui gli argomenti corrispondenti si trovano in almeno un elemento o nello stesso elemento. Leggere la documentazione

Ordinamento dei record per attributo dell’oggetto

È ora possibile ordinare i record in base a uno specifico attributo dell’oggetto quando si visualizza una selezione, ad esempio in una casella di riepilogo, grazie al nuovo comando ORDINA PER ATTRIBUTO. Leggere la documentazione

Multi-threading preventivo

Il multi-threading preventivo consente alle applicazioni di sfruttare appieno i computer multi-core. Di conseguenza, le applicazioni vengono eseguite più velocemente e possono supportare più utenti connessi. Più di venti comandi esistenti sono stati migliorati in modo da poter essere utilizzati nei processi con preemptive. Leggete la documentazione

Moduli dinamici

È ora possibile creare e utilizzare moduli dinamici. Memorizzati in un formato testuale (JSON), essi aprono un ampio elenco di nuove opportunità: creare moduli completamente adattati al contesto dell’utente finale, condividere lo stesso modulo tra diversi database. La descrizione testuale del modulo può essere salvata in un oggetto 4D o in un file. Poi, in fase di esecuzione, i moduli possono essere caricati. I seguenti comandi sono stati migliorati in modo da poter passare un oggetto 4D o un percorso di file JSON: Apri finestra modulo, DIALOGO, IMPOSTA MODULO IN INGRESSO, IMPOSTA MODULO IN USCITA, IMPOSTA OGGETTO SOTTOFORMA, OTTIENE OGGETTO SOTTOFORMA, CARICA MODULO, STAMPA MODULO. Leggere la documentazione

Comunicazione semplificata tra i moduli

Eliminate il codice complesso e le variabili globali legando un oggetto a un modulo e utilizzandolo internamente con il nuovo comando Form . È sufficiente passare i parametri di un oggetto a un modulo utilizzando il comando DIALOG. Qualsiasi proprietà di questo oggetto sarà poi disponibile all’interno del modulo tramite il comando Form. Questo vale anche per le sottomaschere. Leggete la documentazione

Nuove possibilità di programmazione con le azioni standard

Le azioni standard, come Primo record o colore?valore=rosso, possono essere assegnate a un pulsante o a una voce di menu nell’interfaccia utente o tramite programmazione. Uno dei vantaggi è che 4D gestisce automaticamente la disattivazione della voce di menu o del pulsante quando l’azione non è applicabile. Inoltre, sono stati aggiunti due nuovi comandi al linguaggio 4D per gestire facilmente le azioni standard tramite programmazione:

  • INVOKE ACTION può essere utilizzato per attivare qualsiasi azione standard, opzionalmente nel contesto di destinazione (modulo corrente o modulo principale).
  • Per sapere se un’azione standard è applicabile e valida nel contesto corrente, è possibile utilizzare il comando Ottieni informazioni sull’azione.

Leggere la documentazione

Controllo della priorità del gestore della cache

4D 64 bit include un gestore di cache completamente ottimizzato, basato su un meccanismo di gestione automatica delle priorità degli oggetti nella memoria cache. Il controllo completo della priorità viene dato alla gestione degli oggetti nella memoria cache, consentendo una regolazione fine avanzata.

Per un uso avanzato e per casi specifici, è possibile personalizzare le priorità della cache utilizzando due serie di comandi 4D:

Leggere la documentazione

Sicurezza

4D v17 fa un enorme passo avanti in materia di sicurezza con i miglioramenti indicati di seguito:

Per maggiori dettagli sugli strumenti e sulle tecniche integrate per la creazione di un ambiente protetto per le applicazioni aziendali, consultate la nostra Guida alla sicurezza.

Classifica A+ per i siti Web 4D blank

È ora possibile ottenere la classificazione A+ (la più alta) da SSL Labs per i vostri siti web, semplicemente attivando la funzione HSTS (HTTP Strict Transport Security) sul vostro server web 4D! HSTS consente ai server web di dichiarare che i browser devono interagire con loro solo tramite connessioni HTTPS sicure. Una volta attivata, il server Web 4D aggiungerà automaticamente le informazioni relative all’HSTS a tutte le intestazioni delle risposte. Quando un browser riceve la risposta iniziale del server Web 4D con le informazioni HSTS, la registra. Da quel momento in poi, tutte le future richieste HTTP saranno automaticamente trasformate in HTTPS. È possibile specificare la durata della memorizzazione di queste informazioni da parte del browser con l’opzione Web HSTS max age. Leggere la documentazione

Attivazione del Perfect Forward Secrecy nel server Web 4D

La sicurezza predefinita di 4D Web Server è stata aumentata grazie al supporto di Perfect Forward Secrecy (PFS). Questa implementazione garantisce alle applicazioni una maggiore conformità ad alcune funzioni di sicurezza di rete e un posizionamento più elevato nei test di verifica della sicurezza web. PFS viene abilitato automaticamente quando TLS è attivato sul server . Il comando WEB Get server info può essere usato per verificare che PFS sia abilitato. Il valore del nuovo attributo perfectForwardSecrecy è vero quando sono soddisfatte tutte le condizioni necessarie per l’uso di PFS. Tenete presente che l’algoritmo RC4 è ora deprecato in 4D Web Server a causa di alcuni problemi di sicurezza noti. Leggete la documentazione

Maggiore sicurezza per il server Web 4D

4D supporta Transport Layer Security (TLS v1.0, TLS v1.1 e TLS v1.2) per consentire comunicazioni criptate tra client e server. La versione minima supportata di default è TLS v1.2, mentre le versioni più vecchie vengono rifiutate perché potrebbero essere insicure. Tuttavia, se si desidera supportare browser (o strumenti) più vecchi che non supportano TLS v1.2, è possibile diminuire il livello di sicurezza con il nuovo selettore Min TLS version per i comandi Get database parameter e SET DATABASE PARAMETER. Leggere la documentazione

Hash e verifica della password

Il meccanismo di hashing è ideale per memorizzare le password. Sono stati creati due nuovi comandi per generare e verificare le password con hash: Generate password hash e Verify password hash. Entrambi si basano sull’algoritmo bcrypt, che per sua natura è lento. Pertanto, gli attacchi di forza bruta sono più lenti e l’impatto è ridotto al minimo. Leggere la documentazione

Supporto SHA-2

Le funzioni digest sono utili quando si tratta di controllare l’integrità dei dati durante gli scambi o i confronti. Il comando Generate digest è stato migliorato per supportare SHA-2. Ora supporta due algoritmi della famiglia SHA-2: SHA-256 e SHA-512. La sintassi rimane la stessa e sono state aggiunte le costanti SHA256 digest e SHA512 digest. Leggere la documentazione

Ripristino dell’ultimo backup del database per impostazione predefinita

Per proteggere i dati da eventuali danni, l’opzione Ripristina l’ultimo backup se il database è danneggiatodalla pagina “Backup” di Impostazioni database è selezionata per impostazione predefinita per i nuovi database, il che offre il miglior livello di protezione. Leggete la documentazione

4D Write Pro

Documenti a più colonne blank

È ora possibile creare documenti a più colonne con 4D Write Pro e convertire i documenti 4D Write esistenti contenenti più colonne. I comandi WP SET ATTRIBUTES e WP GET ATTRIBUTES sono stati aggiornati per supportare nuovi attributi per la gestione delle colonne:

  • wk conteggio colonne: definisce il numero di colonne per il documento o la sezione
  • wk spaziatura colonne: definisce la spaziatura tra due colonne
  • stile regola colonna wk, colore regola colonna wk, larghezza regola colonna wk: definisce lo stile (punteggiato, tratteggiato, ecc.), il colore o la larghezza del separatore verticale di colonna.

Leggere la documentazione

Ottenere la posizione di qualsiasi parte di un documento di 4D Write Pro blank

È ora disponibile un nuovo comando dedicato a 4D Write Pro: WP Ottieni posizione. Dato un intervallo, un elemento o un riferimento specifico, questo comando restituisce una variabile oggetto con cinque informazioni importanti in una volta sola: il numero di sezione in cui inizia l’intervallo, il numero di pagina, il numero di colonna, il numero di riga e persino la posizione del primo carattere dell’intervallo nella riga. Leggere la documentazione

Accesso programmatico agli elementi in 4D Write Pro blank

Il comando WP Get elements restituisce un insieme di elementi di qualsiasi tipo (paragrafi, tabelle, immagini, ecc.). Se viene passato un intervallo digitato, il comando restituirà una raccolta contenente solo elementi del tipo corrispondente (a meno che non sia specificato nel secondo parametro). Altrimenti, il comando restituisce un insieme contenente tutti gli elementi disponibili, indipendentemente dal loro tipo. Leggere la documentazione

Come gestire facilmente l’inserimento di testo blank

Il comando WP SET TEXT consente di scrivere del testo in qualsiasi posizione all’interno di un documento. Questo comando si usa come la maggior parte dei comandi “Inserisci” di 4D Write Pro. Richiede tre argomenti: l’oggetto intervallo (in cui il testo deve essere inserito), il testo stesso e una costante per definire se il testo deve essere posizionato prima, dopo o sostituire l’intervallo. Leggere la documentazione

Tabelle in 4D Write Pro

Le tabelle arrivano in 4D Write Pro! Tabelle vere e proprie, celle individuali, se si inserisce un testo di grandi dimensioni in una cella, il testo verrà automaticamente avvolto e la larghezza della cella rimarrà invariata. È possibile creare una tabella da zero e modificarne lo stile, le colonne, le righe e persino le singole celle, il tutto programmando.

Il comando WP Inserisci tabella consente di creare una tabella con un certo numero di celle, righe o vuoti. I seguenti comandi sono stati creati per consentire la gestione delle tabelle nel documento 4D Write Pro: WP Table append row, WP Table get rows, WP Table get columns, WP Table get cells. Tutti questi nuovi comandi sono thread-safe. Leggete la documentazione

Meccanismo di azioni standard esteso a 4D Write Pro

Sono state create oltre 80 nuove azioni standard dedicate a 4D Write Pro, che consentono di gestire facilmente le aree di 4D Write Pro con nuove azioni come Bold, Color, Spell Check, Freeze expression, Show System Font Picker Dialog… Sono disponibili oltre 80 azioni. È ora possibile creare la propria interfaccia utente di 4D Write Pro senza scrivere una riga di codice. Leggere la documentazione

Progettate la vostra barra degli strumenti utilizzando le azioni standard

Create facilmente la vostra barra degli strumenti personalizzata di 4D Write Pro, senza alcuna programmazione. Il meccanismo delle azioni standard, semplice ma molto potente, è stato esteso in modo da poter essere assegnato anche a caselle di controllo e menu a comparsa.

L’uso delle azioni standard consente di sfruttare meccanismi automatici che fanno risparmiare tempo: l’attivazione/disattivazione dell’oggetto viene gestita automaticamente da 4D a seconda del contesto e lo stato corrente (per le caselle di controllo) o il valore (per i menu a comparsa) viene aggiornato automaticamente in base alla selezione del testo corrente. Leggete la documentazione

Progettate il vostro menu contestuale per 4D Write Pro

Il comando Menu a comparsa dinamico è stato aggiornato, rendendo possibile la progettazione di menu contestuali personalizzati 4D Write Pro basati su azioni standard. Leggete la documentazione

4D Write Pro e la gestione delle immagini

Immagini in posizione assoluta

È possibile controllare completamente l’inserimento di immagini in una posizione specifica: davanti o dietro al testo, nonché ancorate alla pagina o a parti specifiche del documento (ad esempio, intestazione, piè di pagina, sezioni). Il comando WP Add picture aggiunge l’immagine alla pagina; per definirne l’esatta posizione e le altre proprietà, è possibile utilizzare le azioni standard o la serie di selettori aggiunti ai comandi WP GET ATTRIBUTES e WP SET ATTRIBUTES. Leggere la documentazione

Supporto delle espressioni di immagine

4D Write Pro supporta ora le espressioni di immagine. Il comando ST INSERT EXPRESSION è stato ampliato per supportare qualsiasi espressione che restituisca un’immagine. Un’espressione può essere una variabile 4D, un campo, una funzione o un metodo definito dall’utente. Prima di utilizzare un metodo 4D in un’espressione, è necessario abilitarne l’uso con il comando IMPOSTA METODI CONSENTITI. Leggi la documentazione

Immagini di sfondo a grandezza naturale

La creazione di immagini di sfondo che riempiono l’intera pagina è possibile con 4D Write Pro, grazie a un attributo di stile di sfondo per il ritaglio e l’origine delle immagini. Questo attributo può essere controllato tramite:

  • Linguaggio 4D: È possibile utilizzare il comando WP SET ATTRIBUTI e impostare il nuovo valore della casella di carta wk per il ritaglio dell’immagine di sfondo e/o l’origine.
  • Azioni standard: È possibile utilizzare il comando INVOKE ACTION , oppure in modalità di progettazione come qualsiasi altra azione standard.
  • Widget 4D Write Pro: Quando si selezionano le voci “immagine di sfondo” e “documento”, le opzioni di ritaglio e origine avranno a disposizione una nuova opzione di riquadro carta.

Leggi la documentazione

Gestione programmatica di intestazioni e piè di pagina

Le intestazioni e i piè di pagina di 4D Write Pro possono essere gestiti in modo programmatico per creare altri documenti basati su un modello, grazie a nuovi comandi, suddivisi in due categorie:

  • Comandi per ottenere i riferimenti di qualsiasi intestazione, piè di pagina o corpo all’interno dei documenti, che possono essere utilizzati per ottenere intervalli associati, creare documenti per una sezione specifica: WP Get header, WP Get body e WP Get footer.
  • Comandi per spostare il cursore in una posizione specifica: WP Get frame è usato per ottenere un riferimento al frame in cui si trova attualmente il cursore, mentre WP SET FRAME imposta il cursore in un frame specifico.

Leggere la documentazione

Collegamenti ipertestuali di 4D Write Pro

È possibile aggiungere un collegamento al logo o al nome dell’azienda con l’attributo wk link url. I collegamenti ipertestuali possono essere aggiunti a immagini, testo o a una combinazione di entrambi, semplicemente usando i comandi WP SET ATTRIBUTES e WP GET ATTRIBUTES. Leggete la documentazione

Utilizzare i caratteri iniziali per le tabulazioni

4D Write Pro offre un’ulteriore funzionalità per perfezionare la progettazione: i caratteri di testa (ad esempio, i punti ripetuti o qualsiasi altro carattere in un indice). I caratteri di testa possono essere controllati sia dal menu contestuale quando si fa clic su una scheda esistente nell’area del righello, sia programmaticamente grazie al selettore wk tab stop leadings new e al comando WP SET ATTRIBUTES. Leggere la documentazione

Righello orizzontale di 4D Write Pro

Utilizzate il righello orizzontale in un’area di 4D Write Pro per regolare i margini, i rientri e allineare orizzontalmente testo, grafica, schede e altri elementi nei vostri documenti. Leggere la documentazione

4D View Pro

Convertire i documenti in 4D View Pro

Il primo passo verso la conversione dei documenti 4D View esistenti in 4D View Pro è già in corso. Grazie al nuovo comando VP Convert from 4D View, la maggior parte delle proprietà e delle informazioni memorizzate nei documenti 4D View vengono convertite automaticamente, compresi struttura del documento, valori, formati, stili, bordi e formule! Leggete la documentazione

Fogli di calcolo 4D View Pro

Grazie al nuovo oggetto modulo 4D View Pro e ai nuovi comandi 4D View Pro, è ora possibile creare fogli di calcolo 4D View Pro. Create un nuovo documento con VP NEW DOCUMENT, salvatelo su disco con VP EXPORT DOCUMENT o nel database con VP Export to object e riapritelo con VP IMPORT DOCUMENT o VP IMPORT FROM OBJECT. Leggere la documentazione

Casella di riepilogo ad altezza variabile automatica

4D View Pro supporta l’altezza variabile automatica delle righe, il che significa che una casella di riepilogo adatta l’altezza di ogni riga al suo contenuto, in modo da poter visualizzare l’intero testo o l’immagine senza problemi di avvolgimento. Nell’elenco delle proprietà sono disponibili tre nuove proprietà: Altezza automatica della riga, Altezza minima della riga e Altezza massima della riga. Queste impostazioni consentono agli sviluppatori di definire se una casella di riepilogo utilizza la modalità di altezza automatica delle righe, oltre all’altezza minima e massima consentita.
Queste impostazioni possono essere gestite anche in modo programmatico utilizzando il comando LISTBOX SET PROPERTY e il nuovo comando LISTBOX SET AUTO ROW HEIGHT . Leggete la documentazione

Ulteriori funzionalità di programmazione

Ottieni informazioni sull’hardware della macchina blank

Il comando Ottieni informazioni sul sistema recupera tutti i dettagli sull’hardware e sul sistema della macchina in esecuzione e informazioni che includono: quale sistema operativo viene utilizzato, quali processori, quanta RAM è disponibile e altro ancora. Leggere la documentazione

Informazioni dettagliate sul server Web 4D

Il comando WEB Get server info recupera informazioni dettagliate sul server Web 4D. Questo comando ha un parametro di input opzionale, withCacheInfo, utile se sono necessarie informazioni sulla cache del server Web. Per impostazione predefinita, questo attributo è impostato su “False”. Leggere la documentazione

Informazioni dettagliate su utenti e processi

Il comando Get process activity fornisce un’istantanea delle sessioni utente connesse, dei relativi processi in esecuzione e di tutti i processi correnti, compresi quelli interni non raggiungibili con il comando PROCESS PROPERTIES. Inoltre, è incluso un attributo systemID per identificare in modo univoco qualsiasi processo: utente, 4D e spare. Dalle informazioni sulla sessione/processo è possibile calcolare il tempo di CPU consumato da questo processo dal momento della connessione (in secondi) e la percentuale di attività (ad esempio: 2%). Inoltre, il comando facilita l’analisi dei risultati. Leggere la documentazione

Informazioni dettagliate sulle licenze

Il comando Ottieni informazioni sulle licenze fornisce informazioni dettagliate sulle licenze installate e sulle licenze utilizzate/disponibili. Leggere la documentazione

Migliore gestione delle estensioni di file e cartelle

Sono stati creati due comandi per facilitare la gestione dei percorsi di file e cartelle. Il comando Path to object restituisce un oggetto contenente le proprietà specifiche (cartella madre, nome del file o della cartella, estensione del file o della cartella) del percorso passato come parametro. Il comando Da oggetto a percorso costruisce un percorso a partire dagli attributi dell’oggetto passato come parametro. Quindi, per comporre un nuovo percorso, modificare gli attributi dell’oggetto necessari e ricombinarli.
Questi comandi devono essere utilizzati al posto dei comandi _o_Document type e _o_SET DOCUMENT TYPE, ormai deprecati. Leggere la documentazione

Accesso facilitato ai file di log

Il comando Ottieni file 4D è stato migliorato per garantire un migliore accesso ai file di registro. Ora è possibile trovare facilmente un particolare file di registro invece di ottenere la cartella contenente tutti i registri. Per questo comando è stata creata una serie di nuovi selettori: File di log di richiesta, File di log di debug, File di log di backup, File di log di verifica, File di log di compattazione, File di log di riparazione, File di log di debug HTTP e File di log dell’applicazione di costruzione. Leggere la documentazione

Comando Timestamp

Il comando Timestamp consente di ottenere una precisa indicazione dell’ora UTC, compresi i millisecondi. Leggere la documentazione

Esperienza utente

Completamento del codice e suggerimento per gli attributi degli oggetti

L’editor dei metodi è stato migliorato per fornire il completamento del codice per gli attributi degli oggetti. Ogni volta che si digita un punto dopo un oggetto, viene visualizzato un elenco di attributi suggeriti, per migliorare la velocità di codifica ed evitare errori o refusi. Il comportamento del completamento automatico può essere personalizzato dal pannello“Preferenze 4D“, per definire se l’elenco dei suggerimenti verrà aperto automaticamente dopo aver digitato un carattere punto (opzione selezionata) o solo dopo aver usato il tasto tabulazione (opzione non selezionata). Leggere la documentazione

Linea di prodotti 4D Windows 64 bit senza Altura

L’intera linea di prodotti 4D Windows 64-bit non si basa più sulla libreria Mac2Win di Altura. 4D Server Windows 64-bit era l’ultimo passo da completare e questo è stato fatto con 4D v16 R4. Ciò consente a 4D di utilizzare internamente le moderne tecnologie sulla piattaforma Windows e di beneficiare di nuove funzionalità come SDI. Leggi la documentazione

Supporto SDI su Windows

Le applicazioni 4D per Windows avevano una finestra principale grigia (denominata MDI – Multiple Document Interface) con tutte le finestre dell’applicazione visualizzate all’interno (come finestre figlie). Le applicazioni SDI(Single Document Interface) hanno una finestra principale che può aprire molte finestre aggiuntive indipendenti dalla finestra principale. Possono essere spostate su altri schermi, rimangono visibili anche se la finestra principale è nascosta e così via… Perché 4D ora consente entrambe le modalità su Windows a 64 bit per le applicazioni unite. Leggete la documentazione

Suggerimenti sulle caselle di riepilogo

È possibile disattivare o attivare programmando tutti i suggerimenti di aiuto all’interno di un’applicazione 4D utilizzando il comando SET DATABASE PARAMETER. È inoltre possibile definire il ritardo di visualizzazione e la durata massima della visualizzazione in base alla lingua. Ma non è tutto: è anche possibile modificare dinamicamente il testo di un suggerimento di aiuto utilizzando il comando OBJECT SET HELP TIP. Inoltre, il comando LISTBOX GET CELL POSITION supporta ora due nuovi parametri opzionali (posizione x e y, in pixel) e restituisce i numeri di colonna e di riga corrispondenti, per aiutarvi a visualizzare i suggerimenti su una colonna, una riga o una cella particolare di una casella di riepilogo. Leggere la documentazione

Definire l’ordine delle schede del modulo tramite la programmazione

È possibile definire l’ordine di inserimento degli oggetti in un modulo mediante la programmazione, in modo da poter controllare quale sarà l’oggetto successivo del modulo su cui si concentrerà l’attenzione quando l’utente premerà il tasto TAB. Due nuovi comandi – FORM SET ENTRY ORDER e FORM GET ENTRY ORDER – consentono di impostare e ottenere dinamicamente l’ordine di inserimento degli oggetti del modulo per il processo corrente. Leggete la documentazione

Miglioramento dell’interfaccia utente IPv6

L’interfaccia utente è stata migliorata per garantire una migliore esperienza agli utenti con configurazioni di rete IPv6. Leggere la documentazione

Esportazione dei risultati dopo un “find in design

La finestra di dialogo “Trova nel progetto” è stata potenziata con due nuove funzionalità relative alla finestra dei risultati. È stato aggiunto un nuovo pulsante che consente di interrompere una ricerca in corso. Inoltre, è disponibile una nuova opzione di filtro che consente di selezionare gli elementi dei risultati che si desidera mantenere e di rimuovere tutti gli altri elementi tranne questa selezione. Inoltre, i risultati di un’operazione di “Trova nel disegno” vengono visualizzati in un elenco gerarchico. È inoltre possibile esportare i risultati della ricerca in un file di testo che può essere aperto in un secondo momento, ad esempio in un foglio di calcolo, consentendo di condividere o archiviare facilmente i risultati. Per farlo, è sufficiente selezionare la nuova voce Esporta risultati, disponibile nel menu di azione “Trova nel progetto”. Leggere la documentazione

Customize list box selection highlight color

È ora possibile avere un controllo dettagliato sul colore di evidenziazione, per ogni singola riga o cella. A tale scopo è stata aggiunta una nuova opzione all’elenco delle proprietà della casella di riepilogo: Hide selection highlight. Quando questa opzione è selezionata, lo sviluppatore deve rendere visibili le selezioni della casella di riepilogo utilizzando le opzioni di interfaccia disponibili. Quindi può definire un colore di sfondo specifico, i colori dei caratteri e/o gli stili dei caratteri mediante la programmazione per personalizzare l’aspetto delle righe selezionate. Questo può essere fatto usando array o espressioni, a seconda del tipo di casella di riepilogo visualizzata (selezioni o array). Leggere la documentazione

Tabbed windows in 4D Design mode on MacOS Sierra

On macOS SierraLe applicazioni hanno ora la possibilità di utilizzare finestre a schede anziché finestre multiple. 4D Developer Edition 64-bit può ora sfruttare questa nuova funzione di Apple nell’ambiente di progettazione grazie alla nuova opzione di tabulazione delle finestre disponibile nelle Preferenze di 4D. Quando la nuova preferenza è attiva, le finestre Method e Form Editor possono essere combinate in un’unica finestra con schede. Leggete la documentazione

Tabella incrociata nell’editor di quick report

L’editor Quick Report a 64 bit supporta ora i report a tabelle incrociate oltre a quelli a elenchi, consentendo agli utenti finali di apprezzare un’esperienza d’uso fluida durante la progettazione dei report. La scelta della modalità a tabelle incrociate consente di visualizzare il report come una tabella Pivot. Si noti che è ancora possibile riaprire un report esistente creato con i prodotti 4D a 32 bit. Leggete la documentazione

Nuovo motore di rendering per le aree web

Per migliorare l’esperienza dell’utente e migliorare il supporto delle nuove funzionalità HTML, 4D sta aggiornando il componente interno per gli oggetti dell’area Web incorporati in 4D 64 bit con Blink (utilizzato anche da Google Chrome). Blink è il motore di rendering esistente più aggiornato e ben curato. Il passaggio al framework Blink non richiede alcuna modifica al codice dell’applicazione e non ha alcun impatto sull’utilizzo delle aree Web; tutti i comandi e gli eventi per le aree Web incorporate funzionano come prima, ad eccezione di alcune preferenze che non sono supportate e vengono ignorate. Quando l’opzione Usa motore di rendering Web incorporato è selezionata, 4D utilizza WebKit nelle versioni a 32 bit e Blink nelle versioni a 64 bit. Leggete la documentazione

Approfondimenti sulle release R