Sviluppo4d.it
Sito indipendente di informazioni tecniche per sviluppatori 4th Dimension italiani  

Sviluppatori 4D

Utility 4D

Risorse 4D



4d logo
Naviga:

Faq

Ho trovato 12 faq.

Categoria Argomento Commenti
Macro Macro [4D Pop] Macro : Incolla Speciale
Fra i vari strumenti della palette 4dPop (inclusa nell'ambiente di sviluppo di 4d) ce n'è uno tanto pieno di funzioni quanto poco notato dai programmatori: 4DPop Macros.

Oggi parliamo della macro Incolla Speciale, che elabora un testo prima di incollarlo nel codice.

Richiamandola, ci sono diverse opzioni da scegliere e un'area di anteprima:

String
Incolla il testo fra apici e sostituendo i caratteri speciali (return, tab, etc) con gli equivalenti per le stringhe (\r, \t, etc)

Comments
Incolla il testo già commentato

HTML
Incolla il testo spezzandolo in diverse righe e aggiungendolo ad una variabile testo (utile per generare via codice una pagina web)



Regex Pattern
Incolla il testo sostituendo i caratteri sinificativi per le regex con l'equivalente con lo slash (ad esempio * diventa \*)

Code from 4D v11 FR
Incolla il testo traducendolo dal codice di 4d in francese, utile ad esempio per utilizzare un metodo inviato sul forum di 4d da un francese.
Macro Macro [4D Pop] Macro : Dichiarazioni
Fra i vari strumenti della palette 4dPop (inclusa nell'ambiente di sviluppo di 4d) ce n'è uno tanto pieno di funzioni quanto poco notato dai programmatori: 4DPop Macros.

Oggi parliamo della sola macro Dichiarazioni, che scrive automaticamente le dichiarazioni per le variabili locali in un metodo.

Richiamandola, appare una maschera dove compare la lista delle variabili:
- In grassetto quelle riconosciute
- In grassetto sottolineato gli array riconosciuti
- In corsivo le variabili da identificare



Alla destra della lista sono elencati i tipi da assegnare alle variabili non riconosciute, con la possibilità di usare la tastiera per velocità.

In realtà, se si usa una nomenclatura delle variabili coerente, esiste la possibilità che questa macro assegni automaticamente i tipi senza il nostro intervento.
Usando il tasto Options si accede ad un pannello dove è possibile indicare lo schema usato nei propri programmi per assegnare i nomi, ad esempio:

Lon_* = indica le variabili che iniziano per "Lon_"
*Lon_* = indica le variabili che contengono "Lon_"
*A(\d\d)_* = indica le variabili che iniziano per A seguita da 2 cifre


Macro Macro Una macro per il form di output
Ecco il testo di una macro da utilizzare per riempire in automatico un form di output o una lista:



Case of
:(Form event=On Load)

:((Form event=On Display Detail)|(Form event=On Printing Detail))

:((Form event=On Printing Break)|(Form event=On Printing Footer))

End case



Macro Macro Una macro per il form di input
Ecco il testo di una macro da utilizzare per creare in automatico gli eventi più usati da utilizzare nei form di input:



Case of
:(Form event=On Load)

:(Form event=On Data Change)

:(Form event=on Validate)

:(Form event=On Unload)

End case



Macro Macro Incollare testo commentato
La seguente macro permette di inserire il contenuto degli appunti come testo commentato in un metodo:



Macro_Paste_Comment



Ed ecco il metodo Macro_Paste_Comment

$text_t:=Get text from clipboard
If (Length($text_t)>0)
$text_t:="`"+Replace string($text_t;Char(13);Char(13)+"`")+Char(13)
TEXT TO BLOB($text_t;_blobReplace;Text without length )
_action:=2
End if

Macro Macro Metodo dei pulsanti *
Scrivendo un metodo per gli oggetti è possibile selezionare gli eventi nelle proprietà e scrivere il codice per gestire solo un particolare evento. Questo purtroppo non è molto leggibile, perche, ad esempio, in fase di debug potresti non sapere se e quale evento è selezionato quando tracci il codice.

E' quindi buona norma gestire gli eventi con il solito Case, anche per gestire il clic su un pulsante, che è l'evento più normale.
Per facilitare il compito di scrivere sempre la stessa cosa, ecco una macro che lo fa per conto nostro.



Case of
:(Form event=On clicked)

End case



Basta incollare questo codice XML nel file Macros.xml file, che si trova nella corrente cartella 4D di sistema, all'interno dei tag .

A questo punto è possibile usare all'interno del metodo la macro usando il menu contestuale (click-destro su windows o control-click su mac) e scegliendo la macro "OnClicked" dal menu "Insert Macro"

1
Macro Macro Macro: una per Open form window
Ecco un esempio di macro da aggiungere al file Macro.xml nella cartella 4D del sistema. La macro apre una dialog centrata, ma può ovviamente essere modificata per effettuare altre operazioni sulle finestre. Basta inserire questo codice in qualsiasi punto del file tra i tag <macros> ... </macros>.

<macro name="OpenDialog">
  <text>
    C_LONGINT($windowRef)
    $windowRef:=Open form window(<selection/>;Plain window;Horizontally centered;Vertically centered)
    DIALOG(<selection/>)
    CLOSE WINDOW($windowRef)
  </text>
</macro>

Ad esempio, scrivendo e selezionando il seguente testo:

[Table 1];"Form1"

ed eseguendo la macro, si otterrà:

C_LONGINT($windowRef)
$windowRef:=Open form window([Table 1];"Form1";Plain window;Horizontally Centered;Vertically Centered)
DIALOG([Table 1];"Form1")
CLOSE WINDOW($windowRef)
Macro Macro Macro: Inserire un elemento alla fine di un array
Per chi non usa 4th Dimension 2004 e non può dunque usare APPEND TO ARRAY ma usa ancora la 2003, ecco un sistema alternativo per inserire rapidamente un elemento in coda ad un array: aprire il file Macros.xml (si trova nella cartella 4D di sistema, ad esempio su Win C:\WINDOWS\4D) e aggiungere prima del tag di chiusura </macros> il seguente codice:

<macro name="MioAppendToArray">
<text>
INSERT ELEMENT(<Selection/>;Size of Array(<Selection/>)+1)
<Selection/>{Size of Array(<Selection/>)}:=</text>
</macro>

Al solito supponiamo che sia mioarray l'array a cui vogliamo aggiungere un elemento in coda. Nel punto del metodo in cui ci serve fare l'inserimento dell'elemento scriviamo "mioarray" (senza virgolette) e lo selezioniamo. Tasto di destra sul testo selezionato e scegliamo "Insert Macros - MioAppendToArray". La macro genererà il seguente codice:

INSERT ELEMENT(mioarray;Size of array(mioarray)+1)
mioarray{Size of array(mioarray)}:=

Il cursore si troverà inoltre dopo il simbolo "=" pronto per farci inserire il valore desiderato.
Macro Macro 4D 2004: creare un separatore nell'elenco delle macro
In 4D 2004 è possibile separare l'elenco delle macro con una linea. Per fare questo basta creare una nuova macro il cui nome sia semplicemente "-" (il trattino) e che come testo abbia il seguente:

<macro name="-">
<text> </text>
</macro>

Posto questo testo nel file macro, verrà visualizzata nell'elenco delle macro una linea non selezionabile. Ciò aiuta ovviamente a rendere più leggibile l'elenco.
Macro Macro 4D 2004: esempio di uso delle macro
Vediamo un esempio che dimostri l'uso delle macro in 4D 2004: il nostro scopo nell'esempio è creare un record, inizializzarne i valori e infine salvarlo.

Quando chiamiamo una macro 4D gestisce una serie di variabili di input (_textSel, _blobSel, _selLen, _textMethod, _blobMethod, _methodLen) con le quali possiamo conoscere, per esempio, il testo selezionato nel metodo in cui stiamo chiamando la macro, e una serie di variabili di output (_textReplace, _blobReplace, _action), con cui gestire il testo da generare.

Supponiamo allora di scrivere la macro "Init_record" che chiami il metodo "Init_macro_record" in questo modo:

<macro name ="Init_record">
<text>
<method>Init_macro_record</method>
</text>
</macro>

Ecco adesso il codice del metodo Init_macro_record:

C_TEXT(_textSel;_textReplace)
C_TEXT($text)
$text:=_textSel
$start:=Position("[";$text)
If ($start>0)
  $text:=Substring($text;$start)
  $end:=Position("]";$text)
  If ($end>0)
    $text:=Substring(_textSel;1;$end)
    $table:=0
    For ($i;1;Count tables)
      If ($text=("["+Table name($i)+"]"))
        $table:=$i
        $i:=Count tables+1
      End if
    End for
    $br:=Char(Carriage return)
    $to_insert:=Command name(68)+"("+$text+")"+$br
        `68 = CREATE RECORD command
    For ($i;1;Count fields($table);1)
      $field:=$text+Field name($table;$i)
      $type:=Type(Field($table;$i)->)
      Case of
        : ($type=Is Alpha Field) | ($type=Is Text)
          $to_insert:=$to_insert+$field+":=\"\""+$br
        : ($type=Is Real) | ($type=Is Integer) | ($type=Is Longint)
          $to_insert:=$to_insert+$field+":=0"+$br
        : ($type=Is Date)
          $to_insert:=$to_insert+$field+":=!00/00/00!"+$br
        : ($type=Is Time)
          $to_insert:=$to_insert+$field+":=?00:00:00?"+$br
        : ($type=Is Boolean)
          $to_insert:=$to_insert+$field+":="+Command name(215)+$br
        `215 = False command
        : ($type=Is Picture)
          $to_insert:=$to_insert+Command name(286)+"($pict)"+$br
        `286 = C_PICTURE command
          $to_insert:=$to_insert+$field+":=$pict"+$br
        : ($type=Is BLOB )
          $to_insert:=$to_insert+Command name(604)+"($blob)"+$br

        `604 = C_BLOB command
          $to_insert:=$to_insert+$field+":=$blob"+$br
      End case
    End for
    _textReplace:=$to_insert+Command name(53)+"("+$text+")"+$br
    `53 = SAVE RECORD command
    _action:=1
  Else
    _action:=0
  End if
Else
  _action:=0
End if


A questo punto basta selezionare in un metodo il nome di una tabella e chiamare la macro: il nome della tabella verrà sostituito da testo desiderato!
Macro Macro Cosa sono le macro?
Una macro è una porzione di codice 4D (e quindi anche righe di commento) che può essere inserita in qualsiasi momento nei metodi, specialmente per evitare la riscrittura della parti ripetitive (come ad esempio i cicli For, While, Repeat).

La macro è abbastanza intelligente da usare la selezione corrente come parametro: poiché sono memorizzate in file XML, ci sono dei tag speciali che vengono sostituiti al momento dell'inserimento della macro in base al contesto di metodo.

Con 4D 2004 è possibile anche lanciare metodi di 4d dall'interno della macro stessa per avere delle funzioni più complesse e personalizzate. Per poter richiamare codice 4D con un method è stato aggiunto il nuovo tag: "<method> </method>".
Macro Macro 4D 2004: il 4D 2004 Macro Pack
4D inc ha annunciato giovedì 16 settembre 2004 il rilascio di 4D 2004 Macro Pack, una collezione free di 17 macro per l'ambiente di sviluppo. Le macro, che possono essere conservate come file XML, possono generare il codice più usato ed aiutare i programmatori a lavorare in modo più rapido. Fra le macro incluse: Doc 4D, per generare la documentazione di API; Modularize, che aiuta a ridurre grandi metodi in metodi più piccoli; DeclareSoap, che trasforma metodi 4D in metodi per Web service; e CreateObject, che genera script che possono accedere a oggetti COM.

4D 2004 Macro Pack è disponibile nella versione Win a questo indirizzo:
ftp://ftp.4d.com/PRODUCTS/4D/Current/4D_2004/Windows/Macro_Pack.exe

Nella versione mac a quest'altro:
ftp://ftp.4d.com/PRODUCTS/4D/Current/4D_2004/MacOS/Macro_Pack.sit

I pacchetti includono la documentazione dettagliata.

Accesso

User: Nuovo
Pass: Accedi

Utenti Registrati

Cerca

Se non trovi le informazioni che cerchi scrivi a aiuto@sviluppo4d.it

4D Principali

4D Discussioni

Faq random


Crediti

Dominio registrato da ZetaNet
Sito realizzato da Nexus srl
4D SQL 11.9.0 offerto da 4D & Italsoftware
Icone di FAMFAMFAM
Moderato da Umberto Migliore
262 utenti registrati

Pagina servita il 25/05/17 alle 22:00:55 Valid HTML 4.01! Valid CSS!

Mutuo Facile, Serie Filmcards, Serie Singloids e altre app di Nexus srl per iPhone e iPad

Cidroid, distributore italiano lettori barcode per Apple iPhone, iPod, iPad della IPC