Gambas-it

Gambas3 => Programmazione => Topic aperto da: vigiot - 30 Novembre 2017, 23:58:42

Titolo: [RISOLTO]finestre trasparenti ... anche troppo o per nulla
Inserito da: vigiot - 30 Novembre 2017, 23:58:42
Salve
E' da un paio di giorni che sto cercando di generare da codice un MessageBox con i bordi arrotondati.
Ho provato con:
Codice: [Seleziona]
Public Sub my_message_box(responso As Boolean) As Boolean
'Dim my_win_box As Window ' posta nelle "Dichiarazioni"
Dim pc As Picture
Dim my_dwg As DrawingArea
Dim sPath As String

  ' una qualsiasi immagine png con sfondo trasparente
  ' con Width minore di questa finestra
  ' ed Heigth minore di 120 px.
  sPath = Application.Path &/ "fatture_user/image/vigiot.png"
  pc = Picture.Load(sPath)
  responso = False
  With my_win_box = New Window As "w_box"
    .Width = 450
    .Height = 160
    .Resizable = False
    .Border = False
    .Minimized = False
    .Background = Color.Transparent
    '.Opacity = 0
    .Mask = True
  End With
 
  With my_dwg = New DrawingArea(my_win_box) As "m_dwg"
    .X = 0
    .Y = 0
    .Width = my_win_box.Width
    .Height = my_win_box.Height
    .Background = Color.Transparent
  End With
  my_dwg.Cached = True
  With Paint
    .Begin(my_dwg)
    .Brush = Paint.Color(Color.DarkBlue)
    .LineWidth = 2.5
    .Rectangle(1, 1, my_win_box.Width - 2, my_win_box.Height - 2, my_win_box.Width / 6)
    .Stroke(False)
    .DrawPicture(pc, ((my_win_box.Width / 2) - pc.Height / 2), 20, pc.Width, pc.Height)
    .Brush = Paint.Color(Color.Black)
    .LineWidth = 1
    .Rectangle((my_win_box.Width / 2) - 30, my_win_box.Height - 32, 60, 20, 6)
    .Stroke(False)
    .MoveTo((my_win_box.Width / 2) - 14, my_win_box.Height - 16)
    .Font.Bold = True
    .Text("OK")
    .Fill(True)
    .End
  End With
  responso = my_win_box.ShowModal()
  Print responso
  Return responso
End

Public Sub m_dwg_MouseDown()
  If Mouse.X > ((my_win_box.Width / 2) - 70) Then
    If Mouse.Y > (my_win_box.Height - 30) Then
      my_win_box.Close(3)
    Endif
  Endif
End
Ma il rettangolo di sfondo appare comunque.
Settare " .Background = Color.Transparent "  della finestra non serve a nulla.    ???
Mentre   con " .Opacity = 0 "  la finestra non si vede proprio !    :o
In compenso il "finto bottone" funziona.
D'accordo che tutto il male non viene per nuocere però ... >:(
Non vorrei che il problema ( a parte quello che sta fra la sedia e la tastiera  :coder: ) fosse nel gestore di sistema delle finestre.  :hatecomputer:
Qualche suggerimento ?

 :ciao: :ciao:
Titolo: Re:finestre trasparenti ... anche troppo o per nulla
Inserito da: Gianluigi - 01 Dicembre 2017, 11:03:54
In Gambas vi sono già i MessageBox e i Balloon a che scopo tutto questo?

 :ciao:

P.S. Dando un'occhiata rapida mi chiedo a cosa serva la DrawingArea non puoi  disegnare e/o scrivere direttamente nell'immagine?
Titolo: Re:finestre trasparenti ... anche troppo o per nulla
Inserito da: vigiot - 01 Dicembre 2017, 13:23:11
Come avevo scritto ...
Citazione
sto cercando di generare da codice un MessageBox con i bordi arrotondati.
E' uno " sfizio " altrimenti detto " trastullo ".  ;)
I message box hanno la loro finestra " standard " con sfondo opaco e grigio, ne volevo fare uno un po più diverso  da solito.
Questo è il primo esperimento fallito , ne seguiranno altri ... forse  :)
Se non sbaglio c'era qualcosa sul Wiki per le finestre trasparenti tipo:
creare un'immagine trasparente delle stesse dimensioni della finestra ...
Proverò a generarne una con cairo, poi vedremo.

Grazie Gianluigi
 :ciao: :ciao: :ciao:
Titolo: Re:finestre trasparenti ... anche troppo o per nulla
Inserito da: Gianluigi - 01 Dicembre 2017, 15:29:50
Come avevo scritto ...
Citazione
sto cercando di generare da codice un MessageBox con i bordi arrotondati.
E' uno " sfizio " altrimenti detto " trastullo ".  ;)
I message box hanno la loro finestra " standard " con sfondo opaco e grigio, ne volevo fare uno un po più diverso  da solito.
Questo è il primo esperimento fallito , ne seguiranno altri ... forse  :)
Se non sbaglio c'era qualcosa sul Wiki per le finestre trasparenti tipo:
creare un'immagine trasparente delle stesse dimensioni della finestra ...
Proverò a generarne una con cairo, poi vedremo.

Grazie Gianluigi
 :ciao: :ciao: :ciao:

Hai risposto solo alla prima domanda, i balloon non vanno bene?

Comunque tu intendi una cosa così(vedi allegato)?
Titolo: Re:finestre trasparenti ... anche troppo o per nulla
Inserito da: vigiot - 01 Dicembre 2017, 18:11:58
Non so cosa intendi ... :-[
Io povero mortale ho " solo " Gambas Ver. 3.5.4
e le gb.gui.qt non le ho ... :'(
Se qualche paziente volenteroso mi insegni come installarle ...

Grazie comunque
 :ciao: :ciao: :ciao:
Titolo: Re:finestre trasparenti ... anche troppo o per nulla
Inserito da: Gianluigi - 01 Dicembre 2017, 18:19:54
Non funziona se cambi il componente con gb.qt4 e gb.qt4.ext?
Vale a dire togli la spunta a gb.gui.qt e metti la spunta a gb.qt4 e gb.qt4.ext e dai ok.

 :ciao:

P.S. Se desideri compilare ti posso aiutare per quello che so, io uso Ubuntu e Xubuntu.

Post P.S. Dimenticavo: Dopo aver cambiato i componenti conviene dare il comando Compila tutto
Titolo: Re:finestre trasparenti ... anche troppo o per nulla
Inserito da: vigiot - 01 Dicembre 2017, 19:43:48
Grazie per i consigli, verificherò  :hatecomputer:
Ad ogni buon conto ti allego un esempio fatto al volo,
prova a farlo girare ...
Se vuoi poi fammi sapere
Grazie
 :ciao: :ciao:
Titolo: Re:finestre trasparenti ... anche troppo o per nulla
Inserito da: Gianluigi - 01 Dicembre 2017, 19:58:19
Si vede così (allegato) e quando chiudo la finestra rimane il message perché non è modale e non risponde.

 :ciao:
Titolo: Re:finestre trasparenti ... anche troppo o per nulla
Inserito da: vigiot - 01 Dicembre 2017, 21:58:40
Hai provato a cliccare su " Ok " ?
E' una scritta ma funge da " bottone " ...
 8)
 Grazie comunque di averlo provato.

 :ciao: :ciao:
Titolo: Re:finestre trasparenti ... anche troppo o per nulla
Inserito da: Gianluigi - 01 Dicembre 2017, 22:11:56
Certo che ho fatto click su OK e se la finestra main è aperta funziona.
Se al contrario chiudi prima la finestra main, cosa che non succederebbe se il message fosse modale, anche se clicchi su OK non accade nulla, nel senso che la finestra message non si chiude.
Spero di essere stato chiaro.
Tu invece sei riuscito a provare il mio codice?

 :ciao:
Titolo: Re:finestre trasparenti ... anche troppo o per nulla
Inserito da: vigiot - 02 Dicembre 2017, 00:06:06
Purtroppo non ho i componenti necessari.
se attivo il qt4.ext  ronfa per un po ma non riesce a caricarlo.
Per quanto riguarda il " ShowModal " non lo ho messo apposta, altrimenti
lo slider non cambia l'opacità della finestra, che poi era il motivo della discussione.
alla fine se anche con libcairo non ottengo risultati abbandono momentaneamente l'idea
del message box ad ok .... :bad:
Quindi ancora una prova, ma sono sempre meno convinto.
D'altronde se canonical ha abbandonato X11 ci sarà pure un motivo.
Grazie ancora
 :ciao: :ciao:
Titolo: Re:finestre trasparenti ... anche troppo o per nulla
Inserito da: Gianluigi - 02 Dicembre 2017, 13:14:10
Io non capisco il codice che ti ho postato è di una tale semplicità che se non riesci a farlo funzionare con Compila tutto significa che il tuo Gambas3 è gravemente bacato, come del resto dimostra il fatto che tu non riesca a caricare il componente gb.qt4.ext.
Come tu possa pretendere di programmare così proprio non mi riesce di capire.
Se sei tanto in gamba da utilizzare Debian allora devi anche imparare a compilare il tuo Gambas altrimenti ti conviene lasciar perdere Debian scaricarti Kubuntu che è l'OS che usa Minisini oppure se non hai tanta RAM Xubuntu che è un gioiellino che non abbisogna di tanta memoria (solo qualche aggiustatura perché Gambas funzioni al meglio) e così ti puoi scaricare l'ultimo Gambas da PPA.

Se non farai così non saremo in grado di aiutarti.

P.S. Il progettino da me postato funziona anche con solo le qt4, le gb.qt4.ext una volta si caricavano da sole insieme alle qt.

 :ciao:
Titolo: Re:finestre trasparenti ... anche troppo o per nulla
Inserito da: vigiot - 02 Dicembre 2017, 14:09:02
Scusa Gianluigi
Ho fatto come suggerisci: via la spunta a gb.qt4 e attivato gb.qt4ext ( che a sua volta attiva gb.qt4 )
ma il gb.gui.qt non c'è proprio !  :o
ma se tento di aprire il tuo progetto mi dà questi errori:
manca -> gb.gui.qt
e  se dò Annulla -> Unknow Error Project.ReadProject.3362
se invece dò Continua gambas rugna e basta.
Ovviamente non potendolo caricare non posso compilare ... :-*
Altro non sò  ???
gambas è stato installato direttamente dal Repo di Debian 8 con Synaptic
E se il gestore della rete non ha fatto danni i files sono corretti.
Se invece avessi usato il pacchetto .deb avrei potuto controllare il checksum ... ;)
Compilandolo da sorgente può capitare ( ma non è detto ) di " dimenticarsi " qualcosa.
Nel frattempo ho guardato i file .h di gtk+ per creare le finestre trasparenti viene usato HTML poi elaborato da gtk_builder.
Quindi è inutile insistere.  :hatecomputer:
Le finestre trasparenti con sistemi basati su gtk sono troppo elaborate  da costruire per me.  :nono:
Devo comunque aggiornare la mia linux box magari con una distro differente da Debian ...

Grazie per la tua pazienza e a presto.
 :ciao: :ciao: :ciao:
Titolo: Re:finestre trasparenti ... anche troppo o per nulla
Inserito da: Gianluigi - 02 Dicembre 2017, 14:24:15
Scusa Gianluigi
Ho fatto come suggerisci: via la spunta a gb.qt4 e attivato gb.qt4ext ( che a sua volta attiva gb.qt4 )
ma il gb.gui.qt non c'è proprio !  :o
ma se tento di aprire il tuo progetto mi dà questi errori:
manca -> gb.gui.qt
e  se dò Annulla -> Unknow Error Project.ReadProject.3362
se invece dò Continua gambas rugna e basta.
Ovviamente non potendolo caricare non posso compilare ... :-*
Altro non sò  ???


Se lo scrivevi subito avrei provato a mandarti un nuovo file con il solo QT (vedi allegato se funge).
Ma probabilmente tu non lo vedrai così (vedi immagine allegata)

 :ciao:
Titolo: Re:finestre trasparenti ... anche troppo o per nulla
Inserito da: Top Fuel - 02 Dicembre 2017, 17:43:46
Strano che hai ancora la 3.5.4... anche io ho Debian e uso la 3.9.2.
Titolo: Re:finestre trasparenti ... anche troppo o per nulla
Inserito da: Gianluigi - 02 Dicembre 2017, 18:11:41
Ciao Top Fuel,
tu come lo vedi il programmino? Come da immagine, più o meno, oppure?

Estendo la domanda a ognuno di voi (inteso come noi del forum  ;D ), se vi va di dirlo...

 :ciao:
Titolo: Re:finestre trasparenti ... anche troppo o per nulla
Inserito da: vuott - 02 Dicembre 2017, 18:22:12
Qualche esempio di trasparenza, simile a quello proposto da Gianluigi, puoi trovarlo qui:

http://www.gambas-it.org/smf/index.php?topic=576.0
Titolo: Re:finestre trasparenti ... anche troppo o per nulla
Inserito da: vigiot - 02 Dicembre 2017, 18:55:41
Perfetto, come volevasi dimostrare.
Non funge  >:(
Mi dà errore :Fmessage.Transparent is not a property .... :nono: :nono:
Bene mi pare sia giunto il momento d'installare Debian 9  " per vedere da vicino l'effetto che fà "  8)

Ciao Top Fuel ma la tua versione di Gambas è sui repo o l'hai compilata ?

Grazie a tutti
 :ciao: :ciao: :ciao:
Titolo: Re:finestre trasparenti ... anche troppo o per nulla
Inserito da: tornu - 02 Dicembre 2017, 21:13:06
.....
Estendo la domanda a ognuno di voi (inteso come noi del forum  ;D ), se vi va di dirlo...

 :ciao:
Ciao Gianluigi,
funziona perfettamente, la visualizzazione è identica all'immagine da te postata.  :ciao:
Titolo: Re:finestre trasparenti ... anche troppo o per nulla
Inserito da: kicco - 02 Dicembre 2017, 21:22:47
Estendo la domanda a ognuno di voi (inteso come noi del forum  ;D ), se vi va di dirlo...
eccomi! vedi immagine.
 :ciao:
Titolo: Re:finestre trasparenti ... anche troppo o per nulla
Inserito da: Gianluigi - 02 Dicembre 2017, 22:12:33
Ok ragazzi, grazie

 :ok:  :ciao:
Titolo: Re:finestre trasparenti ... anche troppo o per nulla
Inserito da: Gianluigi - 03 Dicembre 2017, 10:09:57
 :ciao: vigiot,
giusto per completare le informazioni ti allego l'immagine di un Balloon, che come da te desiderato ha gli angoli arrotondati.

 :ciao:
Titolo: Re:finestre trasparenti ... anche troppo o per nulla
Inserito da: vigiot - 03 Dicembre 2017, 15:50:24
Bene, che esistessero i ballon lo sapevo già ...
Li ho provati, editati ecc. ci ho giocato un pò insomma
ma poi li ho lasciati perdere, diventavano invadenti in alcuni casi
Es. se dovevi evidenziare un errore in un textbox tipo incoerenza di ciò che digitavi
in riferimento al tipo di dato richiesto ecc. Se il textbox era posto sopra ad un pulsante...
Poi non dimentichiamoci che il balloon è riferito ad un controllo, mentre il message box è libero da questi vincoli.
Comunque ogni oggetto ha il suo uso specifico, sta a te stabilire come e cosa.
L'idea delle finestre "trasparenti" è solo rimandata per ora, in seguito chissà ...  8)
Adesso per finire il programmino mi manca:  :P
l'invio della fattura con e-mail
una finestra per visualizzare i vari archivi e i file pdf ( magari con la propria miniatura )  ;)
la stampa diretta del pdf creato o salvato
e credo basti .. :D
Vedremo.

Buona Domenica a tutti
 :ciao: :ciao: :ciao:
Titolo: Re:finestre trasparenti ... anche troppo o per nulla
Inserito da: Gianluigi - 04 Dicembre 2017, 13:26:06
Bene, che esistessero i ballon lo sapevo già ...
Li ho provati, editati ecc. ci ho giocato un pò insomma
ma poi li ho lasciati perdere, diventavano invadenti in alcuni casi
Es. se dovevi evidenziare un errore in un textbox tipo incoerenza di ciò che digitavi
in riferimento al tipo di dato richiesto ecc. Se il textbox era posto sopra ad un pulsante...
Poi non dimentichiamoci che il balloon è riferito ad un controllo, mentre il message box è libero da questi vincoli.
Giusto per non lasciare a chi leggerà in futuro errate informazioni, i balloon non sono affatto invadenti ma si limitano a fare bene quanto richiesto dal programmatore.
In Gambas anche le finestre sono dei controlli e pertanto è possibile fare apparire un balloon da solo (finestra trasparente).
Naturalmente occorre usare Gambas in base a come è stato pensato da Minisini, senza rimettersi a reinventare (magari male) la ruota, fatto salvo il piacere di giocarci come si vuole, ma che sia ben chiaro che si tratta di un uso non corretto del linguaggio.
Citazione
L'idea delle finestre "trasparenti" è solo rimandata per ora, in seguito chissà ...
Ma che sia anche qui chiaro che non lo è per chi usa Gambas secondo le regole del linguaggio. Dopo averlo installato correttamente e aver calibrato l'OS.
Citazione
Buona Domenica a tutti

Altrettanto a te, buon Lunedì a tutti
 :ciao:
Titolo: Re:finestre trasparenti ... anche troppo o per nulla
Inserito da: vigiot - 04 Dicembre 2017, 14:27:11
Caro Gianluigi
sono pienamente d'accordo sulle tue sensatissime affermazioni.
Rispetto al massimo, chi ha concepito Gambas, ritengo sia una fortuna il poterlo usare.
Sono anche sì conscio che spesso non riesco ad esprimere al pieno il mio modestissimo parere.
Ma vorrei farti umilmente notare che uso Gambas da quando mi sono iscritto qui.
Stò pian piano imparando ad usarlo, ma ogni tanto mi confondo.
Mano a mano che l'apprendimento prosegue faccio meno errori (il modo di pensare in c/c++ è ancora forte)
Ed infine sono onorato che vi siano persone che così gentilmente mi aiutano (nonostante "la capa tosta" mia ) ;)
Se sei d'accordo modificherei il titolo del post con  [In Cantiere]  perché prima o poi riuscirò a venirne a capo  :hatecomputer:

Un caloroso abbraccio
 :ciao: :ciao:
Titolo: Re:finestre trasparenti ... anche troppo o per nulla
Inserito da: Gianluigi - 04 Dicembre 2017, 15:18:37
Caro vigiot,
io cerco da improbabile moderatore e programmatore quale sono di trasferire quella poca conoscenza che ho a chi, magari digiuno di programmazione, si affaccia a questo per me fantastico linguaggio (leggo con piacere, apprezzato anche da te) che permette con pochissimo sforzo e senza neanche bisogno di codice di improntare finestre altamente professionali.
Quindi non prendere quello che scrivo come una critica nei tuoi confronti che come hai ampiamente specificato ti trastulli a "reinventare le finestre", ma solo per quello che è, cioè il mio dovere verso chi viene qui per studiare Gambas ad avere indicata  la retta via.
Ti faccio un semplice esempio che potrebbe interessarti visto che nel tuo programma cerchi di creare un report per le fatture ecc.
In Gambas esiste un componente gb.report2 creato da Fabien Bodard (in rete ci sono dei suoi filmati) che se non capisci come si creano le finestre non puoi capire e quindi usare.

Pertanto spero di non averti offeso, se l'ho fatto ti chiedo scusa il mio carattere è un po troppo diretto e brusco e come dici giustamente non sempre ci si riesce a spiegare a pieno.

Un caloroso abbraccio anche da parte mia, sono contento se continuerai con i tuoi alambicchi (e naturalmente io continuerò con le precisazioni  ;D)

 :ciao: :ciao:

P.S. L'argomento di per se lo riterrei risolto poi vedi tu che sei padrone della discussione
Titolo: Re:[RISOLTO]finestre trasparenti ... anche troppo o per nulla
Inserito da: vigiot - 04 Dicembre 2017, 16:19:09
Fatto.
Caro Gianluigi ben vengano le tue precisazioni ! :ok: :ok:
Mi aiutano in due modi.
Primo mi stimolano a migliorare
E secondo aiutano il mio cervello a non invecchiare troppo  ;D ;D ;D

A presto
 :ciao: :ciao:
Titolo: Re:[RISOLTO]finestre trasparenti ... anche troppo o per nulla
Inserito da: Top Fuel - 08 Dicembre 2017, 16:10:05
Con enorme ritardo as usual  ;D ho provato il programmino di Gianluigi e funge perfettamente.
@Vigiot: io Gambas l'ho installato da repo, Se ti può servire i miei repo sono questi:

### Debian Main Repos
deb http://ftp.it.debian.org/debian/ testing main contrib non-free

### Debian Update Repos
deb http://security.debian.org/ testing/updates main contrib non-free
deb http://ftp.it.debian.org/debian/ testing-proposed-updates main contrib non-free

### Liquorix Repository
deb http://liquorix.net/debian sid main

### Debian Multimedia - http://deb-multimedia.org/
deb http://www.deb-multimedia.org testing main non-free

### GetDeb Repositories
deb http://archive.getdeb.net/ubuntu xenial-getdeb apps
deb http://archive.getdeb.net/ubuntu xenial-getdeb games