Livecode: un linguaggio di programmazione gratuito, semplice e completo per: Windows, Mac, Linux, Android, iOS, Raspberry Pi, oppure pagina web interattiva (HTML 5).
Per fare un testo giustificato in livecode non c'è l'opzione già pronta,comunque ci sono delle soluzioni.
Una è un widget gratuito per testi, hhtextEdit:
In alternativa, come seconda soluzione, potete mettere questo codice in un campo di testo:
local finaltext on closefield justifyme end closefield on justifyme lockscreen putemptyinto finaltext stripspaces setthedontwrapofmetotrue putthetextofmeinto temp setthetextofmetoempty replacereturnwith (space & chartonum(1) & space ) in temp #we separete words with newlines attached, and much more, newline is a word now putthewidthofmeinto tw putthenumberofwordsof temp into nw repeatwith i=1to nw ifword i of temp ischartonum(1) then putreturnafterme putthetextofmeafter finaltext putemptyintome nextrepeat endif putword i of temp afterme iftheformattedwidthofme > tw then deletethelastwordofme addspaces 0 putword i of temp & spaceintome else putspaceafterme endif endrepeat putthetextofmeafter finaltext setthetextofmeto finaltext setthedontwrapofmetofalse unlockscreen end justifyme on addspaces temp ifthenumberofwordsofmeis1then putthetextofmeafter finaltext setthetextofmetoempty exit addspaces endif putthewidthofmeinto tw putthenumberofwordsofme -1 into nspaces #the correct number of spaces between words is nspaces -1, but we'll use mod put temp mod nspaces into temp add1to temp putspaceafterword temp ofme iftheformattedwidthofme > tw then putthenumberofcharsofword1to temp ofmeinto tc deletechar (tc +1) ofme putthetextofme & spaceafter finaltext setthetextofmetoempty else addspaces temp endif end addspaces on stripspaces putthetextofmeinto temp repeatforeachchar tchar in temp if (tchar isspace) and (thelastcharof t2 isspace) then nextrepeat else put tchar after t2 endif endrepeat setthetextofmeto t2 end stripspaces on resizeControl justifyme end resizeControl
Oggi vediamo come fare dei menu personalizzati che si espandono.
Negli esempi a seguire userò solo dei pulsanti, ma potete merrci dentro qualsiasi combinazione di oggetti.
Cominciamo dalla fine e vediamo cosa cerchiamo di ottenere:
Per realizzarlo useremo un sacco di gruppi, ecco la struttura che creeremo:
Prima di tutto create un pulsante e chiamatelo main, poi un altro pulsante e chiamatelo +. Ridimensionateli per ottenere questo:
Ora nel pulsante + mettete questo codice:
on mouseUp ifthelabelofmeis"+"then showMe setthelabelofmeto"-" else hideMe setthelabelofmeto"+" endif end mouseUp
Raggruppate i due pulsanti insieme e chiamate il gruppo Main.
Ora create un altro pulsante e chiamatelo slider, ridimensionatelo e mettetelo sotto Main in questo modo:
Ora cliccate sul pulsante Slider e fatelo gruppo (si solo del pulsante slider) e chiamate il gruppo Slider.
Adesso raggruppate insieme il gruppo slider col gruppo Main e chiamatelo element 1.
Impostate la proprietà lockLocation del gruppo "element 1" su true.
Mettete questo codice nel gruppo element 1:
Clonate il gruppo "element 1" 5 volte, per esempio. Numerati correttamente.
Mettete ogni clone sotto l'elemento precedente, ad esempio il 2 sotto l'uno e così via.
Raggruppateli e chiamate il gruppo List.
Impostate la proprietà lockLocation del gruppo List su true.
Mettete questo codice nel gruppo List:
on layoutChanged pGroup, pSize lockmessages local tElementCount if pGroup is"Element Template"thenexit layoutChanged putword2of pGroup into tElementCount add1to tElementCount -- look for the next one repeatwhilethereisagroup ("Element" && tElementCount) setthetopofgroup("Element" && tElementCount)tothetopofgroup ("ElemenT" && tElementCount) + pSize-- add1to tElementCount endrepeat setthevscrollofmetothevscrollofme ifthebottomofgroup pGroup ofme > thebottomofmethen setthescrollofmetothescrollofme + pSize endif setthevScrollBarofgroup"List"totheformattedHeightofgroup"List" > theheightofgroup"List" setthevScrollofgroup"List"tothevScrollofgroup"List" unlockmessages end layoutChanged
Ci credereste che sia possibile fare un gestionale completo con la fatturazione elettronica italiana con sole 900 righe di codice? Ebbene con livecode e la società italiana WhiteFly (http://www.borzini.it/) è stato già fatto. C'è tutto quello che serve ad una azienda: dalle gestione delle anagrafiche, al carico e scarico di magazzino, alla fatturazione e a tutte quelle funzioni richieste da un applicazione del genere.
Ecco alcune schermate di un programma realizzato con Livecode per la gestione dei negozi di una catena, e per il software dei registratori di cassa.
Al momento non sono autorizzato a mostrarvi il codice, ma già dalle immagini potete capire che con livecode potete fare praticamente tutto:
Se l'utente sta scrivendo un campo di testo (field) e vi serve sapere ad esempio dove si trova il cursore dovete usare il selectedChunk.
Ad esempio per sapere a che riga si trova il cursore potete usare questo codice: