Italian Trasparenza

micro

Well-Known Member
Licensed User
Longtime User
Salve ragazzi,
ho notato che la funzione SetTransparentColor è attiva solo sulla proprietà sfondo della Form.
E mi rammarica non avere la possibilità di avere label trasparenti.
Ho voluto raggirare il tutto con la funzione FDrawString ma necessariamente prima di riaggiornare la scrittura (altrimenti sovrapponi le scritte) devi inviare un FErase e questo anche se a velocità alte comunque lascia percepire le due fasi (ad esempio l'aggiornamento dell'ora).
Avevo anche pensato di utilizzare la proprietà Text dell'ImageButton ma se ci vai su con il mouse è per caso ci clicchi si nota che è un pulsante (anche se poi non succede nulla :) , ma formalmente è brutto da vedere).
Avete qualche idea?


....Per il momento ho risolto disabilitando la proprietà Enabled dell'ImageButton così almeno se ci clicco non vedo l'effetto pulsante.
 
Last edited:

giannimaione

Well-Known Member
Licensed User
Longtime User
... forse ...

Ciao Micro,
forse se alleghi un po di codice, forse qualcuno potrebbe aiutarti, forse ci si capisce meglio, forse ... :rolleyes: :rolleyes:
 

Cableguy

Expert
Licensed User
Longtime User
Transparensa solo e possibile en el deskTop, en lo device, no la ai(?)

let me refrase in English...

transparency is only possible in the desktop, trought the use of the door.dll, or especially targetted Dll's...( see my special forms Dll in the Adicional Libraries)

In the device, since it uses a portion of the complete Framwork, some of the funcionalities were left off, one being the transparency in most controls...

But even with Fdraw string, you don't need to do the convencional erase, if you only wich to erase on particular, string, just re-draw it with the background color.It's much faster...
 

micro

Well-Known Member
Licensed User
Longtime User
Grazie ad entrambi,
Thanks Cableguy for your answer.

Sfortunatamente non ho ancora il device e le prove le faccio solo sul desktop.
Quello che chiedevo era di ottenere delle label trasparenti dove mostrerò la data e ora aggiornata (periodicamente ogni secondo).
B4X:
Sub App_Start
             ........
             ........
             FormStart.Refresh
   Sleep(500)
   'flb.New1("FormMain",B4PObject(1)) 'per eliminare la caption dalla form
   'flb.FullScreen(true)
   FormMain.ForeLayer = true
   Timer1.Enabled = true
   DateFormat ("dddd - mmmm - yyyy")
   TimeFormat ("HH:mm:ss")
   FormMain.Show
   FormMain.Refresh
End Sub

Sub Timer1_Tick
   GetDataTime(12,280,390,670,670,cGray)
End Sub

Sub GetDataTime(size,x1,y1,x2,y2,color)
Dim giorno
Dim mom
   giorno = Date(Now)
   Select SubString(giorno,0, StrIndexOf(giorno,"-",0)-1)
      Case   "Monday"
         giorno = "Lunedì"
      Case   "Tuesday"
         giorno = "Martedì"
      Case "Wednesday"
         giorno = "Mercoledì"
      Case "Thursday"
         giorno = "Giovedì"
      Case "Friday"
              giorno = "Venerdì"
      Case "Saturday"
         giorno = "Sabato"
      Case "Sunday"
         giorno = "Domenica"
   End Select
   mom = DateD
   If StrLength(mom) = 1 Then mom = "0" & mom
   giorno = giorno & " " & mom
   mom = DateM
   If StrLength(mom) = 1 Then mom = "0" & mom
   giorno = giorno & "/" & mom & "/" & DateY & "  -  " & Time(Now)
   FormMain.FErase(x1,y1,x2,y2)
   FormMain.FDrawString(giorno,size,x1,y1,x2,y2,color)
End Sub
Però si nota in maniera fastidiosa il refresh della data ed ora, ecco perchè chiedevo una label trasparente.
Siccome lo sfondo della form è un'immagine una label con un colore di sfondo ci starebbe male.

Alla fine ho raggirato l'ostacolo scrivendo data e ora come testo di un'ImageButton.

Nella Sub App_Start ho messo:
VisData.Enabled = false

e nella Sub GetDataTime invece di:
FormMain.FErase(x1,y1,x2,y2)
FormMain.FDrawString(giorno,size,x1,y1,x2,y2,color)
ho messo:
Visdata.Text = giorno

non è una modo elegante ma non ho altre idee, l'unico controllo che mi permette di avere del testo su uno sfondo trasparente è l'ImageButton.
 
D

Deleted member 103

Guest
Ciao micro,

non è una modo elegante ma non ho altre idee, l'unico controllo che mi permette di avere del testo su uno sfondo trasparente è l'ImageButton.

non sarà un modo elegante ma l' idea è molto buona.;)

Ciao,
Filippo
 

Cableguy

Expert
Licensed User
Longtime User
Ciao micro,



non sarà un modo elegante ma l' idea è molto buona.;)

Ciao,
Filippo
Yes, but be sure to either catch the image button click event and code some "Ignore" function, or not to catch...but it could lead to some errouneaous behavior...
 

maXim

Active Member
Licensed User
Longtime User
Girovagando in internet ho trovato questa libreria, AlphaMobileControls. Non è per niente male, anzi, inoltre permette di realizzare degli effetti eye candy veramente carini...
 
Top