2022

Sep

01

Av Rolf

Ordspråket lyder "En bild säger mer än 1000 ord". I många fall är det mycket enklare och snabbare att välja en bild av flera än en text av flera texter. En teknik jag använt under många år för att filtrera, visa och välja bilder är ett slags "galleri", ett rutnät med bilder. I kombination med sökning som jag skrivit om tidigare blir det ett kraftfull sätt att filtrera posterna och snabbt hitta det du söker. Jag använder det ofta i ett kortfönster med varje bild som en knapp, men det går förstås lika bra var som helst.

Jag har gjort ett exempel med flaggor för världens alla länder (och några till) där sökning görs på både landets namn och huvudstadens namn för att filtrera flaggorna för de hittade länderna. Utan Javascript och webbvisare.

Exemplet ser ut så här:

När användaren skriver något i sökfältet längst upp till vänster (vid förstoringsglaset) startar ett script som gör en sökning, sorterar resultatet efter landets namn och visar flaggorna för de 12 första länderna i sökresultatet. Det finns knappar upptill till höger för att gå till nästa sida med flaggor (eller föregående).

Sök-scriptet startas med en script-trigger efter en kort tid så att användaren kan hinna skriva flera bokstäver innan sökningen utförs. Sökningen görs som en snabbsökning i de båda fälten för landets namn och huvudstadens namn. Dessa båda fält är placerade utanför den synliga delen av layouten, i den grå ytan till höger om layouten. Dessa båda fält är de enda fälten på layouten som är markerade med alternativet "Inkludera fält för snabbsökning" i Granskaren. VIKTIGT! Inga andra fält på layouten får ha detta alternativ.

Varje post i tabellen (Countries) med flaggor har ett unikt värde kallat code som består av 2 tecken, för Sverige är det "SE". När sortering efter landsnamn gjorts i scriptet sparas alla hittade koder i en variabel. Det görs med hjälp av ett statistikfält av typen "Lista över" för fältet code. Statistikfältet sätter ihop code för alla hittade poster till ett textfält, en lista med alla hittade länder. I exemplet har jag kallat fältet för Stat_List_of_code och variabeln för $$countrygrid. Lägg märke till att variabelns namn inleds med två $-tecken, dvs. den behåller sitt värde även när sök-scriptet körts klart.

I exemplet visas 12 bilder i ett rutnät, 3 rader och 4 kolumner. Det görs med 4 portaler som alla visar poster från samma relation, den vänstra portalen visar rad 1-3, den andra portalen visar rad 4-6, den tredje portalen rad 7-9 och portalen längst till höger visar rad 10-12.

För att få de 12 bilder som ska visas i portalerna sparar jag de 12 första raderna i variabeln $$countrygrid (som ju innehåller alla koder för hittade poster) i ett global-fält gCodes. Det gör jag genom att använda funktionen LeftValues. Jag har gjort en relation Countries_gCountries mellan två tabellförekomster av samma tabell Countries. Fälten gCodes (som innehåller upp till 12 rader med landskoder) och code används på respektive sida av relationen. Observera att även relationen behöver sorteras i ordning efter landets namn. Alla 4 portalerna visar denna relation.

Relationen mellan de båda tabellförekomsterna ser ut så här:

Scriptet för sökning ser ut så här:

Sökningen görs endast då det finns något i sökfältet gFind, annars visas alla posterna. Om inget land hittas ser jag till att alla posterna utesluts. Det finns också ett startscript som körs när databasen öppnas. Det gör en sökning med tomt i sökfältet, dvs. visar alla flaggorna.

Jag placerar relaterade fält för flaggan (container-fält), landets namn och huvudstadens namn i varje portal. Enklast är att placera dem i en portal och kopiera/klistra dem till de 3 andra.

Layouten ser ut så här:

Knapparna upptill till höger kör script som byter ut koderna för de 12 poster som ska visas i relationen i fältet gCodes, antingen de 12 nästkommande posterna eller de föregående. På så sätt "flyttas" sökurvalet framåt respektive bakåt. Landskoderna flyttas från $$countrygrid till global-fältet gCodes med funktionen MiddleValues.

Scriptet för att stega fram eller tillbaka bland bilderna/posterna ser ut som nedan. Riktningen (framåt/bakåt) är script-parameter. Variabeln $$grid håller reda på vilken sida som visas.

Vill du visa fler eller färre poster åt gången behöver du ändra värdet 12 i scripten till det antal du önskar. Tänk på att även ändra så att portalerna visar rätt poster.

Ladda ner exempel-databas med länder och flaggor här: Countries.fmp12

Skriv en kommentar

Din epost-adress stannar hos oss.