Ga naar inhoud

URL's klikbaar maken in tekstvelden


Marsau

Aanbevolen berichten

Vind het leuk om met jullie een truukje te delen, die ik al een tijdje met veel plezier toepas. Neem natuurlijk het risico dat jullie het in jullie tomeloze creativiteit zelf al lang bedacht hebben, maar gok er nu nog maar even op dat dit nog niet zo is.

De aanleiding: uit zichzelf kan FileMaker in tekstvelden geen URL’s detecteren en dus ook niet openen. Ik heb dat altijd een wat hinderlijk gebrek gevonden, juist omdat we nu zo gewend zijn geraakt om altijd URL's te kunnen aanklikken. Je kan echter vrij gemakkelijk URL’s klikbaar maken door een combinatie van een custom functie en een klein (getriggered) scriptje.

Het werkt zolang gebruik wordt gemaakt van het openingsmoment van het veld. Door via een het-functie de cursorpositie op te vragen kan  razendsnel worden bepaald of er op een URL wordt geklikt, en zo ja, welke dat dan is. Dit vereist wel dat het de URL van zichtbaar is in een nog gesloten veld, maar dat is niet per se bezwaarlijk.

De (parameterloze) custom functie is:

 

GetURLAtSelection

Let ([ content = Get(InhoudActiefVeld)
	; cursorPos = Get(StartActieveSelectie)
	; pos0 = Max ( Position ( content ; "¶"; cursorPos; -1); 
                    Position ( content ; " "; cursorPos; -1) ) + 1
	; pos1 = Min ( Position ( content ; "¶"; cursorPos; 1); 
                    Position ( content ; " "; cursorPos; 1) )
     ; pos1 = If ( pos1 = 0; Length (content) + 1; pos1)
	; rip = pos1 - pos0
	; result = Middle ( content ; pos0 ; rip )
  ] ;

	 If ( Left ( result; 7 ) = "http://" or Left ( result; 8 ) = "https://"; result; "" )

) // end let

 

De URL-detector werkt nu uitsluitend met http en https. Maar dat kan je vanzelfsprekend uitbreiden met andere protocollen.

Maak vervolgens een OnObjectEnter trigger aan voor het volgende scriptje:

# process URL 

# 
Variabele instellen [ $p ; Waarde: GetURLAtSelection ] 
If [ not IsEmpty (  $p ) ] 
	URL openen [ Met dialoogvenster: Uit ; $p ] 
	Records/verzoeken vastleggen [ Met dialoogvenster: Aan ] 
End If
Script afsluiten [ Tekstresultaat:    ] 

Je kan deze trigger aan elk veld koppelen waaraan je deze functionaliteit wilt toevoegen.

Have fun!

Link naar reactie
  • 2 weken later...

Nog een aanvullende opmerking: deze techniek is eigenlijk ook superhandig voor velden met enkel web- of mailadressen (mailto:). Gebruiker moet simpelweg op de inhoud kunnen klikken op de URL te openen. Dit lijkt mij de snelste manier om deze functionaliteit toe te voegen aan een applicatie. 

Voeg eventueel een klein edit-knopje toe om gewoon naar het veld te gaan.

Link naar reactie

Doe mee aan dit gesprek

Je kunt dit nu plaatsen en later registreren. Indien je reeds een account hebt, log dan nu in om het bericht te plaatsen met je account.

Gast
Antwoord op deze discussie...

×   Geplakt als verrijkte tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...