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

Sviluppatori 4D

Utility 4D

Risorse 4D



4d logo
Naviga: Prev Next

Titolo: 4D 2004: esempio di uso delle macro

Categoria: Macro Ultimo Aggiornamento: 22/09/04


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!

Inviato da: PierPaolo Sichera Visite: 7774

Se accedi con utente e password, puoi aggiungere dei commenti.


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 29/04/17 alle 19:25:58 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