Jump to content
  • 0

FM8 Tabbladen: Does en Don'ts


SuperWimmie

Question

Posted

Ik ben flink aan het proberen geslagen met de tabbladen in FM8 Win.

 

Het volgende valt mij op:

 

Het navigeren:

Je kan nu in 1 layout net zo veel tabbladen maken als je wilt, tenminste, als de tabbladenrij niet te lang wordt.

Je kan in een tabblad een nieuw tabblad plaatsen, het zogenaamde nesten.

 

Zo lang je binnen de tabbladen blijft lopen, onthoudt FM wel van de geneste tabbladen je het laatste had geopend.

Erg handig allemaal.

 

Maar zodra je van layout wisselt, houdt FM niet meer bij welk tabblad je het laatste open had staan...

Zodra je terug gaat naar de layout waar alle tabbladen in staan, wordt het tabblad geopend die het laatste in de Layout-modus open is geweest...

 

Wat zou het mooi geweest zijn als de hele tijd (gedurende het gebruik door de betreffende gebruiker) bij het openen van een layout FM altijd naar het laatst gebruikte tabblad zou springen.... :o

 

Iemand een hint om dit te verbeteren?

21 answers to this question

Recommended Posts

  • 0
Posted

Dit "probleem" wordt door FMI gecatalogeerd onder standard behaviour om de eenvoudige reden dat ze de tabbladen niet beschouwen als tool om een navigatiesysteem op poten te zetten.

 

Dat navigatiesysteem kan je wel bouwen door een veld te plaatsen in ieder tabblad, rekening houdend met het feit dat dit veld niet mag voorkomen op een ander deel van de layout. Op die manier kan je via een GoToField() zorgen dat je weet waar je gaat uitkomen.

Maar dan moet je dus scripten.

  • 0
Posted
...Dit "probleem" wordt door FMI gecatalogeerd onder standard behaviour om de eenvoudige reden dat ze de tabbladen niet beschouwen als tool om een navigatiesysteem op poten te zetten....

 

Krom antwoord...

 

Je bouwt tabbladen om minder layouts te verkrijgen, maar je mag er niet doorheen navigeren zoals je dat met layouts wel altijd doet?

 

Hhhhmmm, dit noem ik standard behaviour van de productmanager van Filemaker. :wink:

(iets goed maken kost werk en dat werk hebben ze in overvloed, denk ik zo)

  • 0
Posted
Dat navigatiesysteem kan je wel bouwen door een veld te plaatsen in ieder tabblad, rekening houdend met het feit dat dit veld niet mag voorkomen op een ander deel van de layout. Op die manier kan je via een GoToField() zorgen dat je weet waar je gaat uitkomen.

Maar dan moet je dus scripten.

 

Ik ben al een tijdje in de weer om dit voor elkaar te krijgen. Op zich werkt het springen naar een bepaald veld wel, maar hoe krijg ik geregistreerd op welk laatst gebruikt tabblad een gebruiker staat?

 

Eerder deed ik dat door achter de knop een script te hangen waarin een het layoutnummer werd geregistreerd.

Moet dat dan nu alsnog?

 

Dan ben ik zo goed als terug bij af...

 

 

Een alternatief om een nieuw venster te openen is ook geen oplossing, aangezien de gebruiker dan doodgegooid wordt met vensters.

(sorry dat ik er nog even over door ga, maar ik heb een applicatie waarin ik in één bestand ongeveer 30 tabbladen en subtabbladen heb...)

  • 0
Posted

Wat een toeval, ik was vandaag bezig om bij een klant verschillende layouts terug te brengen tot een tabbladen structuur, en moest een bestaande historiek structuur opgeven omdat het inderdaad met die tabbladen niet helemaal goed uitgewerkt is (wat FileMaker en wie dan ook verder beweert).

Het is niet mijn gewoonte om routines die ik op het werk bouw, op het forum te posten, maar dit probleem is echt wel zo schrijnend...

 

Volgend voorbeeld gebruikt GEEN knoppen op de tabbladen om van tabblad te wisselen, maar een herhalende veldje dat gebruik maakt van variabelen in arrays.

Als je manueel van layout wisselt, kan een optioneel geinstalleerde eventscript plugin ervoor zorgen dat er eveneens naar het correcte tabblad gesprongen wordt.

Op elke tab die je wil "onthouden" staat een klein trigger veldje, het is alleen nodig deze een unieke repetitie te geven, zodat het tabblad kan teruggevonden worden.

 

Gebruik de Data Viewer om de gebruikte variabelen te tracen:

$$activeTab[Get ( LayoutNumber )]

$$shouldBeTab[Get ( LayoutNumber )]

$$lastLayoutNumber

Als je een eventscript plugin gebruikt is het ook duidelijker als je de debugger even aanzet, dan zie je wanneer er getriggerd wordt.

 

Het voordeel van geen knoppen op de tabbladen te gebruiken, is dat je de volgorde van de tabs probleemloos kan wijzigen, en bij gecentreerde tabs ook niet in de sh-t komt te zitten als je er bijmaakt.

TabMemory.fp7

  • 0
Posted

Wat moeten we zonder Peter.

 

Wat mij nog opviel was dat de objecten die op een tabblad worden opgenomen er alleen op worden weergegeven als ze er helemaal op staan.

Bij portals was het voldoende om links boven binnen de portal grenzen te hebben, maar bij tabs dus niet.

Als iets met rechts onder buiten het tab object valt wordt het weergegeven op de hoofdlayout.

 

FYI

 

rmw

  • 0
Posted

wat dan weer handig werkt als je de boel wilt uitlijnen...

 

Ik heb regelmatig lijnen geplaatst, door van tabblad te wisselen zie je direct of alles netjes geordend staat ten opzichte van de andere tabbladen.

 

Werkt wel lekker!

  • 0
Posted

En ik heb weer wat (ben een beetje precies, vandaag :wink: )

 

De kleuren zijn niet helemaal zuiver...

 

WinXP tabblad, FM ingesteld op 88 kleuren, tabblad gekozen op één na lichtste grijze tint, evenals een paar tekstvelden die over lijntjes heen moeten lopen.

En zie daar: een klein tintverschilletje valt helaas te ontdekken.

 

Geldt tevens voor het tabblad en het tabblad knopje...

Alleen indien het scherm op 100% grootte staat, iets groter of kleiner en het verschil valt weg...

 

Ik zei het al, ik ben een beetje precies, vandaag.

Zo. En nu koffie met precies 112 korreltjes suiker en 0,4 cupje melk.

  • 0
Posted

Hoe voorkom je dat de tabs in FM 8 ongelijk van breedte zijn, afhankelijk van de tekst die je erin heb geplaatst? Ik vind het er nogal slordig uitzien... in FM 6 moest alles op een aparte layout maar de tabs waren wel gelijk aan elkaar...

  • 0
Posted

Je kan er spaties voor en achter plaatsen. Maar gezien het proportioneel letterschrift is het maar de vraag of ze op de pixel precies even groot worden.

 

Maar zo erg vind ik de verschillende breedte niet, in heel Windows zie je dat de breedte afhangt van de tekst die er in staat.

  • 0
Posted
Je kan er spaties voor en achter plaatsen. Maar gezien het proportioneel letterschrift is het maar de vraag of ze op de pixel precies even groot worden.

 

Een betere manier heb ik al gevonden (ik vind dit verschillende breedtes wel hinderlijk). Plaats geen tekst in de tab control setup maar in plaats daarvan een losse tekst op elke tab. Zorg dat het tekstje gedeeltelijk buiten de tabgrenzen valt anders zie je ze niet op de andere tabbladen.

 

Het is even wat meer werk maar het resultaat is veel mooier!

 

Bedankt voor je reactie!

  • 0
Posted

In het werken met tabbladen valt ook op:

 

Navigeren:

- Wanneer je van bladermodus naar layoutmodus gaat, kom je niet in het tabblad van de bladermodus uit, maar in het tabblad wat je als laatst in layoutmodus hebt gebruikt.

  • 0
Posted

Dat is de default tab. De laatste tab die je actief hebt bij het verlaten van layout modus bepaald je default tab. Deze wordt altijd als eerste actief bij het oproepen van de layout.

 

Het is trouwens relatief simpel om de tabtekst op de tabs bold te maken als ze actief zijn zonder scripting.

  • 0
Posted

2 calculatie velden noodzakelijk per Tabpanel.

 

1 om bij te houden welke tab actief is; TabActief

1 om de tabtekst normaal of vet weer te geven.; TabTekst

 

TabActief is een herhalend calculatie veld het heeft net zoveel herhalingen als je tabpanels hebt. Op ieder tabpanel zet je de het veld neer met je juiste repetitie. Dus op tab 1 zet je het veld TabActief neer met herhaling 1 tot 1, op tab 2 zet je het veld TabActief neer met harhaling 2 tot 2.

 

De calculatie van het veld luidt iets in de trant van. Let[ $$Tab = get(Get ( CalculationRepetitionNumber )];"")

 

TabTekst is ook een calculatieveld met ook hetzelfde aantal repitities met calc. Ook deze calculatie heeft een let statement. Hier declareer je 3 variablelen

de tekst in met enters ( tekst = offertes¶orders¶correspondentie) .

de repetitie bij (rep = Get ( CalculationRepetitionNumber ))

de waarde (buttentekst = getvalue(tekst;rep))

 

calc case($$Tab=rep;addstylebold(buttentekst;buttontekst))

 

Met dank aan Matt Patrowskey

  • 0
Posted
Het is trouwens relatief simpel om de tabtekst op de tabs bold te maken als ze actief zijn zonder scripting.

:DRelatief is in dit geval wel een understatement, WJ :D

  • 0
Posted

Is die methode van Peter niet meer mogelijk in 8.5?

 

Als ik het probeer schiet het getriggerde script in een eindeloze loop, die uiteindelijk FM laat crashen.

In de debug mode zie ik in het script 'test' (Peters voorbeeldbestand 'TabMemory.fp7'), dat het script zichzelf opnieuw aanroept bij het uitvoeren van de 'If' regel. Dit gaat dan natuurlijk zo leuk een tijdje door.

 

Ik wil zo graag een script uitvoeren als de gebruiker naar een bepaalde tab gaat. Ik kom er maar niet uit.

 

Henk

  • 0
Posted

Hallo allemaal,

 

 

Het is misschien een simplistische oplossing maar als je een globaalveld met een aantal herhalingen neemt en deze met een enkele herhaling op de diverse plekken op de layout plaats kan je met de scriptstap "ga naar veld, repetienr" naar iedere plek op de layout gaan. Het veld moet dan wel open staan voor invoer. Om die vervelende cursors uit het veld te krijgen bouw ik in het script twee stappen in nl "ga naar schermafdruk" en "ga naar bladeren". 't werkt.

 

Groeten Johan

  • 0
Posted

Als je bedoelt dat je een veld gebruikt om in een script de weg naar een bepaalde tab te vinden dan is dat idd de workaround om te navigeren. Gebruik de opdracht [ ga naar veld ] een tweede keer (zonder specificatie) om de cursor uit het veld te halen. Maak een tabel aan met navigatievelden die alleen dat doel dienen, dat is wel zo makkelijk.

 

Groet, Johnny

  • 0
Posted

Ik ben eruit.

 

Ik heb het op een ander forum gevonden. Het komt erop neer een nieuw tab-control over de 'echte' tabs heen te zetten. Deze moet iets breder zijn dan de 'echte' tabcontrol, maar kan later transparant worden. Zorg dat er één tab is en lijn gejustifieerd uit. Hieroverheen zet je dan knoppen, die even groot zijn als de 'echte' tabs, ook transparant, maar die binnen de eerstgenoemde tab-control vallen. Et voilà, scripts worden uitgevoerd bij het aanklikken van een tab!

 

Het is wel een behoorlijke pixeln..kerij, vooral als je daarna in layout-mode een ander tab wilt selecteren, maar ja, wie mooi wil zijn moet pijn lijden.

 

Henk

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...