Jump to content
  • 0

eigen functies maken


jw

Question

Posted

leuk, je kan je eigen functies maken.

zoals: Redtext ()

in deze functie staat dan:

 

FUNCTION Redtext

PARAMETER txt

TextColor ( txt ; RGB ( 255 ; 0 ; 0 ) )

 

en dan kan je die in een script gebruiken:

SET FIELD naam TO Redtext (naam)

 

en dan wordt de naam rood.

 

Helaas is het maken van eigen functies alleen mogelijk in de Dev-versie.

Kan iemand ook ontdekken of je deze functies kan importeren in andere bestanden?

10 answers to this question

Recommended Posts

  • 0
Posted

Maar begrijp ik het goed dat "custom functies" eigenlijk gewoon een soort afgeleiden, als het ware templates, zijn van de al beschikbare functies? Ik kan me voorstellen dat als je vaak dezelfde textkleurfunctie wilt gebruiken met dezelfde RGBwaarden, dat je daar dan zoiets voor maakt. Maar het doet natuurlijk NIET "iets" wat FM zonder die custom functie niet zou kunnen.

 

m.a.w. het maakt plugins niet overbodig. Of zie ik dat verkeerd?

  • 0
Posted

dat klopt, de plug-ins blijven.

 

Je kan er wel een aantal filemaker-functies mee bundelen.

Als je zelf geen dev-versie hebt, dan kan iemand die deze dev-versie wel heeft je helpen en de gewenste functies in je database inzetten.

  • 0
Posted

Je zou bijvoorbeeld de "berekenpasen" functie met als parameter jaar kunnen maken. Die ingewikkelde formule staat hier wel ergens op het forum vermeld.

 

Het is inderdaad ook geschikt om ingewikkelde calculaties te bundelen.

 

Koen

  • 0
Posted

Hier alvast een nuttige functie.

Hier kan je ook zien dat de Let() functie heel mooie mogelijkheden biedt.

Zoals vele anderen ben ik ook aan het prutsen met FileMaker, sorry dat je daar op het forum niet veel van merkt.

 

PS: André, je moderator rechten zijn OK nu.

MiddleParagraphs.gif.1670b3be6d0183aeb9e90313daafb2ae.gif

  • 0
Posted

Even freewheelen hoor.... Zou je zo ook de Uniquity check waar ik al een paar keer over gevallen ben :oops: als custom functie kunnen definiëren? Zo van

 

IsUnique(field; table) met boolean output

 

Aangezien je daar een interne relatie voor nodig hebt vroeg ik me af of zoiets ook zou kunnen (is misschien wel handig namelijk :) )

  • 0
Posted

Er zit een juweel van een voorbeeld in Business_Tracker.fp7 (gratis te halen bij FM, je hoeft je alleen maar te registreren met een geldig e-mail adres)

 

De functie maakt het mogelijk om een telefoonnummer te formateren door twee custum functies.

 

Eerste: FormatPhone

Case (

not IsEmpty ( Filter ( PhoneNumber ; "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz") ) ;

Case ( not IsEmpty(phoneformat) ;

Substitute ( 

FormatLoop ( PhoneNumber ; PhoneFormat ; WildCard) ; 

WildCard ; "" ) ; PhoneNumber ) )

 

Hierin zijn PhoneNumber, PhoneFormat en WildCard parameters.

 

Tweede: FormatLoop

Let ( 

[ 
 PhoneAsNum = Filter ( PhoneNum ; "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");   
     /* Phone number is stripped of all non-alphanumeric characters    */

 Form =  If ( Length ( PhoneAsNum ) > 1 ; FormatLoop ( Left ( PhoneAsNum ; Length ( PhoneAsNum ) - 1 ) ; Format ; Wildcard) ; Format ) ; 
     /* Recursive loop that calls itself, reducing the length of PhoneNum by 1 each time until it reaches a single digit.  Then it replaces the first instance of the wildcard with the rightmost digit in PhoneNum and passes it back.  */

 Pos = Position ( Form ; Wildcard ; 1 ; 1 ) ;
     /* Position in Form of the first instance of the wildcard */

 Digit = Let ( Char = Right ( PhoneAsNum ; 1 ) ; 
     Case ( 

           GetAsNumber ( Char ) = Char ; Char ;
           Filter ( Char ; "ABCabc" ) = Char ; 2 ; 
           Filter ( Char ; "DEFdef" ) = Char ; 3 ; 
           Filter ( Char ; "GHIghi" ) = Char ; 4 ; 
           Filter ( Char ; "JKLjkl" ) = Char ; 5 ; 
           Filter ( Char ; "MNOmno" ) = Char ; 6 ; 
           Filter ( Char ; "PQRSpqrs" ) = Char ; 7 ; 
           Filter ( Char ; "TUVtuv" ) = Char ; 8 ; 
           Filter ( Char ; "WXYZwxyz" ) = Char ; 9

     ))      /* Rightmost digit in the current call of FormatPhone; if the character is alpha, converts it to the numerical equivalent */
] ; 

If ( Pos = 0 ; Form & Digit ;  // If there are overflow digits in PhoneNum, simply add them to the end.

Replace ( 

Form ; Pos ; 1 ; Digit )  // Replace the first instance of the wildcard with the corresponding digit.

))

 

En hier zijn PhoneNum, Format en WildCard de parameters.

 

Let op de mogelijkheid om een functie zichzelf te laten aanroepen, waardoor een variabele lengte van het telefoonnummer kan worden ondersteund!

 

En zie hoe het gebruik van commentaar en 'Let' de functie aanmerkelijk leesbaarder maakt.

 

Tenslotte de toepassing: door in de veld definitie van het veld Phone een auto-enter met vervanging op te nemen:

Phone [Auto-enter calculation; override existing value]  = FormatPhone ( Phone; "( ### ) ### ## ## "; "#" )

kan een telefoonnummer zonder script en hulpvelden worden omgezet naar het gewenste formaat 8O:!::!::!:

 

rmw

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...