Bottone con immagine (WEB)

Rieccomi,
per poter abbinare un immagine ad un bottone c’ da fare qualcosa in particolare ?
Credevo avesse una propriet background.
Voi come fate ?
Usate canvas ?
Grazie

We do not have the possibility to assign an image to a button in the web edition. Some people use a canvas,

I prefer using an Imageview. With the Imageview, I use the MouseDown event to manage mouse clicks. I use styles to mimic the 3d appearance of a button.

OK.
Thank’s

Puoi anche utilizzare le icone fatte con i font.

Fai caricare dalla app il font, crei una classe per i tuoi pulsanti (lato Xojo), aggiungi una modifica per utilizzare il font sul web con javascript, e poi scrivi il carattere che vuoi mostrare. Il risultato che pesa 0 (non ci sono immagini)

Grazie Antonio.
Mi piacerebbe vedere un tutorial su quanto dici, secondo me non vale la candela , fare tutto questo solo per avere dei bottoni con immagine, per ora uso Imageview, anche se non mi piace come soluzione, la mia idea (ma non ora, sono ancora alle prime armi con xojo) e creare un plugin che sfrutta html,css.
Seguir qualche guida, comunque mi farebbe piacere vedere qualcosa sul discorso delle icone fatte con i font, hai qualche link ?
Grazie

Appena ho un attimo ne preparo uno.

Versione semplice semplice.
Usiamo una label come pulsante.
Definisci su Xojo uno stile stTextBtn (se vuoi anche vuoto o con i parametri che vuoi, come colore, hover, shadow etc. Ma non font, inutile per il nostro scopo)
A livello di app inserisci nell’HTML header dell’inspector:

<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" />
<style>
.stTextBtn {font-family: FontAwesome;cursor:pointer !important}
</style>

in questo modo chi avr come classe .stTextBtn utilizzer come font FontAwesome e avr la mano come cursore)

Inserisci una label sulla pagina, imposta la classe a stTextBtn, usa l’evento mouseup per il tuo evento

Nell’evento open della label:
me.Text=text.FromUnicodeCodepoint()

Puoi ovviamente crearti un modulo, ad esempio FontAwesome, con una enumerazione che ha tutti i caratteri (codici) e un metodo

Protected Function getTextIcon(icon as fontAwesome.chars) As Text Return Text.FromUnicodeCodepoint(integer(icon)) End Function
dove fontAwesome.chars l’enumerazione.

In questo modo ad esempio nell’open (o dove devi cambiare l’icona) scrivi semplicemente ad esempio:
me.text= FontAwesome.getTextIcon(fontAwesome.chars.check)

Va da se che se vuoi stili diversi (stTxtBtnBig ad esempio) lo stile da aggiungere sar:
.stTextBtn, .stTxtBtnBig {font-family: FontAwesome;cursor:pointer !important}

Grazie @Antonio Rinaldi ! Ci stavo provando da un po’ a implementare FontAwesome ma senza risultati apprezzabili !

Il modulo certamente l’approccio pi completo anche per avere a disposizione tutte le icone.

#tag Module
Protected Module fontAwesome
	#tag Method, Flags = &h1
		Protected Function getTextIcon(icon as fontAwesome.chars) As Text
		  Return Text.FromUnicodeCodepoint(integer(icon))
		End Function
	#tag EndMethod


	#tag Enum, Name = chars, Type = Integer, Flags = &h0
		glass=61440
		  music
		  search
		  envelope_o
		  heart
		  star
		  star_o
		  user
		  film
		  th_large
		  th
		  th_list
		  check
		  close
		  plus
		  minus
		  power_off
		  signal
		gear
	#tag EndEnum


	#tag ViewBehavior
		#tag ViewProperty
			Name="Index"
			Visible=true
			Group="ID"
			InitialValue="-2147483648"
			Type="Integer"
		#tag EndViewProperty
		#tag ViewProperty
			Name="Left"
			Visible=true
			Group="Position"
			InitialValue="0"
			Type="Integer"
		#tag EndViewProperty
		#tag ViewProperty
			Name="Name"
			Visible=true
			Group="ID"
			Type="String"
		#tag EndViewProperty
		#tag ViewProperty
			Name="Super"
			Visible=true
			Group="ID"
			Type="String"
		#tag EndViewProperty
		#tag ViewProperty
			Name="Top"
			Visible=true
			Group="Position"
			InitialValue="0"
			Type="Integer"
		#tag EndViewProperty
	#tag EndViewBehavior
End Module
#tag EndModule

Prendendo il css e proseguendo in sequenza con i nomi si pu completare velocemente la lista

Utilizzo un metodo simile (un po’ più complesso) per le toolbar

Grazie Antonio.
Provo subito ad implementarlo.

Per approfondire, e capire bene il funzionamento posto questi due link:

usare-gli-icon-fonts-con-i-css

icon-fonts

Certamente puoi usare anche un css più sofisticato (come appunto faccio con la toolbar) e usare :before o :after e content
(questi sono gli standard dell’HTML5 non il data-icon come dice l’articolo… ovvero come content puoi usare attr(data-____) che preferisci)

In questo modo ad esempio puoi mettere un’icona prima di un testo e questo anche un un pulsante. Il problema con Xojo è che vai ad interagire con il modo in cui viene creata la porzione html relativa all’oggetto. Come è stato più volte detto ora ha questa struttura, ma non è detto che possa cambiare. Quindi lavorare in qualche modo con il codice generato è possibile, ma con la consapevolezza che se cambia bisognerà cambiare anche quello che si è utilizzato per personalizzarlo.

Sempre in riferimento al secondo link: non utilizzare font che hanno simboli al posto dei caratteri. Sempre meglio utilizzare font che mettono questi caratteri speciali nell’apposita sezione dell’UTF (come fontAwesome o i font che puoi creare partendo dall’svg con icomoon)

Grazie!!

Perfetto.
Ho appena fatto quello che mi hai consigliato, stato semplicissimo, ora devo recuperare i codici.
Se a qualcuno serve giro il progetto.

poi lasciate giu degli esempi, potrebbero servire a molti

Se a qualcuno interessa, pu scaricare l’esempio dal seguente link:
Esempio icon

grazie Luigi, bell’esempio

Grazie anche a Antonio Rinaldi.

Luigi, possibile utilizzare la dimensione del carattere 2X, 3X?

Si e no.
Nel senso che in Xojo allo stato attuale le dimensioni degli oggetti sono assolute e non relative. Per cui devi definire l’altezza dell’oggetto in modo compatibile. Poi puoi usare (nei limiti direttamente, con qualche “suggerimento” nel css) tutte (o quasi) le opzioni di Font Awesome (ad esempio)