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 ifElse _action:=0
End ifA 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: 14348 |
Se accedi con utente e password, puoi aggiungere dei commenti.