Domanda interessante.
Tento di risolvere il problema posto con il seguente ragionamento.
Fra le varie cose, che distinguono l'esecuzione di un progetto Gambas sotto l'IDE dall'esecuzione di un programma Gambas compilato, v'è il nome del programma. In particolare nell'eseguibile troviamo l'estensione .gambas
Qualora sia stato lanciato un programma compilato, il file cmdline presente nella cartella del processo del programma medesimo riporta una stringa contenente alla fine il nome del programma comprensivo dell'estensione .gambas più il carattere di file stringa '\0' (ossia Chr(0)).
Pertanto proporrei un codice del seguente tenore:
Public Sub Form_Open()
' Se al termine della stringa, contenuta nel percorso indicato nel file "cmdline" della cartella del processo del programma lanciato,
' non sono "almeno" presenti i caratteri finali ".gambas\x00", allora nascondi il "Button1":
If File.Load("/proc" &/ CStr(Application.Id) &/ "cmdline") Not Like "*.gambas\x00" Then
Button1.Visible = False
Endif
End
Eccomi qua. Per capire meglio quello che succede ho inserito una istruzione temporanea dopo il codice di VUOTT che è diventato così:
If File.Load("/proc" &/ CStr(Application.Id) &/ "cmdline") Like "*.gambas\x00" Then
Button4.Visible = False
Endif
comunicaz.Text = File.Load("/proc" &/ CStr(Application.Id) &/ "cmdline")
Con questo codice in fondo alla Form_Open ho preso la screenshot della finestra iniziale del progetto con il risultato della File.Load nelle tre condizioni: sotto ide, eseguibile e installato. Allego le tre screenschot.
Solo quando il programma gira sotto l'ide i 4 caratteri iniziali del contenuto del file sono diversi da "gbr3".
Posso aspettarmi che tutto non cambierà da un giorno all'altro?
Passo e chiudo.
Ok. Per ora lo considero risolto così:
Me.Caption = "Scopone scientifico - Livello: " & Format(byliv, "0") & " cmdline = " & File.Load("/proc" &/ CStr(Application.Id) &/ "cmdline")
'Se nel percorso indicato nel file "cmdline" della cartella del processo del programma lanciato,
'i 4 caratteri iniziali sono "gbr3", allora nascondi il "Button4":
If Left(File.Load("/proc" &/ CStr(Application.Id) &/ "cmdline"), 4) = "gbr3" Then
Button4.Visible = False
Endif
comunicaz.Text = "Per iniziare una partita, usa l'apposito pulsante qui sotto a sinistra"
Il testo finale sulla testata del form rimane lì finché l'utente non inizia la partita. Ma tutto sommato mi sembra superfluo. Può servire solo in caso di sorprese.
Ciao