Autore Topic: Titolo finestra Message  (Letto 1170 volte)

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re: Titolo finestra Message
« Risposta #15 il: 16 Dicembre 2014, 00:24:26 »
Io uso Debian Jessie/Sid con Xfce come desktop.
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: Titolo finestra Message
« Risposta #16 il: 16 Dicembre 2014, 09:24:44 »
Stamattina ho riprovato in Ubuntu con Gambas-3.6.2 ed ho ottenuto anch'io l'effetto titolo troncato e sfumato negli ultimi caratteri visibili. Lanomalia non si presenta però se il contenuto mdel messaggio è più lungo del titolo.

Ora non so se la differenza fra i due risultati ottenuti dipenda dal SO., dalla versione di Gambas o ancora dal connubio SO+Gambas. Per poterlo appurare con maggiore approssimazione bisognerebbe avere installata la stessa versione di Gambas su entrambi i SO.
 :ciao:
:ciao:

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.713
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Titolo finestra Message
« Risposta #17 il: 16 Dicembre 2014, 14:39:48 »
Io uso Mint.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re: Titolo finestra Message
« Risposta #18 il: 16 Dicembre 2014, 14:59:39 »
A chi possiede Ubuntu consiglio di fare una piccola prova empirica.
Aprite in Libre Office Writer un nuovo documento poi riducete di un poco la finestra agendo sul pulsante per minimizzare e salvatelo con un nome molto lungo tipo: Ambarabaciccicocotrecivettesulcomochefacevanol'amoreconlafigliadeldottoreildottoresiarrabbioambarabaciccicocoambarabaciccicocotrecivettesulcomochefacevanol'amoreconlafigliadeldottoreildottoresiarrabbioambarabaciccicoco
Potrete così constatare che la finestra di Writer non si allarga e il titolo sfuma.
Se poi aprite un nuovo documento e lo salvate con l'identico nome nell'identica posizione del precedente documento otterrete una finestra di avviso che trasborderà abbondantemente il desktop.
Questo dimostra che certi temi sono validissimi in alcuni campi ma carenti in altri ad esempio in questo ultimo caso se il tema controllasse il contenuto della finestra di avviso la scritta dovrebbe disporsi su più righe e qui Gambas non c'entra per nulla, parliamo di Libre Office roba super.
Io personalmente trovo carina la sfumatura, in Windows XP cerano i puntini.

In ultimo trovo eccessivo criticare Gambas per questo  :)

 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re: Titolo finestra Message
« Risposta #19 il: 16 Dicembre 2014, 18:15:59 »
Casualmente ho scoperto che succede la stessa cosa in thunderbird.
Uso Ubuntu 14.04
 :ciao:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re: Titolo finestra Message
« Risposta #20 il: 16 Dicembre 2014, 21:14:00 »
.........Io personalmente trovo carina la sfumatura, in Windows XP cerano i puntini.

In ultimo trovo eccessivo criticare Gambas per questo  :)
 :ciao:
Ti assicuro che in contesti come gestionali, programmi di controllo, solo per citare due esempi non è proprio il massimo della
professionalità....mio personalissimo parere....
Dopo tutte le vostre osservazioni ne deduco comunque che il comportamento è legato al SO e al DM utilizzato e non a Gambas,
e che comunque con qualche escamotage si può ovviare senza troppe difficoltà.
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.713
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Titolo finestra Message
« Risposta #21 il: 17 Dicembre 2014, 00:16:24 »
.... comunque con qualche escamotage si può ovviare senza troppe difficoltà.


....ovviamente:
http://www.gambas-it.org/wiki/index.php?title=Impostare_le_dimensioni_del_MessageBox
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re: Titolo finestra Message
« Risposta #22 il: 17 Dicembre 2014, 23:51:00 »
Volevo scrivere una funzione che potesse formattare correttamente una finestra di messaggio mostrando tutto il titolo nel caso questo sia più lungo del testo.
Avevo pensato di usare la funzione stringa Space$ e Len per calcolare il numero di spazzi da aggiungere al messaggio ma purtroppo non funziona e io non ne capisco il motivo.
A seguire il codice incriminato:

Codice: gambas [Seleziona]
' Gambas class file

' Per ricordarsi il tipo di finestra.
Private Enum Cancella = 1, Errore, Informazione, Domanda, Attenzione

Public Sub _new()

End

Public Sub Form_Open()

End
Public Sub msgTitolo(titolo As String, messaggio As String, tipo As Integer, Optional btn1 As String, Optional btn2 As String, Optional btn3 As String) As Variant
 
  Dim a, b, c As Integer
 
  Message.Title = titolo
  a = Len(titolo)
  b = Len(messaggio)
  If a > b Then
    c = (a - b) * 2 ' Questo per via del grassetto del titolo che è praticamente di doppia dimensione rispetto al messaggio
  Endif
  Select Case tipo
    Case 1
      If btn1 <> "" And btn2 <> "" And btn3 <> "" Then       
        Return Message.Delete(messaggio & Space$(c), btn1, btn2, btn3)
      Else If btn1 <> "" And btn2 <> "" Then
        Return Message.Delete(messaggio & Space$(c), btn1, btn2)
      Else If btn1 <> "" Then
        Return Message.Delete(messaggio & Space$(c), btn1)
      Else
        Message.Info("Costruzione errata del messaggio: " & messaggio)       
        Return 0
      Endif
     Case 2
       If btn1 <> "" And btn2 <> "" And btn3 <> "" Then       
        Return Message.Error(messaggio & Space$(c), btn1, btn2, btn3)
      Else If btn1 <> "" And btn2 <> "" Then
        Return Message.Error(messaggio & Space$(c), btn1, btn2)
      Else If btn1 <> "" Then
        Return Message.Error(messaggio & Space$(c), btn1)
      Else
        Message.Info("Costruzione errata del messaggio: " & messaggio)       
        Return 0
      Endif
  End Select
  '' Non ho proseguito perchè inutile
End


Public Sub Button1_Click()
 
  Dim t, m As String
  Dim i As Integer
  t = "Sono un titolo veramente ma veramente ma veramente ma veramentema veramente lungo"
  m = "Messaggio"
  i = msgTitolo(t, m, Cancella, "Si")
  Print i
 
End


 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.713
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Titolo finestra Message
« Risposta #23 il: 18 Dicembre 2014, 01:55:32 »
Io proporrei una cosa come questa:  :-\
Codice: gambas [Seleziona]
Public Sub Form_Open()

  Dim titolo As String = "Sono un titolo veramente ma veramente ma veramente ma veramente ma veramente lungo"  
  Dim testo As String = "Questo è un breve testo."
  Dim ti As Short

   ti = Me.Font.TextWidth(titolo)

   If ti > Me.Font.TextWidth(testo) Then

    With Message
      .Title = titolo & String$(ti - CInt(ti * 0.9), " ")
      .Info(testo)
    End With
    
   Endif
  
End
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re: Titolo finestra Message
« Risposta #24 il: 18 Dicembre 2014, 18:13:29 »
Finalmente ho capito in parte!
Il mio codice non poteva funzionare in quanto assumeva che la finestra di messaggio si sarebbe allargata agendo sul messaggio stesso se questi fosse stato sufficientemente lungo.
Sono stato indotto all'errore con una prova non sufficientemente scientifica :). O più propriamente banalmente empirica (la scritta del messaggio con cui avevo fatto le prove era senza spazi, cosa che non succede nella realtà). Un normale messaggio viene suddiviso in più righe se supera una certa lunghezza, di conseguenza agire su di lui con degli spazi per allargare la finestra non ha senso.
Rimane per me comunque poco comprensibile del perché occorra forzare il codice con l'aggiunta al titolo di spazi aggiuntivi, se Gambas (o chi per esso) guarda solo al messaggio e lo divide in più righe come è possibile che allungando il titolo esso allarghi la finestra?
Se invece guarda al titolo (come si evince dal codice di vuott) com'è che se io scrivo un titolo lungo lo tronca?
Comunque per quanto detto all'inizio non dovrebbe andare bene misurare il titolo rispetto al messaggio per far intervenire una funzione di “allungo”. Se ho un messaggio lunghissimo esso supererà il titolo lungo e la funzione non interverrà.
Allora ho controllato empiricamente a che punto del messaggio scatta la divisione e sul mio Ubuntu essa interviene a > 410.
Allora ho provato questo codice che però ha un risultato “esuberante”.

Codice: gambas [Seleziona]
Public Sub Form_Open()
  
  Dim titolo As String = "Sono un titolo veramente ma veramente ma veramente ma veramente ma veramente lungo fine titolo"    
  Dim messaggio As String = "Questo è un messaggio."
  Message.Title = mioTitolo(titolo)
  'Message.Title = mioTitolo(UCase$(titolo))
  Message.Info(messaggio)

End

Public Sub mioTitolo(titolo As String) As String
  
  Dim i, a, b As Integer  
  
  i = Me.Font.TextWidth(titolo)
  If i <= 410 Then
    Return titolo
  Else    
    a = Len(titolo)    
    b = i / a ' Larghezza media carattere
    a = ((i - 410) \ b) ' Dovrei ottenere il numero di spazi necessari    
    Return titolo & Space$(a)
  Endif
  
End


Se cambio invece Else così:

Codice: gambas [Seleziona]
a = Len(titolo)
a = a * 0.25
Return titolo & Space$(a)


sembrerebbe funzionare

Non riesco proprio a capire la logica.  :-\

Mi stavo dimenticando, naturalmente funziona anche col codice di vuott
 :ciao:
« Ultima modifica: 18 Dicembre 2014, 18:20:44 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.713
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Titolo finestra Message
« Risposta #25 il: 19 Dicembre 2014, 00:07:58 »
Una cosa da sottolineare è che - almeno dalle prove da me effettuate - la larghezza della finestra del MessageBox non va all'infinito.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re: Titolo finestra Message
« Risposta #26 il: 19 Dicembre 2014, 21:02:08 »
Una cosa da sottolineare è che - almeno dalle prove da me effettuate - la larghezza della finestra del MessageBox non va all'infinito.
Credo che non abbia neanche tanto senso....altrimenti passiamo da un estremo all'altro...
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)