<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="it">
	<id>https://www.gambas-it.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gianluigi</id>
	<title>Gambas-it.org - Wikipedia - Contributi dell&amp;#039;utente [it]</title>
	<link rel="self" type="application/atom+xml" href="https://www.gambas-it.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gianluigi"/>
	<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php/Speciale:Contributi/Gianluigi"/>
	<updated>2026-10-23T07:40:48Z</updated>
	<subtitle>Contributi dell&amp;#039;utente</subtitle>
	<generator>MediaWiki 1.39.15</generator>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Codice_essenziale_per_mostrare_un_file_PDF_con_le_risorse_del_Componente_gb.poppler&amp;diff=42424</id>
		<title>Codice essenziale per mostrare un file PDF con le risorse del Componente gb.poppler</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Codice_essenziale_per_mostrare_un_file_PDF_con_le_risorse_del_Componente_gb.poppler&amp;diff=42424"/>
		<updated>2025-09-06T16:04:12Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Per mostrare un documento ''PDF'' in Gambas, bisognerà utilizzare le risorse del Componente [https://gambaswiki.org/wiki/comp/gb.poppler?l=it ''gb.poppler''].&lt;br /&gt;
&lt;br /&gt;
==Mostrando il documento PDF nell'Oggetto ''ImageView''==&lt;br /&gt;
Mostriamo un semplice esempio, nel quale bisognerà porre sul ''Form'' una ''ImageView'' e attivare l'indispensabile Componente ''gb.poppler''.&lt;br /&gt;
&amp;lt;BR&amp;gt;Ci serviremo, quindi, della Classe ''PdfDocument'', la quale consente di leggere il contenuto di un documento PDF e di mostrarlo.&lt;br /&gt;
 Private Const RISOLUZIONE As Float = 150.0&lt;br /&gt;
 Private doc As PdfDocument&lt;br /&gt;
 Private c As Short&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Public Sub Form_Open()&lt;br /&gt;
  &lt;br /&gt;
  With Me&lt;br /&gt;
    .Width = Screen.AvailableWidth&lt;br /&gt;
    .Height = Screen.AvailableHeight&lt;br /&gt;
  End With&lt;br /&gt;
  &lt;br /&gt;
 &amp;lt;FONT color=gray&amp;gt;' ''Carica il file PDF del documento da mostrare:''&amp;lt;/font&amp;gt;&lt;br /&gt;
  doc = New PdfDocument(&amp;quot;&amp;lt;FONT color=darkgreen&amp;gt;''/percorso/del/file.pdf''&amp;lt;/font&amp;gt;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 End&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FONT color=gray&amp;gt;' '''''Cliccando sulla &amp;quot;ImageView&amp;quot; viene mostrata la pagina corrente del documento PDF.'''''&lt;br /&gt;
 ' '''''Cliccando ancora si passa alla eventuale pagina successiva.'''''&amp;lt;/font&amp;gt;&lt;br /&gt;
 Public Sub ImageView1_MouseUp()&lt;br /&gt;
 &lt;br /&gt;
  Dim im As Image&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FONT color=gray&amp;gt;' ''Modifica la risoluzione e dunque la dimensione della pagina corrente del documento PDF e la converte in una &amp;quot;Image&amp;quot;:''&amp;lt;/font&amp;gt;&lt;br /&gt;
  im = doc[c].Render(0, 0, doc[c].Render().W * doc.Resolution, doc[c].Render().H * doc.Resolution, 0, RISOLUZIONE)&lt;br /&gt;
  &lt;br /&gt;
 &amp;lt;FONT color=gray&amp;gt;' ''Adatta l'Oggetto &amp;quot;ImageView&amp;quot; alla dimensione dell'immagine del documento PDF e carica l'immagine nella &amp;quot;ImageView&amp;quot;:''&amp;lt;/font&amp;gt;&lt;br /&gt;
  With ImageView1&lt;br /&gt;
    .Resize(Me.W, Me.H)&lt;br /&gt;
    .Image = im&lt;br /&gt;
  End With&lt;br /&gt;
  &lt;br /&gt;
  Me.Title = &amp;quot;Pagina: &amp;quot; &amp;amp; CStr(c + 1)&lt;br /&gt;
  &lt;br /&gt;
  Inc c&lt;br /&gt;
  &lt;br /&gt;
 &amp;lt;FONT color=gray&amp;gt;' '''''Se si clicca sull'immagine dell'ultima pagina del PDF, si torna a mostrare la prima pagina:'''''&amp;lt;/font&amp;gt;&lt;br /&gt;
  If c == doc.Count Then c = 0&lt;br /&gt;
  &lt;br /&gt;
 End&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mostrando il documento PDF nell'Oggetto ''PictureBox''==&lt;br /&gt;
Qui il documento PDF sarà mostrato in una ''PictureBox''.&lt;br /&gt;
 Private doc As PdfDocument&lt;br /&gt;
 Private c As Short&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Public Sub Form_Open()&lt;br /&gt;
 &lt;br /&gt;
  With Me&lt;br /&gt;
    .Width = Screen.AvailableWidth&lt;br /&gt;
    .Height = Screen.AvailableHeight&lt;br /&gt;
  End With&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FONT Color=gray&amp;gt;' ''Carica il file PDF del documento da mostrare:''&amp;lt;/font&amp;gt;&lt;br /&gt;
  doc = New PdfDocument(&amp;quot;&amp;lt;FONT color=darkgreen&amp;gt;''/percorso/del/file.pdf''&amp;lt;/font&amp;gt;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 End&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FONT color=gray&amp;gt;' '''''Cliccando sulla &amp;quot;PictureBox&amp;quot; viene mostrata la pagina corrente del documento PDF.'''''&lt;br /&gt;
 ' '''''Cliccando ancora si passa alla eventuale pagina successiva.'''''&amp;lt;/font&amp;gt;&lt;br /&gt;
 Public Sub PictureBox1_MouseUp()&lt;br /&gt;
 &lt;br /&gt;
  Dim im As Image&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FONT Color=gray&amp;gt;' ''Modifica la risoluzione e dunque la dimensione della pagina corrente del documento PDF e la converte in una &amp;quot;Image&amp;quot;:''&amp;lt;/font&amp;gt;&lt;br /&gt;
  im = doc[c].Render(0, 0, doc[c].Render().W * doc.Resolution, doc[c].Render().H * doc.Resolution, 0, doc.Resolution)&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FONT Color=gray&amp;gt;' ''Adatta l'Oggetto &amp;quot;PictureBox&amp;quot; alla dimensione dell'immagine del documento PDF e carica l'immagine nella &amp;quot;PictureBox&amp;quot;:''&amp;lt;/font&amp;gt;&lt;br /&gt;
  With PictureBox1&lt;br /&gt;
    .Resize(im.W, im.H)&lt;br /&gt;
    .Image = im&lt;br /&gt;
  End With&lt;br /&gt;
 &lt;br /&gt;
  Me.Title = &amp;quot;Pagina: &amp;quot; &amp;amp; CStr(c + 1)&lt;br /&gt;
 &lt;br /&gt;
  Inc c&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FONT Color=gray&amp;gt;' ''Se si clicca sull'immagine dell'ultima pagina del PDF, si torna a mostrare la prima pagina:''&amp;lt;/font&amp;gt;&lt;br /&gt;
  If c == doc.Count Then c = 0&lt;br /&gt;
 &lt;br /&gt;
 End&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mostrando il documento PDF nell'Oggetto ''DrawingArea''==&lt;br /&gt;
Qui il documento PDF sarà mostrato in una ''DrawingArea''.&lt;br /&gt;
 Private doc As PdfDocument&lt;br /&gt;
 Private c As Short&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Public Sub Form_Open()&lt;br /&gt;
 &lt;br /&gt;
  With Me&lt;br /&gt;
    .Width = Screen.AvailableWidth&lt;br /&gt;
    .Height = Screen.AvailableHeight&lt;br /&gt;
  End With&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FONT Color=gray&amp;gt;' ''Carica il file PDF del documento da mostrare:''&amp;lt;/font&amp;gt;&lt;br /&gt;
  doc = New PdfDocument(&amp;quot;&amp;lt;FONT color=darkgreen&amp;gt;''/percorso/del/file.pdf''&amp;lt;/font&amp;gt;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 End&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Public Sub DrawingArea1_Draw()&lt;br /&gt;
 &lt;br /&gt;
  Dim im As Image&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FONT Color=gray&amp;gt;' ''Modifica la risoluzione e dunque la dimensione della pagina corrente del documento PDF e la converte in una &amp;quot;Image&amp;quot;:''&amp;lt;/font&amp;gt;&lt;br /&gt;
  im = doc[c].Render(0, 0, doc[c].Render().W * doc.Resolution, doc[c].Render().H * doc.Resolution, 0, doc.Resolution)&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FONT Color=gray&amp;gt;' ''Adatta l'Oggetto &amp;quot;DrawingArea&amp;quot; alla dimensione dell'immagine del documento PDF e carica l'immagine nella &amp;quot;DrawingArea&amp;quot;:''&amp;lt;/font&amp;gt;&lt;br /&gt;
  DrawingArea1.Resize(im.W, im.H)&lt;br /&gt;
 &lt;br /&gt;
  With Paint&lt;br /&gt;
    .DrawImage(im, 0, 0, im.W, im.H, 1.0, Null)&lt;br /&gt;
    .End&lt;br /&gt;
  End With&lt;br /&gt;
 &lt;br /&gt;
  Me.Title = &amp;quot;Pagina: &amp;quot; &amp;amp; CStr(c + 1)&lt;br /&gt;
 &lt;br /&gt;
 End&lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FONT color=gray&amp;gt;' '''''Cliccando sulla &amp;quot;DrawingArea&amp;quot; viene mostrata la pagina corrente del documento PDF.'''''&lt;br /&gt;
 ' '''''Cliccando ancora si passa alla eventuale pagina successiva.'''''&amp;lt;/font&amp;gt;&lt;br /&gt;
 Public Sub DrawingArea1_MouseUp()&lt;br /&gt;
 &lt;br /&gt;
  Inc c&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FONT Color=gray&amp;gt;' ''Se si clicca sull'immagine dell'ultima pagina del PDF, si torna a mostrare la prima pagina:''&amp;lt;/font&amp;gt;&lt;br /&gt;
  If c == doc.Count Then c = 0&lt;br /&gt;
 &lt;br /&gt;
 End&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mostrando il documento PDF nell'Oggetto ''DocumentView''==&lt;br /&gt;
Mostriamo un primo esempio per mostrare un file pdf mediante un Oggetto ''DocumentView'':&lt;br /&gt;
 Private Const RISOLUZIONE As Float = 150.0&lt;br /&gt;
 Private COLONNE As Byte = 1&lt;br /&gt;
 Private doc As PdfDocument&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Public Sub Form_Open()&lt;br /&gt;
 &lt;br /&gt;
  Dim DocumentView1 As DocumentView&lt;br /&gt;
 &lt;br /&gt;
  With Me&lt;br /&gt;
    .Move(0, 0, Screen.AvailableWidth, Screen.AvailableHeight)&lt;br /&gt;
    .Arrangement = Arrange.Vertical&lt;br /&gt;
  End With&lt;br /&gt;
  &lt;br /&gt;
  doc = New PdfDocument(&amp;quot;&amp;lt;FONT color=darkgreen&amp;gt;''/percorso/del/file.pdf''&amp;lt;/font&amp;gt;&amp;quot;)&lt;br /&gt;
  &lt;br /&gt;
  With DocumentView1 = New DocumentView(Me) As &amp;quot;DocumentView1&amp;quot;&lt;br /&gt;
    .Column = COLONNE&lt;br /&gt;
    .Count = doc.Count&lt;br /&gt;
    .Expand = True&lt;br /&gt;
  End With&lt;br /&gt;
   &lt;br /&gt;
 End&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Public Sub DocumentView1_Draw(Page As Integer, Width As Integer, Height As Integer)&lt;br /&gt;
  &lt;br /&gt;
  Paint.DrawImage(doc[Page].Render(0, 0, Width * COLONNE, Height * COLONNE, 0, RISOLUZIONE), 0, 0, Width, Height)&lt;br /&gt;
   &lt;br /&gt;
 End&lt;br /&gt;
&lt;br /&gt;
Mostriamo un secondo esempio: &amp;lt;SUP&amp;gt;&amp;amp;#091;[[#Note|nota 1]]&amp;amp;#093;&amp;lt;/sup&amp;gt; &lt;br /&gt;
 Private $hPdf As PdfDocument&lt;br /&gt;
 &lt;br /&gt;
 Public Sub Form_Open()&lt;br /&gt;
  &lt;br /&gt;
  Dim sPath As String&lt;br /&gt;
  &lt;br /&gt;
  Dialog.Title = (&amp;quot;Open a new pdf file&amp;quot;)&lt;br /&gt;
  Dialog.Filter = [&amp;quot;*.pdf&amp;quot;, &amp;quot;PDF Files&amp;quot;]&lt;br /&gt;
  Dialog.Path = User.Home&lt;br /&gt;
  If Dialog.OpenFile() Then&lt;br /&gt;
    Me.Close&lt;br /&gt;
    Return&lt;br /&gt;
  Endif&lt;br /&gt;
  sPath = Dialog.Path&lt;br /&gt;
  If Right(sPath, 3) &amp;lt;&amp;gt; &amp;quot;pdf&amp;quot; Then&lt;br /&gt;
    Message.Warning((&amp;quot;You need to open a file &amp;amp;#060;b&amp;gt;\&amp;quot;.pdf\&amp;quot;  &amp;quot;))&lt;br /&gt;
    Me.Close&lt;br /&gt;
    Return&lt;br /&gt;
  Endif&lt;br /&gt;
  Try $hPdf = New PdfDocument(sPath)&lt;br /&gt;
  If Error Then&lt;br /&gt;
    Message.Warning((&amp;quot;Cannot open the file, it may be encrypted  &amp;quot;))&lt;br /&gt;
    Me.Close&lt;br /&gt;
    Return&lt;br /&gt;
  Endif&lt;br /&gt;
  DocumentView1.Count = $hPdf.Count&lt;br /&gt;
   &lt;br /&gt;
 End&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Public Sub DocumentView1_Layout(Page As Integer)&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;FONT color=gray&amp;gt;' '' Se la versione è &amp;lt;= 3.19 allora il codice va de-commentato e le ultime due righe vanno commentate.''&amp;lt;/font&amp;gt;&lt;br /&gt;
    &amp;lt;FONT color=gray&amp;gt;'&lt;br /&gt;
    ' Last.Layout.Height = $hPdf[Page].Render().H&lt;br /&gt;
    ' Last.Layout.Width = $hPdf[Page].Render().W&lt;br /&gt;
    ' &amp;lt;/font&amp;gt;&lt;br /&gt;
  Last.Layout.Height = $hPdf[Page].H&lt;br /&gt;
  Last.Layout.Width = $hPdf[Page].W&lt;br /&gt;
   &lt;br /&gt;
 End&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Public Sub DocumentView1_Draw(Page As Integer, Width As Integer, Height As Integer)&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;FONT color=gray&amp;gt;' ''Se la versione è &amp;lt;= 3.19 allora il codice va de-commentato e l'ultima riga va commentata.''&amp;lt;/font&amp;gt;&lt;br /&gt;
    &amp;lt;FONT color=gray&amp;gt;' Dim fRes As Float&lt;br /&gt;
    ' Dim himg As Image&lt;br /&gt;
    '&lt;br /&gt;
    ' fRes = $hPdf.Resolution / 72&lt;br /&gt;
    ' himg = $hPdf[Page].Render(0, 0, Width / fRes, Height / fRes, 0, $hPdf.Resolution / fRes)&lt;br /&gt;
    ' Draw.Image(himg, 0, 0, Width, Height)&amp;lt;/font&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    Paint.DrawImage($hPdf[Page].Render(0, 0, Width, Height), 0, 0)&lt;br /&gt;
  &lt;br /&gt;
 End&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Public Sub btnZoomIn_Click()&lt;br /&gt;
 &lt;br /&gt;
  Dim f As Float = DocumentView1.Zoom&lt;br /&gt;
  &lt;br /&gt;
  f += 0.05&lt;br /&gt;
  If f &amp;gt; 1.5 Then f = 1&lt;br /&gt;
  DocumentView1.Zoom = f&lt;br /&gt;
  DocumentView1.Count = $hPdf.Count&lt;br /&gt;
  DocumentView1.Refresh&lt;br /&gt;
  Wait&lt;br /&gt;
  &lt;br /&gt;
 End&lt;br /&gt;
&lt;br /&gt;
Mostriamo un terzo esempio applicando lo ZOOM con uno &amp;quot;Slider&amp;quot;:&lt;br /&gt;
 Private Const RISOLUZIONE As Integer = 150&lt;br /&gt;
 Private DocumentView1 As DocumentView&lt;br /&gt;
 Private doc As PdfDocument&lt;br /&gt;
 Private Slider1 As Slider&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Public Sub Form_Open()&lt;br /&gt;
  &lt;br /&gt;
  doc = New PdfDocument(&amp;quot;&amp;lt;FONT Color=darkgreen&amp;gt;''/percorso/del/file.pdf''&amp;lt;/font&amp;gt;&amp;quot;, Null, Null)&lt;br /&gt;
  &lt;br /&gt;
  With Me&lt;br /&gt;
    .W = Screen.AvailableWidth&lt;br /&gt;
    .H = Screen.AvailableHeight * 0.95&lt;br /&gt;
  End With&lt;br /&gt;
  &lt;br /&gt;
  With DocumentView1 = New DocumentView(Me) As &amp;quot;DocumentView1&amp;quot;&lt;br /&gt;
    .Move(0, 0, Me.W * 0.9, Me.H)&lt;br /&gt;
    .Count = doc.Count&lt;br /&gt;
    .Zoom = 2&lt;br /&gt;
  End With&lt;br /&gt;
  &lt;br /&gt;
  With Slider1 = New Slider(Me) As &amp;quot;Slider1&amp;quot;&lt;br /&gt;
    .Move(Me.W * 0.9, Me.H * 0.2, Me.W * 0.1, Me.H * 0.5)&lt;br /&gt;
    .MinValue = 1&lt;br /&gt;
    .MaxValue = 10&lt;br /&gt;
    .Value = 2&lt;br /&gt;
  End With&lt;br /&gt;
   &lt;br /&gt;
 End&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Public Sub DocumentView1_Draw(Page As Integer, Width As Integer, Height As Integer)&lt;br /&gt;
  &lt;br /&gt;
  Paint.DrawImage(doc[Page].Render(0, 0, Width * doc.Resolution, Height * doc.Resolution, 0, doc.Resolution * DocumentView1.Zoom), 0, 0, Paint.Width, Paint.Height)&lt;br /&gt;
  &lt;br /&gt;
 &amp;lt;FONT color=gray&amp;gt;' ''Adatta le dimensioni dell'Oggetto &amp;quot;DocumentView&amp;quot; a quelle zoommate della pagina mostrata:''&amp;lt;/font&amp;gt;&lt;br /&gt;
  With DocumentView1&lt;br /&gt;
    .W = Width&lt;br /&gt;
    .H = Height&lt;br /&gt;
  End With&lt;br /&gt;
  &lt;br /&gt;
 End&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Public Sub Slider1_Change()&lt;br /&gt;
  &lt;br /&gt;
  DocumentView1.Zoom = Slider1.Value&lt;br /&gt;
  &lt;br /&gt;
  Me.Caption = &amp;quot;ZOOM: &amp;quot; &amp;amp; CStr(Slider1.Value)&lt;br /&gt;
   &lt;br /&gt;
 End&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mostrando il documento PDF nell'Oggetto ''MediaView''==&lt;br /&gt;
Qui il documento PDF sarà mostrato in una ''MediaView''.&lt;br /&gt;
In particolare, bisogna considerare che un Oggetto ''MediaView'' è composto - fra l'altro - da un Oggetto ''MediaPlayer'' che a sua volta ha, come &amp;quot;Figlio&amp;quot;, un Panel &amp;quot;Figlio&amp;quot; che fa da contenitore ad alcuni Oggetti grafici (suoi &amp;quot;Figli&amp;quot;), tra i quali c'è un altro ''Panel'', che a sua volta contiene, come sua &amp;quot;Figlia&amp;quot;, una ''DrawingArea''.&lt;br /&gt;
&amp;lt;BR&amp;gt;Useremo tale Oggetto ''DrawingArea'' (che, come si è descritto, è uno degli Oggetti grafici che compongono l'Oggetto grafico ''MediaView'' ) per mostrare il documento PDF.&lt;br /&gt;
&amp;lt;BR&amp;gt;E' necessario attivare anche i Componenti ''gb.media'' e ''gb.media.form''.&lt;br /&gt;
 Private doc As PdfDocument&lt;br /&gt;
 Private c As Short&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Public Sub Form_Open()&lt;br /&gt;
 &lt;br /&gt;
  Dim med As Object&lt;br /&gt;
  Dim pn, pn1 As Panel&lt;br /&gt;
 &lt;br /&gt;
  With Me&lt;br /&gt;
    .Width = Screen.AvailableWidth&lt;br /&gt;
    .Height = Screen.AvailableHeight&lt;br /&gt;
  End With&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FONT Color=gray&amp;gt;' ''Carica il file PDF del documento da mostrare:''&amp;lt;/font&amp;gt;&lt;br /&gt;
  doc = New PdfDocument(&amp;quot;&amp;lt;FONT color=darkgreen&amp;gt;''/percorso/del/file.pdf''&amp;lt;/font&amp;gt;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FONT Color=gray&amp;gt;' ''Ottiene il primo &amp;quot;Figlio&amp;quot; dell'Oggetto &amp;quot;MediaView&amp;quot;, che è un &amp;quot;MediaPlayer&amp;quot;:''&amp;lt;/font&amp;gt;&lt;br /&gt;
  med = MediaView1.Children[0]&lt;br /&gt;
 &amp;lt;FONT Color=gray&amp;gt;' ''Ottiene il primo &amp;quot;Figlio&amp;quot; dell'Oggetto &amp;quot;MediaPlayer&amp;quot;, che è un &amp;quot;Panel&amp;quot;:''&amp;lt;/font&amp;gt;&lt;br /&gt;
  pn = med.Children[0]&lt;br /&gt;
 &amp;lt;FONT Color=gray&amp;gt;' ''Ottiene il primo &amp;quot;Figlio&amp;quot; dell'Oggetto &amp;quot;Panel&amp;quot;, che è a sua volta un &amp;quot;Panel&amp;quot;:''&amp;lt;/font&amp;gt;&lt;br /&gt;
  pn1 = pn.Children[0]&lt;br /&gt;
 &amp;lt;FONT Color=gray&amp;gt;' ''Ottiene il primo &amp;quot;Figlio&amp;quot; dell'Oggetto &amp;quot;Panel&amp;quot;, che è una &amp;quot;DrawingArea&amp;quot;:''&amp;lt;/font&amp;gt;&lt;br /&gt;
  DrawingArea1 = pn1.Children[0]&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FONT Color=gray&amp;gt;' ''Assegna la &amp;quot;DrawingArea&amp;quot; ad un Gruppo di Eventi:''&amp;lt;/font&amp;gt;&lt;br /&gt;
  Object.Attach(DrawingArea1, Me, &amp;quot;DrawingArea1&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 End&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Public Sub DrawingArea1_Draw()&lt;br /&gt;
 &lt;br /&gt;
  Dim im As Image&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FONT Color=gray&amp;gt;' ''Modifica la risoluzione e dunque la dimensione della pagina corrente del documento PDF e la converte in una &amp;quot;Image&amp;quot;:''&amp;lt;/font&amp;gt;&lt;br /&gt;
  im = doc[c].Render(0, 0, doc[c].Render().W * doc.Resolution, doc[c].Render().H * doc.Resolution, 0, doc.Resolution)&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FONT Color=gray&amp;gt;' ''Adatta gli Oggetti &amp;quot;DrawingArea&amp;quot; e &amp;quot;MediaView&amp;quot; alla dimensione dell'immagine del documento PDF e carica l'immagine nella &amp;quot;DrawingArea&amp;quot;:''&amp;lt;/font&amp;gt;&lt;br /&gt;
  DrawingArea1.Resize(im.W, im.H)&lt;br /&gt;
  MediaView1.Resize(im.W, im.H)&lt;br /&gt;
 &lt;br /&gt;
  With Paint&lt;br /&gt;
    .DrawImage(im, 0, 0, im.W, im.H, 1.0, Null)&lt;br /&gt;
    .End&lt;br /&gt;
  End With&lt;br /&gt;
 &lt;br /&gt;
  Me.Title = &amp;quot;Pagina: &amp;quot; &amp;amp; CStr(c + 1)&lt;br /&gt;
 &lt;br /&gt;
 End&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Public Sub DrawingArea1_MouseDown()  &lt;br /&gt;
 &lt;br /&gt;
  Inc c&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FONT Color=gray&amp;gt;' ''Se si clicca sull'immagine dell'ultima pagina del PDF, si torna a mostrare la prima pagina:''&amp;lt;/font&amp;gt;&lt;br /&gt;
  If c == doc.Count Then c = 0&lt;br /&gt;
 &lt;br /&gt;
  DrawingArea1.Refresh&lt;br /&gt;
 &lt;br /&gt;
 End&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Note=&lt;br /&gt;
[1] Questo codice è stato proposto dal membro [https://www.gambas-it.org/smf/index.php?action=profile;u=1249 Gianluigi] del forum-it.org&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=41625</id>
		<title>Installazione di Gambas3 dai pacchetti binari</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=41625"/>
		<updated>2025-07-19T10:16:49Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;  &lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': se sul vostro sistema è installato Gambas, prima di installare una nuova versione occorre eliminare ogni traccia della vecchia.&amp;lt;br&amp;gt;&lt;br /&gt;
  L'aggiornamento da una versione precedente non è sicuro e il più delle volte fallisce, pertanto è da sconsigliare.&lt;br /&gt;
== Launchpad ==&lt;br /&gt;
&lt;br /&gt;
Grazie ai cambiamenti avvenuti su Launchpad (''il PPA funzionava solo su Ubuntu e derivate'') ora i pacchetti binari vengono confezionati attraverso '''OBS''' (''openSUSE Build Service'') e sono disponibili per un maggior numero di distribuzioni.&amp;lt;br&amp;gt;&lt;br /&gt;
Vedi annuncio da parte di Minisini del 16 Dicembre 2024 qui:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambaswiki.org/website/en/main.html&lt;br /&gt;
&lt;br /&gt;
== Premessa ==&lt;br /&gt;
&lt;br /&gt;
Come possiamo leggere sulla [https://gambaswiki.org/wiki/doc/packages wiki di Gambas] per poter usare OBS occorre che sul nostro sistema sia presente il comando '''Curl''' e per quanto riguarda ''ArchLinux'' occorre posizionare il ''repository di Gambas'' al primo posto nel ''file /etc/pacman.conf'' così:&lt;br /&gt;
&lt;br /&gt;
  sudo nano /etc/pacman.conf&lt;br /&gt;
&lt;br /&gt;
Quindi occorre posizionare il repo di Gambas per primo aggiungendo:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per la versione stabile:&amp;lt;br&amp;gt;&lt;br /&gt;
  [home_gambas_stable_ArchLinux]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/stable/ArchLinux/$arch&lt;br /&gt;
&lt;br /&gt;
Per la versione Master:&amp;lt;br&amp;gt;&lt;br /&gt;
  [home_gambas_master_ArchLinux]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/master/ArchLinux/$arch&lt;br /&gt;
&lt;br /&gt;
== OBS vs PPA ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Come per il PPA, '''OBS''' è disponibile per le versioni Stabile e Master.&lt;br /&gt;
&lt;br /&gt;
== Aggiungere il Repository alla distribuzione ==&lt;br /&gt;
&lt;br /&gt;
Anche se la [https://gambaswiki.org/wiki/doc/packages wiki] appare chiara, faremo un esempio pratico di come installare il repository per la distribuzione '''Debian 12'''.&amp;lt;br&amp;gt;&lt;br /&gt;
La procedura è simile, naturalmente variando i comandi come precisato nella wiki, anche per la versione Master e le altre distribuzioni.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': le distribuzioni derivate tipo Mint dovranno riferirsi alla versione di Ubuntu da cui dipendono (es. Mint 22 = Ubuntu 24.04)&lt;br /&gt;
&lt;br /&gt;
Apriamo il terminale e installiamo Curl con il comando:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
Ora occorre elevarci a utente Root con questo comando:&lt;br /&gt;
&lt;br /&gt;
  su -l&lt;br /&gt;
&lt;br /&gt;
Adesso diamo questi comandi uno per volta:&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/stable/Debian_12/ /' | tee /etc/apt/sources.list.d/home:gambas:stable.list&lt;br /&gt;
  &lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:stable/Debian_12/Release.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/home_gambas_stable.gpg &amp;gt; /dev/null&lt;br /&gt;
  &lt;br /&gt;
  apt-get update&lt;br /&gt;
  &lt;br /&gt;
  apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
  '''Nota''' :Il vantaggio di poter aggiungere i soli repository è evidente, se abbiamo un gruppo che dipende dai nostri programmi possiamo inviare il pacchetto.deb che pescherà dal repo le sole librerie utili a esso, più avanti vedremo una piccola dimostrazione di come fare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare Gambas3 vero e proprio ==&lt;br /&gt;
&lt;br /&gt;
Continuando sempre come utente Root:&lt;br /&gt;
&lt;br /&gt;
  apt-get install gambas3&lt;br /&gt;
&lt;br /&gt;
Fatto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare un pacchetto deb di Gambas3 ==&lt;br /&gt;
&lt;br /&gt;
Su una distribuzione Debian priva di Gambas3, come detto, basterà aggiungere il repository da OBS per poter installare un pacchetto creato con l’ultima versione.&lt;br /&gt;
&lt;br /&gt;
Per la prova, sulla VM in cui ho installato Gambas, ho scaricato dalla Farm il progetto ''CuckooClock'' e ho creato un &amp;lt;u&amp;gt;pacchetto per Debian&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In una nuova VM con il solo sistema operativo aggiornato ho importato la cartella ''debian'' contenente tutti i pacchetti creati da Gambas.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo punto ho aperto il terminale e dato i seguenti comandi (''già visti in precedenza''):&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
  su -l&lt;br /&gt;
  &lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/stable/Debian_12/ /' | tee /etc/apt/sources.list.d/home:gambas:stable.list&lt;br /&gt;
  &lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:stable/Debian_12/Release.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/home_gambas_stable.gpg &amp;gt; /dev/null&lt;br /&gt;
  &lt;br /&gt;
  apt-get update&lt;br /&gt;
  &lt;br /&gt;
  apt-get upgrade&lt;br /&gt;
Ritorniamo utenti normali con:&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': se il comando ''curl'' non dovesse funzionare, occorre aggiungere una k al comando curl (curl -fsSLk ...).&amp;lt;br&amp;gt;&lt;br /&gt;
  Volendo, al posto del repository della stabile possiamo installare il repository della versione Master.&lt;br /&gt;
&lt;br /&gt;
Ci spostiamo col terminale nella cartella dove abbiamo salvato i pacchetti deb e diamo questi comandi:&lt;br /&gt;
  &lt;br /&gt;
  sudo apt install ./cuckooclock_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Carichiamo anche i pacchetti per il funzionamento con le librerie QT5:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock-qt5_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Fatto, se siamo su Gnome possiamo aprire il progetto da ''Attività'' &amp;gt; ''Mostra applicazioni'' e volendo, bloccarlo sulla Dash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Note ==&lt;br /&gt;
[2] Vedi anche: [[Compilare Gambas]]&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40925</id>
		<title>Installazione di Gambas3 dai pacchetti binari</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40925"/>
		<updated>2025-02-25T15:13:37Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;  &lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': se sul vostro sistema è installato Gambas, prima di installare una nuova versione occorre eliminare ogni traccia della vecchia.&amp;lt;br&amp;gt;&lt;br /&gt;
  L'aggiornamento da una versione precedente non è sicuro e il più delle volte fallisce, pertanto è da sconsigliare.&lt;br /&gt;
== Launchpad ==&lt;br /&gt;
&lt;br /&gt;
Grazie ai cambiamenti avvenuti su Launchpad (''il PPA funzionava solo su Ubuntu e derivate'') ora i pacchetti binari vengono confezionati attraverso '''OBS''' (''openSUSE Build Service'') e sono disponibili per un maggior numero di distribuzioni.&amp;lt;br&amp;gt;&lt;br /&gt;
Vedi annuncio da parte di Minisini del 16 Dicembre 2024 qui:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambas.sourceforge.net/en/main.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Premessa ==&lt;br /&gt;
&lt;br /&gt;
Come possiamo leggere sulla [https://gambaswiki.org/wiki/doc/packages wiki di Gambas] per poter usare OBS occorre che sul nostro sistema sia presente il comando '''Curl''' e per quanto riguarda ''ArchLinux'' occorre posizionare il ''repository di Gambas'' al primo posto nel ''file /etc/pacman.conf'' così:&lt;br /&gt;
&lt;br /&gt;
  sudo nano /etc/pacman.conf&lt;br /&gt;
&lt;br /&gt;
Quindi occorre posizionare il repo di Gambas per primo aggiungendo:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per la versione stabile:&amp;lt;br&amp;gt;&lt;br /&gt;
  [home_gambas_stable_ArchLinux]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/stable/ArchLinux/$arch&lt;br /&gt;
&lt;br /&gt;
Per la versione Master:&amp;lt;br&amp;gt;&lt;br /&gt;
  [home_gambas_master_ArchLinux]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/master/ArchLinux/$arch&lt;br /&gt;
&lt;br /&gt;
== OBS vs PPA ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Come per il PPA, '''OBS''' è disponibile per le versioni Stabile e Master.&lt;br /&gt;
&lt;br /&gt;
== Aggiungere il Repository alla distribuzione ==&lt;br /&gt;
&lt;br /&gt;
Anche se la [https://gambaswiki.org/wiki/doc/packages wiki] appare chiara, faremo un esempio pratico di come installare il repository per la distribuzione '''Debian 12'''.&amp;lt;br&amp;gt;&lt;br /&gt;
La procedura è simile, naturalmente variando i comandi come precisato nella wiki, anche per la versione Master e le altre distribuzioni.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': le distribuzioni derivate tipo Mint dovranno riferirsi alla versione di Ubuntu da cui dipendono (es. Mint 22 = Ubuntu 24.04)&lt;br /&gt;
&lt;br /&gt;
Apriamo il terminale e installiamo Curl con il comando:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
Ora occorre elevarci a utente Root con questo comando:&lt;br /&gt;
&lt;br /&gt;
  su -l&lt;br /&gt;
&lt;br /&gt;
Adesso diamo questi comandi uno per volta:&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/stable/Debian_12/ /' | tee /etc/apt/sources.list.d/home:gambas:stable.list&lt;br /&gt;
  &lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:stable/Debian_12/Release.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/home_gambas_stable.gpg &amp;gt; /dev/null&lt;br /&gt;
  &lt;br /&gt;
  apt-get update&lt;br /&gt;
  &lt;br /&gt;
  apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
  '''Nota''' :Il vantaggio di poter aggiungere i soli repository è evidente, se abbiamo un gruppo che dipende dai nostri programmi possiamo inviare il pacchetto.deb che pescherà dal repo le sole librerie utili a esso, più avanti vedremo una piccola dimostrazione di come fare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare Gambas3 vero e proprio ==&lt;br /&gt;
&lt;br /&gt;
Continuando sempre come utente Root:&lt;br /&gt;
&lt;br /&gt;
  apt-get install gambas3&lt;br /&gt;
&lt;br /&gt;
Fatto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare un pacchetto deb di Gambas3 ==&lt;br /&gt;
&lt;br /&gt;
Su una distribuzione Debian priva di Gambas3, come detto, basterà aggiungere il repository da OBS per poter installare un pacchetto creato con l’ultima versione.&lt;br /&gt;
&lt;br /&gt;
Per la prova, sulla VM in cui ho installato Gambas, ho scaricato dalla Farm il progetto ''CuckooClock'' e ho creato un &amp;lt;u&amp;gt;pacchetto per Debian&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In una nuova VM con il solo sistema operativo aggiornato ho importato la cartella ''debian'' contenente tutti i pacchetti creati da Gambas.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo punto ho aperto il terminale e dato i seguenti comandi (''già visti in precedenza''):&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
  su -l&lt;br /&gt;
  &lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/stable/Debian_12/ /' | tee /etc/apt/sources.list.d/home:gambas:stable.list&lt;br /&gt;
  &lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:stable/Debian_12/Release.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/home_gambas_stable.gpg &amp;gt; /dev/null&lt;br /&gt;
  &lt;br /&gt;
  apt-get update&lt;br /&gt;
  &lt;br /&gt;
  apt-get upgrade&lt;br /&gt;
Ritorniamo utenti normali con:&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': se il comando ''curl'' non dovesse funzionare, occorre aggiungere una k al comando curl (curl -fsSLk ...).&amp;lt;br&amp;gt;&lt;br /&gt;
  Volendo, al posto del repository della stabile possiamo installare il repository della versione Master.&lt;br /&gt;
&lt;br /&gt;
Ci spostiamo col terminale nella cartella dove abbiamo salvato i pacchetti deb e diamo questi comandi:&lt;br /&gt;
  &lt;br /&gt;
  sudo apt install ./cuckooclock_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Carichiamo anche i pacchetti per il funzionamento con le librerie QT5:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock-qt5_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Fatto, se siamo su Gnome possiamo aprire il progetto da ''Attività'' &amp;gt; ''Mostra applicazioni'' e volendo, bloccarlo sulla Dash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Note ==&lt;br /&gt;
[2] Vedi anche: [[Compilare Gambas]]&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40924</id>
		<title>Installazione di Gambas3 dai pacchetti binari</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40924"/>
		<updated>2025-02-25T08:57:03Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;  &lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': se sul vostro sistema è installato Gambas, prima di installare una nuova versione occorre eliminare ogni traccia della vecchia.&amp;lt;br&amp;gt;&lt;br /&gt;
  L'aggiornamento da una versione precedente non è sicuro e il più delle volte fallisce, pertanto è da sconsigliare.&lt;br /&gt;
== Launchpad ==&lt;br /&gt;
&lt;br /&gt;
Grazie ai cambiamenti avvenuti su Launchpad (''il PPA funzionava solo su Ubuntu e derivate'') ora i pacchetti binari vengono confezionati attraverso '''OBS''' (''openSUSE Build Service'') e sono disponibili per un maggior numero di distribuzioni.&amp;lt;br&amp;gt;&lt;br /&gt;
Vedi annuncio da parte di Minisini del 16 Dicembre 2024 qui:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambas.sourceforge.net/en/main.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Premessa ==&lt;br /&gt;
&lt;br /&gt;
Come possiamo leggere sulla [https://gambaswiki.org/wiki/doc/packages wiki di Gambas] per poter usare OBS occorre che sul nostro sistema sia presente il comando '''Curl''' e per quanto riguarda ''ArchLinux'' occorre posizionare il ''repository di Gambas'' al primo posto nel ''file /etc/pacman.conf'' così:&lt;br /&gt;
&lt;br /&gt;
  sudo nano /etc/pacman.conf&lt;br /&gt;
&lt;br /&gt;
Quindi occorre posizionare il repo di Gambas per primo aggiungendo:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per la versione stabile:&amp;lt;br&amp;gt;&lt;br /&gt;
  [home_gambas_stable_ArchLinux]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/stable/ArchLinux/$arch&lt;br /&gt;
&lt;br /&gt;
Per la versione Master:&amp;lt;br&amp;gt;&lt;br /&gt;
  [home_gambas_master_ArchLinux]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/master/ArchLinux/$arch&lt;br /&gt;
&lt;br /&gt;
== OBS vs PPA ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Come per il PPA, '''OBS''' è disponibile per le versioni Stabile e Master.&lt;br /&gt;
&lt;br /&gt;
== Aggiungere il Repository alla distribuzione ==&lt;br /&gt;
&lt;br /&gt;
Anche se la [https://gambaswiki.org/wiki/doc/packages wiki] appare chiara, faremo un esempio pratico di come installare il repository per la distribuzione '''Debian 12'''.&amp;lt;br&amp;gt;&lt;br /&gt;
La procedura è simile anche per le altre distribuzioni.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': le distribuzioni derivate tipo Mint dovranno riferirsi alla versione di Ubuntu da cui dipendono (es. Mint 22 = Ubuntu 24.04)&lt;br /&gt;
&lt;br /&gt;
Apriamo il terminale e installiamo Curl con il comando:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
Ora occorre elevarci a utente Root con questo comando:&lt;br /&gt;
&lt;br /&gt;
  su -l&lt;br /&gt;
&lt;br /&gt;
Adesso diamo questi comandi uno per volta:&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/stable/Debian_12/ /' | tee /etc/apt/sources.list.d/home:gambas:stable.list&lt;br /&gt;
  &lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:stable/Debian_12/Release.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/home_gambas_stable.gpg &amp;gt; /dev/null&lt;br /&gt;
  &lt;br /&gt;
  apt-get update&lt;br /&gt;
  &lt;br /&gt;
  apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
  '''Nota''' :Il vantaggio di poter aggiungere i soli repository è evidente, se abbiamo un gruppo che dipende dai nostri programmi possiamo inviare il pacchetto.deb che pescherà dal repo le sole librerie utili a esso, più avanti vedremo una piccola dimostrazione di come fare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare Gambas3 vero e proprio ==&lt;br /&gt;
&lt;br /&gt;
Continuando sempre come utente Root:&lt;br /&gt;
&lt;br /&gt;
  apt-get install gambas3&lt;br /&gt;
&lt;br /&gt;
Fatto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare un pacchetto deb di Gambas3 ==&lt;br /&gt;
&lt;br /&gt;
Su una distribuzione Debian priva di Gambas3, come detto, basterà aggiungere il repository da OBS per poter installare un pacchetto creato con l’ultima versione.&lt;br /&gt;
&lt;br /&gt;
Per la prova, sulla VM in cui ho installato Gambas, ho scaricato dalla Farm il progetto ''CuckooClock'' e ho creato un &amp;lt;u&amp;gt;pacchetto per Debian&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In una nuova VM con il solo sistema operativo aggiornato ho importato la cartella ''debian'' contenente tutti i pacchetti creati da Gambas.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo punto ho aperto il terminale e dato i seguenti comandi (''già visti in precedenza''):&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
  su -l&lt;br /&gt;
  &lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/stable/Debian_12/ /' | tee /etc/apt/sources.list.d/home:gambas:stable.list&lt;br /&gt;
  &lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:stable/Debian_12/Release.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/home_gambas_stable.gpg &amp;gt; /dev/null&lt;br /&gt;
  &lt;br /&gt;
  apt-get update&lt;br /&gt;
  &lt;br /&gt;
  apt-get upgrade&lt;br /&gt;
Ritorniamo utenti normali con:&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': se il comando ''curl'' non dovesse funzionare, occorre aggiungere una k al comando curl (curl -fsSLk ...).&amp;lt;br&amp;gt;&lt;br /&gt;
  Volendo, al posto del repository della stabile possiamo installare il repository della versione Master.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
  sudo apt install ./cuckooclock_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Carichiamo anche i pacchetti per il funzionamento con le librerie QT5:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock-qt5_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Fatto, se siamo su Gnome possiamo aprire il progetto da ''Attività'' &amp;gt; ''Mostra applicazioni'' e volendo, bloccarlo sulla Dash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Note ==&lt;br /&gt;
[2] Vedi anche: [[Compilare Gambas]]&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40923</id>
		<title>Installazione di Gambas3 dai pacchetti binari</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40923"/>
		<updated>2025-02-24T22:56:03Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;  &lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': se sul vostro sistema è installato Gambas, prima di installare una nuova versione occorre eliminare ogni traccia della vecchia.&amp;lt;br&amp;gt;&lt;br /&gt;
  L'aggiornamento da una versione precedente non è sicuro e il più delle volte fallisce, pertanto è da sconsigliare.&lt;br /&gt;
== Launchpad ==&lt;br /&gt;
&lt;br /&gt;
Grazie ai cambiamenti avvenuti su Launchpad (''il PPA funzionava solo su Ubuntu e derivate'') ora i pacchetti binari vengono confezionati attraverso '''OBS''' (''openSUSE Build Service'') e sono disponibili per un maggior numero di distribuzioni.&amp;lt;br&amp;gt;&lt;br /&gt;
Vedi annuncio da parte di Minisini del 16 Dicembre 2024 qui:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambas.sourceforge.net/en/main.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Premessa ==&lt;br /&gt;
&lt;br /&gt;
Come possiamo leggere sulla [https://gambaswiki.org/wiki/doc/packages wiki di Gambas] per poter usare OBS occorre che sul nostro sistema sia presente il comando '''Curl''' e per quanto riguarda ''ArchLinux'' occorre posizionare il ''repository di Gambas'' al primo posto nel ''file /etc/pacman.conf'' così:&lt;br /&gt;
&lt;br /&gt;
  sudo nano /etc/pacman.conf&lt;br /&gt;
&lt;br /&gt;
Quindi occorre posizionare il repo di Gambas per primo aggiungendo:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per la versione stabile:&amp;lt;br&amp;gt;&lt;br /&gt;
  [home_gambas_stable_ArchLinux]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/stable/ArchLinux/$arch&lt;br /&gt;
&lt;br /&gt;
Per la versione Master:&amp;lt;br&amp;gt;&lt;br /&gt;
  [home_gambas_master_ArchLinux]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/master/ArchLinux/$arch&lt;br /&gt;
&lt;br /&gt;
== OBS vs PPA ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Come per il PPA, '''OBS''' è disponibile per le versioni Stabile e Master.&lt;br /&gt;
&lt;br /&gt;
== Aggiungere il Repository alla distribuzione ==&lt;br /&gt;
&lt;br /&gt;
Anche se la wiki appare chiara, faremo un esempio pratico di come installare il repository per la distribuzione '''Debian 12'''.&amp;lt;br&amp;gt;&lt;br /&gt;
La procedura è simile anche per le altre distribuzioni.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': le distribuzioni derivate tipo Mint dovranno riferirsi alla versione di Ubuntu da cui dipendono (es. Mint 22 = Ubuntu 24.04)&lt;br /&gt;
&lt;br /&gt;
Apriamo il terminale e installiamo Curl con il comando:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
Ora occorre elevarci a utente Root con questo comando:&lt;br /&gt;
&lt;br /&gt;
  su -l&lt;br /&gt;
&lt;br /&gt;
Adesso diamo questi comandi uno per volta:&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/stable/Debian_12/ /' | tee /etc/apt/sources.list.d/home:gambas:stable.list&lt;br /&gt;
  &lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:stable/Debian_12/Release.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/home_gambas_stable.gpg &amp;gt; /dev/null&lt;br /&gt;
  &lt;br /&gt;
  apt-get update&lt;br /&gt;
  &lt;br /&gt;
  apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
  '''Nota''' :Il vantaggio di poter aggiungere i soli repository è evidente, se abbiamo un gruppo che dipende dai nostri programmi possiamo inviare il pacchetto.deb che pescherà dal repo le sole librerie utili a esso, più avanti vedremo una piccola dimostrazione di come fare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare Gambas3 vero e proprio ==&lt;br /&gt;
&lt;br /&gt;
Continuando sempre come utente Root:&lt;br /&gt;
&lt;br /&gt;
  apt-get install gambas3&lt;br /&gt;
&lt;br /&gt;
Fatto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare un pacchetto deb di Gambas3 ==&lt;br /&gt;
&lt;br /&gt;
Su una distribuzione Debian priva di Gambas3, come detto, basterà aggiungere il repository da OBS per poter installare un pacchetto creato con l’ultima versione.&lt;br /&gt;
&lt;br /&gt;
Per la prova, sulla VM in cui ho installato Gambas, ho scaricato dalla Farm il progetto ''CuckooClock'' e ho creato un &amp;lt;u&amp;gt;pacchetto per Debian&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In una nuova VM con il solo sistema operativo aggiornato ho importato la cartella ''debian'' contenente tutti i pacchetti creati da Gambas.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo punto ho aperto il terminale e dato i seguenti comandi (''già visti in precedenza''):&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
  su -l&lt;br /&gt;
  &lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/stable/Debian_12/ /' | tee /etc/apt/sources.list.d/home:gambas:stable.list&lt;br /&gt;
  &lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:stable/Debian_12/Release.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/home_gambas_stable.gpg &amp;gt; /dev/null&lt;br /&gt;
  &lt;br /&gt;
  apt-get update&lt;br /&gt;
  &lt;br /&gt;
  apt-get upgrade&lt;br /&gt;
Ritorniamo utenti normali con:&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': se il comando ''curl'' non dovesse funzionare, occorre aggiungere una k al comando curl (curl -fsSLk ...).&amp;lt;br&amp;gt;&lt;br /&gt;
  Volendo, al posto del repository della stabile possiamo installare il repository della versione Master.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
  sudo apt install ./cuckooclock_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Carichiamo anche i pacchetti per il funzionamento con le librerie QT5:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock-qt5_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Fatto, se siamo su Gnome possiamo aprire il progetto da ''Attività'' &amp;gt; ''Mostra applicazioni'' e volendo, bloccarlo sulla Dash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Note ==&lt;br /&gt;
[2] Vedi anche: [[Compilare Gambas]]&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40922</id>
		<title>Installazione di Gambas3 dai pacchetti binari</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40922"/>
		<updated>2025-02-24T22:54:09Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;  &lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': se sul vostro sistema è installato Gambas, prima di installare una nuova versione occorre eliminare ogni traccia della vecchia.&amp;lt;br&amp;gt;&lt;br /&gt;
  L'aggiornamento da una versione precedente non è sicuro e il più delle volte fallisce, pertanto è da sconsigliare.&lt;br /&gt;
== Launchpad ==&lt;br /&gt;
&lt;br /&gt;
Grazie ai cambiamenti avvenuti su Launchpad (''il PPA funzionava solo su Ubuntu e derivate'') ora i pacchetti binari vengono confezionati attraverso '''OBS''' (''openSUSE Build Service'') e sono disponibili per un maggior numero di distribuzioni.&amp;lt;br&amp;gt;&lt;br /&gt;
Vedi annuncio da parte di Minisini del 16 Dicembre 2024 qui:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambas.sourceforge.net/en/main.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Premessa ==&lt;br /&gt;
&lt;br /&gt;
Come possiamo leggere sulla [https://gambaswiki.org/wiki/doc/packages wiki di Gambas] per poter usare OBS occorre che sul nostro sistema sia presente il comando '''Curl''' e per quanto riguarda ''ArchLinux'' occorre posizionare il ''repository di Gambas'' al primo posto nel ''file /etc/pacman.conf'' così:&lt;br /&gt;
&lt;br /&gt;
  sudo nano /etc/pacman.conf&lt;br /&gt;
&lt;br /&gt;
Quindi occorre posizionare il repo di Gambas per primo aggiungendo:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per la versione stabile:&amp;lt;br&amp;gt;&lt;br /&gt;
  [home_gambas_stable_ArchLinux]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/stable/ArchLinux/$arch&lt;br /&gt;
&lt;br /&gt;
Per la versione Master:&amp;lt;br&amp;gt;&lt;br /&gt;
  [home_gambas_master_ArchLinux]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/master/ArchLinux/$arch&lt;br /&gt;
&lt;br /&gt;
== OBS vs PPA ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Come per il PPA, '''OBS''' è disponibile per le versioni Stabile e Master.&lt;br /&gt;
&lt;br /&gt;
== Aggiungere il Repository alla distribuzione ==&lt;br /&gt;
&lt;br /&gt;
Anche se la wiki appare chiara, faremo un esempio pratico di come installare il repository per la distribuzione '''Debian 12'''.&amp;lt;br&amp;gt;&lt;br /&gt;
La procedura è simile anche per le altre distribuzioni.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': le distribuzioni derivate tipo Mint dovranno riferirsi alla versione di Ubuntu da cui dipendono (es. Mint 22 = Ubuntu 24.04)&lt;br /&gt;
&lt;br /&gt;
Apriamo il terminale e installiamo Curl con il comando:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
Ora occorre elevarci a utente Root con questo comando:&lt;br /&gt;
&lt;br /&gt;
  su -l&lt;br /&gt;
&lt;br /&gt;
Adesso diamo questi comandi uno per volta:&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/stable/Debian_12/ /' | tee /etc/apt/sources.list.d/home:gambas:stable.list&lt;br /&gt;
  &lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:stable/Debian_12/Release.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/home_gambas_stable.gpg &amp;gt; /dev/null&lt;br /&gt;
  &lt;br /&gt;
  apt-get update&lt;br /&gt;
  &lt;br /&gt;
  apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
  '''Nota''' :Il vantaggio di poter aggiungere i soli repository è evidente, se abbiamo un gruppo che dipende dai nostri programmi possiamo inviare il pacchetto.deb che pescherà dal repo le sole librerie utili a esso, più avanti vedremo una piccola dimostrazione di come fare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare Gambas3 vero e proprio ==&lt;br /&gt;
&lt;br /&gt;
Continuando sempre come utente Root:&lt;br /&gt;
&lt;br /&gt;
  apt install gambas3-ide&lt;br /&gt;
Fatto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare un pacchetto deb di Gambas3 ==&lt;br /&gt;
&lt;br /&gt;
Su una distribuzione Debian priva di Gambas3, come detto, basterà aggiungere il repository da OBS per poter installare un pacchetto creato con l’ultima versione.&lt;br /&gt;
&lt;br /&gt;
Per la prova, sulla VM in cui ho installato Gambas, ho scaricato dalla Farm il progetto ''CuckooClock'' e ho creato un &amp;lt;u&amp;gt;pacchetto per Debian&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In una nuova VM con il solo sistema operativo aggiornato ho importato la cartella ''debian'' contenente tutti i pacchetti creati da Gambas.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo punto ho aperto il terminale e dato i seguenti comandi (''già visti in precedenza''):&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
  su -l&lt;br /&gt;
  &lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/stable/Debian_12/ /' | tee /etc/apt/sources.list.d/home:gambas:stable.list&lt;br /&gt;
  &lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:stable/Debian_12/Release.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/home_gambas_stable.gpg &amp;gt; /dev/null&lt;br /&gt;
  &lt;br /&gt;
  apt-get update&lt;br /&gt;
  &lt;br /&gt;
  apt-get upgrade&lt;br /&gt;
Ritorniamo utenti normali con:&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': se il comando ''curl'' non dovesse funzionare, occorre aggiungere una k al comando curl (curl -fsSLk ...).&amp;lt;br&amp;gt;&lt;br /&gt;
  Volendo, al posto del repository della stabile possiamo installare il repository della versione Master.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
  sudo apt install ./cuckooclock_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Carichiamo anche i pacchetti per il funzionamento con le librerie QT5:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock-qt5_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Fatto, se siamo su Gnome possiamo aprire il progetto da ''Attività'' &amp;gt; ''Mostra applicazioni'' e volendo, bloccarlo sulla Dash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Note ==&lt;br /&gt;
[2] Vedi anche: [[Compilare Gambas]]&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40921</id>
		<title>Installazione di Gambas3 dai pacchetti binari</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40921"/>
		<updated>2025-02-24T16:29:59Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;  &lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': se sul vostro sistema è installato Gambas, prima di installare una nuova versione occorre eliminare ogni traccia della vecchia.&amp;lt;br&amp;gt;&lt;br /&gt;
  L'aggiornamento da una versione precedente non è sicuro e il più delle volte fallisce, pertanto è da sconsigliare.&lt;br /&gt;
== Launchpad ==&lt;br /&gt;
&lt;br /&gt;
Grazie ai cambiamenti avvenuti su Launchpad (''il PPA funzionava solo su Ubuntu e derivate'') ora i pacchetti binari vengono confezionati attraverso '''OBS''' (''openSUSE Build Service'') e sono disponibili per un maggior numero di distribuzioni.&amp;lt;br&amp;gt;&lt;br /&gt;
Vedi annuncio da parte di Minisini del 16 Dicembre 2024 qui:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambas.sourceforge.net/en/main.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Premessa ==&lt;br /&gt;
&lt;br /&gt;
Come possiamo leggere sulla [https://gambaswiki.org/wiki/doc/packages wiki di Gambas] per poter usare OBS occorre che sul nostro sistema sia presente il comando '''Curl''' e per quanto riguarda ''ArchLinux'' occorre posizionare il ''repository di Gambas'' al primo posto nel ''file /etc/pacman.conf'' così:&lt;br /&gt;
&lt;br /&gt;
  sudo nano /etc/pacman.conf&lt;br /&gt;
&lt;br /&gt;
Quindi occorre posizionare il repo di Gambas per primo aggiungendo:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per la versione stabile:&amp;lt;br&amp;gt;&lt;br /&gt;
  [home_gambas_stable_ArchLinux]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/stable/ArchLinux/$arch&lt;br /&gt;
&lt;br /&gt;
Per la versione Master:&amp;lt;br&amp;gt;&lt;br /&gt;
  [home_gambas_master_ArchLinux]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/master/ArchLinux/$arch&lt;br /&gt;
&lt;br /&gt;
== OBS vs PPA ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Come per il PPA, '''OBS''' è disponibile per le versioni Stabile e Master.&lt;br /&gt;
&lt;br /&gt;
== Aggiungere il Repository alla distribuzione ==&lt;br /&gt;
&lt;br /&gt;
Anche se la wiki appare chiara, faremo un esempio pratico di come installare il repository per la distribuzione '''Debian 12'''.&amp;lt;br&amp;gt;&lt;br /&gt;
La procedura è simile anche per le altre distribuzioni.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': le distribuzioni derivate tipo Mint dovranno riferirsi alla versione di Ubuntu da cui dipendono (es. Mint 22 = Ubuntu 24.04)&lt;br /&gt;
&lt;br /&gt;
Apriamo il terminale e installiamo Curl con il comando:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
Ora occorre elevarci a utente Root con questo comando:&lt;br /&gt;
&lt;br /&gt;
  su -l&lt;br /&gt;
&lt;br /&gt;
Adesso diamo questi comandi uno per volta:&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/stable/Debian_12/ /' | tee /etc/apt/sources.list.d/home:gambas:stable.list&lt;br /&gt;
  &lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:stable/Debian_12/Release.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/home_gambas_stable.gpg &amp;gt; /dev/null&lt;br /&gt;
  &lt;br /&gt;
  apt-get update&lt;br /&gt;
  &lt;br /&gt;
  apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
  '''Nota''' :Il vantaggio di poter aggiungere i soli repository è evidente, se abbiamo un gruppo che dipende dai nostri programmi possiamo inviare il pacchetto.deb che pescherà dal repo le sole librerie utili a esso, più avanti vedremo una piccola dimostrazione di come fare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare Gambas3 vero e proprio ==&lt;br /&gt;
&lt;br /&gt;
Continuando sempre come utente Root:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install gambas3-ide&lt;br /&gt;
Fatto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare un pacchetto deb di Gambas3 ==&lt;br /&gt;
&lt;br /&gt;
Su una distribuzione Debian priva di Gambas3, come detto, basterà aggiungere il repository da OBS per poter installare un pacchetto creato con l’ultima versione.&lt;br /&gt;
&lt;br /&gt;
Per la prova, sulla VM in cui ho installato Gambas, ho scaricato dalla Farm il progetto ''CuckooClock'' e ho creato un &amp;lt;u&amp;gt;pacchetto per Debian&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In una nuova VM con il solo sistema operativo aggiornato ho importato la cartella ''debian'' contenente tutti i pacchetti creati da Gambas.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo punto ho aperto il terminale e dato i seguenti comandi (''già visti in precedenza''):&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
  su -l&lt;br /&gt;
  &lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/stable/Debian_12/ /' | tee /etc/apt/sources.list.d/home:gambas:stable.list&lt;br /&gt;
  &lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:stable/Debian_12/Release.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/home_gambas_stable.gpg &amp;gt; /dev/null&lt;br /&gt;
  &lt;br /&gt;
  apt-get update&lt;br /&gt;
  &lt;br /&gt;
  apt-get upgrade&lt;br /&gt;
Ritorniamo utenti normali con:&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': se il comando ''curl'' non dovesse funzionare, occorre aggiungere una k al comando curl (curl -fsSLk ...).&amp;lt;br&amp;gt;&lt;br /&gt;
  Volendo, al posto del repository della stabile possiamo installare il repository della versione Master.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
  sudo apt install ./cuckooclock_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Carichiamo anche i pacchetti per il funzionamento con le librerie QT5:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock-qt5_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Fatto, se siamo su Gnome possiamo aprire il progetto da ''Attività'' &amp;gt; ''Mostra applicazioni'' e volendo, bloccarlo sulla Dash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Note ==&lt;br /&gt;
[2] Vedi anche: [[Compilare Gambas]]&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40920</id>
		<title>Installazione di Gambas3 dai pacchetti binari</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40920"/>
		<updated>2025-02-24T16:23:43Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;  &lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': se sul vostro sistema è installato Gambas, prima di installare una nuova versione occorre eliminare ogni traccia della vecchia.&amp;lt;br&amp;gt;&lt;br /&gt;
  L'aggiornamento da una versione precedente non è sicuro e il più delle volte fallisce, pertanto è da sconsigliare.&lt;br /&gt;
== Launchpad ==&lt;br /&gt;
&lt;br /&gt;
Grazie ai cambiamenti avvenuti su Launchpad (''il PPA funzionava solo su Ubuntu e derivate'') ora i pacchetti binari vengono confezionati attraverso '''OBS''' (''openSUSE Build Service'') e sono disponibili per un maggior numero di distribuzioni.&amp;lt;br&amp;gt;&lt;br /&gt;
Vedi annuncio da parte di Minisini del 16 Dicembre 2024 qui:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambas.sourceforge.net/en/main.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Premessa ==&lt;br /&gt;
&lt;br /&gt;
Come possiamo leggere sulla [https://gambaswiki.org/wiki/doc/packages wiki di Gambas] per poter usare OBS occorre che sul nostro sistema sia presente il comando '''Curl''' e per quanto riguarda ''ArchLinux'' occorre posizionare il ''repository di Gambas'' al primo posto nel ''file /etc/pacman.conf'' così:&lt;br /&gt;
&lt;br /&gt;
  sudo nano /etc/pacman.conf&lt;br /&gt;
&lt;br /&gt;
Quindi occorre posizionare il repo di Gambas per primo aggiungendo:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per la versione stabile:&amp;lt;br&amp;gt;&lt;br /&gt;
  [home_gambas_stable_ArchLinux]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/stable/ArchLinux/$arch&lt;br /&gt;
&lt;br /&gt;
Per la versione Master:&amp;lt;br&amp;gt;&lt;br /&gt;
  [home_gambas_master_ArchLinux]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/master/ArchLinux/$arch&lt;br /&gt;
&lt;br /&gt;
== OBS vs PPA ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Come per il PPA, '''OBS''' è disponibile per le versioni Stabile e Master.&lt;br /&gt;
&lt;br /&gt;
== Aggiungere il Repository alla distribuzione ==&lt;br /&gt;
&lt;br /&gt;
Anche se la wiki appare chiara, faremo un esempio pratico di come installare il repository per la distribuzione '''Debian 12'''.&amp;lt;br&amp;gt;&lt;br /&gt;
La procedura è simile anche per le altre distribuzioni.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': le distribuzioni derivate tipo Mint dovranno riferirsi alla versione di Ubuntu da cui dipendono (es. Mint 22 = Ubuntu 24.04)&lt;br /&gt;
&lt;br /&gt;
Apriamo il terminale e installiamo Curl con il comando:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
Ora occorre elevarci a utente Root con questo comando:&lt;br /&gt;
&lt;br /&gt;
  su -l&lt;br /&gt;
&lt;br /&gt;
Adesso diamo questi comandi uno per volta:&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/stable/Debian_12/ /' | tee /etc/apt/sources.list.d/home:gambas:stable.list&lt;br /&gt;
  &lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:stable/Debian_12/Release.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/home_gambas_stable.gpg &amp;gt; /dev/null&lt;br /&gt;
  &lt;br /&gt;
  apt-get update&lt;br /&gt;
  &lt;br /&gt;
  apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
  '''Nota''' :Il vantaggio di poter aggiungere i soli repository è evidente, se abbiamo un gruppo che dipende dai nostri programmi possiamo inviare il pacchetto.deb che pescherà dal repo le sole librerie utili a esso, più avanti vedremo una piccola dimostrazione di come fare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare Gambas3 vero e proprio ==&lt;br /&gt;
&lt;br /&gt;
Continuando sempre come utente Root:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install gambas3-ide&lt;br /&gt;
Fatto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare un pacchetto deb di Gambas3 ==&lt;br /&gt;
&lt;br /&gt;
Su una distribuzione Debian priva di Gambas3, come detto, basterà aggiungere il repository da OBS per poter installare un pacchetto creato con l’ultima versione.&lt;br /&gt;
&lt;br /&gt;
Per la prova, sulla VM in cui ho installato Gambas, ho scaricato dalla Farm il progetto ''CuckooClock'' e ho creato un &amp;lt;u&amp;gt;pacchetto per Debian&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In una nuova VM con il solo sistema operativo aggiornato ho importato la cartella ''debian'' contenente tutti i pacchetti creati da Gambas.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo punto ho aperto il terminale e dato i seguenti comandi (''già visti in precedenza''):&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
  su -l&lt;br /&gt;
  &lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/stable/Debian_12/ /' | tee /etc/apt/sources.list.d/home:gambas:stable.list&lt;br /&gt;
  &lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:stable/Debian_12/Release.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/home_gambas_stable.gpg &amp;gt; /dev/null&lt;br /&gt;
  &lt;br /&gt;
  apt-get update&lt;br /&gt;
  &lt;br /&gt;
  apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': se il comando ''curl'' non dovesse funzionare, occorre aggiungere una k al comando curl (curl -fsSLk ...).&lt;br /&gt;
  &amp;lt;br&amp;gt;Volendo, al posto del repository della stabile possiamo installare il repository della versione Master.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
  sudo apt install ./cuckooclock_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Carichiamo anche i pacchetti per il funzionamento con le librerie QT5:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock-qt5_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Fatto, se siamo su Gnome possiamo aprire il progetto da ''Attività'' &amp;gt; ''Mostra applicazioni'' e volendo, bloccarlo sulla Dash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Note ==&lt;br /&gt;
[2] Vedi anche: [[Compilare Gambas]]&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40919</id>
		<title>Installazione di Gambas3 dai pacchetti binari</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40919"/>
		<updated>2025-02-24T16:17:06Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;  &lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': se sul vostro sistema è installato Gambas, prima di installare una nuova versione occorre eliminare ogni traccia della vecchia.&amp;lt;br&amp;gt;&lt;br /&gt;
  L'aggiornamento da una versione precedente non è sicuro e il più delle volte fallisce, pertanto è da sconsigliare.&lt;br /&gt;
== Launchpad ==&lt;br /&gt;
&lt;br /&gt;
Grazie ai cambiamenti avvenuti su Launchpad (''il PPA funzionava solo su Ubuntu e derivate'') ora i pacchetti binari vengono confezionati attraverso '''OBS''' (''openSUSE Build Service'') e sono disponibili per un maggior numero di distribuzioni.&amp;lt;br&amp;gt;&lt;br /&gt;
Vedi annuncio da parte di Minisini del 16 Dicembre 2024 qui:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambas.sourceforge.net/en/main.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Premessa ==&lt;br /&gt;
&lt;br /&gt;
Come possiamo leggere sulla [https://gambaswiki.org/wiki/doc/packages wiki di Gambas] per poter usare OBS occorre che sul nostro sistema sia presente il comando '''Curl''' e per quanto riguarda ''ArchLinux'' occorre posizionare il ''repository di Gambas'' al primo posto nel ''file /etc/pacman.conf'' così:&lt;br /&gt;
&lt;br /&gt;
  sudo nano /etc/pacman.conf&lt;br /&gt;
&lt;br /&gt;
Quindi occorre posizionare il repo di Gambas per primo aggiungendo:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per la versione stabile:&amp;lt;br&amp;gt;&lt;br /&gt;
  [home_gambas_3.20_Arch]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/3.20/Arch/$arch&lt;br /&gt;
&lt;br /&gt;
Per la versione Master:&amp;lt;br&amp;gt;&lt;br /&gt;
  [home_gambas_master_ArchLinux]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/master/ArchLinux/$arch&lt;br /&gt;
&lt;br /&gt;
== OBS vs PPA ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Come per il PPA, '''OBS''' è disponibile per le versioni Stabile e Master.&lt;br /&gt;
&lt;br /&gt;
== Aggiungere il Repository alla distribuzione ==&lt;br /&gt;
&lt;br /&gt;
Anche se la wiki appare chiara, faremo un esempio pratico di come installare il repository per la distribuzione '''Debian 12'''.&amp;lt;br&amp;gt;&lt;br /&gt;
La procedura è simile anche per le altre distribuzioni.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': le distribuzioni derivate tipo Mint dovranno riferirsi alla versione di Ubuntu da cui dipendono (es. Mint 22 = Ubuntu 24.04)&lt;br /&gt;
&lt;br /&gt;
Apriamo il terminale e installiamo Curl con il comando:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
Ora occorre elevarci a utente Root con questo comando:&lt;br /&gt;
&lt;br /&gt;
  su -l&lt;br /&gt;
&lt;br /&gt;
Adesso diamo questi comandi uno per volta:&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/stable/Debian_12/ /' | tee /etc/apt/sources.list.d/home:gambas:stable.list&lt;br /&gt;
  &lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:stable/Debian_12/Release.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/home_gambas_stable.gpg &amp;gt; /dev/null&lt;br /&gt;
  &lt;br /&gt;
  apt-get update&lt;br /&gt;
  &lt;br /&gt;
  apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
  '''Nota''' :Il vantaggio di poter aggiungere i soli repository è evidente, se abbiamo un gruppo che dipende dai nostri programmi possiamo inviare il pacchetto.deb che pescherà dal repo le sole librerie utili a esso, più avanti vedremo una piccola dimostrazione di come fare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare Gambas3 vero e proprio ==&lt;br /&gt;
&lt;br /&gt;
Continuando sempre come utente Root:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install gambas3-ide&lt;br /&gt;
Fatto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare un pacchetto deb di Gambas3 ==&lt;br /&gt;
&lt;br /&gt;
Su una distribuzione Debian priva di Gambas3, come detto, basterà aggiungere il repository da OBS per poter installare un pacchetto creato con l’ultima versione.&lt;br /&gt;
&lt;br /&gt;
Per la prova, sulla VM in cui ho installato Gambas, ho scaricato dalla Farm il progetto ''CuckooClock'' e ho creato un &amp;lt;u&amp;gt;pacchetto per Debian&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In una nuova VM con il solo sistema operativo aggiornato ho importato la cartella ''debian'' contenente tutti i pacchetti creati da Gambas.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo punto ho aperto il terminale e dato i seguenti comandi (''già visti in precedenza''):&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
  su -l&lt;br /&gt;
  &lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/stable/Debian_12/ /' | tee /etc/apt/sources.list.d/home:gambas:stable.list&lt;br /&gt;
  &lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:stable/Debian_12/Release.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/home_gambas_stable.gpg &amp;gt; /dev/null&lt;br /&gt;
  &lt;br /&gt;
  apt-get update&lt;br /&gt;
  &lt;br /&gt;
  apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': se il comando ''curl'' non dovesse funzionare, occorre aggiungere una k al comando curl (curl -fsSLk ...).&lt;br /&gt;
  &amp;lt;br&amp;gt;Volendo, al posto del repository della stabile possiamo installare il repository della versione Master.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
  sudo apt install ./cuckooclock_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Carichiamo anche i pacchetti per il funzionamento con le librerie QT5:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock-qt5_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Fatto, se siamo su Gnome possiamo aprire il progetto da ''Attività'' &amp;gt; ''Mostra applicazioni'' e volendo, bloccarlo sulla Dash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Note ==&lt;br /&gt;
[2] Vedi anche: [[Compilare Gambas]]&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40873</id>
		<title>Installazione di Gambas3 dai pacchetti binari</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40873"/>
		<updated>2025-02-17T08:44:03Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;  '''&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;Attenzione: al momento questo metodo di installazione funziona solo per la versione di sviluppo (Master)&amp;lt;/pre&amp;gt;'''&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': in un sistema operativo non possono coesistere Gambas anche se di versioni differenti, pertanto prima di installare un nuovo Gambas occorre aver eliminato ogni traccia del vecchio.&amp;lt;br&amp;gt;&lt;br /&gt;
  L'aggiornamento da una versione precedente non è sicuro e il più delle volte fallisce, pertanto è da sconsigliare.&lt;br /&gt;
&lt;br /&gt;
== Launchpad ==&lt;br /&gt;
&lt;br /&gt;
Grazie ai cambiamenti avvenuti su Launchpad (''il PPA funzionava solo su Ubuntu e derivate'') ora i pacchetti binari vengono confezionati attraverso '''OBS''' (''openSUSE Build Service'') e sono disponibili per un maggior numero di distribuzioni.&amp;lt;br&amp;gt;&lt;br /&gt;
Vedi annuncio da parte di Minisini del 16 Dicembre 2024 qui:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambas.sourceforge.net/en/main.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Premessa ==&lt;br /&gt;
&lt;br /&gt;
Come possiamo leggere sulla [https://gambaswiki.org/wiki/doc/packages wiki di Gambas] per poter usare OBS occorre che sul nostro sistema sia presente il comando '''Curl''' e per quanto riguarda ''ArchLinux'' occorre posizionare il ''repository di Gambas'' al primo posto nel ''file /etc/pacman.conf'' così:&lt;br /&gt;
&lt;br /&gt;
  sudo nano /etc/pacman.conf&lt;br /&gt;
&lt;br /&gt;
Quindi occorre posizionare il repo di Gambas per primo aggiungendo:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per la versione stabile:&amp;lt;br&amp;gt;&lt;br /&gt;
  [home_gambas_3.20_Arch]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/3.20/Arch/$arch&lt;br /&gt;
&lt;br /&gt;
Per la versione Master:&amp;lt;br&amp;gt;&lt;br /&gt;
  [home_gambas_master_ArchLinux]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/master/ArchLinux/$arch&lt;br /&gt;
&lt;br /&gt;
== OBS vs PPA ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Come per il PPA, '''OBS''' è disponibile per le versioni Stabile e Master qui i collegamenti con i comandi corretti:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://software.opensuse.org/download/package?package=gambas3-ide&amp;amp;project=home%3Agambas%3A3.20 OBS per la versione Stable]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://software.opensuse.org//download.html?project=home%3Agambas%3Amaster&amp;amp;package=gambas3 OBS per la versione Master]&lt;br /&gt;
&lt;br /&gt;
== Aggiungere il Repository alla distribuzione ==&lt;br /&gt;
&lt;br /&gt;
Anche se la wiki appare chiara, faremo un esempio pratico di come installare il repository per la distribuzione '''Debian 12'''.&amp;lt;br&amp;gt;&lt;br /&gt;
La procedura è simile anche per le altre distribuzioni.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': le distribuzioni derivate tipo Mint dovranno riferirsi alla versione di Ubuntu da cui dipendono (es. Mint 22 = xUbuntu 24.04)&lt;br /&gt;
&lt;br /&gt;
Apriamo il terminale e digitiamo uno alla volta i comandi scritti alla voce “Aggiungi il repository e installa manualmente” , vale a dire:&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/3.20/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:gambas:3.20.list&lt;br /&gt;
&lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:3.20/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_gambas_3.20.gpg &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
Il vantaggio di poter aggiungere i soli repository è evidente, se abbiamo un gruppo che dipende dai nostri programmi possiamo inviare il pacchetto.deb che pescherà dal repo le sole librerie utili a esso, più avanti vedremo una piccola dimostrazione di come fare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare Gambas3 vero e proprio ==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install gambas3-ide&lt;br /&gt;
Fatto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare un pacchetto deb di Gambas3 ==&lt;br /&gt;
&lt;br /&gt;
Su una distribuzione Debian priva di Gambas3, come detto, basterà aggiungere il repository da OBS per poter installare un pacchetto creato con l’ultima versione.&lt;br /&gt;
&lt;br /&gt;
Per la prova, sulla VM in cui ho installato Gambas, ho scaricato dalla Farm il progetto ''CuckooClock'' e ho creato un &amp;lt;u&amp;gt;pacchetto per Debian&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In una nuova VM con il solo sistema operativo aggiornato ho importato la cartella ''debian'' contenente tutti i pacchetti creati da Gambas.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo punto ho aperto il terminale e dato i seguenti comandi:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/3.20/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:gambas:3.20.list&lt;br /&gt;
&lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:3.20/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_gambas_3.20.gpg &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': se il comando non dovesse funzionare, occorre aggiungere una k al comando curl (curl -fsSLk ...).&lt;br /&gt;
  &amp;lt;br&amp;gt;Volendo, al posto del repository della stabile possiamo installare il repository della versione Master.&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Essendo su ''Gnome'' ho scaricato anche i pacchetti per il funzionamento con le librerie QT5:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock-qt5_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Fatto, ora possiamo aprire il progetto da ''Attività'' &amp;gt; ''Mostra applicazioni'' e possiamo anche bloccarlo sulla Dash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Note ==&lt;br /&gt;
[2] Vedi anche: [[Compilare Gambas]]&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40872</id>
		<title>Installazione di Gambas3 dai pacchetti binari</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40872"/>
		<updated>2025-02-14T10:05:33Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;  '''&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;Attenzione: al momento questo metodo di installazione non funziona&amp;lt;/pre&amp;gt;'''&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': in un sistema operativo non possono coesistere Gambas anche se di versioni differenti, pertanto prima di installare un nuovo Gambas occorre aver eliminato ogni traccia del vecchio.&amp;lt;br&amp;gt;&lt;br /&gt;
  L'aggiornamento da una versione precedente non è sicuro e il più delle volte fallisce, pertanto è da sconsigliare.&lt;br /&gt;
&lt;br /&gt;
== Launchpad ==&lt;br /&gt;
&lt;br /&gt;
Grazie ai cambiamenti avvenuti su Launchpad (''il PPA funzionava solo su Ubuntu e derivate'') ora i pacchetti binari vengono confezionati attraverso '''OBS''' (''openSUSE Build Service'') e sono disponibili per un maggior numero di distribuzioni.&amp;lt;br&amp;gt;&lt;br /&gt;
Vedi annuncio da parte di Minisini del 16 Dicembre 2024 qui:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambas.sourceforge.net/en/main.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Premessa ==&lt;br /&gt;
&lt;br /&gt;
Come possiamo leggere sulla [https://gambaswiki.org/wiki/doc/packages wiki di Gambas] per poter usare OBS occorre che sul nostro sistema sia presente il comando '''Curl''' e per quanto riguarda ''ArchLinux'' occorre posizionare il ''repository di Gambas'' al primo posto nel ''file /etc/pacman.conf'' così:&lt;br /&gt;
&lt;br /&gt;
  sudo nano /etc/pacman.conf&lt;br /&gt;
&lt;br /&gt;
Quindi occorre posizionare il repo di Gambas per primo aggiungendo:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per la versione stabile:&amp;lt;br&amp;gt;&lt;br /&gt;
  [home_gambas_3.20_Arch]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/3.20/Arch/$arch&lt;br /&gt;
&lt;br /&gt;
Per la versione Master:&amp;lt;br&amp;gt;&lt;br /&gt;
  [home_gambas_master_ArchLinux]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/master/ArchLinux/$arch&lt;br /&gt;
&lt;br /&gt;
== OBS vs PPA ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Come per il PPA, '''OBS''' è disponibile per le versioni Stabile e Master qui i collegamenti con i comandi corretti:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://software.opensuse.org/download/package?package=gambas3-ide&amp;amp;project=home%3Agambas%3A3.20 OBS per la versione Stable]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://software.opensuse.org//download.html?project=home%3Agambas%3Amaster&amp;amp;package=gambas3 OBS per la versione Master]&lt;br /&gt;
&lt;br /&gt;
== Aggiungere il Repository alla distribuzione ==&lt;br /&gt;
&lt;br /&gt;
Anche se la wiki appare chiara, faremo un esempio pratico di come installare il repository per la distribuzione '''Debian 12'''.&amp;lt;br&amp;gt;&lt;br /&gt;
La procedura è simile anche per le altre distribuzioni.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': le distribuzioni derivate tipo Mint dovranno riferirsi alla versione di Ubuntu da cui dipendono (es. Mint 22 = xUbuntu 24.04)&lt;br /&gt;
&lt;br /&gt;
Apriamo il terminale e digitiamo uno alla volta i comandi scritti alla voce “Aggiungi il repository e installa manualmente” , vale a dire:&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/3.20/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:gambas:3.20.list&lt;br /&gt;
&lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:3.20/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_gambas_3.20.gpg &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
Il vantaggio di poter aggiungere i soli repository è evidente, se abbiamo un gruppo che dipende dai nostri programmi possiamo inviare il pacchetto.deb che pescherà dal repo le sole librerie utili a esso, più avanti vedremo una piccola dimostrazione di come fare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare Gambas3 vero e proprio ==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install gambas3-ide&lt;br /&gt;
Fatto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare un pacchetto deb di Gambas3 ==&lt;br /&gt;
&lt;br /&gt;
Su una distribuzione Debian priva di Gambas3, come detto, basterà aggiungere il repository da OBS per poter installare un pacchetto creato con l’ultima versione.&lt;br /&gt;
&lt;br /&gt;
Per la prova, sulla VM in cui ho installato Gambas, ho scaricato dalla Farm il progetto ''CuckooClock'' e ho creato un &amp;lt;u&amp;gt;pacchetto per Debian&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In una nuova VM con il solo sistema operativo aggiornato ho importato la cartella ''debian'' contenente tutti i pacchetti creati da Gambas.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo punto ho aperto il terminale e dato i seguenti comandi:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/3.20/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:gambas:3.20.list&lt;br /&gt;
&lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:3.20/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_gambas_3.20.gpg &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': se il comando non dovesse funzionare, occorre aggiungere una k al comando curl (curl -fsSLk ...).&lt;br /&gt;
  &amp;lt;br&amp;gt;Volendo, al posto del repository della stabile possiamo installare il repository della versione Master.&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Essendo su ''Gnome'' ho scaricato anche i pacchetti per il funzionamento con le librerie QT5:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock-qt5_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Fatto, ora possiamo aprire il progetto da ''Attività'' &amp;gt; ''Mostra applicazioni'' e possiamo anche bloccarlo sulla Dash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Note ==&lt;br /&gt;
[2] Vedi anche: [[Compilare Gambas]]&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Pagina_principale&amp;diff=40799</id>
		<title>Pagina principale</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Pagina_principale&amp;diff=40799"/>
		<updated>2025-01-30T13:35:17Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Benvenuti!==&lt;br /&gt;
&lt;br /&gt;
Questa è la Wiki di [http://www.gambas-it.org Gambas-it], una guida in italiano, in continuo aggiornamento, del linguaggio di programmazione [[Gambas|GAMBAS]]. Lo scopo di questa Wiki  è quello di condividere, scambiare, immagazzinare e ottimizzare la conoscenza in modo collaborativo grazie alle potenzialità offerte dalla Wiki stessa, una collezione di documenti ipertestuali che può essere modificata dai suoi utilizzatori ed i cui contenuti sono sviluppati in collaborazione da tutti coloro che ne hanno accesso, come in un forum.&lt;br /&gt;
&lt;br /&gt;
'''Per motivi di sicurezza, la registrazione automatica non è attiva.''' Se volete registrarvi, dovete [http://www.gambas-it.org/smf/index.php?topic=2680.0 fare richiesta per un'utenza sul forum di Gambas-it]. Grazie per la collaborazione.&lt;br /&gt;
&lt;br /&gt;
Se avete già un'utenza e volete iniziare a collaborare, allora è il momento buono per fare un salto alle pagine di [[Aiuto:Indice|aiuto]].&lt;br /&gt;
&lt;br /&gt;
== [http://www.gambas-it.org Gambas-it] ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;'''GUIDA [[Gambas|GAMBAS]]'''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;big&amp;gt; '''[[Guide della comunità]]'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;big&amp;gt; '''[[Il linguaggio Gambas]]'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;big&amp;gt; '''[[Lezioni]]'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;big&amp;gt; '''[[Gambas nei repository ufficiali]]'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Risorse Esterne==&lt;br /&gt;
* [http://gambas.sourceforge.net/en/main.html Sito ufficiale di Gambas]&lt;br /&gt;
* [https://gambaswiki.org/wiki?l=it Wiki ufficiale di Gambas]&lt;br /&gt;
* [https://lists.gambas-basic.org/archive/ Mailing List ufficiale di Gambas]&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40788</id>
		<title>Installazione di Gambas3 dai pacchetti binari</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40788"/>
		<updated>2025-01-24T17:16:19Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: /* OBS vs PPA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
  '''Attenzione''': in un sistema operativo non possono coesistere Gambas anche se di versioni differenti, pertanto prima di installare un nuovo Gambas occorre aver eliminato ogni traccia del vecchio.&amp;lt;br&amp;gt;&lt;br /&gt;
  L'aggiornamento da una versione precedente non è sicuro e il più delle volte fallisce, pertanto è da sconsigliare.&lt;br /&gt;
&lt;br /&gt;
== Launchpad ==&lt;br /&gt;
&lt;br /&gt;
Grazie ai cambiamenti avvenuti su Launchpad (''il PPA funzionava solo su Ubuntu e derivate'') ora i pacchetti binari vengono confezionati attraverso '''OBS''' (''openSUSE Build Service'') e sono disponibili per un maggior numero di distribuzioni.&amp;lt;br&amp;gt;&lt;br /&gt;
Vedi annuncio da parte di Minisini del 16 Dicembre 2024 qui:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambas.sourceforge.net/en/main.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Premessa ==&lt;br /&gt;
&lt;br /&gt;
Come possiamo leggere sulla [https://gambaswiki.org/wiki/doc/packages wiki di Gambas] per poter usare OBS occorre che sul nostro sistema sia presente il comando '''Curl''' e per quanto riguarda ''ArchLinux'' occorre posizionare il ''repository di Gambas'' al primo posto nel ''file /etc/pacman.conf'' così:&lt;br /&gt;
&lt;br /&gt;
  sudo nano /etc/pacman.conf&lt;br /&gt;
&lt;br /&gt;
Quindi occorre posizionare il repo di Gambas per primo aggiungendo:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per la versione stabile:&amp;lt;br&amp;gt;&lt;br /&gt;
  [home_gambas_3.20_Arch]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/3.20/Arch/$arch&lt;br /&gt;
&lt;br /&gt;
Per la versione Master:&amp;lt;br&amp;gt;&lt;br /&gt;
  [home_gambas_master_ArchLinux]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/master/ArchLinux/$arch&lt;br /&gt;
&lt;br /&gt;
== OBS vs PPA ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Come per il PPA, '''OBS''' è disponibile per le versioni Stabile e Master qui i collegamenti con i comandi corretti:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://software.opensuse.org/download/package?package=gambas3-ide&amp;amp;project=home%3Agambas%3A3.20 OBS per la versione Stable]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://software.opensuse.org//download.html?project=home%3Agambas%3Amaster&amp;amp;package=gambas3 OBS per la versione Master]&lt;br /&gt;
&lt;br /&gt;
== Aggiungere il Repository alla distribuzione ==&lt;br /&gt;
&lt;br /&gt;
Anche se la wiki appare chiara, faremo un esempio pratico di come installare il repository per la distribuzione '''Debian 12'''.&amp;lt;br&amp;gt;&lt;br /&gt;
La procedura è simile anche per le altre distribuzioni.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': le distribuzioni derivate tipo Mint dovranno riferirsi alla versione di Ubuntu da cui dipendono (es. Mint 22 = xUbuntu 24.04)&lt;br /&gt;
&lt;br /&gt;
Apriamo il terminale e digitiamo uno alla volta i comandi scritti alla voce “Aggiungi il repository e installa manualmente” , vale a dire:&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/3.20/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:gambas:3.20.list&lt;br /&gt;
&lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:3.20/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_gambas_3.20.gpg &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
Il vantaggio di poter aggiungere i soli repository è evidente, se abbiamo un gruppo che dipende dai nostri programmi possiamo inviare il pacchetto.deb che pescherà dal repo le sole librerie utili a esso, più avanti vedremo una piccola dimostrazione di come fare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare Gambas3 vero e proprio ==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install gambas3-ide&lt;br /&gt;
Fatto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare un pacchetto deb di Gambas3 ==&lt;br /&gt;
&lt;br /&gt;
Su una distribuzione Debian priva di Gambas3, come detto, basterà aggiungere il repository da OBS per poter installare un pacchetto creato con l’ultima versione.&lt;br /&gt;
&lt;br /&gt;
Per la prova, sulla VM in cui ho installato Gambas, ho scaricato dalla Farm il progetto ''CuckooClock'' e ho creato un &amp;lt;u&amp;gt;pacchetto per Debian&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In una nuova VM con il solo sistema operativo aggiornato ho importato la cartella ''debian'' contenente tutti i pacchetti creati da Gambas.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo punto ho aperto il terminale e dato i seguenti comandi:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/3.20/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:gambas:3.20.list&lt;br /&gt;
&lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:3.20/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_gambas_3.20.gpg &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': se il comando non dovesse funzionare, occorre aggiungere una k al comando curl (curl -fsSLk ...).&lt;br /&gt;
  &amp;lt;br&amp;gt;Volendo, al posto del repository della stabile possiamo installare il repository della versione Master.&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Essendo su ''Gnome'' ho scaricato anche i pacchetti per il funzionamento con le librerie QT5:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock-qt5_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Fatto, ora possiamo aprire il progetto da ''Attività'' &amp;gt; ''Mostra applicazioni'' e possiamo anche bloccarlo sulla Dash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Note ==&lt;br /&gt;
[2] Vedi anche: [[Compilare Gambas]]&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40787</id>
		<title>Installazione di Gambas3 dai pacchetti binari</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40787"/>
		<updated>2025-01-24T17:15:25Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: /* Premessa */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
  '''Attenzione''': in un sistema operativo non possono coesistere Gambas anche se di versioni differenti, pertanto prima di installare un nuovo Gambas occorre aver eliminato ogni traccia del vecchio.&amp;lt;br&amp;gt;&lt;br /&gt;
  L'aggiornamento da una versione precedente non è sicuro e il più delle volte fallisce, pertanto è da sconsigliare.&lt;br /&gt;
&lt;br /&gt;
== Launchpad ==&lt;br /&gt;
&lt;br /&gt;
Grazie ai cambiamenti avvenuti su Launchpad (''il PPA funzionava solo su Ubuntu e derivate'') ora i pacchetti binari vengono confezionati attraverso '''OBS''' (''openSUSE Build Service'') e sono disponibili per un maggior numero di distribuzioni.&amp;lt;br&amp;gt;&lt;br /&gt;
Vedi annuncio da parte di Minisini del 16 Dicembre 2024 qui:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambas.sourceforge.net/en/main.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Premessa ==&lt;br /&gt;
&lt;br /&gt;
Come possiamo leggere sulla [https://gambaswiki.org/wiki/doc/packages wiki di Gambas] per poter usare OBS occorre che sul nostro sistema sia presente il comando '''Curl''' e per quanto riguarda ''ArchLinux'' occorre posizionare il ''repository di Gambas'' al primo posto nel ''file /etc/pacman.conf'' così:&lt;br /&gt;
&lt;br /&gt;
  sudo nano /etc/pacman.conf&lt;br /&gt;
&lt;br /&gt;
Quindi occorre posizionare il repo di Gambas per primo aggiungendo:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per la versione stabile:&amp;lt;br&amp;gt;&lt;br /&gt;
  [home_gambas_3.20_Arch]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/3.20/Arch/$arch&lt;br /&gt;
&lt;br /&gt;
Per la versione Master:&amp;lt;br&amp;gt;&lt;br /&gt;
  [home_gambas_master_ArchLinux]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/master/ArchLinux/$arch&lt;br /&gt;
&lt;br /&gt;
== OBS vs PPA ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Come per il PPA, OBS è disponibile per le versioni Stabile e Master qui i collegamenti con i comandi corretti:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://software.opensuse.org/download/package?package=gambas3-ide&amp;amp;project=home%3Agambas%3A3.20 OBS per la versione Stable]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://software.opensuse.org//download.html?project=home%3Agambas%3Amaster&amp;amp;package=gambas3 OBS per la versione Master]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aggiungere il Repository alla distribuzione ==&lt;br /&gt;
&lt;br /&gt;
Anche se la wiki appare chiara, faremo un esempio pratico di come installare il repository per la distribuzione '''Debian 12'''.&amp;lt;br&amp;gt;&lt;br /&gt;
La procedura è simile anche per le altre distribuzioni.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': le distribuzioni derivate tipo Mint dovranno riferirsi alla versione di Ubuntu da cui dipendono (es. Mint 22 = xUbuntu 24.04)&lt;br /&gt;
&lt;br /&gt;
Apriamo il terminale e digitiamo uno alla volta i comandi scritti alla voce “Aggiungi il repository e installa manualmente” , vale a dire:&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/3.20/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:gambas:3.20.list&lt;br /&gt;
&lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:3.20/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_gambas_3.20.gpg &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
Il vantaggio di poter aggiungere i soli repository è evidente, se abbiamo un gruppo che dipende dai nostri programmi possiamo inviare il pacchetto.deb che pescherà dal repo le sole librerie utili a esso, più avanti vedremo una piccola dimostrazione di come fare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare Gambas3 vero e proprio ==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install gambas3-ide&lt;br /&gt;
Fatto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare un pacchetto deb di Gambas3 ==&lt;br /&gt;
&lt;br /&gt;
Su una distribuzione Debian priva di Gambas3, come detto, basterà aggiungere il repository da OBS per poter installare un pacchetto creato con l’ultima versione.&lt;br /&gt;
&lt;br /&gt;
Per la prova, sulla VM in cui ho installato Gambas, ho scaricato dalla Farm il progetto ''CuckooClock'' e ho creato un &amp;lt;u&amp;gt;pacchetto per Debian&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In una nuova VM con il solo sistema operativo aggiornato ho importato la cartella ''debian'' contenente tutti i pacchetti creati da Gambas.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo punto ho aperto il terminale e dato i seguenti comandi:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/3.20/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:gambas:3.20.list&lt;br /&gt;
&lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:3.20/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_gambas_3.20.gpg &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': se il comando non dovesse funzionare, occorre aggiungere una k al comando curl (curl -fsSLk ...).&lt;br /&gt;
  &amp;lt;br&amp;gt;Volendo, al posto del repository della stabile possiamo installare il repository della versione Master.&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Essendo su ''Gnome'' ho scaricato anche i pacchetti per il funzionamento con le librerie QT5:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock-qt5_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Fatto, ora possiamo aprire il progetto da ''Attività'' &amp;gt; ''Mostra applicazioni'' e possiamo anche bloccarlo sulla Dash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Note ==&lt;br /&gt;
[2] Vedi anche: [[Compilare Gambas]]&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Gambas_nei_repository_ufficiali&amp;diff=40786</id>
		<title>Gambas nei repository ufficiali</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Gambas_nei_repository_ufficiali&amp;diff=40786"/>
		<updated>2025-01-23T11:02:27Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Come potete constatare dalla colonna di sinistra della pagina web di [https://gambas.sourceforge.net/en/main.html Gambas] &lt;br /&gt;
&amp;lt;br&amp;gt;i repository ufficiali aggiornati su Gambas (''evidenziati in verde'') sono pochi, per poter ovviare a questo problema vi invitiamo a consultare queste due guide:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.gambas-it.org/wiki/index.php/Compilare_Gambas Come Compilare Gambas]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.gambas-it.org/wiki/index.php/Installazione_di_Gambas3_dai_pacchetti_binari Come installare Gambas dai pacchetti binari]&lt;br /&gt;
&lt;br /&gt;
Buon divertimento con Gambas!&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40785</id>
		<title>Installazione di Gambas3 dai pacchetti binari</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40785"/>
		<updated>2025-01-22T14:43:06Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
  '''Attenzione''': in un sistema operativo non possono coesistere Gambas anche se di versioni differenti, pertanto prima di installare un nuovo Gambas occorre aver eliminato ogni traccia del vecchio.&amp;lt;br&amp;gt;&lt;br /&gt;
  L'aggiornamento da una versione precedente non è sicuro e il più delle volte fallisce, pertanto è da sconsigliare.&lt;br /&gt;
&lt;br /&gt;
== Launchpad ==&lt;br /&gt;
&lt;br /&gt;
Grazie ai cambiamenti avvenuti su Launchpad (''il PPA funzionava solo su Ubuntu e derivate'') ora i pacchetti binari vengono confezionati attraverso '''OBS''' (''openSUSE Build Service'') e sono disponibili per un maggior numero di distribuzioni.&amp;lt;br&amp;gt;&lt;br /&gt;
Vedi annuncio da parte di Minisini del 16 Dicembre 2024 qui:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambas.sourceforge.net/en/main.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Premessa ==&lt;br /&gt;
&lt;br /&gt;
Come possiamo leggere sulla [https://gambaswiki.org/wiki/doc/packages wiki di Gambas] per poter usare OBS occorre che sul nostro sistema sia presente il comando '''Curl''' e per quanto riguarda ''ArchLinux'' occorre posizionare il ''repository di Gambas'' al primo posto nel ''file /etc/pacman.conf'' così:&lt;br /&gt;
&lt;br /&gt;
  sudo nano /etc/pacman.conf&lt;br /&gt;
&lt;br /&gt;
Quindi occorre posizionare il repo di Gambas per primo aggiungendo:&lt;br /&gt;
&lt;br /&gt;
  [home_gambas_3.20_Arch]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/3.20/Arch/$arch&lt;br /&gt;
&lt;br /&gt;
== OBS vs PPA ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Come per il PPA, OBS è disponibile per le versioni Stabile e Master qui i collegamenti con i comandi corretti:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://software.opensuse.org/download/package?package=gambas3-ide&amp;amp;project=home%3Agambas%3A3.20 OBS per la versione Stable]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://software.opensuse.org//download.html?project=home%3Agambas%3Amaster&amp;amp;package=gambas3 OBS per la versione Master]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aggiungere il Repository alla distribuzione ==&lt;br /&gt;
&lt;br /&gt;
Anche se la wiki appare chiara, faremo un esempio pratico di come installare il repository per la distribuzione '''Debian 12'''.&amp;lt;br&amp;gt;&lt;br /&gt;
La procedura è simile anche per le altre distribuzioni.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': le distribuzioni derivate tipo Mint dovranno riferirsi alla versione di Ubuntu da cui dipendono (es. Mint 22 = xUbuntu 24.04)&lt;br /&gt;
&lt;br /&gt;
Apriamo il terminale e digitiamo uno alla volta i comandi scritti alla voce “Aggiungi il repository e installa manualmente” , vale a dire:&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/3.20/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:gambas:3.20.list&lt;br /&gt;
&lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:3.20/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_gambas_3.20.gpg &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
Il vantaggio di poter aggiungere i soli repository è evidente, se abbiamo un gruppo che dipende dai nostri programmi possiamo inviare il pacchetto.deb che pescherà dal repo le sole librerie utili a esso, più avanti vedremo una piccola dimostrazione di come fare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare Gambas3 vero e proprio ==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install gambas3-ide&lt;br /&gt;
Fatto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare un pacchetto deb di Gambas3 ==&lt;br /&gt;
&lt;br /&gt;
Su una distribuzione Debian priva di Gambas3, come detto, basterà aggiungere il repository da OBS per poter installare un pacchetto creato con l’ultima versione.&lt;br /&gt;
&lt;br /&gt;
Per la prova, sulla VM in cui ho installato Gambas, ho scaricato dalla Farm il progetto ''CuckooClock'' e ho creato un &amp;lt;u&amp;gt;pacchetto per Debian&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In una nuova VM con il solo sistema operativo aggiornato ho importato la cartella ''debian'' contenente tutti i pacchetti creati da Gambas.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo punto ho aperto il terminale e dato i seguenti comandi:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/3.20/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:gambas:3.20.list&lt;br /&gt;
&lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:3.20/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_gambas_3.20.gpg &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': se il comando non dovesse funzionare, occorre aggiungere una k al comando curl (curl -fsSLk ...).&lt;br /&gt;
  &amp;lt;br&amp;gt;Volendo, al posto del repository della stabile possiamo installare il repository della versione Master.&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Essendo su ''Gnome'' ho scaricato anche i pacchetti per il funzionamento con le librerie QT5:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock-qt5_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Fatto, ora possiamo aprire il progetto da ''Attività'' &amp;gt; ''Mostra applicazioni'' e possiamo anche bloccarlo sulla Dash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Note ==&lt;br /&gt;
[2] Vedi anche: [[Compilare Gambas]]&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Pagina_principale&amp;diff=40784</id>
		<title>Pagina principale</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Pagina_principale&amp;diff=40784"/>
		<updated>2025-01-22T14:02:43Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Benvenuti!==&lt;br /&gt;
&lt;br /&gt;
Questa è la Wiki di [http://www.gambas-it.org Gambas-it], una guida in italiano, in continuo aggiornamento, del linguaggio di programmazione [[Gambas|GAMBAS]]. Lo scopo di questa Wiki  è quello di condividere, scambiare, immagazzinare e ottimizzare la conoscenza in modo collaborativo grazie alle potenzialità offerte dalla Wiki stessa, una collezione di documenti ipertestuali che può essere modificata dai suoi utilizzatori ed i cui contenuti sono sviluppati in collaborazione da tutti coloro che ne hanno accesso, come in un forum.&lt;br /&gt;
&lt;br /&gt;
'''Per motivi di sicurezza, la registrazione automatica non è attiva.''' Se volete registrarvi, dovete [http://www.gambas-it.org/smf/index.php?topic=2680.0 fare richiesta per un'utenza sul forum di Gambas-it]. Grazie per la collaborazione.&lt;br /&gt;
&lt;br /&gt;
Se avete già un'utenza e volete iniziare a collaborare, allora è il momento buono per fare un salto alle pagine di [[Aiuto:Indice|aiuto]].&lt;br /&gt;
&lt;br /&gt;
== [http://www.gambas-it.org Gambas-it] ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;'''GUIDA [[Gambas|GAMBAS]]'''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;big&amp;gt; '''[[Guide della comunità]]'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;big&amp;gt; '''[[Il linguaggio Gambas]]'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;big&amp;gt; '''[[Lezioni]]'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;big&amp;gt; '''[[Gambas nei repository ufficiali]]'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Risorse Esterne==&lt;br /&gt;
* [http://gambas.sourceforge.net/en/main.html Sito ufficiale di Gambas]&lt;br /&gt;
* [https://gambaswiki.org/wiki?l=it Wiki ufficiale di Gambas]&lt;br /&gt;
* [https://lists.gambas-basic.org/archive/ Mailing List ufficiale di Gambas]&lt;br /&gt;
* [http://it.wikipedia.org/wiki/Gambas Pagina di Gambas su Wikipedia]&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Gambas_nei_repository_ufficiali&amp;diff=40783</id>
		<title>Gambas nei repository ufficiali</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Gambas_nei_repository_ufficiali&amp;diff=40783"/>
		<updated>2025-01-22T13:57:13Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Come potete constatare dalla colonna di sinistra della pagina web di [https://gambas.sourceforge.net/en/main.html Gambas] &lt;br /&gt;
&amp;lt;br&amp;gt;i repository ufficiali aggiornati su Gambas (''evidenziati in verde'') sono pochi, per poter ovviare a questo problema vi invitiamo a consultare queste due lezioni:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.gambas-it.org/wiki/index.php/Compilare_Gambas Come Compilare Gambas]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.gambas-it.org/wiki/index.php/Installazione_di_Gambas3_dai_pacchetti_binari Come installare Gambas dai pacchetti binari]&lt;br /&gt;
&lt;br /&gt;
Buon divertimento con Gambas!&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40782</id>
		<title>Installazione di Gambas3 dai pacchetti binari</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40782"/>
		<updated>2025-01-19T22:27:27Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
  '''Attenzione''': in un sistema operativo non possono coesistere Gambas anche se di versioni differenti, pertanto prima di installare un nuovo Gambas occorre aver eliminato ogni traccia del vecchio.&amp;lt;br&amp;gt;&lt;br /&gt;
  L'aggiornamento da una versione precedente non è sicuro e il più delle volte fallisce, pertanto è da sconsigliare.&lt;br /&gt;
&lt;br /&gt;
== Launchpad ==&lt;br /&gt;
&lt;br /&gt;
Grazie ai cambiamenti avvenuti su Launchpad (''il PPA funzionava solo su Ubuntu e derivate'') ora i pacchetti binari vengono confezionati attraverso '''OBS''' (''openSUSE Build Service'') e sono disponibili per un maggior numero di distribuzioni.&amp;lt;br&amp;gt;&lt;br /&gt;
Vedi annuncio da parte di Minisini del 16 Dicembre 2024 qui:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambas.sourceforge.net/en/main.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Premessa ==&lt;br /&gt;
&lt;br /&gt;
Come possiamo leggere sulla wiki [https://gambaswiki.org/wiki/doc/packages] per poter usare OBS occorre che sul nostro sistema sia presente il comando '''Curl''' e per quanto riguarda ''ArchLinux'' occorre posizionare il ''repository di Gambas'' al primo posto nel ''file /etc/pacman.conf'' così:&lt;br /&gt;
&lt;br /&gt;
  sudo nano /etc/pacman.conf&lt;br /&gt;
&lt;br /&gt;
Quindi occorre posizionare il repo di Gambas per primo aggiungendo:&lt;br /&gt;
&lt;br /&gt;
  [home_gambas_3.20_Arch]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/3.20/Arch/$arch&lt;br /&gt;
&lt;br /&gt;
== OBS vs PPA ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Come per il PPA, OBS è disponibile per le versioni Stabile e Master qui i collegamenti con i comandi corretti:&amp;lt;br&amp;gt;&lt;br /&gt;
https://software.opensuse.org/download/package?package=gambas3-ide&amp;amp;project=home%3Agambas%3A3.20&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
https://software.opensuse.org//download.html?project=home%3Agambas%3Amaster&amp;amp;package=gambas3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aggiungere il Repository alla distribuzione ==&lt;br /&gt;
&lt;br /&gt;
Anche se la wiki appare chiara, faremo un esempio pratico di come installare il repository per la distribuzione '''Debian 12'''.&amp;lt;br&amp;gt;&lt;br /&gt;
La procedura è simile anche per le altre distribuzioni.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': le distribuzioni derivate tipo Mint dovranno riferirsi alla versione di Ubuntu da cui dipendono (es. Mint 22 = xUbuntu 24.04)&lt;br /&gt;
&lt;br /&gt;
Apriamo il terminale e digitiamo uno alla volta i comandi scritti alla voce “Aggiungi il repository e installa manualmente” , vale a dire:&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/3.20/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:gambas:3.20.list&lt;br /&gt;
&lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:3.20/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_gambas_3.20.gpg &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
Il vantaggio di poter aggiungere i soli repository è evidente, se abbiamo un gruppo che dipende dai nostri programmi possiamo inviare il pacchetto.deb che pescherà dal repo le sole librerie utili a esso, più avanti vedremo una piccola dimostrazione di come fare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare Gambas3 vero e proprio ==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install gambas3-ide&lt;br /&gt;
Fatto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare un pacchetto deb di Gambas3 ==&lt;br /&gt;
&lt;br /&gt;
Su una distribuzione Debian priva di Gambas3, come detto, basterà aggiungere il repository da OBS per poter installare un pacchetto creato con l’ultima versione.&lt;br /&gt;
&lt;br /&gt;
Per la prova, sulla VM in cui ho installato Gambas, ho scaricato dalla Farm il progetto ''CuckooClock'' e ho creato un &amp;lt;u&amp;gt;pacchetto per Debian&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In una nuova VM con il solo sistema operativo aggiornato ho importato la cartella ''debian'' contenente tutti i pacchetti creati da Gambas.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo punto ho aperto il terminale e dato i seguenti comandi:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/3.20/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:gambas:3.20.list&lt;br /&gt;
&lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:3.20/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_gambas_3.20.gpg &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': se il comando non dovesse funzionare, occorre aggiungere una k al comando curl (curl -fsSLk ...).&lt;br /&gt;
  &amp;lt;br&amp;gt;Volendo, al posto del repository della stabile possiamo installare il repository della versione Master.&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Essendo su ''Gnome'' ho scaricato anche i pacchetti per il funzionamento con le librerie QT5:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock-qt5_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Fatto, ora possiamo aprire il progetto da ''Attività'' &amp;gt; ''Mostra applicazioni'' e possiamo anche bloccarlo sulla Dash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Note ==&lt;br /&gt;
[2] Vedi anche: [[Compilare Gambas]]&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40781</id>
		<title>Installazione di Gambas3 dai pacchetti binari</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40781"/>
		<updated>2025-01-19T22:17:02Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
  '''Attenzione''': in un sistema operativo non possono coesistere Gambas anche se di versioni differenti, pertanto prima di installare un nuovo Gambas occorre aver eliminato ogni traccia del vecchio.&amp;lt;br&amp;gt;&lt;br /&gt;
  L'aggiornamento da una versione precedente non è sicuro e il più delle volte fallisce, pertanto è da sconsigliare.&lt;br /&gt;
&lt;br /&gt;
== Launchpad ==&lt;br /&gt;
&lt;br /&gt;
Grazie ai cambiamenti avvenuti su Launchpad (''il PPA funzionava solo su Ubuntu e derivate'') ora i pacchetti binari vengono confezionati attraverso '''OBS''' (''openSUSE Build Service'') e sono disponibili per un maggior numero di distribuzioni.&amp;lt;br&amp;gt;&lt;br /&gt;
Vedi annuncio da parte di Minisini del 16 Dicembre 2024 qui:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambas.sourceforge.net/en/main.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Premessa ==&lt;br /&gt;
&lt;br /&gt;
Come possiamo leggere sulla wiki [https://gambaswiki.org/wiki/doc/packages] per poter usare OBS occorre che sul nostro sistema sia presente il comando '''Curl''' e per quanto riguarda ''ArchLinux'' occorre posizionare il ''repository di Gambas'' al primo posto nel ''file /etc/pacman.conf'' così:&lt;br /&gt;
&lt;br /&gt;
  sudo nano /etc/pacman.conf&lt;br /&gt;
&lt;br /&gt;
Quindi occorre posizionare il repo di Gambas per primo aggiungendo:&lt;br /&gt;
&lt;br /&gt;
  [home_gambas_3.20_Arch]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/3.20/Arch/$arch&lt;br /&gt;
&lt;br /&gt;
== OBS vs PPA ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Come per il PPA, OBS è disponibile per le versioni Stabile e Master qui i collegamenti con i comandi corretti:&amp;lt;br&amp;gt;&lt;br /&gt;
https://software.opensuse.org/download/package?package=gambas3-ide&amp;amp;project=home%3Agambas%3A3.20&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
https://software.opensuse.org//download.html?project=home%3Agambas%3Amaster&amp;amp;package=gambas3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aggiungere il Repository alla distribuzione ==&lt;br /&gt;
&lt;br /&gt;
Anche se la wiki appare chiara, faremo un esempio pratico di come installare il repository per la distribuzione '''Debian 12'''.&amp;lt;br&amp;gt;&lt;br /&gt;
La procedura è simile anche per le altre distribuzioni.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': le distribuzioni derivate tipo Mint dovranno riferirsi alla versione di Ubuntu da cui dipendono (es. Mint 22 = xUbuntu 24.04)&lt;br /&gt;
&lt;br /&gt;
Apriamo il terminale e digitiamo uno alla volta i comandi scritti alla voce “Aggiungi il repository e installa manualmente” , vale a dire:&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/3.20/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:gambas:3.20.list&lt;br /&gt;
&lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:3.20/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_gambas_3.20.gpg &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
Il vantaggio di poter installare anche i soli repository è evidente, se abbiamo un gruppo che dipende dai nostri programmi possiamo inviare il solo pacchetto.deb che pescherà dal repo le sole librerie utili a esso, più avanti vedremo una piccola dimostrazione di come fare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare Gambas3 vero e proprio ==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install gambas3-ide&lt;br /&gt;
Fatto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare un pacchetto deb di Gambas3 ==&lt;br /&gt;
&lt;br /&gt;
Su una distribuzione Debian priva di Gambas3, come detto, basterà aggiungere il repository da OBS per poter installare un pacchetto creato con l’ultima versione.&lt;br /&gt;
&lt;br /&gt;
Per la prova, sulla VM in cui ho installato Gambas, ho scaricato dalla Farm il progetto ''CuckooClock'' e ho creato un &amp;lt;u&amp;gt;pacchetto per Debian&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In una nuova VM con il solo sistema operativo aggiornato ho importato la cartella ''debian'' contenente tutti i pacchetti creati da Gambas.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo punto ho aperto il terminale e dato i seguenti comandi:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/3.20/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:gambas:3.20.list&lt;br /&gt;
&lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:3.20/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_gambas_3.20.gpg &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': se il comando non dovesse funzionare, occorre aggiungere una k al comando curl (curl -fsSLk ...).&lt;br /&gt;
  &amp;lt;br&amp;gt;Volendo, al posto del repository della stabile possiamo installare il repository della versione Master.&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Essendo su ''Gnome'' ho scaricato anche i pacchetti per il funzionamento con le librerie QT5:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock-qt5_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Fatto, ora possiamo aprire il progetto da ''Attività'' &amp;gt; ''Mostra applicazioni'' e possiamo anche bloccarlo sulla Dash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Note ==&lt;br /&gt;
[2] Vedi anche: [[Compilare Gambas]]&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40780</id>
		<title>Compilare Gambas</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40780"/>
		<updated>2025-01-19T22:16:26Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== I Repository ==&lt;br /&gt;
&lt;br /&gt;
Per chi viene da altri sistemi operativi l’installazione di un programma in Linux può apparire poco chiara.&amp;lt;br&amp;gt;&lt;br /&gt;
Ormai, visto che tutti abbiamo uno smartphone, l’idea di uno ''Store'', cioè di un luogo virtuale da cui scaricare un’applicazione che ci serve, non è più una novità e infatti il sistema è stato copiato da Linux e dai suoi '''Repository'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Se in Linux serve un dato programma basta sceglierlo nel repository, fra le tante applicazioni del genere disponibili liberamente, installarlo e siamo subito operativi.&lt;br /&gt;
&lt;br /&gt;
Purtroppo date le tante distribuzioni che arricchiscono Linux, non sempre i programmi ivi presenti sono all’ultima versione, questo accade per i programmi più diffusi figurarsi per quelli di nicchia come ''Gambas''.&lt;br /&gt;
&lt;br /&gt;
Quindi se si vuole l’ultima versione di ''Gambas'', ''Stable'' oppure ''Master'' quella fresca di giornata con tutti gli ultimi ''fix'', non rimane altra scelta che compilare.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;Invero per chi usa Ubuntu o una sua derivata tipo Mint esistono dei repository speciali chiamati '''PPA''', quello di Gambas è curato direttamente da ''Benoit Minisini'' ideatore di ''Gambas''.&amp;lt;br&amp;gt;&lt;br /&gt;
Normalmente 24 ore dopo l’uscita, la nuova versione è disponibile.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo link troviamo i comandi per il terminale:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambaswiki.org/wiki/install/ubuntu#t1&amp;lt;/strike&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  '''Nota''': occorre leggere l'annuncio di Minisini del 13 novembre 2024 su Launchpad qui: https://gambas.sourceforge.net/en/main.html &amp;lt;br&amp;gt; Leggere anche questo topic sul nostro forum: https://www.gambas-it.org/smf/index.php?topic=11103.msg54741#msg54741&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cosa significa compilare ==&lt;br /&gt;
&lt;br /&gt;
Compilare è una &amp;lt;u&amp;gt;semplicissima operazione&amp;lt;/u&amp;gt; che permette di trasformare un file di codice sorgente in un file binario eseguibile dalla nostra distribuzione.&lt;br /&gt;
&lt;br /&gt;
L’operazione consiste nell’inviare al compilatore ''gcc'' attraverso il terminale alcuni comandi che eseguono degli ''script'' di shell e delle ''macro'' che automatizzano il tutto.&amp;lt;br&amp;gt;&lt;br /&gt;
Per prima cosa vengono eseguiti gli ''script'' che predispongono il codice per la nostra distribuzione quindi le funzioni (''macro'') che creano e installano l’eseguibile.&lt;br /&gt;
&lt;br /&gt;
Compilare un programma in GNU/Linux consiste in pratica nel dare tre comandi da terminale (''configure'' [script], ''make'' e ''make install'' [funzioni]), quale è dunque il motivo che spaventa i più?&lt;br /&gt;
&lt;br /&gt;
Credo che quello principale sia che ''Windows'' ci ha abituato a fare tutto attraverso le finestre e pertanto scrivere comandi in un terminale ci appare una cosa aliena, però se abbiamo velleità di programmazione la cosa risulta risibile, visto che programmare altro non è che scrivere comandi, i nostri comandi.&lt;br /&gt;
&lt;br /&gt;
''Gambas'', come tutte le applicazioni ''open source'' viene rilasciato sotto forma di codice sorgente &amp;lt;SUP&amp;gt;&amp;amp;#091;[[#Note|Nota 1]]&amp;amp;#093;&amp;lt;/sup&amp;gt; ed è attualmente presente su ''GitLab'' a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas&lt;br /&gt;
&lt;br /&gt;
''GitLab'' si apre sulla versione ''Master'' (quella in corso di sviluppo), ma agendo sul pulsante menu è possibile scegliere la versione stabile (''Stable'').&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi il suo codice può essere scaricato da li, anche graficamente, come file compresso: ''Tarball'' (con estensione .tar.gz, .tar.bz2 o .tar) oppure ''Zip'' (.zip).&lt;br /&gt;
&lt;br /&gt;
Dopo aver scaricato il file nella cartella desiderata, tipicamente la nostra ''home'', si può decomprimerlo usando il tasto destro del mouse e l’apposita voce di menu, ma visto che comunque per compilare dai sorgenti si dovrà fare uso del terminale e più avanti verrà descritta l’intera operazione di scaricamento da ''GitLab'', scaricare il file in questo modo appare inutile, a meno che si stia cercando una versione precedente l’attuale.&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi è comunque bene sapere che anche da ''GitLab'' sotto la voce ''Comit'' si può scaricare in forma compressa qualunque ''Gambas precedente'' sia stabile che di sviluppo.&lt;br /&gt;
&lt;br /&gt;
== Le librerie dinamiche ==&lt;br /&gt;
&lt;br /&gt;
Tutto troppo facile, vero?&amp;lt;br&amp;gt;&lt;br /&gt;
Uno potrebbe immaginare che vengano celate delle difficoltà !&amp;lt;br&amp;gt;&lt;br /&gt;
E infatti, la difficoltà del caso si chiama '''Libreria'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Un programma per funzionare ha bisogno che nel sistema siano installate determinate librerie, esattamente quelle della giusta versione.&amp;lt;br&amp;gt;&lt;br /&gt;
Pertanto installare un programma è semplice, trovare le librerie di cui si necessita per la distribuzione in nostro uso lo è un po’ meno e non perché sia difficile installarle ma perché è difficile capire come è stata nominata quella specifica libreria.&amp;lt;br&amp;gt;&lt;br /&gt;
''Gambas'' oltre che un programma è anche un linguaggio di programmazione e va da se che si basi su moltissime librerie.&lt;br /&gt;
&lt;br /&gt;
== Niente panico ==&lt;br /&gt;
&lt;br /&gt;
La stragrande maggioranza delle distribuzioni deriva da poche altre distribuzioni, per le più diffuse, le librerie utili a ''Gambas'' sono elencate nel file di configurazione YAML a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas/-/blob/master/.gitlab-ci.yml&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': il tipo di desktop in uso non è importante per la compilazione, quello che conta riguardo alle librerie da scaricare è la '''distribuzione''' che è il modo in uso a GNU/Linux di chiamare il sistema operativo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per compilare Gambas ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
  '''Nota''': la compilazione va fatta su una distribuzione pulita, vale a dire che ''Gambas'' non può essere già presente anche se scaricato dai repository.&amp;lt;br&amp;gt;Se è già presente, prima di poter compilare ''Gambas'' occorre &amp;lt;u&amp;gt;rimuoverlo completamente&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Qui come esempio useremo una distribuzione basata su ''Arch Linux'', tipo ''Manjaro'', ''Endeavour'' oltre che naturalmente a ''Arch'' stesso.&amp;lt;br&amp;gt;&lt;br /&gt;
Attualmente ''Benoit Minisini'' utilizza ''Manjaro'' con ''KDE''.&lt;br /&gt;
&lt;br /&gt;
''Quanto qui descritto si può adattare a qualunque altra distribuzione ed è indirizzato a programmatori dilettanti come lo scrivente, se siete dei professionisti il consiglio è di dare un’occhiata comunque''.&amp;lt;br&amp;gt;&lt;br /&gt;
Quello che segue servirà a preparare la giusta lista dei comandi che poi daremo da terminale usando il copia e incolla.&lt;br /&gt;
&lt;br /&gt;
* Copiamo il codice ''yaml'' su cui è basata la nostra distribuzione.&amp;lt;br&amp;gt;Ad esempio se noi utilizzassimo ''Mint 22'', dovremmo copiare il codice yaml di ''Ubuntu Noble'' sulla quale ''Mint 22'' è basata.&amp;lt;br&amp;gt;'''Attenzione''': le librerie in ''yaml''  sono scritte in modo differente in base alla distribuzione, alcune sono incolonnate come quelle di ''Arch'' altre scritte sequenzialmente in un unica lunga stringa vedi ''Ubuntu'', dobbiamo accertarci di copiare tutto.&lt;br /&gt;
* Incolliamo il codice yaml su un file di testo con l’aiuto di un editor e andiamo a cambiarlo così:&lt;br /&gt;
** eliminiamo le prime quattro righe&lt;br /&gt;
** anteponiamo '''sudo''' davanti al/ai comando che installa le librerie, nel caso di ''Arch'' si dovrà dare due comandi come scritto nel file, se nella nostra distribuzione non abbiamo sudo ci dobbiamo trasformare in utente ''root'' per poter installare le librerie.&amp;lt;br&amp;gt;Dopo averle incollate le librerie vanno cambiate in modo che siano separate fra di loro da uno spazio eliminando così eventuali tabulazioni e/o gli accapo.&lt;br /&gt;
** Ora dipende da quale Gambas desideriamo scaricare e installare,  questo nuovo comando dobbiamo inserirlo, in una nuova riga, nel file di testo subito dopo le librerie e serve a copiare in una nuova cartella all’interno della nostra ''home'' il progetto ''Gambas'' da compilare, per la versione stabile il comando è:&amp;lt;br&amp;gt;git clone --branch stable --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo chiamata ''Master'' il comando è:&amp;lt;br&amp;gt;git clone --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambasdevel&lt;br /&gt;
** Dopo aver aggiunto il comando desiderato, occorre spostarsi all’interno della nuova cartella con uno di questi comandi, per la versione stabile il comando è:&amp;lt;br&amp;gt;cd gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo il comando è:&amp;lt;br&amp;gt;cd gambasdevel&lt;br /&gt;
** Gli altri comandi incollati rimangono invariati, tranne l'ultimo anch'esso preceduto da '''sudo''', vale a dire:&amp;lt;br&amp;gt;./reconf-all&amp;lt;br&amp;gt;GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl&amp;lt;br&amp;gt;make -j$(nproc)&amp;lt;br&amp;gt;sudo make install&lt;br /&gt;
&lt;br /&gt;
A questo punto, se avessimo scelto la versione di sviluppo (''Master''), il nostro file di testo dovrebbe assomigliare a questo, da notare che per facilitare la lettura, ho aggiunto degli spazi tra un comando e l’altro:&lt;br /&gt;
&lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm alure autoconf automake bzip2 zstd coreutils curl dbus gcc gdk-pixbuf2 git glew glib2 gmime3 gsl gst-plugins-base gstreamer gtk2 gtk3 imlib2 intltool libffi libgl libgnome-keyring mariadb-libs librsvg libsm libxcursor libxml2 libxslt libxtst mariadb make mesa ncurses pcre''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm pkg-config poppler poppler-glib postgresql postgresql-libs qt5-svg qt5-x11extras sdl2 sdl2_gfx sdl2_image sdl2_mixer sdl2_net sdl2_ttf sdl_mixer sdl_ttf smpeg sqlite unixodbc v4l-utils xdg-utils zlib gettext qt5-webengine webkit2gtk qt6-svg qt6-webengine mongo-c-driver''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
Non ci rimane che copiare e incollare, &amp;lt;u&amp;gt;un comando alla volta&amp;lt;/u&amp;gt;, nel terminale della nostra distribuzione che nel caso dell'esempio è ''Manjaro Linux''.&amp;lt;br&amp;gt;&lt;br /&gt;
Come detto se la nostra distribuzione non usa ''sudo'' occorre che al posto di sudo ci eleviamo a utente '''root''', senza mettere '''sudo''' nel comando.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per aggiornare ==&lt;br /&gt;
&lt;br /&gt;
Questo sistema è un po' drastico e se si ha padronanza di ''git'' possiamo anche saltarlo, occorre solo sapere che è l’unico sistema che garantisce l’aggiornamento sicuro di Gambas:&lt;br /&gt;
&lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make uninstall''&lt;br /&gt;
  &lt;br /&gt;
  ''cd''&lt;br /&gt;
  &lt;br /&gt;
  ''rm -rf gambasdevel/''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
'''Nota''': se usiamo la versione stabile dobbiamo sostituire ''gambasdevel'' con ''gambas-stable'' e cambiare il comando git clone con quello del ramo stabile (''git clone --branch stable --depth=1 https://gitlab.com/gambas/gambas.git gambas-stable'').&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Note==&lt;br /&gt;
[1] È proprio il fatto di dover nascondere il codice per poterlo vendere che in Windows i programmi vengono distribuiti come binari (.exe).&amp;lt;br&amp;gt;&lt;br /&gt;
Sono decisamente facili da installare (meno che da repository) rispetto alla compilazione, ma dobbiamo ammettere che compilare è molto meno oneroso.&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Vedi anche: [[Installazione di Gambas3 dai pacchetti binari]]&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40779</id>
		<title>Installazione di Gambas3 dai pacchetti binari</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40779"/>
		<updated>2025-01-19T22:15:16Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
  '''Attenzione''': in un sistema operativo non possono coesistere Gambas anche se di versioni differenti, pertanto prima di installare un nuovo Gambas occorre aver eliminato ogni traccia del vecchio.&amp;lt;br&amp;gt;&lt;br /&gt;
  L'aggiornamento da una versione precedente non è sicuro e il più delle volte fallisce, pertanto è da sconsigliare.&lt;br /&gt;
&lt;br /&gt;
== Launchpad ==&lt;br /&gt;
&lt;br /&gt;
Grazie ai cambiamenti avvenuti su Launchpad (''il PPA funzionava solo su Ubuntu e derivate'') ora i pacchetti binari vengono confezionati attraverso '''OBS''' (''openSUSE Build Service'') e sono disponibili per un maggior numero di distribuzioni.&amp;lt;br&amp;gt;&lt;br /&gt;
Vedi annuncio da parte di Minisini del 16 Dicembre 2024 qui:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambas.sourceforge.net/en/main.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Premessa ==&lt;br /&gt;
&lt;br /&gt;
Come possiamo leggere sulla wiki [https://gambaswiki.org/wiki/doc/packages] per poter usare OBS occorre che sul nostro sistema sia presente il comando '''Curl''' e per quanto riguarda ''ArchLinux'' occorre posizionare il ''repository di Gambas'' al primo posto nel ''file /etc/pacman.conf'' così:&lt;br /&gt;
&lt;br /&gt;
  sudo nano /etc/pacman.conf&lt;br /&gt;
&lt;br /&gt;
Quindi occorre posizionare il repo di Gambas per primo aggiungendo:&lt;br /&gt;
&lt;br /&gt;
  [home_gambas_3.20_Arch]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/3.20/Arch/$arch&lt;br /&gt;
&lt;br /&gt;
== OBS vs PPA ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Come per il PPA, OBS è disponibile per le versioni Stabile e Master qui i collegamenti con i comandi corretti:&amp;lt;br&amp;gt;&lt;br /&gt;
https://software.opensuse.org/download/package?package=gambas3-ide&amp;amp;project=home%3Agambas%3A3.20&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
https://software.opensuse.org//download.html?project=home%3Agambas%3Amaster&amp;amp;package=gambas3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aggiungere il Repository alla distribuzione ==&lt;br /&gt;
&lt;br /&gt;
Anche se la wiki appare chiara, faremo un esempio pratico di come installare il repository per la distribuzione '''Debian 12'''.&amp;lt;br&amp;gt;&lt;br /&gt;
La procedura è simile anche per le altre distribuzioni.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': le distribuzioni derivate tipo Mint dovranno riferirsi alla versione di Ubuntu da cui dipendono (es. Mint 22 = xUbuntu 24.04)&lt;br /&gt;
&lt;br /&gt;
Apriamo il terminale e digitiamo uno alla volta i comandi scritti alla voce “Aggiungi il repository e installa manualmente” , vale a dire:&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/3.20/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:gambas:3.20.list&lt;br /&gt;
&lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:3.20/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_gambas_3.20.gpg &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
Il vantaggio di poter installare anche i soli repository è evidente, se abbiamo un gruppo che dipende dai nostri programmi possiamo inviare il solo pacchetto.deb che pescherà dal repo le sole librerie utili a esso, più avanti vedremo una piccola dimostrazione di come fare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare Gambas3 vero e proprio ==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install gambas3-ide&lt;br /&gt;
Fatto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare un pacchetto deb di Gambas3 ==&lt;br /&gt;
&lt;br /&gt;
Su una distribuzione Debian priva di Gambas3, come detto, basterà aggiungere il repository da OBS per poter installare un pacchetto creato con l’ultima versione.&lt;br /&gt;
&lt;br /&gt;
Per la prova, sulla VM in cui ho installato Gambas, ho scaricato dalla Farm il progetto ''CuckooClock'' e ho creato un &amp;lt;u&amp;gt;pacchetto per Debian&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In una nuova VM con il solo sistema operativo aggiornato ho importato la cartella ''debian'' contenente tutti i pacchetti creati da Gambas.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo punto ho aperto il terminale e dato i seguenti comandi:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/3.20/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:gambas:3.20.list&lt;br /&gt;
&lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:3.20/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_gambas_3.20.gpg &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': se il comando non dovesse funzionare, occorre aggiungere una k al comando curl (curl -fsSLk ...).&lt;br /&gt;
  &amp;lt;br&amp;gt;Volendo, al posto del repository della stabile possiamo installare il repository della versione Master.&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Essendo su ''Gnome'' ho scaricato anche i pacchetti per il funzionamento con le librerie QT5:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock-qt5_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Fatto, ora possiamo aprire il progetto da ''Attività'' &amp;gt; ''Mostra applicazioni'' e possiamo anche bloccarlo sulla Dash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Note ==&lt;br /&gt;
[2] Vedi anche [[Compilare Gambas]]&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40778</id>
		<title>Installazione di Gambas3 dai pacchetti binari</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40778"/>
		<updated>2025-01-19T22:14:22Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
  '''Attenzione''': in un sistema operativo non possono coesistere Gambas anche se di versioni differenti, pertanto prima di installare un nuovo Gambas occorre aver eliminato ogni traccia del vecchio.&amp;lt;br&amp;gt;&lt;br /&gt;
  L'aggiornamento da una versione precedente non è sicuro e il più delle volte fallisce, pertanto è da sconsigliare.&lt;br /&gt;
&lt;br /&gt;
== Launchpad ==&lt;br /&gt;
&lt;br /&gt;
Grazie ai cambiamenti avvenuti su Launchpad (''il PPA funzionava solo su Ubuntu e derivate'') ora i pacchetti binari vengono confezionati attraverso '''OBS''' (''openSUSE Build Service'') e sono disponibili per un maggior numero di distribuzioni.&amp;lt;br&amp;gt;&lt;br /&gt;
Vedi annuncio da parte di Minisini del 16 Dicembre 2024 qui:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambas.sourceforge.net/en/main.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Premessa ==&lt;br /&gt;
&lt;br /&gt;
Come possiamo leggere sulla wiki [https://gambaswiki.org/wiki/doc/packages] per poter usare OBS occorre che sul nostro sistema sia presente il comando '''Curl''' e per quanto riguarda ''ArchLinux'' occorre posizionare il ''repository di Gambas'' al primo posto nel ''file /etc/pacman.conf'' così:&lt;br /&gt;
&lt;br /&gt;
  sudo nano /etc/pacman.conf&lt;br /&gt;
&lt;br /&gt;
Quindi occorre posizionare il repo di Gambas per primo aggiungendo:&lt;br /&gt;
&lt;br /&gt;
  [home_gambas_3.20_Arch]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/3.20/Arch/$arch&lt;br /&gt;
&lt;br /&gt;
== OBS vs PPA ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Come per il PPA, OBS è disponibile per le versioni Stabile e Master qui i collegamenti con i comandi corretti:&amp;lt;br&amp;gt;&lt;br /&gt;
https://software.opensuse.org/download/package?package=gambas3-ide&amp;amp;project=home%3Agambas%3A3.20&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
https://software.opensuse.org//download.html?project=home%3Agambas%3Amaster&amp;amp;package=gambas3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aggiungere il Repository alla distribuzione ==&lt;br /&gt;
&lt;br /&gt;
Anche se la wiki appare chiara, faremo un esempio pratico di come installare il repository per la distribuzione '''Debian 12'''.&amp;lt;br&amp;gt;&lt;br /&gt;
La procedura è simile anche per le altre distribuzioni.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': le distribuzioni derivate tipo Mint dovranno riferirsi alla versione di Ubuntu da cui dipendono (es. Mint 22 = xUbuntu 24.04)&lt;br /&gt;
&lt;br /&gt;
Apriamo il terminale e digitiamo uno alla volta i comandi scritti alla voce “Aggiungi il repository e installa manualmente” , vale a dire:&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/3.20/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:gambas:3.20.list&lt;br /&gt;
&lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:3.20/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_gambas_3.20.gpg &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
Il vantaggio di poter installare anche i soli repository è evidente, se abbiamo un gruppo che dipende dai nostri programmi possiamo inviare il solo pacchetto.deb che pescherà dal repo le sole librerie utili a esso, più avanti vedremo una piccola dimostrazione di come fare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare Gambas3 vero e proprio ==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install gambas3-ide&lt;br /&gt;
Fatto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare un pacchetto deb di Gambas3 ==&lt;br /&gt;
&lt;br /&gt;
Su una distribuzione Debian priva di Gambas3, come detto, basterà aggiungere il repository da OBS per poter installare un pacchetto creato con l’ultima versione.&lt;br /&gt;
&lt;br /&gt;
Per la prova, sulla VM in cui ho installato Gambas, ho scaricato dalla Farm il progetto ''CuckooClock'' e ho creato un &amp;lt;u&amp;gt;pacchetto per Debian&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In una nuova VM con il solo sistema operativo aggiornato ho importato la cartella ''debian'' contenente tutti i pacchetti creati da Gambas.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo punto ho aperto il terminale e dato i seguenti comandi:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/3.20/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:gambas:3.20.list&lt;br /&gt;
&lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:3.20/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_gambas_3.20.gpg &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': se il comando non dovesse funzionare, occorre aggiungere una k al comando curl (curl -fsSLk ...).&lt;br /&gt;
  &amp;lt;br&amp;gt;Volendo, al posto del repository della stabile possiamo installare il repository della versione Master.&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Essendo su ''Gnome'' ho scaricato anche i pacchetti per il funzionamento con le librerie QT5:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock-qt5_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Fatto, ora possiamo aprire il progetto da ''Attività'' &amp;gt; ''Mostra applicazioni'' e possiamo anche bloccarlo sulla Dash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Note ==&lt;br /&gt;
[2] [[Compilare Gambas]]&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40777</id>
		<title>Installazione di Gambas3 dai pacchetti binari</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40777"/>
		<updated>2025-01-19T22:13:18Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
  '''Attenzione''': in un sistema operativo non possono coesistere Gambas anche se di versioni differenti, pertanto prima di installare un nuovo Gambas occorre aver eliminato ogni traccia del vecchio.&amp;lt;br&amp;gt;&lt;br /&gt;
  L'aggiornamento da una versione precedente non è sicuro e il più delle volte fallisce, pertanto è da sconsigliare.&lt;br /&gt;
&lt;br /&gt;
== Launchpad ==&lt;br /&gt;
&lt;br /&gt;
Grazie ai cambiamenti avvenuti su Launchpad (''il PPA funzionava solo su Ubuntu e derivate'') ora i pacchetti binari vengono confezionati attraverso '''OBS''' (''openSUSE Build Service'') e sono disponibili per un maggior numero di distribuzioni.&amp;lt;br&amp;gt;&lt;br /&gt;
Vedi annuncio da parte di Minisini del 16 Dicembre 2024 qui:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambas.sourceforge.net/en/main.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Premessa ==&lt;br /&gt;
&lt;br /&gt;
Come possiamo leggere sulla wiki [https://gambaswiki.org/wiki/doc/packages] per poter usare OBS occorre che sul nostro sistema sia presente il comando '''Curl''' e per quanto riguarda ''ArchLinux'' occorre posizionare il ''repository di Gambas'' al primo posto nel ''file /etc/pacman.conf'' così:&lt;br /&gt;
&lt;br /&gt;
  sudo nano /etc/pacman.conf&lt;br /&gt;
&lt;br /&gt;
Quindi occorre posizionare il repo di Gambas per primo aggiungendo:&lt;br /&gt;
&lt;br /&gt;
  [home_gambas_3.20_Arch]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/3.20/Arch/$arch&lt;br /&gt;
&lt;br /&gt;
== OBS vs PPA ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Come per il PPA, OBS è disponibile per le versioni Stabile e Master qui i collegamenti con i comandi corretti:&amp;lt;br&amp;gt;&lt;br /&gt;
https://software.opensuse.org/download/package?package=gambas3-ide&amp;amp;project=home%3Agambas%3A3.20&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
https://software.opensuse.org//download.html?project=home%3Agambas%3Amaster&amp;amp;package=gambas3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aggiungere il Repository alla distribuzione ==&lt;br /&gt;
&lt;br /&gt;
Anche se la wiki appare chiara, faremo un esempio pratico di come installare il repository per la distribuzione '''Debian 12'''.&amp;lt;br&amp;gt;&lt;br /&gt;
La procedura è simile anche per le altre distribuzioni.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': le distribuzioni derivate tipo Mint dovranno riferirsi alla versione di Ubuntu da cui dipendono (es. Mint 22 = xUbuntu 24.04)&lt;br /&gt;
&lt;br /&gt;
Apriamo il terminale e digitiamo uno alla volta i comandi scritti alla voce “Aggiungi il repository e installa manualmente” , vale a dire:&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/3.20/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:gambas:3.20.list&lt;br /&gt;
&lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:3.20/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_gambas_3.20.gpg &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
Il vantaggio di poter installare anche i soli repository è evidente, se abbiamo un gruppo che dipende dai nostri programmi possiamo inviare il solo pacchetto.deb che pescherà dal repo le sole librerie utili a esso, più avanti vedremo una piccola dimostrazione di come fare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare Gambas3 vero e proprio ==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install gambas3-ide&lt;br /&gt;
Fatto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare un pacchetto deb di Gambas3 ==&lt;br /&gt;
&lt;br /&gt;
Su una distribuzione Debian priva di Gambas3, come detto, basterà aggiungere il repository da OBS per poter installare un pacchetto creato con l’ultima versione.&lt;br /&gt;
&lt;br /&gt;
Per la prova, sulla VM in cui ho installato Gambas, ho scaricato dalla Farm il progetto ''CuckooClock'' e ho creato un &amp;lt;u&amp;gt;pacchetto per Debian&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In una nuova VM con il solo sistema operativo aggiornato ho importato la cartella ''debian'' contenente tutti i pacchetti creati da Gambas.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo punto ho aperto il terminale e dato i seguenti comandi:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/3.20/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:gambas:3.20.list&lt;br /&gt;
&lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:3.20/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_gambas_3.20.gpg &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': se il comando non dovesse funzionare, occorre aggiungere una k al comando curl (curl -fsSLk ...).&lt;br /&gt;
  &amp;lt;br&amp;gt;Volendo, al posto del repository della stabile possiamo anche installare il repository della versione Master.&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Essendo su ''Gnome'' ho scaricato anche i pacchetti per il funzionamento con le librerie QT5:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock-qt5_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Fatto, ora possiamo aprire il progetto da ''Attività'' &amp;gt; ''Mostra applicazioni'' e possiamo anche bloccarlo sulla Dash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Note ==&lt;br /&gt;
[2] [[Compilare Gambas]]&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40776</id>
		<title>Installazione di Gambas3 dai pacchetti binari</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40776"/>
		<updated>2025-01-19T22:10:16Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
  '''Attenzione''': in un sistema operativo non possono coesistere Gambas anche se di versioni differenti, pertanto prima di installare un nuovo Gambas occorre aver eliminato ogni traccia del vecchio.&amp;lt;br&amp;gt;&lt;br /&gt;
  L'aggiornamento da una versione precedente non è sicuro e il più delle volte fallisce, pertanto è da sconsigliare.&lt;br /&gt;
&lt;br /&gt;
== Launchpad ==&lt;br /&gt;
&lt;br /&gt;
Grazie ai cambiamenti avvenuti su Launchpad (''il PPA funzionava solo su Ubuntu e derivate'') ora i pacchetti binari vengono confezionati attraverso '''OBS''' (''openSUSE Build Service'') e sono disponibili per un maggior numero di distribuzioni.&amp;lt;br&amp;gt;&lt;br /&gt;
Vedi annuncio da parte di Minisini del 16 Dicembre 2024 qui:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambas.sourceforge.net/en/main.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Premessa ==&lt;br /&gt;
&lt;br /&gt;
Come possiamo leggere sulla wiki [https://gambaswiki.org/wiki/doc/packages] per poter usare OBS occorre che sul nostro sistema sia presente il comando '''Curl''' e per quanto riguarda ''ArchLinux'' occorre posizionare il ''repository di Gambas'' al primo posto nel ''file /etc/pacman.conf'' così:&lt;br /&gt;
&lt;br /&gt;
  sudo nano /etc/pacman.conf&lt;br /&gt;
&lt;br /&gt;
Quindi occorre posizionare il repo di Gambas per primo aggiungendo:&lt;br /&gt;
&lt;br /&gt;
  [home_gambas_3.20_Arch]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/3.20/Arch/$arch&lt;br /&gt;
&lt;br /&gt;
== OBS vs PPA ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Come per il PPA, OBS è disponibile per le versioni Stabile e Master qui i collegamenti con i comandi corretti:&amp;lt;br&amp;gt;&lt;br /&gt;
https://software.opensuse.org/download/package?package=gambas3-ide&amp;amp;project=home%3Agambas%3A3.20&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
https://software.opensuse.org//download.html?project=home%3Agambas%3Amaster&amp;amp;package=gambas3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aggiungere il Repository alla distribuzione ==&lt;br /&gt;
&lt;br /&gt;
Anche se la wiki appare chiara, faremo un esempio pratico di come installare il repository per la distribuzione '''Debian 12'''.&amp;lt;br&amp;gt;&lt;br /&gt;
La procedura è simile anche per le altre distribuzioni.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': le distribuzioni derivate tipo Mint dovranno riferirsi alla versione di Ubuntu da cui dipendono (es. Mint 22 = xUbuntu 24.04)&lt;br /&gt;
&lt;br /&gt;
Apriamo il terminale e digitiamo uno alla volta i comandi scritti alla voce “Aggiungi il repository e installa manualmente” , vale a dire:&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/3.20/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:gambas:3.20.list&lt;br /&gt;
&lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:3.20/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_gambas_3.20.gpg &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
Il vantaggio di poter installare anche i soli repository è evidente, se abbiamo un gruppo che dipende dai nostri programmi possiamo inviare il solo pacchetto.deb che pescherà dal repo le sole librerie utili a esso, più avanti vedremo una piccola dimostrazione di come fare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare Gambas3 vero e proprio ==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install gambas3-ide&lt;br /&gt;
Fatto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare un pacchetto deb di Gambas3 ==&lt;br /&gt;
&lt;br /&gt;
Su una distribuzione Debian priva di Gambas3, come detto, basterà aggiungere il repository da OBS per poter installare un pacchetto creato con l’ultima versione.&lt;br /&gt;
&lt;br /&gt;
Per la prova, sulla VM in cui ho installato Gambas, ho scaricato dalla Farm il progetto ''CuckooClock'' e ho creato un &amp;lt;u&amp;gt;pacchetto per Debian&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In una nuova VM con il solo sistema operativo aggiornato ho importato la cartella ''debian'' contenente tutti i pacchetti creati da Gambas.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo punto ho aperto il terminale e dato i seguenti comandi:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/3.20/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:gambas:3.20.list&lt;br /&gt;
&lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:3.20/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_gambas_3.20.gpg &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': volendo, al posto del repository della stabile possiamo anche installare il repository della versione Master.&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Essendo su ''Gnome'' ho scaricato anche i pacchetti per il funzionamento con le librerie QT5:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock-qt5_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Fatto, ora possiamo aprire il progetto da ''Attività'' &amp;gt; ''Mostra applicazioni'' e possiamo anche bloccarlo sulla Dash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Note ==&lt;br /&gt;
[2] [[Compilare Gambas]]&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Guide_della_comunit%C3%A0&amp;diff=40775</id>
		<title>Guide della comunità</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Guide_della_comunit%C3%A0&amp;diff=40775"/>
		<updated>2025-01-19T17:07:41Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Raccolta di guide sui componenti, sui metodi e sugli algoritmi del linguaggio Gambas, nonché su ogni altro argomento utile, scritti e mantenuti dalla comunità italiana Gambas-it&lt;br /&gt;
&lt;br /&gt;
== Array (Vettori) e Matrici ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Array: creazione, modifica e riempimento]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Array multidimensionali con numero determinato di elementi]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Array multidimensionali con numero indeterminato di elementi]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Array annidati]]&lt;br /&gt;
&lt;br /&gt;
* [[Array contenenti array di varie dimensioni]]&lt;br /&gt;
&lt;br /&gt;
* [[Array in linea]]&lt;br /&gt;
&lt;br /&gt;
* [[Accedere linearmente in scrittura ed in lettura ad una Matrice]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare ad un vettore i valori contenuti da un'area di memoria puntata da un Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare ciascuna cifra di un numero a un elemento di un vettore di tipo Byte]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare i byte dei dati di un numero agli elementi di un vettore di tipo Byte]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare un vettore ad una variabile di tipo Object]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare un vettore ad una variabile di tipo Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Configurazione, organizzazione ed impostazione dell'array secondo i sorgenti di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere quale elemento di un vettore contiene un determinato valore]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con i Puntatori i valori contenuti in un vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il valore numerico più alto contenuto da un vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la dimensione ed il numero di elementi di una Matrice]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in un array di tipo Stringa la quantità maggiore di caratteri contenuta nei suoi elementi]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in un array di tipo Stringa l'elemento che contiene la quantità maggiore di caratteri]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire i valori di tipo Byte di un vettore in valori di tipo Stringa]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Copie di variabili array]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare più elementi da un array]]&lt;br /&gt;
&lt;br /&gt;
* [[Emulare la funzione Asc() con il vettore di tipo Byte]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestione di una coda mediante array in modo circolare]]&lt;br /&gt;
&lt;br /&gt;
* [[Invertire l'ordine dei valori contenuti dagli elementi di un vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Invertire l'ordine nelle coppie di byte dell'area di memoria di un vettore con la funzione esterna swab()]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere e scrivere in un vettore mediante i Memory Stream]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il puntatore a una variabile vettoriale]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un vettore di tipo Byte da una Stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Porre a zero i valori contenuti da un Vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Proprietà ReadOnly dell'Array (proprietà di sola lettura)]]&lt;br /&gt;
&lt;br /&gt;
* [[Raccogliere il valore contenuto nell'ultimo elemento di indice non conosciuto di un vettore restituito da una funzione]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere in un vettore i dati di un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare un Vettore al posto di una Matrice]]&lt;br /&gt;
&lt;br /&gt;
== Balloon ==&lt;br /&gt;
&lt;br /&gt;
* [[Colorare il testo di un Balloon]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un'immagine in un Ballon]]&lt;br /&gt;
&lt;br /&gt;
* [[Posizionare arbitrariamente un Balloon]]&lt;br /&gt;
&lt;br /&gt;
== Classi ==&lt;br /&gt;
&lt;br /&gt;
===Classi in generale===&lt;br /&gt;
&lt;br /&gt;
* [[Accedere alla Struttura della risorsa &amp;quot;Classe&amp;quot;, come dichiarata nei sorgenti di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le risorse possedute da una Classe]]&lt;br /&gt;
&lt;br /&gt;
* [[Rendere gli elementi di una Classe richiamabili da un progetto Gambas esterno]]&lt;br /&gt;
&lt;br /&gt;
* [[Usare una Classe come fosse una Funzione]]&lt;br /&gt;
&lt;br /&gt;
===Classi particolari native===&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere una funzione personalizzata alla Classe nativa String]]&lt;br /&gt;
&lt;br /&gt;
* [[La classe Action]]&lt;br /&gt;
&lt;br /&gt;
===Classi specifiche===&lt;br /&gt;
&lt;br /&gt;
* [[Creare da codice una Classe specifica]]&lt;br /&gt;
&lt;br /&gt;
* [[Variabile del tipo di una Classe specifica creata]]&lt;br /&gt;
&lt;br /&gt;
* [[Vettore del tipo di una Classe specifica creata]]&lt;br /&gt;
 &lt;br /&gt;
====Classi particolari realizzate della Comunità Gambas-it.org====&lt;br /&gt;
&lt;br /&gt;
* [[Clib]]&lt;br /&gt;
&lt;br /&gt;
* [[csvbox]]&lt;br /&gt;
&lt;br /&gt;
* [[CTable]]&lt;br /&gt;
&lt;br /&gt;
* [[Fifo]]&lt;br /&gt;
&lt;br /&gt;
* [[GLibrary]]&lt;br /&gt;
&lt;br /&gt;
* [[GridViewUtil]]&lt;br /&gt;
&lt;br /&gt;
* [[PdfWriter]]&lt;br /&gt;
&lt;br /&gt;
* [[TrasfImpLett]]&lt;br /&gt;
&lt;br /&gt;
== Clipboard ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della classe Clipboard]]&lt;br /&gt;
&lt;br /&gt;
== Collection ==&lt;br /&gt;
&lt;br /&gt;
* [[Collection]]&lt;br /&gt;
&lt;br /&gt;
* [[Confronto Array di Strutture verso Collezione di Classi]]&lt;br /&gt;
&lt;br /&gt;
* [[Definizione esplicita di una Collection]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il valore attribuito a una chiave della Collection]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare un campo di una Collection in un'altra Collection]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare un Metodo o una Proprietà della Classe di un Oggetto inserito in una Collection]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare un'intera Collection nel campo di un'altra Collection]]&lt;br /&gt;
&lt;br /&gt;
== ColorInfo ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della classe ColorInfo]]&lt;br /&gt;
&lt;br /&gt;
== ColumnView ==&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere una colonna a una ColumnView]]&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere una riga a una ColumnView]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare colori allo sfondo ed al testo di una riga selezionata di una ColumnView]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare il testo a una cella della ColumnView]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare la larghezza delle colonne in una ColumnView]]&lt;br /&gt;
&lt;br /&gt;
== ComboBox ==&lt;br /&gt;
&lt;br /&gt;
* [[ComboBox che consente di posizionarsi sulla prima ricorrenza di un item quando si digitano le sue prime lettere]]&lt;br /&gt;
* [[ComboBox che mostra immagini anziché caratteri alfanumerici]]&lt;br /&gt;
* [[ComboBox: creare una lista da codice]]&lt;br /&gt;
* [[Impostare il colore del testo di ogni elemento della lista del ComboBox]]&lt;br /&gt;
* [[Impostare il colore dello sfondo del ComboBox]]&lt;br /&gt;
* [[Ridimensionare la larghezza della finestra a cascata di un ComboBox in base alla lunghezza testuale di un elemento della lista]]&lt;br /&gt;
* [[Scegliere da codice un elemento presente in un ComboBox]]&lt;br /&gt;
* [[Scegliere da codice un indice del ComboBox]]&lt;br /&gt;
&lt;br /&gt;
==Come Compilare Gambas==&lt;br /&gt;
* [[Compilare Gambas]]&lt;br /&gt;
&lt;br /&gt;
== Componenti ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Cosa è un Componente di Gambas]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Attivare un Componente dinamicamente da codice]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il nome del Componente di appartenenza di una Classe mediante i sorgenti di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le Classi possedute da un Componente]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare un Componente obsoleto]]&lt;br /&gt;
&lt;br /&gt;
=== Realizzazione dei Componenti in linguaggio Gambas ===&lt;br /&gt;
&lt;br /&gt;
* [[Come creare un Componente scritto in linguaggio Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Tutorial - creare un componente: il frame]]&lt;br /&gt;
&lt;br /&gt;
==== Componenti della Comunità Gambas-it.org ====&lt;br /&gt;
&lt;br /&gt;
* [[gb.strLib]]&lt;br /&gt;
&lt;br /&gt;
* [[gb.textpro]]&lt;br /&gt;
&lt;br /&gt;
* [[GridBox]]&lt;br /&gt;
&lt;br /&gt;
* [[INILib]]&lt;br /&gt;
&lt;br /&gt;
* [[InvBox]]&lt;br /&gt;
&lt;br /&gt;
* [[qrcodereader]]&lt;br /&gt;
&lt;br /&gt;
* [[XMLLib]]&lt;br /&gt;
&lt;br /&gt;
=== Realizzazione dei Componenti in linguaggio C ===&lt;br /&gt;
&lt;br /&gt;
* [[Creare un Componente per Gambas scritto in linguaggio C]]&lt;br /&gt;
&lt;br /&gt;
== CPU e Scheda Madre==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con alcune funzioni della libreria libc.so.6 il numero dei processori configurati e disponibili]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il numero dei processori presenti nel proprio calcolatore con la Proprietà System.Cores]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il numero dei processori presenti nel proprio calcolatore leggendo il file di sistema &amp;quot;cpuinfo&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la frequenza delle CPU mediante le funzioni esterne del API di Libcpufreq]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la risoluzione dei clock hardware con le risorse esterne dichiarate nel file header &amp;quot;time.h&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Controllare la temperatura della CPU con le sole funzioni di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Controllare la temperatura dell'hardware mediante le funzioni del API di libsensors]]&lt;br /&gt;
&lt;br /&gt;
* [[Generare arbitrariamente un errore &amp;quot;CPU Time Limit Exceeded&amp;quot; con la funzione esterna vlimit()]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni sulla CPU mediante l'API di Libavutil]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni sulla CPU mediante l'API di Libcpuid]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni generali sulla CPU con le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni generali sulla CPU con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare la frequenza delle CPU con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
== Creazione pacchetti di installazione ==&lt;br /&gt;
&lt;br /&gt;
* [[Creare un AppImage firmata di un progetto Gambas]]&lt;br /&gt;
&lt;br /&gt;
== DBus ==&lt;br /&gt;
&lt;br /&gt;
* [[Introduzione a DBus]]&lt;br /&gt;
&lt;br /&gt;
* [[Inviare dati da un programma Gambas ad un altro mediante le risorse del Componente DBus]]&lt;br /&gt;
&lt;br /&gt;
== Desktop - Scrivania ==&lt;br /&gt;
&lt;br /&gt;
* [[Far mostrare sulla Scrivania i messaggi della specifica Desktop Notifications mediante le funzioni esterne del API di Libnotify]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare con precisione il percorso ed il nome della Scrivania]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il valore di un pixel sulla Scrivania]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni sulle icone presenti sulla Scrivania]]&lt;br /&gt;
&lt;br /&gt;
== DesktopFile ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso del Metodo .RunExec()]]&lt;br /&gt;
&lt;br /&gt;
== DesktopWatcher ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della classe DesktopWatcher]]&lt;br /&gt;
&lt;br /&gt;
== DesktopWindow ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della classe DesktopWindow]]&lt;br /&gt;
&lt;br /&gt;
== Dialog ==&lt;br /&gt;
&lt;br /&gt;
* [[Caricare in un Dialog più file da aprire in sequenza]]&lt;br /&gt;
&lt;br /&gt;
* [[Far mostrare in un Dialog l'estensione dell'ultimo file precedentemente aperto]]&lt;br /&gt;
&lt;br /&gt;
* [[Far mostrare in un Dialog una particolare estensione di file]]&lt;br /&gt;
&lt;br /&gt;
* [[Filtrare contemporaneamente con il Dialog.Filter più estensioni di file]]&lt;br /&gt;
&lt;br /&gt;
* [[Preimpostare il percorso della finestra del Dialog]]&lt;br /&gt;
&lt;br /&gt;
* [[Ridimensionare la finestra del Dialog da codice]]&lt;br /&gt;
&lt;br /&gt;
== DirView - FileView ==&lt;br /&gt;
&lt;br /&gt;
* [[Copiare un file utilizzando gli oggetti DirView e FileView]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare con diversi colori i nomi dei file in una FileView]]&lt;br /&gt;
&lt;br /&gt;
== Drag &amp;amp; Drop ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Codice essenziale per effettuare il Drag-Drop di un'immagine da un Controllo grafico in un altro]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Codice essenziale per effettuare il Drag-Drop di un testo]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Mantenere durante il Drag&amp;amp;Drop il cursore del mouse nel punto dell'immagine ove si è cliccato]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare il contenuto di un file di testo con il solo Drop del file in un oggetto di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un'immagine con il Drop del suo file in una PictureBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il percorso di un file trasportato e rilasciato con Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare Oggetti grafici con il mouse all'interno di un Contenitore mediante Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
== DrawingArea ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Istruzioni essenziali per disegnare su una DrawingArea]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Calcolo e rappresentazione grafica in una DrawingArea del Seno e del Coseno]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare e distruggere un Controllo grafico in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare, spostare e distruggere un'immagine in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Curvare il testo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea dei punti]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea due immagini sovrapposte anche consentendo il cambio di opacità di quella disegnata sopra]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea l'intersezione perpendicolare di due linee]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea linee mediante codice]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea linee rette con il mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea sulla base dei punti cliccati un parallelogramma con angoli retti]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un carattere punto per punto]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un cerchio]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un eptagono regolare]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un esagono regolare]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un goniometro]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un ottagono regolare]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un pentagono regolare]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un poligono]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un rettangolo]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un rettangolo colorato con distinzione sfumata fra i colori]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un rombo]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un romboide]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un triangolo]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea una figura piana]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea una pseudo-galleria rettangolare tridimensionale in prospettiva con effetto grafico di movimento in avanti]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea una spirale]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare un Button contenente un'icona e un testo mediante la DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare un misuratore analogico su una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare un orologio su una DrawingArea prendendo l'orario del sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Drag-Drop di un testo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Drag-Drop di un'immagine in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Evidenziare il puntatore del mouse quando si clicca sulla DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Far scorrere un testo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Generare un file immagine da una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Generare un file PDF da una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire in una DrawingArea che si esegua il codice presente nell'Evento &amp;quot;_Draw()&amp;quot; , qualora sia sollevato arbitrariamente più di una volta]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare l'opacità di un disegno in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare alcune sfumature di un colore in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il valore di un pixel in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'effetto della gomma per cancellare in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare direttamente ad un oggetto Image i dati grezzi dei pixel di una DrawingArea mediante le risorse del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare il testo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare qualsiasi elemento da disegnare in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un arco in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un cerchio disegnato in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un eptagono in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un esagono in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un ottagono in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un pentagono in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un quadrato ed un rettangolo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un rombo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un romboide in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un triangolo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare una figura piana intorno a una circonferenza in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un'immagine sul proprio asse centrale in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere del testo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse il testo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse senza Drag&amp;amp;Drop un'immagine caricata in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse un cerchio in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse un Controllo grafico generato in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse un rettangolo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse un triangolo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse un'ellisse in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare il contenuto di una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
== File e Directory ==&lt;br /&gt;
&lt;br /&gt;
* [[Aprire un file mediante la Classe 'DesktopFile' con il programma al quale è associato]]&lt;br /&gt;
&lt;br /&gt;
* [[Arrestare temporaneamente l'intercettazione del flusso di dati da un file-device]]&lt;br /&gt;
&lt;br /&gt;
* [[Azzerare un gruppo di byte in un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Chiudere un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Comprimere un file in un file compresso .zip mediante le funzioni esterne del API di libzip]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere a quale applicazione è associato un tipo di file]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere caratteristiche generali dei file]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere ed impostare i permessi di un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere i permessi di un file mediante le funzioni esterne del API di libgio-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il file referenziato da un collegamento simbolico]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il mime-type di un file  mediante le funzioni esterne del API di libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il mime-type di un file  mediante le funzioni esterne del API di libmagic]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il mime-type di un file mediante le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il tipo di file mediante le funzioni esterne del API di libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il tipo di file mediante le funzioni esterne del API di libglib-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la data di accesso e di modifica di un file con le funzioni esterne del API di libgio-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la dimensione di un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire con la funzione g_filename_from_uri() di libglib-2.0 la URI di un file nel corrispondente identificativo comunemente usato]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire con la funzione g_filename_to_uri() di libglib-2.0 il percorso identificativo di un file nella sua corrispondente URI]]&lt;br /&gt;
&lt;br /&gt;
* [[Copiare ricorsivamente una cartella]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file e scrivervi dati con le funzioni esterne della libreria libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file bash]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un link simbolico di un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Controllare l'uguaglianza di due file mediante le funzioni esterne del API di libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Effettuare una copia di un file e verificarne la progressione]]&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare un byte all'interno di un file binario]]&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare un file mediante le funzioni esterne del API di GLib]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre con le funzioni del API di libzip i file contenuti da un file compresso .zip]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre da una cartella uno o più file nascosti]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre il percorso di un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre l'icona di un tipo di file]]&lt;br /&gt;
&lt;br /&gt;
* [[Evitare l'errore &amp;quot;Stream chiuso&amp;quot; dopo aver chiuso un flusso di dati]]&lt;br /&gt;
&lt;br /&gt;
* [[Identificare un tipo di file dalla sua estensione]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostazione dei permessi di un file con la funzione 'g_chmod' del API di libglib-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[L'oggetto File secondo i sorgenti di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere dati dai &amp;quot;File Descriptor&amp;quot; passati da funzioni esterne]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere il contenuto di una Directory mediante le risorse dichiarate nel file header &amp;quot;dirent.h&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere in una cartella con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere un file con READ]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere un file di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere un file di testo con carattere di fine riga di codifica MAC]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare le date di accesso e di modifica dell'inode di un file con le risorse esterne di utime.h]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare o eliminare una riga in un file di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Monitorare con le funzioni esterne del API di libgio-2.0 le modifiche apportate ad un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni generali sui file]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere all'apertura di un file un Puntatore anziché una variabile di tipo File]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il nome di un file mediante le funzioni esterne del API di libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il percorso di un file, associato a un programma .gambas, aprendolo con un doppio-clic]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il percorso di un file trasportato e rilasciato con Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il solo nome ed il solo percorso di un file con le funzioni esterne del API di Glib-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'intero percorso di un file mediante le funzioni esterne del API di libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la directory di appartenenza di un file mediante le funzioni esterne del API di libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un file coerente da dati con rappresentazione come stringa in memoria]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un numero dalla sua memorizzazione in formato Big-Endian]]&lt;br /&gt;
&lt;br /&gt;
* [[Percorso assoluto e percorso relativo dei file]]&lt;br /&gt;
&lt;br /&gt;
* [[Porre sotto osservazione con Read Watch due o più file]]&lt;br /&gt;
&lt;br /&gt;
* [[Raccogliere solo alcune righe all'interno di un file di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Reindirizzare lo standard output con Output To]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare un file dalla Home]]&lt;br /&gt;
&lt;br /&gt;
* [[Rinominare un file mediante le funzioni esterne del API di GLib]]&lt;br /&gt;
&lt;br /&gt;
* [[Salvare i byte-dati di un file in un file di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Salvare in un file le stringhe contenute in un vettore di tipo Stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere con le risorse del API di Glib se il percorso di un file è un percorso assoluto]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere in tempo reale se un file di nome conosciuto viene modificato o distrutto]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere l'ordine dei byte utilizzato dal sistema per salvare i dati]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quale file è stato creato per ultimo]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un file di nome sconosciuto è stato creato o distrutto]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un file esiste mediante le funzioni esterne del API di libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Scaricare un file da internet]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere all'interno di un file di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere in un file i dati presenti in un vettore di tipo Byte]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere in un file solo alcuni dati presenti in un'area riservata di memoria]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere un file di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare un file nel Cestino e ripristinarlo nella sua Cartella di origine]]&lt;br /&gt;
&lt;br /&gt;
* [[Troncare un file ad una determinata dimensione con la funzione esterna truncate()]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare l'esistenza di una directory]]&lt;br /&gt;
&lt;br /&gt;
== FileChooser ==&lt;br /&gt;
&lt;br /&gt;
* [[Impedire in un FileChooser che facendo doppio-clic su un file, ne venga richiesta la sovrascrittura]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare da codice la modalità di visualizzazione interna dei file in un FileChooser]]&lt;br /&gt;
&lt;br /&gt;
== Font ==&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare Font senza installarli nel sistema]]&lt;br /&gt;
&lt;br /&gt;
== Form, Finestre e Contenitori ==&lt;br /&gt;
&lt;br /&gt;
* [[Chiudere tutte le finestre aperte da un applicativo]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un Form mediante la Classe Window]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare una finestra e disegnarvi una scacchiera con le funzioni del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare una finestra ed inserirvi del testo con le funzioni esterne di Libcaca]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare una finestra mediante le funzioni del API di GTK+3]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare una finestra mediante le funzioni del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare una finestra mediante le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare una finestra mediante le funzioni del API di XCB]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file immagine dagli oggetti presenti in un Contenitore]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un Form trasparente]]&lt;br /&gt;
&lt;br /&gt;
* [[Dimensionare il Form o un'altra finestra considerando la presenza della barra delle applicazioni sulla Scrivania]]&lt;br /&gt;
&lt;br /&gt;
* [[Evitare la perdita di memoria chiudendo forzatamente un Form]]&lt;br /&gt;
&lt;br /&gt;
* [[Evento Form_Activate e sua possibile sostituzione]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire l'apertura di un Form secondario più di una volta]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire la chiusura di un Form quando si clicca sulla &amp;quot;X&amp;quot; nell'angolo in alto a destra]]&lt;br /&gt;
&lt;br /&gt;
* [[Inglobare un Form o una finestra in un altro suo Form o finestra del medesimo programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Mantenere il Form di un'applicazione Gambas sempre in primo piano]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare una immagine JPEG in una finestra con le funzioni del API di X11 e di Libjpeg]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un'immagine del Form]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare ad un Form un valore diverso da un Intero alla chiusura di un Form secondario]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare valori e altre risorse da un Form principale a un Form secondario]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare valori e altre risorse da un Form secondario a un Form principale]]&lt;br /&gt;
&lt;br /&gt;
* [[Rapporto fra ShowModal ed il Metodo Form.Close]]&lt;br /&gt;
&lt;br /&gt;
* [[Referenziare in modo appropriato lo spazio all'interno di un Contenitore rispetto ai suoi Oggetti figli]]&lt;br /&gt;
&lt;br /&gt;
* [[Restituire ad un Form un valore passato ad Form secondario]]&lt;br /&gt;
&lt;br /&gt;
* [[Semitrasparenza di un Form]]&lt;br /&gt;
&lt;br /&gt;
* [[Simulare il posizionamento di alcuni ToolButton sulla barra del titolo della finestra]]&lt;br /&gt;
&lt;br /&gt;
* [[Sollevare l'evento _Resize al ridimensionamento di un Form secondario]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare un Form con il mouse sulla Scrivania]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare se un Form è attivo]]&lt;br /&gt;
&lt;br /&gt;
== Funzioni ==&lt;br /&gt;
&lt;br /&gt;
* [[Differenza fra Sub, Procedure e Function]]&lt;br /&gt;
&lt;br /&gt;
* [[Emulare i Puntatori a Funzione del linguaggio C mediante gli Oggetti]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestire Funzioni come oggetti]]&lt;br /&gt;
&lt;br /&gt;
* [[Passaggio di un argomento per 'indirizzo' ad una Funzione]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare a una funzione un numero imprecisato di argomenti]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere una Funzione]]&lt;br /&gt;
&lt;br /&gt;
== Gambas ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la versione di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le parole-chiave usate in Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Far apparire un commento a una risorsa nella finestrina guida nell'editor del codice]]&lt;br /&gt;
&lt;br /&gt;
* [[Icone messe a disposizione da Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare in un file compilato .gambas gli eventuali file esterni in esso allegati]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare la cartella principale dei file sorgenti di Gambas contenente la sub-cartella di un file immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[La cartella ove sono salvati in copia i file delle informazioni della wiki ufficiale sulle risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'indirizzo effettivo dei file ospitati in un progetto Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Visualizzare tutti gli elementi rilevanti di Gambas contenuti dal codice di un progetto]]&lt;br /&gt;
&lt;br /&gt;
== Gambas con HTML e JavaScript ==&lt;br /&gt;
&lt;br /&gt;
* [[Gambas con HTML e JavaScript - Uso necessario dell'oggetto WebView]]&lt;br /&gt;
&lt;br /&gt;
==== Applicazioni specifiche ====&lt;br /&gt;
&lt;br /&gt;
* [[Creare un ComboBox in una tabella e passare i suoi valori selezionati al codice Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire dati con un InputBox mediante codice HTML]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere un valore generato da un codice HTML/JavaScript]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare una finestra tipo MessageBox mediante codice HTML]]&lt;br /&gt;
&lt;br /&gt;
* [[Testo scorrevole dall'alto verso il basso e viceversa]]&lt;br /&gt;
&lt;br /&gt;
== Gambas e Arduino ==&lt;br /&gt;
&lt;br /&gt;
* [[Far interagire Gambas con Arduino]]&lt;br /&gt;
&lt;br /&gt;
* [[Inviare dati ad Arduino]]&lt;br /&gt;
&lt;br /&gt;
* [[Ricevere dati da Arduino]]&lt;br /&gt;
&lt;br /&gt;
* [[Ricevere da Arduino un tipo di dato di dimensione superiore al Byte]]&lt;br /&gt;
&lt;br /&gt;
* [[Ricevere una Struttura da Arduino]]&lt;br /&gt;
&lt;br /&gt;
== Gambas3 &amp;amp; SubVersion ==&lt;br /&gt;
&lt;br /&gt;
* [[Gambas3 &amp;amp; SubVersion]]&lt;br /&gt;
&lt;br /&gt;
== Gestione Basi di Dati ==&lt;br /&gt;
&lt;br /&gt;
* [[Installazione Server PostgreSQL]]&lt;br /&gt;
&lt;br /&gt;
== Gestione dei dati audio e dei file audio ==&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare i beat per minuto (BpM) di un file audio con le funzioni esterne del API di Libaubio]]&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare la durata di un file audio WAV]]&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare la durata di un file MP3 con le sole risorse native di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare la potenza di picco e di ampiezza di un file WAV con le funzioni esterne del API di Libaudiofile]]&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare la quantità di dati audio grezzi di un file WAV necessari per eseguire tot secondi di audio]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere alcune informazioni generali di un file OGG con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il bitrate di un file MP3 con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in tempo reale con &amp;quot;proc...fdinfo&amp;quot; la quantità dei dati elaborati di un file audio]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in tempo reale la quantità di frame audio processati dalla scheda audio]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la frequenza di campionamento di un file MP3 con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la quantità di canali di un file MP3 con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la versione e il layer di un file MP3 con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere quale file audio un programma sta eseguendo]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file audio in formato OggVorbis con le funzioni esterne del API di libfishsound, libsndfile e liboggz]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file audio in formato OggVorbis con le funzioni esterne del API di libsndfile]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file audio in testo con le risorse del API di Sndfile]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file OggVorbis in WAV con le funzioni esterne del API di Libvorbisidec]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file OggVorbis in WAV ed estrarne anche informazioni con le funzioni esterne del API di VorbisFile]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file WAV in formato AAC con le funzioni esterne del API di Faac]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file WAV in formato MP3 con le funzioni esterne del API di Lame]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file WAV in formato OggVorbis con le funzioni esterne del API di libvorbisfile, libvorbisenc e libogg]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare il blocco d'intestazione di un file WAV avendo dati audio grezzi]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;FONT Color=blue&amp;gt;[[Creare un Client di Jack con le funzioni esterne del API di libjack]]&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Creare un Client di Jack con le funzioni esterne del API di libJack e GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file WAV da un file .orc e un file .sco di Csound con le funzioni esterne del API di libcsound64]]&lt;br /&gt;
&lt;br /&gt;
* [[Decomprimere e decodificare un file mp3 con le funzioni esterne del API di AVbin]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio ed estrarne informazioni mediante le funzioni esterne del API di libcsfml]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante il codice html]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante il Metodo .Open() della Classe Desktop]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Eseguire un file audio mediante l'oggetto MediaView del componente gb.media.form]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante le funzioni esterne del API di Alsa e SndFile]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante le funzioni esterne del API di GSound]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante le funzioni esterne del API di libaudiofile e di Alsa]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante le funzioni esterne del API di Mpv]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante le funzioni esterne del API di PortAudio e SndFile]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante le funzioni esterne del API di Rhythmbox]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file mp3 usando l'API di Smpeg]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file WAV mediante le funzioni esterne del API di Flite]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file WAV mediante le funzioni esterne del API di libaudio e di Alsa]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre da un file FLAC i dati dell'immagine contenuta]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre da un file MP3 i soli dati audio grezzi mediante la libreria Libmad]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre da un file WAV i dati audio grezzi mediante le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati audio da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i TAG da un file MP3 con le funzioni esterne del API di Id3tag]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i TAG da un file MP3 con le sole funzioni di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i TAG da un file OggVorbis con le sole funzioni di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i TAG da un file SPC con le funzioni esterne del API di Libspctag]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni da un file .wav]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni da un file audio MOD con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni da un file MP3 con le funzioni esterne del API di Smpeg]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni da un file OggVorbis con le funzioni esterne del API di Vorbisfile]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni da un file VOC con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni e TAG da file audio con le funzioni esterne del API di Libtag_c]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni e TAG da un file audio con le funzioni esterne del API di SndFile]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni e TAG da un file MP3 con le funzioni esterne del API di Avbin]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni generali da un file audio aiff con le sole funzioni di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni generali da un file audio con le funzioni esterne del API di Libaudiofile]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni generali da un file audio flac]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre l'immagine contenuta in un file MP3 con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Fondere insieme due file WAV]]&lt;br /&gt;
&lt;br /&gt;
* [[Generare un'onda sinusoidale]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare le frequenze presenti in un'onda audio con le funzioni esterne della libreria Libaubio]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[La gestione dei file audio mediante il componente gb.openal]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[La gestione dei file audio mediante il componente gb.sdl2.audio]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file audio mediante le funzioni esterne del API di Allegro 5]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file audio mediante le funzioni esterne del API di Canberra]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file audio mediante le funzioni esterne del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file audio mediante le funzioni esterne del API di MikMod]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file audio mediante le funzioni esterne del API di Mpeg3]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file audio mediante le funzioni esterne del API di mpg123]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file audio mediante le funzioni esterne del API di Sox]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[La gestione dell'audio e dei file audio mediante il componente gb.media]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di ALSA]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di LibAo]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di OpenAL]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di Opus]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di PulseAudio]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di Sndio]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di VLC]]&lt;br /&gt;
&lt;br /&gt;
* [[La struttura di un file MPEG]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il volume audio di un file WAV mediante le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il volume e la frequenza di campionamento di file audio WAV e AIFF con l'API di Libaudio]] &lt;br /&gt;
&lt;br /&gt;
* [[Modificare la frequenza di campionamento di un file audio con l'API di Libresample e Libsndfile]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare la frequenza di campionamento di un file audio con l' API di Libsamplerate e Libsndfile]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un file WAV da un file Midi con le funzioni esterne del API di FluidSynth]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un file WAV da un file Midi con le funzioni esterne del API di WildMidi]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere con le funzioni esterne del API di Rhythmbox se un file contiene dati audio e/o video]]&lt;br /&gt;
&lt;br /&gt;
* [[Suddividere in due o più parti coerenti e funzionali un file audio mp3]]&lt;br /&gt;
&lt;br /&gt;
* [[Unire due file WAV]]&lt;br /&gt;
&lt;br /&gt;
* [[Visualizzare la forma d'onda di un file WAV]]&lt;br /&gt;
&lt;br /&gt;
==== Ascolto radio da flusso web ====&lt;br /&gt;
&lt;br /&gt;
* [[Registrare in tempo reale il flusso di dati audio di una radio WEB con le risorse della Classe HttpClient di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Registrare in tempo reale in un file l'audio di una radio WEB con le funzioni esterne del API di VLC]]&lt;br /&gt;
&lt;br /&gt;
* [[Riproduzione dell'audio di radio WEB con il Componente gb.media]]&lt;br /&gt;
&lt;br /&gt;
* [[Riproduzione dell'audio di radio WEB con le funzioni esterne del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Riproduzione dell'audio di radio WEB con le funzioni esterne del API di VLC]]&lt;br /&gt;
&lt;br /&gt;
* [[Riproduzione dell'audio di radio WEB con l'oggetto WebView e con il codice HTML]]&lt;br /&gt;
&lt;br /&gt;
* [[Riproduzione e contemporanea registrazione dell'audio di radio WEB mediante il Componente gb.media]]&lt;br /&gt;
&lt;br /&gt;
==== Codifica del parlato e decodifica dei dati codificati ====&lt;br /&gt;
&lt;br /&gt;
* [[Codifica del parlato mediante le funzioni esterne del API di Speex]]&lt;br /&gt;
&lt;br /&gt;
* [[Decodifica dei dati precedentemente codificati mediante le funzioni esterne del API di Speex]]&lt;br /&gt;
&lt;br /&gt;
==== Dal testo al parlato (Text-To-Speech) ====&lt;br /&gt;
&lt;br /&gt;
* [[&amp;quot;Dal testo al parlato&amp;quot; mediante le funzioni esterne del API di eSpeack]]&lt;br /&gt;
&lt;br /&gt;
* [[&amp;quot;Dal testo al parlato&amp;quot; mediante le funzioni esterne del API di Pico TTS]]&lt;br /&gt;
&lt;br /&gt;
* [[&amp;quot;Dal testo al parlato&amp;quot; mediante le funzioni esterne del API di Speech-Dispatcher]]&lt;br /&gt;
&lt;br /&gt;
==== I/O audio ====&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di ALSA i dispositivi audio presenti nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di PortAudio i dispositivi audio presenti nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di RtAudio i dispositivi audio presenti nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di SDL2 i dispositivi audio presenti nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Rilevare se la scheda audio sta processando dati audio]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere con le funzioni esterne di ALSA quali schede audio sono installate nel computer]]&lt;br /&gt;
&lt;br /&gt;
== Gestione dei dati MIDI e dei file ''.mid''==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la durata di un file Midi con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la durata di un file Midi mediante le funzioni esterne del API di Allegro]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la durata in secondi del Tempo Delta fra due Eventi Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la lunghezza in byte di ciascuna traccia MTrk di un file Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere quale file Midi un programma sta eseguendo]]&lt;br /&gt;
&lt;br /&gt;
* [[Conversione del Tempo Delta fra due eventi Midi dai secondi nel valore esadecimale in formato &amp;quot;a lunghezza variabile&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire i dati grezzi delle note del messaggio Midi &amp;quot;NoteOn&amp;quot; nei corrispondenti simboli del protocollo ABC di notazione musicale]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un semplice Client Midi di Jack]]&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare una traccia da un file MIDI]]&lt;br /&gt;
&lt;br /&gt;
* [[Emulare con il Midi il suono del bip prodotto dall'altoparlante del PC]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file MIDI mediante il codice html]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Eseguire un file MIDI mediante il componente gb.openal]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Eseguire un file MIDI mediante il componente gb.sdl2.audio]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file MIDI mediante il Metodo .Open() della Classe Desktop]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Eseguire un file MIDI mediante l'oggetto MediaView del componente gb.media.form]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati degli eventi Midi da un file Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati MIDI da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati Midi dal file audio AIFF con le sole funzioni di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre il testo da un file Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni da un file Midi con le sole funzioni di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Fondere insieme due file MIDI]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestione del MIDI con ALSA]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestione del MIDI con O.S.S.]] (&amp;lt;FONT color=darkred&amp;gt;obsoleto&amp;lt;/font&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare dati Midi grezzi con le funzioni esterne del API di RtMidi]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare dati Midi grezzi con le funzioni esterne del API di Sndio]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare ed inviare dati Midi grezzi con le funzioni esterne del API di PortMidi]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[La gestione dei dati Midi e dei file MIDI mediante il componente gb.media]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei dati Midi mediante le funzioni esterne del API di Libsmf]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei dati Midi senza l'uso delle funzioni di Alsa]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file MIDI mediante le funzioni esterne del API di Fluidsynth]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file MIDI mediante le funzioni esterne del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file MIDI mediante le funzioni esterne del API di OpenAl]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file MIDI mediante le funzioni esterne del API di Rhythmbox]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file MIDI mediante le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file MIDI mediante le funzioni esterne del API di VLC]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file MIDI mediante le funzioni esterne del API di WildMidi]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare i dati del blocco d'intestazione e delle tracce di un file Midi con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la frequenza corrispondente ad una nota Midi e viceversa]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare la corrispondenza fra il numero di tracce dichiarato nel file Midi e quelle effettive]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare l'integrità dei dati del blocco d'intestazione di un file Midi]]&lt;br /&gt;
&lt;br /&gt;
==== I/O Midi ====&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di ALSA i dispositivi Midi presenti nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di PortMidi le porte Midi disponibili nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di RtMidi le porte Midi disponibili nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di TSE3 le porte Midi disponibili nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere i Client Midi di ALSA correnti attivi nel sistema ]]&lt;br /&gt;
&lt;br /&gt;
====Gambas, Midi e Arduino====&lt;br /&gt;
&lt;br /&gt;
* [[Inviare dati Midi da Arduino a Gambas]]&lt;br /&gt;
&lt;br /&gt;
====Gestione dei file soundfont bank====&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file soundfont bank sf2 in un file WAV con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre da un file sf2 i dati audio di ciascun suono campionato e creare un file wav]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni generali dai tag di un file soundfont bank sf2 con le sole funzioni di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare i nomi e le rispettive posizioni degli strumenti musicali in un file sf2 con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un file di dati audio grezzi da un file .pat]]&lt;br /&gt;
&lt;br /&gt;
==== Informazioni e risorse sul Midi ====&lt;br /&gt;
&lt;br /&gt;
* [[Il protocollo Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[La struttura di un file Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[Realizzazione dispositivi Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[Siti web sul Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[Sulla nuova versione Midi 2.0]]&lt;br /&gt;
&lt;br /&gt;
== Gestione dei file ODT ==&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre il file thumbnail contenuto nel file odt]]&lt;br /&gt;
&lt;br /&gt;
* [[Unire più file ODT in un unico file ODT]]&lt;br /&gt;
&lt;br /&gt;
== Gestione dei file PDF ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Codice essenziale per mostrare un file PDF con le risorse del Componente gb.poppler]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Cercare una parola in una pagina di un file PDF con le risorse del Componente gb.poppler]]&lt;br /&gt;
&lt;br /&gt;
* [[Comprimere un file PDF con le funzioni esterne del API di Ghostscript]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire in immagine una parte di una pagina PDF con le risorse del Componente gb.poppler]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file PNG in PDF con le funzioni del API di Cairo]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire una pagina di un file PDF in una immagine con le risorse del Componente gb.poppler]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Creare un file PDF con la proprietà .OutputFile della Classe Printer]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file PDF con le funzioni esterne del API di Cairo]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file PDF con le funzioni esterne del API di Haru]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file PDF con le funzioni esterne della libreria PDFGen]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Creare un file PDF con le risorse del Componente gb.cairo]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file PDF da un file immagine con le risorse del Componente gb.cairo]]&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare i dati immagine da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati audio da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati MIDI da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati video da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre testo e immagini da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Stampare un file PDF]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Struttura di un file PDF]]&lt;br /&gt;
&lt;br /&gt;
== Gestione dei file PS ==&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file PS con le risorse del API di Cairo]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file PS con le risorse del Componente gb.cairo]]&lt;br /&gt;
&lt;br /&gt;
== Gestione dei file RTF ==&lt;br /&gt;
&lt;br /&gt;
* [[Documentazione per la gestione dei file di testo RTF]]&lt;br /&gt;
&lt;br /&gt;
== Gestione del CD e del DVD ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il numero di titoli e di capitoli presenti in un DVD video con le funzioni del API di libdvdread]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero di settori di un CD/DVD in ore,minuti,secondi con le funzioni del API Libdiscid]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire una traccia di un CD-Audio con le risorse del API di libvlc]] &lt;br /&gt;
&lt;br /&gt;
* [[Eseguire una traccia di un CD-Audio con le risorse di linux/cdrom.h e le funzioni esterne di ALSA]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati presenti in un CD-Audio con le risorse di linux/cdrom.h]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare in GNOME il percorso contenente i file delle tracce di un CD-audio]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[La gestione del CD e del DVD mediante il Componente gb.media]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[La gestione del CD e del DVD mediante la funzione esterna 'gst_parse_launch()' di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione del CD e del DVD mediante le funzioni del API di libcdio]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione del CD e del DVD mediante le funzioni del API di SDL]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni di un CD con le funzioni del API di libcdaudio]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni di un CD con la funzione ioctl()]]&lt;br /&gt;
&lt;br /&gt;
== Gestione della Pen-Drive ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere i dispositivi pen-drive usb montati sul sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il contenuto di una pen-drive mediante le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
== Gestione delle immagini e dei colori ==&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere il canale Alfa a un Oggetto Image privo]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare a un Oggetto ''Image'' i valori pixel contenuti in un'area di memoria puntata da un Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare a un Oggetto ''Image'' i valori pixel contenuti in un vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Cancellare una immagine in una PictureBox o in una ImageView]]&lt;br /&gt;
&lt;br /&gt;
* [[Caricare in un Controllo grafico i file immagine come Picture]]&lt;br /&gt;
&lt;br /&gt;
* [[Caricare in un Oggetto grafico le icone messe a disposizione da Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Caricare un file di formato TIFF e da questo creare un file immagine di altro formato con l'API di GDK_PixBuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Catturare un'immagine con una webcam mediante le funzioni esterne del API di libsane]]&lt;br /&gt;
&lt;br /&gt;
* [[Catturare un'immagine con una webcam mediante le funzioni esterne del API di libv4l2]]&lt;br /&gt;
&lt;br /&gt;
* [[Cliccare in un oggetto qualsiasi o in una immagine suddivisi in rettangoli]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Come Gambas gestisce le immagini]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Configurazione, organizzazione ed impostazione dell'oggetto Image secondo i sorgenti di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere i formati immagine disponibili con GTK mediante le funzioni del API di GDK-PixBuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in modo sicuro il formato di un file immagine mediante le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire il formato RGBA di un colore nei corrispondenti valori decimale ed esadecimale]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire il valore di un colore da RGB in HSV]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire il valore di un colore in RGBA]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire immagini RAW di fotocamere digitali mediante le funzioni esterne del API di Libraw]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file immagine di un qualsiasi formato in un file immagine TIFF mediante le funzioni esterne del API di Libgdk_pixbuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file immagine PCX in un file immagine PNG mediante le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un'immagine a colori in un'immagine a scala di grigi mediante le funzioni esterne del API di Libgdk_pixbuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un'immagine da un formato ad un altro mediante le funzioni esterne del API di FreeImage]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un'immagine da un formato ad un altro mediante le funzioni esterne del API di Imlib2]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un'immagine in un file immagine di formato ICO mediante le funzioni esterne del API di Libgdk_pixbuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un oggetto di tipo &amp;quot;Image&amp;quot; in un file di formato TIFF o ICO con le funzioni esterne del API di Libgdk_pixbuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare da codice un'immagine trasparente]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file immagine da dati immagine grezzi mediante le funzioni del API di Imlib2]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un'immagine senza avere dati immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[Curvare la linea di testo in un oggetto Image]]&lt;br /&gt;
&lt;br /&gt;
* [[Decomprimere un file immagine jpeg per ottenerne i dati grezzi mediante le funzioni esterne del API di libjpeg]]&lt;br /&gt;
&lt;br /&gt;
* [[Desaturare un colore]]&lt;br /&gt;
&lt;br /&gt;
* [[Elenco dei nomi dei colori e i corrispondenti valori delle Costanti della Classe Color utilizzati da Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Elenco dei nomi dei colori e i corrispondenti valori RGB sotto X Window]]&lt;br /&gt;
&lt;br /&gt;
* [[Fondere due immagini in una sola]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestione delle immagini con le risorse di Gambas ma senza attivazione dei Componenti che fanno riferimento alle librerie grafiche QT e GTK]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestire un oggetto Image agendo direttamente sulle risorse dei sorgenti Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Immagine di sfondo al testo in una TextEdit ed in una TextLabel]]&lt;br /&gt;
&lt;br /&gt;
* [[Immagine scorrevole]]&lt;br /&gt;
&lt;br /&gt;
* [[Immagine tratta dal WEB resa lampeggiante]]&lt;br /&gt;
&lt;br /&gt;
* [[Imporre un colore uniforme semitrasparente su una immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare i colori dei pixel di una immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare i valori RGBA dei pixel di una immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare il colore di un determinato pixel]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire del testo in una Image ed in una Picture]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire in un'immagine uno sfondo colorato mediante le funzioni esterne del API di Libgdk_pixbuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un'immagine all'interno di un'altra immagine mediante le funzioni esterne del API di Libgdk_pixbuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere le informazioni di una Image dalle sue risorse dei sorgenti di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Modi di caricare un'immagine di tipo ''Picture'']]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare i colori dei pixel di un'immagine con la proprietà .Data della Classe Image ed i Memory Stream]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il colore di un pixel di un'immagine se esso è minore o maggiore di un dato valore]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare l'opacità di un'immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare le dimensioni di una Image usando il suo Metodo .Stretch]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un'immagine con funzioni del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un'immagine con il Controllo WebView]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un'immagine nella finestra di un Editor di testo con funzioni del API di X11 e Imlib2]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare una parte di un'immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni su file immagine JPEG con le funzioni del API di libjpeg]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni su un file immagine PNG con le funzioni del API di libpng]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni sul file immagine con le funzioni del API di GTK+3 e GDK-PixBuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere dati grezzi di un file immagine mediante le funzioni del API di GDK-PixBuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'effettivo valore del colore del pixel individuato con la Proprietà vettoriale Image.Pixels]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere Metadati Exif da un'immagine JPEG con le risorse del API di libexif]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un file immagine PNG da un'immagine di formato SVG]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un file PDF da una Image]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere una schermata (&amp;quot;screenshot&amp;quot;) con Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere una schermata (screenshot) del desktop con le risorse del API di X11 e di Cairo]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere una schermata (screenshot) del desktop con le risorse del API di X11 e di Imlib2]]&lt;br /&gt;
&lt;br /&gt;
* [[Rendere trasparente una immagine in base ad un colore specifico]]&lt;br /&gt;
&lt;br /&gt;
* [[Ridimensionare e mostrare un'immagine in base al punto ove si è cliccato con il puntatore del mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare e ribaltare sul proprio asse una immagine con le funzioni del API di FreeImage]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare specularmente una immagine ed un carattere]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare una immagine sul proprio asse centrale]]&lt;br /&gt;
&lt;br /&gt;
* [[Salvare e richiamare i dati di un file immagine con Settings]]&lt;br /&gt;
&lt;br /&gt;
* [[Salvare un file immagine con le funzioni del API di GDK-PixBuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Salvare una Image come file immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti pixel occupa un testo in un'immagine mediante le funzioni del API di Imlib2]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Scaricare una immagine da un sito internet]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Scaricare una immagine dal sito &amp;quot;Cover Art Archive&amp;quot; mediante le funzioni esterne della libreria libcoverart]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse un'immagine all'interno di una PictureBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere un testo in un'immagine mediante le funzioni del API di Imlib2]]&lt;br /&gt;
&lt;br /&gt;
=== Gestione delle immagini con CAIRO ===&lt;br /&gt;
&lt;br /&gt;
* [[Caricare un Oggetto ''Image'' direttamente in una ''ImageView'' con gb.cairo]]&lt;br /&gt;
* [[Convertire un file immagine in un file PNG con le risorse del Componente gb.cairo]]&lt;br /&gt;
* [[Convertire un file PNG in PDF con le funzioni del API di Cairo]]&lt;br /&gt;
* [[Convertire un file PNG in SVG con le risorse del Componente gb.cairo]]&lt;br /&gt;
* [[Creare file PNG con le risorse del Componente gb.cairo]]&lt;br /&gt;
* [[Creare file PNG con le funzioni esterne del API di Cairo e di Pango]]&lt;br /&gt;
* [[Creare file PNG con le funzioni esterne del API di Cairo]]&lt;br /&gt;
* [[Creare un file immagine PNG trasparente con le funzioni esterne del API di Cairo]]&lt;br /&gt;
* [[Ridurre le dimensioni di una immagine con il Metodo &amp;quot;.Scale()&amp;quot; del Componente gb.cairo]]&lt;br /&gt;
* [[Spostare il testo con il mouse all'interno dell'area grafica con la Classe Cairo]]&lt;br /&gt;
&lt;br /&gt;
=== Gestione delle immagini con il Componente gb.media ===&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le dimensioni di una immagine mediante il Componente gb.media]]&lt;br /&gt;
* [[Convertire i formati immagine mediante il Componente gb.media]]&lt;br /&gt;
* [[Effetto caleidoscopico di un'immagine PNG con il Componente gb.media]]&lt;br /&gt;
* [[Estrarre e salvare singole immagini da una ripresa video mediante WebCam effettuata con il Componente gb.media]]&lt;br /&gt;
* [[Estrarre e salvare singole immagini durante l'esecuzione di un file video mediante il Componente gb.media]]&lt;br /&gt;
* [[Leggere codici a barre con una webcam mediante il Componente gb.media]]&lt;br /&gt;
* [[Mostrare un'immagine mediante il Componente gb.media]]&lt;br /&gt;
* [[Trasformare un'immagine in ascii art mediante il Componente gb.media]]&lt;br /&gt;
&lt;br /&gt;
=== Gestione delle immagini con ImageMagick ===&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file immagine in un altro formato immagine con le funzioni esterne del API di ImageMagick]]&lt;br /&gt;
* [[Modificare la risoluzione in PPI di un'immagine mediante le funzioni esterne del API di ImageMagick]]&lt;br /&gt;
* [[Ridimensionare un'immagine mediante le funzioni esterne del API di ImageMagick]]&lt;br /&gt;
* [[Ruotare un'immagine mediante le funzioni esterne del API di ImageMagick]]&lt;br /&gt;
* [[Sfumare radialmente un'immagine mediante le funzioni esterne del API di ImageMagick]]&lt;br /&gt;
* [[Spostare il contenuto all'interno di un'immagine mediante le funzioni esterne del API di ImageMagick]]&lt;br /&gt;
&lt;br /&gt;
=== Gestione delle immagini e dei file di tipo GIF ===&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file GIF in un file di formato OGV, Matroska e MP4 mediante il Componente gb.media]]&lt;br /&gt;
* [[Convertire un file immagine in un file immagine di tipo GIF con le funzioni esterne del API di LibFreeImage]]&lt;br /&gt;
* [[Creare file GIF con le funzioni esterne del API di Libplot]]&lt;br /&gt;
* [[Creare una GIF animata con le funzioni esterne del API di Libplot]]&lt;br /&gt;
* [[Creare un file immagine GIF con sfondo colorato mediante le funzioni del API di GIFLIB]]&lt;br /&gt;
* [[Creare un file immagine trasparente di tipo GIF con le funzioni del API di GIFLIB]]&lt;br /&gt;
* [[Disegnare e salvare un'immagine di tipo GIF con le funzioni del API di GifLib]]&lt;br /&gt;
* [[Estrarre i fotogrammi che compongono un file immagine di tipo GIF animata]]&lt;br /&gt;
* [[Estrarre informazioni da una GIF animata relative al tempo di esecuzione dei fotogrammi]]&lt;br /&gt;
* [[Modificare il colore di sfondo di un'immagine GIF con le funzioni del API di GifLib]]&lt;br /&gt;
* [[Ottenere alcune informazioni su file immagine GIF con le funzioni del API di GifLib]]&lt;br /&gt;
* [[Utilizzare una GIF animata]]&lt;br /&gt;
&lt;br /&gt;
=== Gestione delle immagini e dei file di tipo SVG ===&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file immagine SVG in un file immagine di altro formato con le funzioni esterne delle librerie librsvg e libgdk_pixbuf]]&lt;br /&gt;
* [[Convertire un file PNG in SVG con le risorse del Componente gb.cairo]]&lt;br /&gt;
* [[Creare file SVG con le risorse del Componente gb.cairo]]&lt;br /&gt;
* [[Creare file SVG con le funzioni esterne del API di Cairo]]&lt;br /&gt;
* [[Gestire un file immagine di formato SVG con la Classe SvgImage]]&lt;br /&gt;
* [[Mostrare in un Form un'immagine SVG]]&lt;br /&gt;
* [[Ottenere un file immagine PNG da un'immagine di formato SVG]]&lt;br /&gt;
&lt;br /&gt;
=== Struttura di file immagine particolari ===&lt;br /&gt;
&lt;br /&gt;
* [[Struttura del formato BMP]]&lt;br /&gt;
* [[Struttura del formato GIF]]&lt;br /&gt;
* [[Struttura del formato PNG]]&lt;br /&gt;
* [[Struttura del formato TIFF]]&lt;br /&gt;
* [[Struttura del formato XBM]]&lt;br /&gt;
* [[Struttura del formato XPM]]&lt;br /&gt;
* [[Struttura e gestione del file di tipo PNM]]&lt;br /&gt;
&lt;br /&gt;
== Grafici ==&lt;br /&gt;
&lt;br /&gt;
* [[Creare un grafico con il componente gb.chart]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un grafico per la console/Terminale]]&lt;br /&gt;
&lt;br /&gt;
== GridView ==&lt;br /&gt;
&lt;br /&gt;
* [[Adattare automaticamente la dimensione del font del testo presente nelle celle di una GridView al loro ridimensionarsi]]&lt;br /&gt;
&lt;br /&gt;
* [[Adattare automaticamente l'altezza e la larghezza di una cella di una GridView al testo contenuto]]&lt;br /&gt;
&lt;br /&gt;
* [[Adattare automaticamente l'altezza e la larghezza di una cella di una GridView all'immagine contenuta]]&lt;br /&gt;
&lt;br /&gt;
* [[Adattare l'altezza e la larghezza della GridView al numero delle righe e delle in essa contenute]]&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere colonne in una GridView da codice]]&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere righe in una GridView da codice mediante un tasto]]&lt;br /&gt;
&lt;br /&gt;
* [[Cambiare il colore di fondo di una riga cliccata in una GridView e far tornare quello di un'altra al colore iniziale]]&lt;br /&gt;
&lt;br /&gt;
* [[Catturare l'immagine di una GridView con il Componente gb.media]]&lt;br /&gt;
&lt;br /&gt;
* [[Centrare il testo nell'header di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Colorare il bordo delle righe di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Colorare il fondo di una cella di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Colorare il fondo di una riga di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Colorare la griglia della GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Effettuare una ricerca nelle celle di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare una riga da una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Far combaciare le immagini poste in due celle adiacenti di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestire testo, colori e immagini nelle celle della GridView con l'Evento _Data()]]&lt;br /&gt;
&lt;br /&gt;
* [[Header di una GridView contenente due o più righe testuali]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare due parole ciascuna all'estremità opposta di una cella di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare le righe, le colonne e l'header di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare font, colore dei caratteri e colore di sfondo diversi per ogni cella di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare lo spessore del bordo delle righe e delle singole celle di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare la cella della GridView nella quale si è cliccato]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare con quale tasto del mouse si è cliccato in una cella della GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un oggetto in una cella di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un ulteriore testo in una GridView sempre nell'ultima riga]] &lt;br /&gt;
&lt;br /&gt;
* [[Inserire un'immagine adattandola alle dimensioni della cella di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare il testo contenuto in una cella di una GridVew al semplice passare del puntatore del mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un Balloon in una GridView in corrispondenza della cella nella quale si è cliccato]]&lt;br /&gt;
&lt;br /&gt;
* [[Nascondere le linee della griglia di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Nascondere tutte le celle di una riga di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Nascondere una Colonna di una GridView]] &lt;br /&gt;
&lt;br /&gt;
* [[Ordinare i valori all'interno di una colonna di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Ordinare in una GridView i valori di più righe in base ad una colonna]]&lt;br /&gt;
&lt;br /&gt;
* [[Ordinare manualmente i valori all'interno di una colonna di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Scambiare il contenuto delle celle di una GridView mediante trascinamento con il mouse ]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere con la tastiera nelle celle di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare il testo da una cella a un'altra di una GridView con il Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare il testo da una cella a un'altra di una GridView senza Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare il testo da una cella di una GridView nella cella di un'altra GridView con il Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare il testo da una cella di una GridView nella cella di un'altra GridView senza Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare su e giù le righe di una GridView con i tasti &amp;quot;up&amp;quot; e &amp;quot;down&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare un'immagine da una cella a un'altra di una GridView con il Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare un'immagine da una cella a un'altra di una GridView senza Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare un'immagine da una PictureBox a una cella di una GridView con il Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare una GridView e il suo contenuto]]&lt;br /&gt;
&lt;br /&gt;
* [[Unire in una GridView le celle in un'unica grande cella]]&lt;br /&gt;
&lt;br /&gt;
== Hard Disk ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere numero seriale, modello ed altre informazioni su hard-disk SATA con la funzione esterna ioctl()]]&lt;br /&gt;
&lt;br /&gt;
== Header file dell'ANSI C e Gambas ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la quantità di memoria occupata dai tipi di dati di C e la loro locazione nei file header]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre il valore di una costante definita in un file d'intestazione in C]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la descrizione del tipo di errore dai file header &amp;quot;errno-base.h&amp;quot; e &amp;quot;errno.h&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== ImageStat ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della classe ImageStat]]&lt;br /&gt;
&lt;br /&gt;
== InputBox ==&lt;br /&gt;
&lt;br /&gt;
* [[Impostare le coordinate ove far aprire la finestra dell'InputBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare l'ID della finestra dell'InputBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Imporre in casi particolari la riapertura dell'InputBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare le dimensioni di un InputBox]]&lt;br /&gt;
&lt;br /&gt;
== Installazione di Gambas3 dai pacchetti binari ==&lt;br /&gt;
&lt;br /&gt;
* [[Installazione di Gambas3 dai pacchetti binari]]&lt;br /&gt;
&lt;br /&gt;
== Interagire con la tastiera ==&lt;br /&gt;
&lt;br /&gt;
* [[Immissione di dati dalla tastiera durante l'esecuzione di un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire che cliccando su un tasto della tastiera si produca più volte il medesimo effetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire che, mentre si tiene premuto un tasto della tastiera, si produca un effetto cliccando e rilasciando un altro tasto]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare i tasti premuti della tastiera]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare mediante le funzioni del API di SDL2 tutti gli scancode disponibili]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[_KeyPress() - _KeyRelease() - Key]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Sapere via codice se il tasto 'Blocco Maiuscole' è attivo]]&lt;br /&gt;
&lt;br /&gt;
* [[Usare gli Eventi _KeyPress() e _KeyRelease() in un programma con interfaccia a linea di comando]]&lt;br /&gt;
&lt;br /&gt;
== Interfaccia a linea di comando ==&lt;br /&gt;
&lt;br /&gt;
* [[CLI]]&lt;br /&gt;
&lt;br /&gt;
== Interfacciare Gambas con librerie condivise esterne .so ==&lt;br /&gt;
&lt;br /&gt;
===Richiamare funzioni esterne mediante ''EXTERN''===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Extern: richiamare funzioni esterne a Gambas]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Gestione in Gambas delle Strutture esterne===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Gestione delle Strutture esterne]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Gestire con sicurezza le Strutture esterne]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Gestire con un Puntatore le Strutture esterne]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare un valore ad una Struttura di una libreria esterna scrivendo con i Memory Stream nella sua area di memoria]]&lt;br /&gt;
&lt;br /&gt;
* [[Dereferenziare senza Memory-Stream un Puntatore ad una Struttura, passato da una funzione esterna]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare come Struttura in Gambas una Struttura esterna dichiarata, come proprio membro di tipo Puntatore, da una Struttura principale esterna]]&lt;br /&gt;
&lt;br /&gt;
===Richiamare particolari funzioni esterne delle librerie standard in C===&lt;br /&gt;
&lt;br /&gt;
* [[Richiamo ed uso di particolari funzioni esterne delle librerie standard scritte in C]]&lt;br /&gt;
&lt;br /&gt;
===Ulteriori contributi sulla gestione delle librerie condivise .so e delle funzioni esterne===&lt;br /&gt;
&lt;br /&gt;
* [[Avviare con l'appoggio di una libreria esterna un semplice sorgente C senza compilarlo]]&lt;br /&gt;
&lt;br /&gt;
* [[Caricare i dati di un vettore scritto in C in un vettore di un'applicazione Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Come creare una Libreria condivisa (Shared Library) .so]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Come creare una Libreria condivisa .so impostando il suo codice sorgente nell'applicazione Gambas]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Creare una libreria condivisa .so esterna dai file sorgente presenti in una pagina web e senza installarla o caricarla nel sistema]]  &lt;br /&gt;
&lt;br /&gt;
* [[Emulare in Gambas la funzione fwrite() di C]]&lt;br /&gt;
&lt;br /&gt;
* [[Emulare in Gambas la funzione memcpy() di C]]&lt;br /&gt;
&lt;br /&gt;
* [[Emulare in Gambas le macro _IOC, _IOR, _IOW e _IOWR usate con la funzione ioctl()]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestire una libreria esterna che ritorna una Linked List]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire nella libreria condivisa esterna .so anche codice Assembly]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'indirizzo e il valore di una Costante e di una variabile globale situate in una libreria condivisa]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare a una funzione esterna un Puntatore che successivamente deve essere passato anche ad altre funzioni esterne]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare un'area riservata di memoria ad una funzione esterna]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare con l'appoggio di una libreria esterna una funzione presente in un sorgente C]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare funzioni esterne di librerie scritte in C++]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivendo particolari librerie esterne in C]]&lt;br /&gt;
&lt;br /&gt;
* [[Un contributo sulle funzioni esterne in Gambas a cura di Doriano B.]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare quali dati Gambas passa ad una funzione esterna]]&lt;br /&gt;
&lt;br /&gt;
===Altre modalità di chiamata delle funzioni esterne===&lt;br /&gt;
&lt;br /&gt;
* [[Caricamento dinamico di librerie .so con il subsistema 'loadso' di SDL2]]&lt;br /&gt;
* [[Chiamare funzioni esterne mediante le risorse della libreria dlfcn.h]]&lt;br /&gt;
* [[Utilizzare il metodo 'System.GetExternSymbol()' per richiamare funzioni esterne di librerie condivise]]&lt;br /&gt;
&lt;br /&gt;
== Librerie .gambas ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Creare, importare ed utilizzare librerie .gambas]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Librerie della Comunità Gambas-it.org ====&lt;br /&gt;
&lt;br /&gt;
* [[RTFLib.gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[strLib.gambas]]&lt;br /&gt;
&lt;br /&gt;
== ListBox ==&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare ad un oggetto di testo il contenuto di un elemento di una ListBox cliccandovi sopra]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare colori allo sfondo ed al testo di una riga selezionata di una ListBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare uno o più item di una ListBox selezionati con il mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Far coincidere da codice l'altezza di una ListBox con la somma delle altezze dei suoi Item]]&lt;br /&gt;
&lt;br /&gt;
* [[Far mostrare in una ListBox le ultime voci ogni volta che il loro numero aumenta]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare il numero d'indice della riga di una ListBox sulla quale si è cliccato con il mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un array di dati di tipo stringa in una ListBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un oggetto in un item di una ListBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Interscambiare la posizione del contenuto degli item di una ListBox mediante trascinamento con il mouse ]]&lt;br /&gt;
&lt;br /&gt;
* [[ListBox con due o più righe per item]]&lt;br /&gt;
&lt;br /&gt;
* [[Riordinare manualmente con il mouse gli elementi di una ListBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Se l'Evento MouseDown() della ListBox non funziona]]&lt;br /&gt;
&lt;br /&gt;
==Liste Lineari==&lt;br /&gt;
&lt;br /&gt;
* [[Emulare in Gambas una Lista Lineare del linguaggio C]]&lt;br /&gt;
&lt;br /&gt;
== ListView ==&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere una nuova voce nella prima posizione di una Listview]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare colori allo sfondo ed al testo di una riga selezionata di una ListView]]&lt;br /&gt;
&lt;br /&gt;
* [[Evitare che appaia il popmenu quando si clicca al di fuori di un elemento di una ListView]]&lt;br /&gt;
&lt;br /&gt;
== Logging ==&lt;br /&gt;
&lt;br /&gt;
* [[Attivare e registrare informazioni un singolo file di log]]&lt;br /&gt;
&lt;br /&gt;
== Map - MapView - Coordinate geografiche - Georeferenziazione ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Istruzioni essenziali per mostrare una mappa in una MapView]]&amp;lt;/b&amp;gt;&lt;br /&gt;
* [[Arduino: misurare il campo magnetico terrestre con i magnetometri]]&lt;br /&gt;
* [[Calcolare il rilevamento (bearing) in gradi]]&lt;br /&gt;
* [[Calcolare la distanza tra due punti geografici, dei quali si conoscono latitudine e longitudine]]&lt;br /&gt;
* [[Calcolare l'area e il perimetro di poligoni disegnati sulla mappa con le risorse di gb.map]]&lt;br /&gt;
* [[Conoscere la versione più recente di Google Maps satellite]]&lt;br /&gt;
* [[Conoscere le risorse formali contenute da un oggetto della Classe _ShapeItem]]&lt;br /&gt;
* [[Convertire una coordinata dal formato gradi primi secondi del sistema EPSG:4326 WGS 84 al suo formato decimale e viceversa]]&lt;br /&gt;
* [[Convertire una coordinata geografica dal sistema EPSG:4326 WGS 84 al sistema EPSG:3857 e viceversa]]&lt;br /&gt;
* [[Convertire una coordinata geografica dal sistema UTM al sistema EPSG:4326 WGS 84 e viceversa]]&lt;br /&gt;
* [[Creare da una carta topografica i file delle tessere di una mappa e utilizzarli con MapView]]&lt;br /&gt;
* [[Disegnare sulla MapView dei cerchi concentrici al punto ove si è cliccato con il puntatore del mouse]]&lt;br /&gt;
* [[Disegnare un cerchio o un punto su una MapView]]&lt;br /&gt;
* [[Disegnare un poligono su una MapView usando l'Oggetto &amp;quot;Figlio&amp;quot; DrawingArea]]&lt;br /&gt;
* [[Disegnare un mirino come cursore del mouse su una MapView]]&lt;br /&gt;
* [[Disegnare un percorso su una MapView e calcolarne la lunghezza]]&lt;br /&gt;
* [[Elenco di raster Tile Server online con rispettive URL]]&lt;br /&gt;
* [[Eliminare un marcatore grafico da una mappa su una MapView]]&lt;br /&gt;
* [[Eseguire un file audio o Midi quando si clicca sulla MapView]]&lt;br /&gt;
* [[Estrarre le coordinate geografiche dai TAG GPS eventualmente presenti in un file immagine JPEG]]&lt;br /&gt;
* [[Estrarre le coordinate geografiche presenti in un file gpx]]&lt;br /&gt;
* [[Georeferenziare una mappa con QGIS]]&lt;br /&gt;
* [[Individuare i valori x e y della tessera sulla quale si è cliccato]]&lt;br /&gt;
* [[Individuare il punto di intersezione degli angoli di direzione di due elementi geografici rispetto all'osservatore]]&lt;br /&gt;
* [[Individuare su una MapView un punto geografico avendo un punto iniziale, l'angolo di declinazione e la distanza]]&lt;br /&gt;
* [[Inserire del testo su una MapView]]&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Inserire un marcatore di coordinate su una MapView]]&amp;lt;/b&amp;gt;&lt;br /&gt;
* [[Inserire un Oggetto grafico su una MapView]]&lt;br /&gt;
* [[Inserire un'immagine come marcatore di coordinate su una MapView]]&lt;br /&gt;
* [[Mostrare la mappa topografica IGM 1 25000 fornita dal Geoportale Nazionale del Ministero dell'Ambiente]]&lt;br /&gt;
* [[Mostrare nella finestra guida dei simboli, dichiarati nel codice, la mappa topografica IGM 1_25000 fornita dall'ISPRA  ]]&lt;br /&gt;
* [[Mostrare sulla MapView disegni, immagini e Controlli senza l'uso del Metodo Map.AddShape()]]&lt;br /&gt;
* [[Ottenere la distanza piana di due punti su una carta topografica]]&lt;br /&gt;
* [[Ottenere la Latitudine e la Longitudine del punto sulla mappa cliccato con il puntatore del mouse]]&lt;br /&gt;
* [[Ottenere la Longitudine e la Latitudine dell'angolo superiore sinistro dell'immagine di una mappa da un file GEOTIFF con le sole risorse di Gambas]]&lt;br /&gt;
* [[Ottenere le coordinate geografiche dei punti sulla mappa sui quali si passa con il puntatore del mouse]]&lt;br /&gt;
* [[Ottenere informazioni da un file GEOTIFF con l'API di libgeotiff]]&lt;br /&gt;
* [[Ottenere un file pdf dalla mappa mostrata da una MapView]]&lt;br /&gt;
* [[Ottenere un file png dalla mappa mostrata da una MapView]]&lt;br /&gt;
* [[Ottenere una Image dalla mappa mostrata da una MapView]]&lt;br /&gt;
* [[Registrare quanto mostrato da una MapView e farne un video]]&lt;br /&gt;
* [[Rendere trasparente la mappa mostrata da una MapView]]&lt;br /&gt;
* [[Ruotare la mappa]]&lt;br /&gt;
* [[Sapere sulla MapView se il puntatore del mouse è all'interno di una determinata area della mappa]]&lt;br /&gt;
* [[Scalare la dimensione della mappa in una Mapview]]&lt;br /&gt;
* [[Usare il Metodo '.AddPolygon()' di gb.map]]&lt;br /&gt;
* [[Usare il Metodo '.AddPolyLine()' di gb.map]]&lt;br /&gt;
* [[Utilizzando un Oggetto di visualizzazione diverso da una MapView consentire uno spostamento morbido e uniforme della mappa]]&lt;br /&gt;
* [[Utilizzare il Geoportale del Servizio Geologico d'Italia dell'I.S.P.R.A.]]&lt;br /&gt;
* [[Utilizzare il Geoportale Nazionale del Ministero dell'Ambiente]]&lt;br /&gt;
* [[Utilizzare in una MapView mappe fornite secondo lo standard WMS (Web Map Service)]]&lt;br /&gt;
* [[Utilizzare le tessere di una mappa senza connessione a internet]]&lt;br /&gt;
* [[Utilizzare una DrawingArea o una ImageView con gb.map anziché una MapView]]&lt;br /&gt;
* [[Utilizzare una MediaView con gb.map anziché una MapView]]&lt;br /&gt;
* [[Verificare le tessere dei livelli delle Map tiles]]&lt;br /&gt;
&lt;br /&gt;
== Menu ==&lt;br /&gt;
&lt;br /&gt;
* [[Colorare la barra dei Menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare Menu da codice e non con l'Editor-Menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare Menu popup da codice]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare Menu popup utilizzando l'Editor di menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Evitare che appaia il popmenu quando si clicca al di fuori di un elemento di una ListView]]&lt;br /&gt;
&lt;br /&gt;
* [[Far apparire un Balloon, quando si passa con il mouse su un menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Fare riferimento alle voci del Menu da altri Form]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire che appaia la finestra del menu predefinito cliccando con il tasto destro del mouse su un Controllo di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire una linea separatrice in un Menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare selezione di sotto-voci di un Menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Modifiche delle proprietà dei Menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare più righe di testo nella voce di un Menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Rilevare quale sotto-voce di menu è stata cliccata]]&lt;br /&gt;
&lt;br /&gt;
== MenuButton ==&lt;br /&gt;
&lt;br /&gt;
* [[Creare Menu a finestra con MenuButton]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare via Editor dalla IDE un Menu con sotto-menu che funzioni come popup in un MenuButton]]&lt;br /&gt;
&lt;br /&gt;
== Message ==&lt;br /&gt;
&lt;br /&gt;
* [[Impostare le dimensioni del Message]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare l'ID della finestra di un Message]]&lt;br /&gt;
&lt;br /&gt;
* [[Interruzione di riga con ritorno a capo in un Message]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un MessageBox in un programma con interfaccia a 'riga di comando']]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare la finestra di un Message]]&lt;br /&gt;
&lt;br /&gt;
== Miscellanea ==&lt;br /&gt;
&lt;br /&gt;
* [[Controllare la batteria del proprio portatile con le funzioni esterne di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire i gradi della temperatura da un'unità di scala di misura in un'altra]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare il QR Code con le risorse della libreria esterna libqrencode]]&lt;br /&gt;
&lt;br /&gt;
* [[Effettuare il PING]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare e usare in Gambas i simboli musicali forniti dal sistema UNICODE]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni sul tempo meteorologico di una città mediante il sito web wttr.in]]&lt;br /&gt;
&lt;br /&gt;
== Monitor - Schermo ==&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni relative al display video mediante le funzioni del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni relative allo schermo mediante la funzione ioctl()]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni relative allo schermo mediante le funzioni del API di CBX]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni sugli schermi disponibili mediante le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere le dimensioni del monitor e la sua posizione sullo schermo con le funzioni esterne del API di Allegro 5]]&lt;br /&gt;
&lt;br /&gt;
== Mouse ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le coordinate correnti del mouse sul Form senza tenere premuto un tasto del mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le coordinate correnti del mouse sullo schermo]]&lt;br /&gt;
&lt;br /&gt;
* [[Evento rotellina del mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Far assumere al puntatore grafico del mouse l'aspetto dell'attesa]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare i dati del mouse dal file-device hidraw]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare i dati del mouse dai file-device mouse, mice, event]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare il tasto premuto del mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare l'aspetto del puntatore grafico del mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Reiterare una procedura quando il tasto del mouse viene tenuto premuto su un Controllo]]&lt;br /&gt;
&lt;br /&gt;
* [[Segnalatore del puntatore del mouse sullo schermo usando le funzioni esterne del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Simulare il tasto premuto del mouse usando le funzioni esterne del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Sollevare l'Evento _MouseMove() di un Oggetto grafico spostando su di esso il mouse senza tenere premuto un suo tasto]] &lt;br /&gt;
&lt;br /&gt;
* [[Spostare da codice il mouse sullo schermo]]&lt;br /&gt;
&lt;br /&gt;
== MovieBox ==&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un'immagine animata in una MovieBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un'immagine animata con il Drop del suo file in una MovieBox]]&lt;br /&gt;
&lt;br /&gt;
== Oggetti ==&lt;br /&gt;
&lt;br /&gt;
=== Oggetti in generale ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Assegnare da codice più oggetti ad un Gruppo di eventi]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere un Evento o anche integrare quelli già posseduti da un Oggetto &amp;quot;Figlio&amp;quot; di un Oggetto più complesso]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare un valore a una proprietà di un Oggetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il tipo di Oggetto a cui appartiene un identificatore]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Creare array di oggetti]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Distruggere gli Oggetti che non posseggono il Metodo .Delete()]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire che un oggetto sollevi qualsiasi evento]]&lt;br /&gt;
&lt;br /&gt;
* [[Istanziare un oggetto mediante la Classe &amp;quot;Object&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere nell'area di memoria occupata da un oggetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Metodi _New() e _Free() degli oggetti]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il valore di una proprietà ad una parte di più oggetti conosciuti del medesimo tipo]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare e gestire più oggetti assegnati a variabili con medesimo identificatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare un Metodo di un oggetto con la Classe Object]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere il nome del Componente al quale appartiene la Classe di un oggetto utilizzato]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere la quantità di memoria occupata da un oggetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere l'oggetto che ha scatenato l'evento]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quante istanze di una Classe sono state create]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un oggetto è un'istanza di una determinata Classe]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare la proprietà .Tag come un array di tipo Variant]]&lt;br /&gt;
&lt;br /&gt;
=== Oggetti grafici, Controlli e Widget===&lt;br /&gt;
&lt;br /&gt;
* [[Adattare la dimensione del font in un Oggetto grafico se il testo occupa una lunghezza o un'altezza superiore a quella dell'Oggetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Adattare la dimensione di un Oggetto grafico al testo contenuto]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare un Gruppo di Eventi a più Controlli modificando manualmente il file sorgente del programma Gambas]]  &lt;br /&gt;
&lt;br /&gt;
* [[Centrare un oggetto grafico all'interno di un Contenitore]]&lt;br /&gt;
&lt;br /&gt;
* [[Cliccare in un oggetto grafico qualsiasi o in una immagine suddivisi in rettangoli]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere gli oggetti grafici 'figli' costituenti l'oggetto 'padre']]&lt;br /&gt;
&lt;br /&gt;
* [[Copiare uno o più caratteri di un testo da una Label o da una TextLabel e incollarli in un altro Controllo di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare e dimensionare un oggetto con lo spostamento del mouse sul form]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file immagine dagli oggetti presenti in un Contenitore]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare widget di Controlli grafici]]&lt;br /&gt;
&lt;br /&gt;
* [[Differenza fra la proprietà &amp;quot;.Children&amp;quot; e la proprietà &amp;quot;.Controls&amp;quot; di un oggetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Distruggere i Controlli grafici posti in un Contenitore]]&lt;br /&gt;
&lt;br /&gt;
* [[Far mostrare il simbolo &amp;quot;&amp;amp;&amp;quot; su un Controllo grafico fornito della Proprietà .Text]]&lt;br /&gt;
&lt;br /&gt;
* [[Fissare la distanza di un Controllo grafico in modo costante rispetto ai bordi del Form durante il ridimensionamento di questo]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare il numero d'indice di Controlli appartenenti al medesimo gruppo di Eventi senza servirsi di sue specifiche proprietà]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare una Classe di Oggetti grafici fra molti posti in un Contenitore]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare uno specifico Controllo con Last in base alla sua Proprietà &amp;quot;.Id&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare uno specifico Controllo in base alla sua Proprietà &amp;quot;.Name&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Metodo di pseudo indirizzamento ad Oggetti grafici]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare la dimensione di un Oggetto grafico con il mouse impostando i punti di contatto intorno al suo perimetro]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare la dimensione di un Oggetto grafico ruotando la rotellina del mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare in un Oggetto di testo il contenuto di un file trascinandolo e rilasciandolo senza l'uso delle specifiche risorse di Gambas del Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Oggetti grafici e di testo che supportano il codice HTML]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Oggetti scorrevoli]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere risultati diversi in base alla parte del Controllo premuta dal mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Porre sotto osservazione un Oggetto grafico]]&lt;br /&gt;
&lt;br /&gt;
* [[Posizione equidistante di un Oggetto rispetto al margine destro del suo Contenitore e ad un punto alla sua sinistra]]&lt;br /&gt;
&lt;br /&gt;
* [[Raggiungere e gestire gli oggetti di FMain da una classe secondaria]]&lt;br /&gt;
&lt;br /&gt;
* [[Riposizionare in modo circolare più oggetti posti in pila]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un oggetto, spostato sul Form con il mouse, è al di sopra di un altro oggetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Selezionare con lo spostamento del mouse un'area di un oggetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Sollevare l'Evento _MouseMove() di un Oggetto grafico spostando su di esso il mouse senza tenere premuto un suo tasto]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Spostare Oggetti grafici con il mouse all'interno di un contenitore senza Drag &amp;amp; Drop]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Spostare o ridimensionare un oggetto a seconda del punto ove si clicca]]&lt;br /&gt;
&lt;br /&gt;
* [[Uso di Unicode con gli oggetti di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare anche in altre subroutine un Oggetto grafico dichiarato localmente]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare l'esistenza di un Controllo in un Contenitore]]&lt;br /&gt;
&lt;br /&gt;
== ODBC ==&lt;br /&gt;
&lt;br /&gt;
* [[ODBC]]&lt;br /&gt;
&lt;br /&gt;
== OpenGL ==&lt;br /&gt;
&lt;br /&gt;
* [[Gambas e Opengl]]&lt;br /&gt;
&lt;br /&gt;
* [[OpenGL: lezioni di Grafica Interattiva]]&lt;br /&gt;
&lt;br /&gt;
* [[Textures]]&lt;br /&gt;
&lt;br /&gt;
== Password ==&lt;br /&gt;
&lt;br /&gt;
* [[Inserire le password per lanciare comandi]]&lt;br /&gt;
&lt;br /&gt;
== Pdfwriter ==&lt;br /&gt;
&lt;br /&gt;
* [[Guida ai report]]&lt;br /&gt;
&lt;br /&gt;
== Porte ==&lt;br /&gt;
&lt;br /&gt;
* [[Accesso alle Porte Seriali]]&lt;br /&gt;
&lt;br /&gt;
* [[Approfondimento sull'accesso alle porte USB]]&lt;br /&gt;
&lt;br /&gt;
* [[Uso delle Porte Parallele]]&lt;br /&gt;
&lt;br /&gt;
== Posta elettronica ==&lt;br /&gt;
&lt;br /&gt;
* [[Invio della posta elettronica]]&lt;br /&gt;
&lt;br /&gt;
* [[Invio di posta elettronica con SMTP e SSL mediante le funzioni esterne del API di Libcurl]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere la posta elettronica con IMAP e SSL mediante le funzioni esterne del API di Libcurl]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere la posta elettronica con POP3 e SSL mediante le funzioni esterne del API di Libcurl]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere la posta elettronica mediante le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
== Processi ==&lt;br /&gt;
&lt;br /&gt;
=== Gestione dei Processi in genere ===&lt;br /&gt;
&lt;br /&gt;
* [[Cambiare in esecuzione la directory di lavoro di un processo Gambas con la funzione esterna chdir()]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in tempo reale il numero dell'ultimo processo appena aperto]]&lt;br /&gt;
&lt;br /&gt;
=== Gestione dei Processi mediante &amp;quot;Process&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
* [[Apertura e chiusura di un processo mediante Process]]&lt;br /&gt;
&lt;br /&gt;
* [[Attendere e verificare la chiusura di un programma gestito da Process]]&lt;br /&gt;
&lt;br /&gt;
* [[Lettura dati da un Processo e scrittura dati in un Processo mediante Process]]&lt;br /&gt;
&lt;br /&gt;
* [[Terminare automaticamente un Processo dopo un periodo di tempo dalla sua apertura con Process]]&lt;br /&gt;
&lt;br /&gt;
== Programmi Gambas e programmi esterni ==&lt;br /&gt;
&lt;br /&gt;
* [[Agire sulla finestra di un qualunque programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Attivare la finestra di un programma con le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Avviare un'applicazione Gambas in un determinato desktop]]&lt;br /&gt;
&lt;br /&gt;
* [[Avviare un progetto Gambas dalla sua cartella]]&lt;br /&gt;
&lt;br /&gt;
* [[Catturare con il Componente gb.media quanto mostrato dalla finestra di un programma o sulla Scrivania e farne un file video]]&lt;br /&gt;
&lt;br /&gt;
* [[Catturare immagini di una finestra di un programma e farne un file audio-video OGG-Theora con le funzioni esterne del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Catturare l'immagine della finestra di un programma mediante le risorse della Classe DesktopWindow e le funzioni esterne del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Chiudere la finestra di un programma Gambas premendo i tasti Ctrl e 'c' della tastiera]]&lt;br /&gt;
&lt;br /&gt;
* [[Chiudere le finestre secondarie di un programma Gambas lasciando aperto il solo Form principale]]&lt;br /&gt;
&lt;br /&gt;
* [[Chiudere programmi esterni]]&lt;br /&gt;
&lt;br /&gt;
* [[Chiudere un programma Gambas se si clicca all'esterno della sua finestra principale]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le risorse del API di Glib il percorso assoluto di un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere gli attributi della finestra di un programma con le funzioni esterne del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la directory in cui sono memorizzati i file temporanei del processo corrente di un programma Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Contare le righe di codice di un progetto Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Copiare in una cartella un programma.gambas contenuto in un altro programma.gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare una cartella delle preferenze di un programma Gambas con le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Elencare il PID ed il corrispondente nome di ciascun processo attivo]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre l'icona di un programma associato ad un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire l'avvio di un programma.gambas già avviato]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire la chiusura di un programma Gambas se si clicca sul tastino con la X in alto a destra della sua finestra principale]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare con certezza un file presente nella cartella di un progetto Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare ed estrarre il PID di un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare ed estrarre l'ID della finestra di un programma ]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare ID e nome delle finestre attive con le risorse del Componente gb.desktop]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare ID e nome delle finestre attive, nonché il PID dei loro programmi con le risorse del Componente gb.desktop.x11]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare il nome della finestra di un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare il nome di un programma Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare il percorso ove risiede la cartella del progetto Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare l'ID ed il nome della finestra attiva mediante le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare l'ID ed il nome di una finestra nonché il PID del programma mediante le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Inglobare in un programma Gambas la finestra di un altro programma Gambas mediante le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Lanciare da un'applicazione Gambas il Terminale e far partire da esso un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Lanciare un programma esterno conoscendo soltanto il nome del suo file eseguibile presente nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Lanciare un programma Gambas da linea di comando]]&lt;br /&gt;
&lt;br /&gt;
* [[Lanciare un programma senza Shell, ma da una finestra di un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare le dimensioni della finestra di un programma con le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Muovere e modificare le dimensioni della finestra di un programma con le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Muovere la finestra di un programma con le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il percorso assoluto della directory dei dati dell'applicazione Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni sulle applicazioni client in esecuzione su un display con le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la directory di lavoro corrente dell'applicazione Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la schermata (screenshot) della finestra di un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare dati in runtime ad un programma 'a linea di comando']]&lt;br /&gt;
&lt;br /&gt;
* [[Porre la finestra di un programma esterno in primo piano]]&lt;br /&gt;
&lt;br /&gt;
* [[Salvare un file nella Directory di Lavoro di un programma Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quando il puntatore del mouse si trova sulla finestra di un programma esterno]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanto tempo è passato dall'inizio del programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un programma esterno è già in funzione]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se il programma Gambas sta funzionando come progetto dall'IDE oppure come eseguibile .gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare la finestra di un programma da un desktop ad un altro del video]]&lt;br /&gt;
&lt;br /&gt;
* [[Uscire da un'applicazione Gambas premendo un tasto mediante le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
===Trasmissione di dati fra due programmi Gambas o fra un programma esterno ed un programma Gambas===&lt;br /&gt;
&lt;br /&gt;
* [[Indirizzare dati da un programma ad un altro e ad un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare i dati inviati allo standard output da un programma C]]&lt;br /&gt;
&lt;br /&gt;
* [[Inviare dati da un programma Gambas ad un altro mediante le risorse del Componente DBus]]&lt;br /&gt;
&lt;br /&gt;
* [[Inviare dati stringa da un programma Gambas a un programma esterno avente un'area di testo o a un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Ricevere dati da un programma esterno mediante un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Ricevere un 'segnale' da un programma C]]&lt;br /&gt;
&lt;br /&gt;
* [[Trasmissione di dati fra due o più programmi Gambas mediante la Classe Socket del Componente gb.net]]&lt;br /&gt;
&lt;br /&gt;
* [[Trasmissione di dati fra due o più programmi Gambas mediante la Classe UdpSocket del Componente gb.net]]&lt;br /&gt;
&lt;br /&gt;
* [[Usare ALSA per far comunicare due o più programmi Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Usare due programmi Gambas contemporaneamente mediante Process, lo standard Output e lo standard Input]]&lt;br /&gt;
&lt;br /&gt;
* [[Usare uno pseudoterminale per far comunicare bidirezionalmente due programmi]]&lt;br /&gt;
&lt;br /&gt;
== ProgressBar e simulazioni di ProgressBar==&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere una simil-ProgressBar da una LCDLabel]]&lt;br /&gt;
&lt;br /&gt;
* [[Pseudo-ProgressBar in un'applicazione 'a riga di comando']]&lt;br /&gt;
&lt;br /&gt;
* [[Simulare una ProgressBar mediante una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare la barra indicatrice di una ProgressBar con il mouse]]&lt;br /&gt;
&lt;br /&gt;
== Puntatori - Memory Stream ==&lt;br /&gt;
&lt;br /&gt;
====Puntatori====&lt;br /&gt;
* [[Assegnare ad un Puntatore la rappresentazione numerica di un indirizzo di memoria contenuto da un altro Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare ad un Puntatore un'area di memoria riservata con Alloc()]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare un Puntatore ad una Struttura per dereferenziarlo]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare un vettore ad una variabile di tipo Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Cambiare la dimensione di un'area di memoria mediante Realloc()]]&lt;br /&gt;
&lt;br /&gt;
* [[Deallocare un'area di memoria precedentemente allocata con alloc() e assicurarsi che il Puntatore non punti a un indirizzo rilevante di memoria]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Dereferenziare un Puntatore con le funzioni specifiche di dereferenziazione e con i Memory Stream]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Dereferenziare un Puntatore con un vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Dereferenziare un Puntatore di Puntatore con le funzioni specifiche di dereferenziazione e con i Memory Stream]]&lt;br /&gt;
&lt;br /&gt;
* [[Differenza fra Assegnazione a un Puntatore di un indirizzo di memoria e Dereferenziazione di un Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestire un Puntatore con le funzioni esterne del API di Glib]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il valore di una variabile Integer puntata da un Puntatore e sua dereferenziazione con le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Opportunità di azzerare tutti i byte di un'area di memoria riservata seppur senza deallocarla]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il puntatore a una variabile vettoriale]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il puntatore di una variabile di tipo Image]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il puntatore di una variabile di tipo Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il valore numerico dell'indirizzo di memoria contenuto dal Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Passaggio di un argomento per 'indirizzo' ad una Funzione]]&lt;br /&gt;
&lt;br /&gt;
* [[Porre a zero i valori contenuti dall'area di memoria puntata da un Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere i valori contenuti da un file in un'area riservata di memoria]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Scrivere nell'area di memoria puntata da un Puntatore]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Vedere e modificare con i Puntatori un byte costituente il valore di una variabile]]&lt;br /&gt;
&lt;br /&gt;
==== Memory Stream ====&lt;br /&gt;
&lt;br /&gt;
* [[Definizione ed uso dei Memory Stream]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare con i Memory Stream un'area di memoria simile ad una Struttura avente come membro un'altra Struttura]]&lt;br /&gt;
&lt;br /&gt;
== RadioButton==&lt;br /&gt;
&lt;br /&gt;
* [[Adattare la lunghezza del RadioButton al testo contenuto]]&lt;br /&gt;
&lt;br /&gt;
== Report (gb.report2) ==&lt;br /&gt;
&lt;br /&gt;
* [[Creare report con il componente gb.report2]]&lt;br /&gt;
&lt;br /&gt;
== Scanner ==&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire una scansione con lo Scanner mediante le funzioni esterne di libsane]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire una scansione e riconoscimento caratteri (OCR) con l'API di Sane, Tesseract e Leptonica]]&lt;br /&gt;
&lt;br /&gt;
* [[Usare le risorse del Componente gb.scanner di Gambas]]&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
&lt;br /&gt;
* [[Scripting con Gambas]]&lt;br /&gt;
&lt;br /&gt;
==ScrollArea==&lt;br /&gt;
&lt;br /&gt;
* [[Usare la ScrollArea]]&lt;br /&gt;
&lt;br /&gt;
==ScrollView==&lt;br /&gt;
&lt;br /&gt;
* [[Usare la ScrollView]]&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della classe Settings]]&lt;br /&gt;
&lt;br /&gt;
== Sistema operativo - Dispositivi - Interfacce - Reti ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con la funzione esterna getrlimit() i valori limite che il kernel impone per alcune risorse]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere  con le risorse del API di Glib la directory unica per l'utente corrente sul sistema locale]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le sole risorse di Gambas i dispositivi esterni SCSI o SATA montati]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere i dispositivi usb di memorizzazione di massa con le funzioni esterne di libudev]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il nome delle interfacce di rete presenti nel proprio sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il file-devide pts associato ad un Terminale o console con la funzione esterna ttyname()]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il fuso orario (TimeZone) impostato nel proprio sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il nome del file-device del Terminale di controllo del processo con la funzione esterna ctermid()]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere l'hostname impostato nel proprio sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la dimensione del Dispositivo a blocchi]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la distribuzione Linux montata]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la valuta monetaria locale utilizzata dal sistema operativo]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le impostazioni del separatore decimale nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le impostazioni per il separatore delle migliaia]]&lt;br /&gt;
&lt;br /&gt;
* [[Identificare univocamente un computer]]&lt;br /&gt;
&lt;br /&gt;
* [[La cartella ove sono depositate le icone fornite dal sistema operativo Linux]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere il file fstab per avere informazioni sui vari filesystem montati]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere gli indirizzi IP di ogni interfaccia presente sulla medesima macchina]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere i valori di baud rates del flusso in entrata ed in uscita dei file-device terminali]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la distribuzione di Linux montata, il tipo di architettura e la versione del kernel]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il nome dell'host corrispondente ad un indirizzo IP e viceversa]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il solo nome del proprio sistema operativo]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni dal proprio dispositivo wireless con le risorse del API di libiw]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni generali sui dispositivi network mediante le risorse del API di Libnm-glib]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni sulle statistiche di sistema globali con la funzione esterna sysinfo()]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la lista di tutte le variabili d'ambiente nel proprio sistema mediante le risorse del API di GLIB-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la lista di tutti i dispositivi PCI presenti nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere mediante le funzioni esterne del API di Libusb la lista di tutti i dispositivi USB attivi nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere mediante le funzioni esterne del API di Libgusb la lista di tutti i dispositivi USB attivi nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere mediante le funzioni esterne della libreria Libudev un elenco degli oggetti hidraw collegati al sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un Identificativo Univoco Universale - UUID]]&lt;br /&gt;
&lt;br /&gt;
* [[Visualizzare il tempo trascorso dall'ultimo avvio del sistema]]&lt;br /&gt;
&lt;br /&gt;
== Slider ==&lt;br /&gt;
&lt;br /&gt;
* [[Creare uno pseudo-slider]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare uno pseudo-slider con uno o più cursori posti fra un valore minimo e uno massimo variabili]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare il segna-valori lungo lo Slider]]&lt;br /&gt;
&lt;br /&gt;
* [[Variare il valore dello Slider ruotando la rotellina del mouse]]&lt;br /&gt;
&lt;br /&gt;
== SpinBar ==&lt;br /&gt;
* [[Adattare la SpinBar a valori in virgola mobile con più di tre decimali]]&lt;br /&gt;
&lt;br /&gt;
== SpinBox ==&lt;br /&gt;
* [[Variare il valore di uno SpinBox da codice e non con il controllo diretto del mouse]]&lt;br /&gt;
&lt;br /&gt;
== Spinner ==&lt;br /&gt;
* [[Uso dello ''Spinner'']]&lt;br /&gt;
&lt;br /&gt;
==Sqlite==&lt;br /&gt;
* [[Creare un DataBase sqlite3]]&lt;br /&gt;
* [[Utilizzo base di Gambas e Sqlite3]]&lt;br /&gt;
&lt;br /&gt;
== Stampa - Printer==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Stampare in Gambas]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Individuare le stampanti presenti nel proprio sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare il contenuto grafico di una PictureBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare il testo presente in oggetti di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare un Controllo grafico posto sul Form]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare un file con le funzioni del API di cups]]&lt;br /&gt;
&lt;br /&gt;
* [[Verifica ed eliminazione dei processi di stampa mediante le funzioni del API di CUPS]]&lt;br /&gt;
&lt;br /&gt;
== Stringhe, caratteri, testo e file di testo ==&lt;br /&gt;
&lt;br /&gt;
* [[Accedere ai caratteri contenuti da una variabile di tipo stringa come se questa fosse una vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere una riga di caratteri alla fine di un file di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[&amp;quot;Andare a capo&amp;quot; in un oggetto di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Associare una stringa a un identificatore unico numerico mediante le funzioni Quarks del API di libglib-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Cercare la seconda occorrenza di una lettera fra tre o più]]&lt;br /&gt;
&lt;br /&gt;
* [[Cercare una parola in una stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Concatenare due stringhe]]&lt;br /&gt;
&lt;br /&gt;
* [[Confrontare due stringhe]]&lt;br /&gt;
&lt;br /&gt;
* [[Confrontare i caratteri di due stringhe]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le sole risorse di Gambas il numero di occorrenze in una stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il numero di occorrenze in una stringa con la funzione esterna PyUnicode_Count() della libreria libpython3]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il numero e la posizione di tutte le occorrenze di una sottostringa in una stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Conversione di due valori, costituenti un carattere speciale, nella sua rappresentazione grafica]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire due unità numeriche stringa graficamente rappresentanti un valore esadecimale nel corrispondente valore decimale effettivo]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire in stringa senza funzioni il contenuto di una variabile non di tipo Stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire in un tipo di dati numerico un valore letto in formato Stringa da un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un carattere maiuscolo in minuscolo senza la funzione LCase()]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un codice Unicode in carattere UTF-8 con la funzione g_unichar_to_utf8() della libreria libglib-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero di tipo stringa in un valore di tipo Float con la funzione g_strtod() della libreria glib-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero di tipo stringa in un valore di tipo Float con la funzione  PyOS_string_to_double() della libreria libpython3]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero in un carattere ASCII]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un collegamento ipertestuale]]&lt;br /&gt;
&lt;br /&gt;
* [[Filtrare i caratteri invalidi UTF8 ed ASCII da una stringa con le funzioni esterne del API di PulseAudio]]&lt;br /&gt;
&lt;br /&gt;
* [[Funzione simile a String()]]&lt;br /&gt;
&lt;br /&gt;
* [[Funzione simile a String.Len()]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare i valori costituenti i caratteri tipo UTF-8 di lettere localizzate]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare in un testo i caratteri non alfanumerici e la loro posizione]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare in una stringa i caratteri ricorrenti e loro posizioni]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire in una stringa caratteri ASCII non stampabili]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un testo in diagonale in un Controllo grafico]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare in maiuscolo il primo carattere di una stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare un carattere di una stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare del testo al di sopra di una immagine avendo una PictureBox ed un oggetto di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare del testo con caratteri ruotati orizzontalmente e verticalmente]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare il simbolo dell'Euro]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare in una stringa le virgolette]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare con il punto anziché con la virgola un numero in virgola mobile rappresentato in formato stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Non visualizzare i caratteri non-stampabili di una stringa che inizia con caratteri stampabili]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere con l'API di Libglib-2.0 il codice UNICODE di un carattere UTF-8]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere da un testo una parte delimitata da due parole]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere da un valore numerico i caratteri ASCII corrispondenti a ciascun byte componente il numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il valore ASCII di un carattere]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un file RTF da un file UTF8 e viceversa con le funzioni esterne del API di Librtfcomp]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un'unica stringa dalle stringhe contenute dagli elementi di un vettore di tipo Stringa]] &lt;br /&gt;
&lt;br /&gt;
* [[Porre a &amp;quot;Null&amp;quot; tutti gli elementi di un vettore di tipo Stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Rappresentare in formato stringa un numero avente i punti delle migliaia e la virgola dei decimali]]&lt;br /&gt;
&lt;br /&gt;
* [[Ribaltare i caratteri e invertire il testo in un Controllo grafico che supporta il RichText]]&lt;br /&gt;
&lt;br /&gt;
* [[Rimuovere da una stringa tutti i caratteri non-stampabili eventualmente presenti]]&lt;br /&gt;
&lt;br /&gt;
* [[Rimuovere da una stringa uno o più caratteri del codice ASCII esteso]]&lt;br /&gt;
&lt;br /&gt;
* [[Rimuovere tot caratteri da una stringa mediante le funzioni esterne del API di Libglib-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Riposizionare in modo casuale i caratteri di una stringa con la funzione esterna strfry()]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere con l'API di Libglib-2.0 se un carattere è stampabile]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere con l'API di Libglib-2.0 se un codice UNICODE corrisponde ad un carattere alfabetico]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se una stringa è formata soltanto da caratteri alfanumerici]]&lt;br /&gt;
&lt;br /&gt;
* [[Scomporre una stringa e caricare ogni parola in una variabile array]]&lt;br /&gt;
&lt;br /&gt;
* [[Scritta lampeggiante]]&lt;br /&gt;
&lt;br /&gt;
* [[Scritta scorrevole]]&lt;br /&gt;
&lt;br /&gt;
* [[Sovrascrivere una stringa con uno o più caratteri]]&lt;br /&gt;
&lt;br /&gt;
* [[Testo verticale]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare in una Costante un numero esadecimale per rappresentare un carattere ASCII]]&lt;br /&gt;
&lt;br /&gt;
* [[Verifica &amp;quot;passo-passo&amp;quot; di ciascun carattere in una data stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare con le funzioni del API di Libglib-2.0 se una stringa inizia con un prefisso o termina con un siffisso]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare con le risorse del API di PulseAudio se una stringa contiene solo caratteri UTF8 validi]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare se in una stringa vi sono caratteri non stampabili]]&lt;br /&gt;
&lt;br /&gt;
== Strutture ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Strutture: dichiarazione ed uso]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare a una Struttura i valori contenuti in un'area di memoria creata con la funzione Alloc()]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare direttamente i valori di dimensione conosciuta, letti da un file, ad una Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare i valori di un file ad una Struttura mediante un Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Configurazione, organizzazione ed impostazione dell'oggetto Struttura secondo i sorgenti di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere i nomi identificatori dei membri di una Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la dimensione di una Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere via codice il nome di una Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere e scrivere direttamente nell'area di memoria di una Struttura accedendovi con la classe Object]]&lt;br /&gt;
&lt;br /&gt;
* [[Nascondere un valore in una Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Ordinare gli elementi di un vettore di Strutture in base ad un loro medesimo membro]]&lt;br /&gt;
&lt;br /&gt;
* [[Ordinare gli elementi dei membri vettoriali di una Struttura in base ad uno di loro]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il puntatore di una variabile di tipo Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il puntatore direttamente ai dati associati a una Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare una Struttura con Event]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere i dati dei membri di una Struttura in un file direttamente]]&lt;br /&gt;
&lt;br /&gt;
* [[Strutture e Funzioni esterne]]&lt;br /&gt;
&lt;br /&gt;
* [[Uso delle Strutture tra Classi e Moduli]]&lt;br /&gt;
&lt;br /&gt;
== SwitchButton ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso dello &amp;quot;SwitchButton&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== TableView ==&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare i dati di una TextArea a una TableView]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un oggetto in una cella di una TableView]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il contenuto di una cella di una TableView cliccandoci dentro]]&lt;br /&gt;
&lt;br /&gt;
* [[Selezionare una intera riga di una TableView]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare il tasto Tab della tastiera per spostare il cursore del mouse fra le celle di una TableView]]&lt;br /&gt;
&lt;br /&gt;
* [[Visualizzare automaticamente una specifica riga di una TableView senza dover agire sulla ScrollBar laterale]]&lt;br /&gt;
&lt;br /&gt;
== TabPanel ==&lt;br /&gt;
&lt;br /&gt;
* [[Cancellare il testo presente in uno o più Controlli di testo posti su una TabPanel]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare l'immagine ed il colore del titolo delle tabelle di una TabPanel]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire tabelle ed oggetti all'interno di una TabPanel]]&lt;br /&gt;
&lt;br /&gt;
== TabStrip ==&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere Controlli su una determinata scheda di una TabStrip successivamente alla sua creazione]]&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere schede in una TabStrip successivamente alla sua creazione]]&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare una scheda da una TabStrip]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati dagli oggetti presenti sulle schede di una TabStrip]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire più schede e Controlli in una TabStrip nel momento della sua creazione]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il valore delle proprietà degli oggetti posti sulla scheda in primo piano di una TabStrip]]&lt;br /&gt;
&lt;br /&gt;
* [[Nascondere una scheda di una TabStrip]]&lt;br /&gt;
&lt;br /&gt;
== Tavoletta grafica e Gambas ==&lt;br /&gt;
&lt;br /&gt;
* [[Leggere l'azione di una penna su una Tavoletta grafica]]&lt;br /&gt;
&lt;br /&gt;
== Tempo, Date e Temporizzazioni ==&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare il numero di giorni compresi fra due date]]&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare il tempo trascorso mediante le funzioni esterne del sub-sistema Timers del API di GLib]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il fuso orario (TimeZone) impostato nel proprio sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il giorno della settimana di una data mediante le risorse della libreria standard C &amp;quot;time.h&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il numero di giorni posseduti da un mese]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire data ed orario da formato Date in un numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire i giorni in formato anni:mesi:giorni]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire i millisecondi in formato minuti:secondi.millisecondi]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire i secondi in formato ore:minuti:secondi]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un Cronometro]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un metronomo per console]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un Timer con le funzioni esterne delle librerie standard C &amp;quot;signal.h&amp;quot; e &amp;quot;time.h&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Formattare &amp;quot;hh:nn:ss&amp;quot; dai soli secondi]]&lt;br /&gt;
&lt;br /&gt;
* [[Funzione di attesa in millisecondi con la libreria esterna libpulsecore]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestione del tempo mediante le funzioni esterne del API di Libcsfml]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere con le risorse della libreria Libc.so.6 il tempo impiegato per eseguire un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere con le risorse della libreria standard C &amp;quot;time.h&amp;quot; la data nella forma &amp;quot;giorno-della-settimana mese giorno ora:min:sec anno&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il tempo trascorso dall'inizializzazione della libreria SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'orario locale comprensivo dei microsecondi con la funzione esterna g_date_time_get_microsecond() del API di GLIB]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'orario locale comprensivo dei nanosecondi con le risorse di alcune librerie standard C]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la differenza temporale fra due orari]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere una data e-o l'orario comprensivo dei millisecondi]]&lt;br /&gt;
&lt;br /&gt;
* [[Porre in pausa il programma per un dato numero di microsecondi con la funzione esterna g_usleep() del API di GLIB]]&lt;br /&gt;
&lt;br /&gt;
* [[Rappresentazione stringa localizzata e non-localizzata di una data]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere di quanti giorni è formato un determinato anno]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere di quanti giorni è formato il mese corrente]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanto tempo è passato dall'inizio del programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti microsecondi sono passati dalla data iniziale del tempo Unix sino alla data e all'orario correnti]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti millisecondi sono passati dalla data iniziale del tempo Unix sino alla data e all'orario correnti]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti nanosecondi sono passati dalla data iniziale del tempo Unix sino alla data e all'orario correnti]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti secondi bisogna aggiungere all'orario locale per ottenere l'orario UTC]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti secondi sono passati dalla data iniziale del tempo Unix sino alla data e all'orario correnti]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti secondi sono passati dall'inizio del giorno corrente]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti giorni sono passati dall'inizio dell'anno corrente]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti secondi sono passati dall'inizio dell'anno corrente]]&lt;br /&gt;
&lt;br /&gt;
* [[Temporizzare una funzione o un evento]]&lt;br /&gt;
&lt;br /&gt;
== Terminale - Console IDE Gambas ==&lt;br /&gt;
&lt;br /&gt;
* [[Aprire un Terminale con Desktop.OpenTerminal e passargli una riga di comando]]&lt;br /&gt;
&lt;br /&gt;
* [[Aprire un Terminale e passargli una riga di comando mediante le funzioni esterne del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Attendere in un'applicazione 'a riga di comando' la pressione del tasto 'Invio']]&lt;br /&gt;
&lt;br /&gt;
* [[Colorare testo e sfondo in Console o Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il numero di linee e di colonne costituenti la corrente dimensione di un terminale o console]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in tempo reale il file-device &amp;quot;pts&amp;quot; dell'ultimo Terminale appena aperto]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la riga e la colonna nelle quali è posizionato il cursore in un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Formattare il testo da mostrare in console o in terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare i dati inviati allo standard output da un programma C]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare il risultato restituito ad intervalli temporali di un comando bash]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare la stringa di caratteri immessi dall'utente nella console o Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare quanto viene scritto manualmente nella console o in un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Inviare il testo, colorato e ruotato, in un Terminale con l'API di libcaca]]&lt;br /&gt;
&lt;br /&gt;
* [[Lanciare da un'applicazione Gambas il Terminale e far partire da esso un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Lanciare da un'applicazione Gambas un comando bash e far scrivere il risultato in un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il prompt bash]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare in runtime il numero del file-device 'pts' di un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Pulire il Terminale o la console via codice]]&lt;br /&gt;
&lt;br /&gt;
* [[Reindirizzare dati stringa dalla console ad un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Rendere la console dell'IDE funzionale come un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere nella console (standard output) di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere nella finestra di un Terminale distinto dal programma Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere nello Standard Input di un Terminale con un programma Gambas 'a riga di comando']]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare da codice il cursore all'interno del Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare il cursore in un Terminale lungo una riga di caratteri]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare un punto nella console o nel Terminale alle coordinate x, y]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare una stringa in console con allineamento a destra o a sinistra]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare una stringa in console sempre su una medesima riga]]&lt;br /&gt;
&lt;br /&gt;
== TextArea ==&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un testo da un Controllo all'interno del testo di una TextArea senza l'uso del Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare che siano stati aggiunti uno o più caratteri a una TextArea con l'opzione &amp;quot;Incolla&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== TextBox ==&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere in un TextBox dalla posizione manualmente mutata del cursore]]&lt;br /&gt;
&lt;br /&gt;
* [[Sovrascrivere mediante nuovi caratteri i caratteri già presenti in un TextBox]]&lt;br /&gt;
&lt;br /&gt;
== ToolTip ==&lt;br /&gt;
&lt;br /&gt;
* [[Chiudere un ToolTip anticipatamente]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il colore e la dimensione del font del testo del ToolTip]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare la dimensione del ToolTip]]&lt;br /&gt;
&lt;br /&gt;
== Valori numerici, Operazioni matematiche, Bit==&lt;br /&gt;
&lt;br /&gt;
* [[Arrotondamento di un numero con virgola mobile]]&lt;br /&gt;
&lt;br /&gt;
* [[Arrotondare un Intero al più prossimo valore inferiore multiplo di 2, 4, 8, 16, 32 e 64]]&lt;br /&gt;
&lt;br /&gt;
* [[Arrotondare un Intero al successivo multiplo di 2, 4, 8, 16, 32 e 64]]&lt;br /&gt;
&lt;br /&gt;
* [[Azzerare tutti gli elementi di un vettore di tipo numerico]]&lt;br /&gt;
&lt;br /&gt;
* [[Cercare un valore all'interno di un file aperto come un flusso di dati di tipo File]]&lt;br /&gt;
&lt;br /&gt;
* [[Cercare un valore all'interno di un file aperto come un flusso di dati di tipo Stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare i numeri di Fibonacci]]&lt;br /&gt;
&lt;br /&gt;
* [[Confrontare due Interi con la funzione esterna gst_util_seqnum_compare() del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere di un numero il multiplo posto immediatamente dopo un altro numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere di un numero la posizione del primo bit da destra impostato a 1]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere gli angoli acuti di un triangolo rettangolo dai cateti noti]]&lt;br /&gt;
&lt;br /&gt;
* [[Conversione Big-Endian/Little-Endian]]&lt;br /&gt;
&lt;br /&gt;
* [[Conversione da Base64]]&lt;br /&gt;
&lt;br /&gt;
* [[Conversione di un angolo da valori sessagesimali in decimali e viceversa]]&lt;br /&gt;
&lt;br /&gt;
* [[Conversione in Base64]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire in un tipo di dati numerico un valore letto in formato Stringa da un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da Decimale in Binario]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da rappresentazione binaria in decimale]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da rappresentazione Decimale a Carattere ASCII]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da rappresentazione Decimale a Esadecimale]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da rappresentazione Decimale a Ottale]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da rappresentazione Esadecimale a Decimale]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da rappresentazione esadecimale in binaria]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da rappresentazione ottale in decimale]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero decimale in numerazione romana]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un valore di tipo Float in un Long con la funzione gst_util_gdouble_to_guint64() del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un valore di tipo Float in una stringa con la funzione PyOS_double_to_string() della libreria libpython3]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un valore di tipo Long in un Float con la funzione gst_util_guint64_to_gdouble() del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un valore numerico di tipo Float in una stringa di caratteri ASCII]]&lt;br /&gt;
&lt;br /&gt;
* [[Distinguere ogni byte della rappresentazione esadecimale di un valore decimale]]&lt;br /&gt;
&lt;br /&gt;
* [[Effettuare con le funzioni Glib-2.0 alcune operazioni sui bit di un valore di una variabile puntata da un Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Elevamento a potenza]]&lt;br /&gt;
&lt;br /&gt;
* [[Esempio di utilizzo delle funzioni esterne del API di GMP]]&lt;br /&gt;
&lt;br /&gt;
* [[Esponente di una potenza]]&lt;br /&gt;
&lt;br /&gt;
* [[Generare numeri casuali con le funzioni esterne del API di GLib]]&lt;br /&gt;
&lt;br /&gt;
* [[Generare numeri casuali con le funzioni esterne srand() e rand() di stdlib.h]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestire numeri superiori al limite massimo supportato dal tipo Long]]&lt;br /&gt;
&lt;br /&gt;
* [[Invertire le cifre di un numero intero]]&lt;br /&gt;
&lt;br /&gt;
* [[Massimo Comun Divisore di due numeri con la funzione gst_util_greatest_common_divisor() di libgstreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Massimo Comun Divisore di due numeri con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Minimo Comune Multiplo di due numeri con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Notazione scientifica e notazione esponenziale in Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Operazioni con precisione quadrupla a 128-bit con numeri in virgola mobile mediante la libreria quadmath.h]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere da un valore numerico i caratteri ASCII corrispondenti a ciascun byte componente il numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere dai suoi singoli dati-byte un valore numerico di tipo superiore al Byte]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere di un numero in virgola mobile la rappresentazione del separatore con il punto anziché con la virgola]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere i &amp;quot;reali&amp;quot; valori numerici da una lettura di tipo Stringa di un flusso di dati]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il ''nibble'' alto ed il ''nibble'' basso di un numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il numero più piccolo e quello più grande fra tre o più numeri mediante le funzioni esterne del API di libgsl]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il resto da due operandi di tipo Float di una divisione con le risorse del API di Libm.so.6]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere in Gambas il risultato di uno spostamento di bit scritto in linguaggio C]] &lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la parte intera e quella decimale di un numero in virgola mobile]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la rappresentazione come stringa in memoria di un valore numerico]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere numeri casuali di ambito Byte dai file-device /dev/random e /dev/urandom]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un numero dalla sua memorizzazione in formato Big-Endian]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un numero dalla sua memorizzazione in formato Little-Endian]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un valore numerico dalla rappresentazione in memoria come stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Porre a 0 oppure a 1 un bit di un numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Rappresentare un numero in alcune basi numeriche]]&lt;br /&gt;
&lt;br /&gt;
* [[Rendere la sola parte decimale di un numero in virgola mobile come un numero di tipo Intero]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere con le funzioni esterne del API di Glib quanti bit sono necessari per contenere un numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere il tipo di dato più piccolo in Gambas capace di contenere e rappresentare un numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti bit posti ad 1 sono presenti in un numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se la cifra delle unità di un numero è zero]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un numero è pari o dispari]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un numero rientra in un ambito definito di due valori]]&lt;br /&gt;
&lt;br /&gt;
* [[Scambiare i rispettivi valori fra due variabili]]&lt;br /&gt;
&lt;br /&gt;
* [[Sostituire gli operatori logici di spostamento dei bit con semplici operazioni]]&lt;br /&gt;
&lt;br /&gt;
* [[Sottrazione con operatori bitwise]]&lt;br /&gt;
&lt;br /&gt;
* [[Trasformare un valore di tipo Float in una frazione con la funzione gst_util_double_to_fraction() della libreria libgstreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Trasformare una frazione in un valore di tipo Float con la funzione gst_util_fraction_to_double() della libreria libgstreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Troncare alcune cifre decimali in un valore in virgola mobile]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare se un numero è una potenza di 2]]&lt;br /&gt;
&lt;br /&gt;
== ValueBox ==&lt;br /&gt;
&lt;br /&gt;
* [[Modificare l'allineamento del valore numerico in un ValueBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Rappresentare in un ValueBox un numero avente i punti delle migliaia e la virgola dei decimali]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere testo in un ValueBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare in un ValueBox vari tipi di valori]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare l'evento _Change() in un ValueBox]]&lt;br /&gt;
&lt;br /&gt;
== Variabili in particolare ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il nome di una variabile 'Pubblica']]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in runtime il numero identificatore di un tipo di dato di una variabile presente nel codice]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere via codice la quantità di memoria occupata da una variabile]]&lt;br /&gt;
&lt;br /&gt;
* [[Contenere valori di diverso tipo]]&lt;br /&gt;
&lt;br /&gt;
* [[Rendere esplicitamente una variabile quale elemento di un vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Usare come identificatore di variabile il nome di una parola chiave o di una funzione ovvero un carattere non consentito]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare l'indirizzo di memoria di una variabile]]&lt;br /&gt;
&lt;br /&gt;
== Video ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con 'proc...fdinfo' la quantità dei dati elaborati di un file video]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere quale file video un programma sta eseguendo]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire in streaming un video da youtube mediante l'oggetto WebView]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file Video con il codice HTML]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file Video con le funzioni esterne del API di Libmpv]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file Video mediante il Metodo .Open() della Classe Desktop]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati video da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[La gestione dei dati video con la Classe MediaView del componente gb.media.form]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[La gestione del video e dei file video con il componente gb.media]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[La gestione del video e dei file video  con le funzioni esterne del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione del video e dei file video con le funzioni esterne del API di VLC]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni generali su flussi multimediali con le funzioni esterne del API di Quvi]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni generali sull'audio e sul video con le funzioni esterne del API di Libquicktime]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere con le funzioni esterne del API di Rhythmbox se un file contiene dati audio e/o video]]&lt;br /&gt;
&lt;br /&gt;
====i/o video====&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere i driver video disponibili nel sistema mediante le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni sul dispositivo video di una webcam con le funzioni esterne del API di libv4l2]]&lt;br /&gt;
&lt;br /&gt;
== Watcher ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della classe Watcher]]&lt;br /&gt;
&lt;br /&gt;
== Web ==&lt;br /&gt;
&lt;br /&gt;
* [[Acquisire il codice HTML di una pagina web]]&lt;br /&gt;
&lt;br /&gt;
* [[Caricare una pagina web]]&lt;br /&gt;
&lt;br /&gt;
* [[Controllare i link contenuti da una pagina web]]&lt;br /&gt;
&lt;br /&gt;
* [[Decodificare con le risorse del API di Libidn i nomi di dominio internazionalizzati]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il valore del colore di un pixel di una pagina web aperta con l'Oggetto WebView]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'immagine di una pagina web]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un indirizzo web è valido]]&lt;br /&gt;
&lt;br /&gt;
== WorkSpace ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della Classe WorkSpace]]&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40774</id>
		<title>Installazione di Gambas3 dai pacchetti binari</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40774"/>
		<updated>2025-01-19T16:24:35Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Launchpad ==&lt;br /&gt;
&lt;br /&gt;
Grazie ai cambiamenti avvenuti su Launchpad (''il PPA funzionava solo su Ubuntu e derivate'') ora i pacchetti binari vengono confezionati attraverso '''OBS''' (''openSUSE Build Service'') e sono disponibili per un maggior numero di distribuzioni.&amp;lt;br&amp;gt;&lt;br /&gt;
Vedi annuncio da parte di Minisini del 16 Dicembre 2024 qui:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambas.sourceforge.net/en/main.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Premessa ==&lt;br /&gt;
&lt;br /&gt;
Come possiamo leggere sulla wiki di Gambas per poter usare OBS occorre che sul nostro sistema sia presente il comando '''Curl''' e per quanto riguarda ''ArchLinux'' occorre posizionare il ''repository di Gambas'' al primo posto nel ''file /etc/pacman.conf'' così:&lt;br /&gt;
&lt;br /&gt;
  sudo nano /etc/pacman.conf&lt;br /&gt;
&lt;br /&gt;
Quindi occorre posizionare il repo di Gambas per primo aggiungendo:&lt;br /&gt;
&lt;br /&gt;
  [home_gambas_3.20_Arch]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/3.20/Arch/$arch&lt;br /&gt;
&lt;br /&gt;
== OBS vs PPA ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Come per il PPA, OBS è disponibile per le versioni Stabile e Master qui i collegamenti con i comandi corretti:&amp;lt;br&amp;gt;&lt;br /&gt;
https://software.opensuse.org/download/package?package=gambas3-ide&amp;amp;project=home%3Agambas%3A3.20&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
https://software.opensuse.org//download.html?project=home%3Agambas%3Amaster&amp;amp;package=gambas3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aggiungere il Repository alla distribuzione ==&lt;br /&gt;
&lt;br /&gt;
Anche se la wiki appare chiara, faremo un esempio pratico di come installare il repository per la distribuzione '''Debian 12'''.&amp;lt;br&amp;gt;&lt;br /&gt;
La procedura è simile anche per le altre distribuzioni.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': le distribuzioni derivate tipo Mint dovranno riferirsi alla versione di Ubuntu da cui dipendono (es. Mint 22 = xUbuntu 24.04)&lt;br /&gt;
&lt;br /&gt;
Apriamo il terminale e digitiamo uno alla volta i comandi scritti alla voce “Aggiungi il repository e installa manualmente” , vale a dire:&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/3.20/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:gambas:3.20.list&lt;br /&gt;
&lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:3.20/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_gambas_3.20.gpg &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
Il vantaggio di poter installare anche i soli repository è evidente, se abbiamo un gruppo che dipende dai nostri programmi possiamo inviare il solo pacchetto.deb che pescherà dal repo le sole librerie utili a esso, più avanti vedremo una piccola dimostrazione di come fare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare Gambas3 vero e proprio ==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install gambas3-ide&lt;br /&gt;
Fatto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare un pacchetto deb di Gambas3 ==&lt;br /&gt;
&lt;br /&gt;
Su una distribuzione Debian priva di Gambas3, come detto, basterà aggiungere il repository da OBS per poter installare un pacchetto creato con l’ultima versione.&lt;br /&gt;
&lt;br /&gt;
Per la prova, sulla VM in cui ho installato Gambas, ho scaricato dalla Farm il progetto ''CuckooClock'' e ho creato un &amp;lt;u&amp;gt;pacchetto per Debian&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In una nuova VM con il solo sistema operativo aggiornato ho importato la cartella ''debian'' contenente tutti i pacchetti creati da Gambas.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo punto ho aperto il terminale e dato i seguenti comandi:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/3.20/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:gambas:3.20.list&lt;br /&gt;
&lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:3.20/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_gambas_3.20.gpg &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': volendo, al posto del repository della stabile possiamo anche installare il repository della versione Master.&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Essendo su ''Gnome'' ho scaricato anche i pacchetti per il funzionamento con le librerie QT5:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock-qt5_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Fatto, ora possiamo aprire il progetto da ''Attività'' &amp;gt; ''Mostra applicazioni'' e possiamo anche bloccarlo sulla Dash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Note ==&lt;br /&gt;
[1] [[Compilare Gambas]]&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40773</id>
		<title>Compilare Gambas</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40773"/>
		<updated>2025-01-19T16:22:38Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== I Repository ==&lt;br /&gt;
&lt;br /&gt;
Per chi viene da altri sistemi operativi l’installazione di un programma in Linux può apparire poco chiara.&amp;lt;br&amp;gt;&lt;br /&gt;
Ormai, visto che tutti abbiamo uno smartphone, l’idea di uno ''Store'', cioè di un luogo virtuale da cui scaricare un’applicazione che ci serve, non è più una novità e infatti il sistema è stato copiato da Linux e dai suoi '''Repository'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Se in Linux serve un dato programma basta sceglierlo nel repository, fra le tante applicazioni del genere disponibili liberamente, installarlo e siamo subito operativi.&lt;br /&gt;
&lt;br /&gt;
Purtroppo date le tante distribuzioni che arricchiscono Linux, non sempre i programmi ivi presenti sono all’ultima versione, questo accade per i programmi più diffusi figurarsi per quelli di nicchia come ''Gambas''.&lt;br /&gt;
&lt;br /&gt;
Quindi se si vuole l’ultima versione di ''Gambas'', ''Stable'' oppure ''Master'' quella fresca di giornata con tutti gli ultimi ''fix'', non rimane altra scelta che compilare.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;Invero per chi usa Ubuntu o una sua derivata tipo Mint esistono dei repository speciali chiamati '''PPA''', quello di Gambas è curato direttamente da ''Benoit Minisini'' ideatore di ''Gambas''.&amp;lt;br&amp;gt;&lt;br /&gt;
Normalmente 24 ore dopo l’uscita, la nuova versione è disponibile.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo link troviamo i comandi per il terminale:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambaswiki.org/wiki/install/ubuntu#t1&amp;lt;/strike&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  '''Nota''': occorre leggere l'annuncio di Minisini del 13 novembre 2024 su Launchpad qui: https://gambas.sourceforge.net/en/main.html &amp;lt;br&amp;gt; Leggere anche questo topic sul nostro forum: https://www.gambas-it.org/smf/index.php?topic=11103.msg54741#msg54741&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cosa significa compilare ==&lt;br /&gt;
&lt;br /&gt;
Compilare è una &amp;lt;u&amp;gt;semplicissima operazione&amp;lt;/u&amp;gt; che permette di trasformare un file di codice sorgente in un file binario eseguibile dalla nostra distribuzione.&lt;br /&gt;
&lt;br /&gt;
L’operazione consiste nell’inviare al compilatore ''gcc'' attraverso il terminale alcuni comandi che eseguono degli ''script'' di shell e delle ''macro'' che automatizzano il tutto.&amp;lt;br&amp;gt;&lt;br /&gt;
Per prima cosa vengono eseguiti gli ''script'' che predispongono il codice per la nostra distribuzione quindi le funzioni (''macro'') che creano e installano l’eseguibile.&lt;br /&gt;
&lt;br /&gt;
Compilare un programma in GNU/Linux consiste in pratica nel dare tre comandi da terminale (''configure'' [script], ''make'' e ''make install'' [funzioni]), quale è dunque il motivo che spaventa i più?&lt;br /&gt;
&lt;br /&gt;
Credo che quello principale sia che ''Windows'' ci ha abituato a fare tutto attraverso le finestre e pertanto scrivere comandi in un terminale ci appare una cosa aliena, però se abbiamo velleità di programmazione la cosa risulta risibile, visto che programmare altro non è che scrivere comandi, i nostri comandi.&lt;br /&gt;
&lt;br /&gt;
''Gambas'', come tutte le applicazioni ''open source'' viene rilasciato sotto forma di codice sorgente &amp;lt;SUP&amp;gt;&amp;amp;#091;[[#Note|Nota 1]]&amp;amp;#093;&amp;lt;/sup&amp;gt; ed è attualmente presente su ''GitLab'' a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas&lt;br /&gt;
&lt;br /&gt;
''GitLab'' si apre sulla versione ''Master'' (quella in corso di sviluppo), ma agendo sul pulsante menu è possibile scegliere la versione stabile (''Stable'').&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi il suo codice può essere scaricato da li, anche graficamente, come file compresso: ''Tarball'' (con estensione .tar.gz, .tar.bz2 o .tar) oppure ''Zip'' (.zip).&lt;br /&gt;
&lt;br /&gt;
Dopo aver scaricato il file nella cartella desiderata, tipicamente la nostra ''home'', si può decomprimerlo usando il tasto destro del mouse e l’apposita voce di menu, ma visto che comunque per compilare dai sorgenti si dovrà fare uso del terminale e più avanti verrà descritta l’intera operazione di scaricamento da ''GitLab'', scaricare il file in questo modo appare inutile, a meno che si stia cercando una versione precedente l’attuale.&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi è comunque bene sapere che anche da ''GitLab'' sotto la voce ''Comit'' si può scaricare in forma compressa qualunque ''Gambas precedente'' sia stabile che di sviluppo.&lt;br /&gt;
&lt;br /&gt;
== Le librerie dinamiche ==&lt;br /&gt;
&lt;br /&gt;
Tutto troppo facile, vero?&amp;lt;br&amp;gt;&lt;br /&gt;
Uno potrebbe immaginare che vengano celate delle difficoltà !&amp;lt;br&amp;gt;&lt;br /&gt;
E infatti, la difficoltà del caso si chiama '''Libreria'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Un programma per funzionare ha bisogno che nel sistema siano installate determinate librerie, esattamente quelle della giusta versione.&amp;lt;br&amp;gt;&lt;br /&gt;
Pertanto installare un programma è semplice, trovare le librerie di cui si necessita per la distribuzione in nostro uso lo è un po’ meno e non perché sia difficile installarle ma perché è difficile capire come è stata nominata quella specifica libreria.&amp;lt;br&amp;gt;&lt;br /&gt;
''Gambas'' oltre che un programma è anche un linguaggio di programmazione e va da se che si basi su moltissime librerie.&lt;br /&gt;
&lt;br /&gt;
== Niente panico ==&lt;br /&gt;
&lt;br /&gt;
La stragrande maggioranza delle distribuzioni deriva da poche altre distribuzioni, per le più diffuse, le librerie utili a ''Gambas'' sono elencate nel file di configurazione YAML a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas/-/blob/master/.gitlab-ci.yml&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': il tipo di desktop in uso non è importante per la compilazione, quello che conta riguardo alle librerie da scaricare è la '''distribuzione''' che è il modo in uso a GNU/Linux di chiamare il sistema operativo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per compilare Gambas ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
  '''Nota''': la compilazione va fatta su una distribuzione pulita, vale a dire che ''Gambas'' non può essere già presente anche se scaricato dai repository.&amp;lt;br&amp;gt;Se è già presente, prima di poter compilare ''Gambas'' occorre &amp;lt;u&amp;gt;rimuoverlo completamente&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Qui come esempio useremo una distribuzione basata su ''Arch Linux'', tipo ''Manjaro'', ''Endeavour'' oltre che naturalmente a ''Arch'' stesso.&amp;lt;br&amp;gt;&lt;br /&gt;
Attualmente ''Benoit Minisini'' utilizza ''Manjaro'' con ''KDE''.&lt;br /&gt;
&lt;br /&gt;
''Quanto qui descritto si può adattare a qualunque altra distribuzione ed è indirizzato a programmatori dilettanti come lo scrivente, se siete dei professionisti il consiglio è di dare un’occhiata comunque''.&amp;lt;br&amp;gt;&lt;br /&gt;
Quello che segue servirà a preparare la giusta lista dei comandi che poi daremo da terminale usando il copia e incolla.&lt;br /&gt;
&lt;br /&gt;
* Copiamo il codice ''yaml'' su cui è basata la nostra distribuzione.&amp;lt;br&amp;gt;Ad esempio se noi utilizzassimo ''Mint 22'', dovremmo copiare il codice yaml di ''Ubuntu Noble'' sulla quale ''Mint 22'' è basata.&amp;lt;br&amp;gt;'''Attenzione''': le librerie in ''yaml''  sono scritte in modo differente in base alla distribuzione, alcune sono incolonnate come quelle di ''Arch'' altre scritte sequenzialmente in un unica lunga stringa vedi ''Ubuntu'', dobbiamo accertarci di copiare tutto.&lt;br /&gt;
* Incolliamo il codice yaml su un file di testo con l’aiuto di un editor e andiamo a cambiarlo così:&lt;br /&gt;
** eliminiamo le prime quattro righe&lt;br /&gt;
** anteponiamo '''sudo''' davanti al/ai comando che installa le librerie, nel caso di ''Arch'' si dovrà dare due comandi come scritto nel file, se nella nostra distribuzione non abbiamo sudo ci dobbiamo trasformare in utente ''root'' per poter installare le librerie.&amp;lt;br&amp;gt;Dopo averle incollate le librerie vanno cambiate in modo che siano separate fra di loro da uno spazio eliminando così eventuali tabulazioni e/o gli accapo.&lt;br /&gt;
** Ora dipende da quale Gambas desideriamo scaricare e installare,  questo nuovo comando dobbiamo inserirlo, in una nuova riga, nel file di testo subito dopo le librerie e serve a copiare in una nuova cartella all’interno della nostra ''home'' il progetto ''Gambas'' da compilare, per la versione stabile il comando è:&amp;lt;br&amp;gt;git clone --branch stable --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo chiamata ''Master'' il comando è:&amp;lt;br&amp;gt;git clone --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambasdevel&lt;br /&gt;
** Dopo aver aggiunto il comando desiderato, occorre spostarsi all’interno della nuova cartella con uno di questi comandi, per la versione stabile il comando è:&amp;lt;br&amp;gt;cd gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo il comando è:&amp;lt;br&amp;gt;cd gambasdevel&lt;br /&gt;
** Gli altri comandi incollati rimangono invariati, tranne l'ultimo anch'esso preceduto da '''sudo''', vale a dire:&amp;lt;br&amp;gt;./reconf-all&amp;lt;br&amp;gt;GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl&amp;lt;br&amp;gt;make -j$(nproc)&amp;lt;br&amp;gt;sudo make install&lt;br /&gt;
&lt;br /&gt;
A questo punto, se avessimo scelto la versione di sviluppo (''Master''), il nostro file di testo dovrebbe assomigliare a questo, da notare che per facilitare la lettura, ho aggiunto degli spazi tra un comando e l’altro:&lt;br /&gt;
&lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm alure autoconf automake bzip2 zstd coreutils curl dbus gcc gdk-pixbuf2 git glew glib2 gmime3 gsl gst-plugins-base gstreamer gtk2 gtk3 imlib2 intltool libffi libgl libgnome-keyring mariadb-libs librsvg libsm libxcursor libxml2 libxslt libxtst mariadb make mesa ncurses pcre''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm pkg-config poppler poppler-glib postgresql postgresql-libs qt5-svg qt5-x11extras sdl2 sdl2_gfx sdl2_image sdl2_mixer sdl2_net sdl2_ttf sdl_mixer sdl_ttf smpeg sqlite unixodbc v4l-utils xdg-utils zlib gettext qt5-webengine webkit2gtk qt6-svg qt6-webengine mongo-c-driver''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
Non ci rimane che copiare e incollare, &amp;lt;u&amp;gt;un comando alla volta&amp;lt;/u&amp;gt;, nel terminale della nostra distribuzione che nel caso dell'esempio è ''Manjaro Linux''.&amp;lt;br&amp;gt;&lt;br /&gt;
Come detto se la nostra distribuzione non usa ''sudo'' occorre che al posto di sudo ci eleviamo a utente '''root''', senza mettere '''sudo''' nel comando.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per aggiornare ==&lt;br /&gt;
&lt;br /&gt;
Questo sistema è un po' drastico e se si ha padronanza di ''git'' possiamo anche saltarlo, occorre solo sapere che è l’unico sistema che garantisce l’aggiornamento sicuro di Gambas:&lt;br /&gt;
&lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make uninstall''&lt;br /&gt;
  &lt;br /&gt;
  ''cd''&lt;br /&gt;
  &lt;br /&gt;
  ''rm -rf gambasdevel/''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
'''Nota''': se usiamo la versione stabile dobbiamo sostituire ''gambasdevel'' con ''gambas-stable'' e cambiare il comando git clone con quello del ramo stabile (''git clone --branch stable --depth=1 https://gitlab.com/gambas/gambas.git gambas-stable'').&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Note==&lt;br /&gt;
[1] È proprio il fatto di dover nascondere il codice per poterlo vendere che in Windows i programmi vengono distribuiti come binari (.exe).&amp;lt;br&amp;gt;&lt;br /&gt;
Sono decisamente facili da installare (meno che da repository) rispetto alla compilazione, ma dobbiamo ammettere che compilare è molto meno oneroso.&amp;lt;br&amp;gt;&lt;br /&gt;
[2] [[Installazione di Gambas3 dai pacchetti binari]]&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Guide_della_comunit%C3%A0&amp;diff=40772</id>
		<title>Guide della comunità</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Guide_della_comunit%C3%A0&amp;diff=40772"/>
		<updated>2025-01-19T16:18:00Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Raccolta di guide sui componenti, sui metodi e sugli algoritmi del linguaggio Gambas, nonché su ogni altro argomento utile, scritti e mantenuti dalla comunità italiana Gambas-it&lt;br /&gt;
&lt;br /&gt;
== Array (Vettori) e Matrici ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Array: creazione, modifica e riempimento]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Array multidimensionali con numero determinato di elementi]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Array multidimensionali con numero indeterminato di elementi]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Array annidati]]&lt;br /&gt;
&lt;br /&gt;
* [[Array contenenti array di varie dimensioni]]&lt;br /&gt;
&lt;br /&gt;
* [[Array in linea]]&lt;br /&gt;
&lt;br /&gt;
* [[Accedere linearmente in scrittura ed in lettura ad una Matrice]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare ad un vettore i valori contenuti da un'area di memoria puntata da un Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare ciascuna cifra di un numero a un elemento di un vettore di tipo Byte]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare i byte dei dati di un numero agli elementi di un vettore di tipo Byte]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare un vettore ad una variabile di tipo Object]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare un vettore ad una variabile di tipo Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Configurazione, organizzazione ed impostazione dell'array secondo i sorgenti di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere quale elemento di un vettore contiene un determinato valore]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con i Puntatori i valori contenuti in un vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il valore numerico più alto contenuto da un vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la dimensione ed il numero di elementi di una Matrice]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in un array di tipo Stringa la quantità maggiore di caratteri contenuta nei suoi elementi]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in un array di tipo Stringa l'elemento che contiene la quantità maggiore di caratteri]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire i valori di tipo Byte di un vettore in valori di tipo Stringa]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Copie di variabili array]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare più elementi da un array]]&lt;br /&gt;
&lt;br /&gt;
* [[Emulare la funzione Asc() con il vettore di tipo Byte]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestione di una coda mediante array in modo circolare]]&lt;br /&gt;
&lt;br /&gt;
* [[Invertire l'ordine dei valori contenuti dagli elementi di un vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Invertire l'ordine nelle coppie di byte dell'area di memoria di un vettore con la funzione esterna swab()]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere e scrivere in un vettore mediante i Memory Stream]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il puntatore a una variabile vettoriale]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un vettore di tipo Byte da una Stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Porre a zero i valori contenuti da un Vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Proprietà ReadOnly dell'Array (proprietà di sola lettura)]]&lt;br /&gt;
&lt;br /&gt;
* [[Raccogliere il valore contenuto nell'ultimo elemento di indice non conosciuto di un vettore restituito da una funzione]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere in un vettore i dati di un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare un Vettore al posto di una Matrice]]&lt;br /&gt;
&lt;br /&gt;
== Balloon ==&lt;br /&gt;
&lt;br /&gt;
* [[Colorare il testo di un Balloon]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un'immagine in un Ballon]]&lt;br /&gt;
&lt;br /&gt;
* [[Posizionare arbitrariamente un Balloon]]&lt;br /&gt;
&lt;br /&gt;
== Classi ==&lt;br /&gt;
&lt;br /&gt;
===Classi in generale===&lt;br /&gt;
&lt;br /&gt;
* [[Accedere alla Struttura della risorsa &amp;quot;Classe&amp;quot;, come dichiarata nei sorgenti di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le risorse possedute da una Classe]]&lt;br /&gt;
&lt;br /&gt;
* [[Rendere gli elementi di una Classe richiamabili da un progetto Gambas esterno]]&lt;br /&gt;
&lt;br /&gt;
* [[Usare una Classe come fosse una Funzione]]&lt;br /&gt;
&lt;br /&gt;
===Classi particolari native===&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere una funzione personalizzata alla Classe nativa String]]&lt;br /&gt;
&lt;br /&gt;
* [[La classe Action]]&lt;br /&gt;
&lt;br /&gt;
===Classi specifiche===&lt;br /&gt;
&lt;br /&gt;
* [[Creare da codice una Classe specifica]]&lt;br /&gt;
&lt;br /&gt;
* [[Variabile del tipo di una Classe specifica creata]]&lt;br /&gt;
&lt;br /&gt;
* [[Vettore del tipo di una Classe specifica creata]]&lt;br /&gt;
 &lt;br /&gt;
====Classi particolari realizzate della Comunità Gambas-it.org====&lt;br /&gt;
&lt;br /&gt;
* [[Clib]]&lt;br /&gt;
&lt;br /&gt;
* [[csvbox]]&lt;br /&gt;
&lt;br /&gt;
* [[CTable]]&lt;br /&gt;
&lt;br /&gt;
* [[Fifo]]&lt;br /&gt;
&lt;br /&gt;
* [[GLibrary]]&lt;br /&gt;
&lt;br /&gt;
* [[GridViewUtil]]&lt;br /&gt;
&lt;br /&gt;
* [[PdfWriter]]&lt;br /&gt;
&lt;br /&gt;
* [[TrasfImpLett]]&lt;br /&gt;
&lt;br /&gt;
== Clipboard ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della classe Clipboard]]&lt;br /&gt;
&lt;br /&gt;
== Collection ==&lt;br /&gt;
&lt;br /&gt;
* [[Collection]]&lt;br /&gt;
&lt;br /&gt;
* [[Confronto Array di Strutture verso Collezione di Classi]]&lt;br /&gt;
&lt;br /&gt;
* [[Definizione esplicita di una Collection]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il valore attribuito a una chiave della Collection]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare un campo di una Collection in un'altra Collection]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare un Metodo o una Proprietà della Classe di un Oggetto inserito in una Collection]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare un'intera Collection nel campo di un'altra Collection]]&lt;br /&gt;
&lt;br /&gt;
== ColorInfo ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della classe ColorInfo]]&lt;br /&gt;
&lt;br /&gt;
== ColumnView ==&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere una colonna a una ColumnView]]&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere una riga a una ColumnView]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare colori allo sfondo ed al testo di una riga selezionata di una ColumnView]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare il testo a una cella della ColumnView]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare la larghezza delle colonne in una ColumnView]]&lt;br /&gt;
&lt;br /&gt;
== ComboBox ==&lt;br /&gt;
&lt;br /&gt;
* [[ComboBox che consente di posizionarsi sulla prima ricorrenza di un item quando si digitano le sue prime lettere]]&lt;br /&gt;
* [[ComboBox che mostra immagini anziché caratteri alfanumerici]]&lt;br /&gt;
* [[ComboBox: creare una lista da codice]]&lt;br /&gt;
* [[Impostare il colore del testo di ogni elemento della lista del ComboBox]]&lt;br /&gt;
* [[Impostare il colore dello sfondo del ComboBox]]&lt;br /&gt;
* [[Ridimensionare la larghezza della finestra a cascata di un ComboBox in base alla lunghezza testuale di un elemento della lista]]&lt;br /&gt;
* [[Scegliere da codice un elemento presente in un ComboBox]]&lt;br /&gt;
* [[Scegliere da codice un indice del ComboBox]]&lt;br /&gt;
&lt;br /&gt;
==Come Compilare Gambas==&lt;br /&gt;
* [[Compilare Gambas]]&lt;br /&gt;
&lt;br /&gt;
== Componenti ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Cosa è un Componente di Gambas]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Attivare un Componente dinamicamente da codice]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il nome del Componente di appartenenza di una Classe mediante i sorgenti di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le Classi possedute da un Componente]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare un Componente obsoleto]]&lt;br /&gt;
&lt;br /&gt;
=== Realizzazione dei Componenti in linguaggio Gambas ===&lt;br /&gt;
&lt;br /&gt;
* [[Come creare un Componente scritto in linguaggio Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Tutorial - creare un componente: il frame]]&lt;br /&gt;
&lt;br /&gt;
==== Componenti della Comunità Gambas-it.org ====&lt;br /&gt;
&lt;br /&gt;
* [[gb.strLib]]&lt;br /&gt;
&lt;br /&gt;
* [[gb.textpro]]&lt;br /&gt;
&lt;br /&gt;
* [[GridBox]]&lt;br /&gt;
&lt;br /&gt;
* [[INILib]]&lt;br /&gt;
&lt;br /&gt;
* [[InvBox]]&lt;br /&gt;
&lt;br /&gt;
* [[qrcodereader]]&lt;br /&gt;
&lt;br /&gt;
* [[XMLLib]]&lt;br /&gt;
&lt;br /&gt;
=== Realizzazione dei Componenti in linguaggio C ===&lt;br /&gt;
&lt;br /&gt;
* [[Creare un Componente per Gambas scritto in linguaggio C]]&lt;br /&gt;
&lt;br /&gt;
== CPU e Scheda Madre==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con alcune funzioni della libreria libc.so.6 il numero dei processori configurati e disponibili]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il numero dei processori presenti nel proprio calcolatore con la Proprietà System.Cores]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il numero dei processori presenti nel proprio calcolatore leggendo il file di sistema &amp;quot;cpuinfo&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la frequenza delle CPU mediante le funzioni esterne del API di Libcpufreq]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la risoluzione dei clock hardware con le risorse esterne dichiarate nel file header &amp;quot;time.h&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Controllare la temperatura della CPU con le sole funzioni di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Controllare la temperatura dell'hardware mediante le funzioni del API di libsensors]]&lt;br /&gt;
&lt;br /&gt;
* [[Generare arbitrariamente un errore &amp;quot;CPU Time Limit Exceeded&amp;quot; con la funzione esterna vlimit()]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni sulla CPU mediante l'API di Libavutil]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni sulla CPU mediante l'API di Libcpuid]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni generali sulla CPU con le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni generali sulla CPU con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare la frequenza delle CPU con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
== Creazione pacchetti di installazione ==&lt;br /&gt;
&lt;br /&gt;
* [[Creare un AppImage firmata di un progetto Gambas]]&lt;br /&gt;
&lt;br /&gt;
== DBus ==&lt;br /&gt;
&lt;br /&gt;
* [[Introduzione a DBus]]&lt;br /&gt;
&lt;br /&gt;
* [[Inviare dati da un programma Gambas ad un altro mediante le risorse del Componente DBus]]&lt;br /&gt;
&lt;br /&gt;
== Desktop - Scrivania ==&lt;br /&gt;
&lt;br /&gt;
* [[Far mostrare sulla Scrivania i messaggi della specifica Desktop Notifications mediante le funzioni esterne del API di Libnotify]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare con precisione il percorso ed il nome della Scrivania]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il valore di un pixel sulla Scrivania]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni sulle icone presenti sulla Scrivania]]&lt;br /&gt;
&lt;br /&gt;
== DesktopFile ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso del Metodo .RunExec()]]&lt;br /&gt;
&lt;br /&gt;
== DesktopWatcher ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della classe DesktopWatcher]]&lt;br /&gt;
&lt;br /&gt;
== DesktopWindow ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della classe DesktopWindow]]&lt;br /&gt;
&lt;br /&gt;
== Dialog ==&lt;br /&gt;
&lt;br /&gt;
* [[Caricare in un Dialog più file da aprire in sequenza]]&lt;br /&gt;
&lt;br /&gt;
* [[Far mostrare in un Dialog l'estensione dell'ultimo file precedentemente aperto]]&lt;br /&gt;
&lt;br /&gt;
* [[Far mostrare in un Dialog una particolare estensione di file]]&lt;br /&gt;
&lt;br /&gt;
* [[Filtrare contemporaneamente con il Dialog.Filter più estensioni di file]]&lt;br /&gt;
&lt;br /&gt;
* [[Preimpostare il percorso della finestra del Dialog]]&lt;br /&gt;
&lt;br /&gt;
* [[Ridimensionare la finestra del Dialog da codice]]&lt;br /&gt;
&lt;br /&gt;
== DirView - FileView ==&lt;br /&gt;
&lt;br /&gt;
* [[Copiare un file utilizzando gli oggetti DirView e FileView]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare con diversi colori i nomi dei file in una FileView]]&lt;br /&gt;
&lt;br /&gt;
== Drag &amp;amp; Drop ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Codice essenziale per effettuare il Drag-Drop di un'immagine da un Controllo grafico in un altro]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Codice essenziale per effettuare il Drag-Drop di un testo]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Mantenere durante il Drag&amp;amp;Drop il cursore del mouse nel punto dell'immagine ove si è cliccato]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare il contenuto di un file di testo con il solo Drop del file in un oggetto di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un'immagine con il Drop del suo file in una PictureBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il percorso di un file trasportato e rilasciato con Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare Oggetti grafici con il mouse all'interno di un Contenitore mediante Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
== DrawingArea ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Istruzioni essenziali per disegnare su una DrawingArea]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Calcolo e rappresentazione grafica in una DrawingArea del Seno e del Coseno]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare e distruggere un Controllo grafico in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare, spostare e distruggere un'immagine in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Curvare il testo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea dei punti]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea due immagini sovrapposte anche consentendo il cambio di opacità di quella disegnata sopra]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea l'intersezione perpendicolare di due linee]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea linee mediante codice]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea linee rette con il mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea sulla base dei punti cliccati un parallelogramma con angoli retti]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un carattere punto per punto]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un cerchio]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un eptagono regolare]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un esagono regolare]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un goniometro]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un ottagono regolare]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un pentagono regolare]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un poligono]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un rettangolo]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un rettangolo colorato con distinzione sfumata fra i colori]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un rombo]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un romboide]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un triangolo]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea una figura piana]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea una pseudo-galleria rettangolare tridimensionale in prospettiva con effetto grafico di movimento in avanti]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea una spirale]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare un Button contenente un'icona e un testo mediante la DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare un misuratore analogico su una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare un orologio su una DrawingArea prendendo l'orario del sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Drag-Drop di un testo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Drag-Drop di un'immagine in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Evidenziare il puntatore del mouse quando si clicca sulla DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Far scorrere un testo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Generare un file immagine da una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Generare un file PDF da una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire in una DrawingArea che si esegua il codice presente nell'Evento &amp;quot;_Draw()&amp;quot; , qualora sia sollevato arbitrariamente più di una volta]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare l'opacità di un disegno in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare alcune sfumature di un colore in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il valore di un pixel in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'effetto della gomma per cancellare in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare direttamente ad un oggetto Image i dati grezzi dei pixel di una DrawingArea mediante le risorse del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare il testo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare qualsiasi elemento da disegnare in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un arco in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un cerchio disegnato in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un eptagono in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un esagono in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un ottagono in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un pentagono in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un quadrato ed un rettangolo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un rombo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un romboide in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un triangolo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare una figura piana intorno a una circonferenza in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un'immagine sul proprio asse centrale in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere del testo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse il testo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse senza Drag&amp;amp;Drop un'immagine caricata in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse un cerchio in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse un Controllo grafico generato in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse un rettangolo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse un triangolo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse un'ellisse in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare il contenuto di una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
== File e Directory ==&lt;br /&gt;
&lt;br /&gt;
* [[Aprire un file mediante la Classe 'DesktopFile' con il programma al quale è associato]]&lt;br /&gt;
&lt;br /&gt;
* [[Arrestare temporaneamente l'intercettazione del flusso di dati da un file-device]]&lt;br /&gt;
&lt;br /&gt;
* [[Azzerare un gruppo di byte in un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Chiudere un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Comprimere un file in un file compresso .zip mediante le funzioni esterne del API di libzip]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere a quale applicazione è associato un tipo di file]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere caratteristiche generali dei file]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere ed impostare i permessi di un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere i permessi di un file mediante le funzioni esterne del API di libgio-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il file referenziato da un collegamento simbolico]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il mime-type di un file  mediante le funzioni esterne del API di libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il mime-type di un file  mediante le funzioni esterne del API di libmagic]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il mime-type di un file mediante le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il tipo di file mediante le funzioni esterne del API di libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il tipo di file mediante le funzioni esterne del API di libglib-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la data di accesso e di modifica di un file con le funzioni esterne del API di libgio-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la dimensione di un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire con la funzione g_filename_from_uri() di libglib-2.0 la URI di un file nel corrispondente identificativo comunemente usato]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire con la funzione g_filename_to_uri() di libglib-2.0 il percorso identificativo di un file nella sua corrispondente URI]]&lt;br /&gt;
&lt;br /&gt;
* [[Copiare ricorsivamente una cartella]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file e scrivervi dati con le funzioni esterne della libreria libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file bash]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un link simbolico di un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Controllare l'uguaglianza di due file mediante le funzioni esterne del API di libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Effettuare una copia di un file e verificarne la progressione]]&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare un byte all'interno di un file binario]]&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare un file mediante le funzioni esterne del API di GLib]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre con le funzioni del API di libzip i file contenuti da un file compresso .zip]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre da una cartella uno o più file nascosti]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre il percorso di un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre l'icona di un tipo di file]]&lt;br /&gt;
&lt;br /&gt;
* [[Evitare l'errore &amp;quot;Stream chiuso&amp;quot; dopo aver chiuso un flusso di dati]]&lt;br /&gt;
&lt;br /&gt;
* [[Identificare un tipo di file dalla sua estensione]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostazione dei permessi di un file con la funzione 'g_chmod' del API di libglib-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[L'oggetto File secondo i sorgenti di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere dati dai &amp;quot;File Descriptor&amp;quot; passati da funzioni esterne]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere il contenuto di una Directory mediante le risorse dichiarate nel file header &amp;quot;dirent.h&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere in una cartella con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere un file con READ]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere un file di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere un file di testo con carattere di fine riga di codifica MAC]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare le date di accesso e di modifica dell'inode di un file con le risorse esterne di utime.h]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare o eliminare una riga in un file di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Monitorare con le funzioni esterne del API di libgio-2.0 le modifiche apportate ad un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni generali sui file]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere all'apertura di un file un Puntatore anziché una variabile di tipo File]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il nome di un file mediante le funzioni esterne del API di libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il percorso di un file, associato a un programma .gambas, aprendolo con un doppio-clic]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il percorso di un file trasportato e rilasciato con Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il solo nome ed il solo percorso di un file con le funzioni esterne del API di Glib-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'intero percorso di un file mediante le funzioni esterne del API di libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la directory di appartenenza di un file mediante le funzioni esterne del API di libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un file coerente da dati con rappresentazione come stringa in memoria]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un numero dalla sua memorizzazione in formato Big-Endian]]&lt;br /&gt;
&lt;br /&gt;
* [[Percorso assoluto e percorso relativo dei file]]&lt;br /&gt;
&lt;br /&gt;
* [[Porre sotto osservazione con Read Watch due o più file]]&lt;br /&gt;
&lt;br /&gt;
* [[Raccogliere solo alcune righe all'interno di un file di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Reindirizzare lo standard output con Output To]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare un file dalla Home]]&lt;br /&gt;
&lt;br /&gt;
* [[Rinominare un file mediante le funzioni esterne del API di GLib]]&lt;br /&gt;
&lt;br /&gt;
* [[Salvare i byte-dati di un file in un file di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Salvare in un file le stringhe contenute in un vettore di tipo Stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere con le risorse del API di Glib se il percorso di un file è un percorso assoluto]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere in tempo reale se un file di nome conosciuto viene modificato o distrutto]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere l'ordine dei byte utilizzato dal sistema per salvare i dati]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quale file è stato creato per ultimo]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un file di nome sconosciuto è stato creato o distrutto]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un file esiste mediante le funzioni esterne del API di libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Scaricare un file da internet]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere all'interno di un file di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere in un file i dati presenti in un vettore di tipo Byte]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere in un file solo alcuni dati presenti in un'area riservata di memoria]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere un file di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare un file nel Cestino e ripristinarlo nella sua Cartella di origine]]&lt;br /&gt;
&lt;br /&gt;
* [[Troncare un file ad una determinata dimensione con la funzione esterna truncate()]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare l'esistenza di una directory]]&lt;br /&gt;
&lt;br /&gt;
== FileChooser ==&lt;br /&gt;
&lt;br /&gt;
* [[Impedire in un FileChooser che facendo doppio-clic su un file, ne venga richiesta la sovrascrittura]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare da codice la modalità di visualizzazione interna dei file in un FileChooser]]&lt;br /&gt;
&lt;br /&gt;
== Font ==&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare Font senza installarli nel sistema]]&lt;br /&gt;
&lt;br /&gt;
== Form, Finestre e Contenitori ==&lt;br /&gt;
&lt;br /&gt;
* [[Chiudere tutte le finestre aperte da un applicativo]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un Form mediante la Classe Window]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare una finestra e disegnarvi una scacchiera con le funzioni del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare una finestra ed inserirvi del testo con le funzioni esterne di Libcaca]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare una finestra mediante le funzioni del API di GTK+3]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare una finestra mediante le funzioni del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare una finestra mediante le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare una finestra mediante le funzioni del API di XCB]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file immagine dagli oggetti presenti in un Contenitore]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un Form trasparente]]&lt;br /&gt;
&lt;br /&gt;
* [[Dimensionare il Form o un'altra finestra considerando la presenza della barra delle applicazioni sulla Scrivania]]&lt;br /&gt;
&lt;br /&gt;
* [[Evitare la perdita di memoria chiudendo forzatamente un Form]]&lt;br /&gt;
&lt;br /&gt;
* [[Evento Form_Activate e sua possibile sostituzione]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire l'apertura di un Form secondario più di una volta]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire la chiusura di un Form quando si clicca sulla &amp;quot;X&amp;quot; nell'angolo in alto a destra]]&lt;br /&gt;
&lt;br /&gt;
* [[Inglobare un Form o una finestra in un altro suo Form o finestra del medesimo programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Mantenere il Form di un'applicazione Gambas sempre in primo piano]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare una immagine JPEG in una finestra con le funzioni del API di X11 e di Libjpeg]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un'immagine del Form]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare ad un Form un valore diverso da un Intero alla chiusura di un Form secondario]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare valori e altre risorse da un Form principale a un Form secondario]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare valori e altre risorse da un Form secondario a un Form principale]]&lt;br /&gt;
&lt;br /&gt;
* [[Rapporto fra ShowModal ed il Metodo Form.Close]]&lt;br /&gt;
&lt;br /&gt;
* [[Referenziare in modo appropriato lo spazio all'interno di un Contenitore rispetto ai suoi Oggetti figli]]&lt;br /&gt;
&lt;br /&gt;
* [[Restituire ad un Form un valore passato ad Form secondario]]&lt;br /&gt;
&lt;br /&gt;
* [[Semitrasparenza di un Form]]&lt;br /&gt;
&lt;br /&gt;
* [[Simulare il posizionamento di alcuni ToolButton sulla barra del titolo della finestra]]&lt;br /&gt;
&lt;br /&gt;
* [[Sollevare l'evento _Resize al ridimensionamento di un Form secondario]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare un Form con il mouse sulla Scrivania]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare se un Form è attivo]]&lt;br /&gt;
&lt;br /&gt;
== Funzioni ==&lt;br /&gt;
&lt;br /&gt;
* [[Differenza fra Sub, Procedure e Function]]&lt;br /&gt;
&lt;br /&gt;
* [[Emulare i Puntatori a Funzione del linguaggio C mediante gli Oggetti]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestire Funzioni come oggetti]]&lt;br /&gt;
&lt;br /&gt;
* [[Passaggio di un argomento per 'indirizzo' ad una Funzione]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare a una funzione un numero imprecisato di argomenti]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere una Funzione]]&lt;br /&gt;
&lt;br /&gt;
== Gambas ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la versione di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le parole-chiave usate in Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Far apparire un commento a una risorsa nella finestrina guida nell'editor del codice]]&lt;br /&gt;
&lt;br /&gt;
* [[Icone messe a disposizione da Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare in un file compilato .gambas gli eventuali file esterni in esso allegati]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare la cartella principale dei file sorgenti di Gambas contenente la sub-cartella di un file immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[La cartella ove sono salvati in copia i file delle informazioni della wiki ufficiale sulle risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'indirizzo effettivo dei file ospitati in un progetto Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Visualizzare tutti gli elementi rilevanti di Gambas contenuti dal codice di un progetto]]&lt;br /&gt;
&lt;br /&gt;
== Gambas con HTML e JavaScript ==&lt;br /&gt;
&lt;br /&gt;
* [[Gambas con HTML e JavaScript - Uso necessario dell'oggetto WebView]]&lt;br /&gt;
&lt;br /&gt;
==== Applicazioni specifiche ====&lt;br /&gt;
&lt;br /&gt;
* [[Creare un ComboBox in una tabella e passare i suoi valori selezionati al codice Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire dati con un InputBox mediante codice HTML]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere un valore generato da un codice HTML/JavaScript]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare una finestra tipo MessageBox mediante codice HTML]]&lt;br /&gt;
&lt;br /&gt;
* [[Testo scorrevole dall'alto verso il basso e viceversa]]&lt;br /&gt;
&lt;br /&gt;
== Gambas e Arduino ==&lt;br /&gt;
&lt;br /&gt;
* [[Far interagire Gambas con Arduino]]&lt;br /&gt;
&lt;br /&gt;
* [[Inviare dati ad Arduino]]&lt;br /&gt;
&lt;br /&gt;
* [[Ricevere dati da Arduino]]&lt;br /&gt;
&lt;br /&gt;
* [[Ricevere da Arduino un tipo di dato di dimensione superiore al Byte]]&lt;br /&gt;
&lt;br /&gt;
* [[Ricevere una Struttura da Arduino]]&lt;br /&gt;
&lt;br /&gt;
== Gambas3 &amp;amp; SubVersion ==&lt;br /&gt;
&lt;br /&gt;
* [[Gambas3 &amp;amp; SubVersion]]&lt;br /&gt;
&lt;br /&gt;
== Gestione Basi di Dati ==&lt;br /&gt;
&lt;br /&gt;
* [[Installazione Server PostgreSQL]]&lt;br /&gt;
&lt;br /&gt;
== Gestione dei dati audio e dei file audio ==&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare i beat per minuto (BpM) di un file audio con le funzioni esterne del API di Libaubio]]&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare la durata di un file audio WAV]]&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare la durata di un file MP3 con le sole risorse native di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare la potenza di picco e di ampiezza di un file WAV con le funzioni esterne del API di Libaudiofile]]&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare la quantità di dati audio grezzi di un file WAV necessari per eseguire tot secondi di audio]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere alcune informazioni generali di un file OGG con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il bitrate di un file MP3 con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in tempo reale con &amp;quot;proc...fdinfo&amp;quot; la quantità dei dati elaborati di un file audio]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in tempo reale la quantità di frame audio processati dalla scheda audio]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la frequenza di campionamento di un file MP3 con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la quantità di canali di un file MP3 con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la versione e il layer di un file MP3 con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere quale file audio un programma sta eseguendo]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file audio in formato OggVorbis con le funzioni esterne del API di libfishsound, libsndfile e liboggz]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file audio in formato OggVorbis con le funzioni esterne del API di libsndfile]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file audio in testo con le risorse del API di Sndfile]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file OggVorbis in WAV con le funzioni esterne del API di Libvorbisidec]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file OggVorbis in WAV ed estrarne anche informazioni con le funzioni esterne del API di VorbisFile]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file WAV in formato AAC con le funzioni esterne del API di Faac]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file WAV in formato MP3 con le funzioni esterne del API di Lame]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file WAV in formato OggVorbis con le funzioni esterne del API di libvorbisfile, libvorbisenc e libogg]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare il blocco d'intestazione di un file WAV avendo dati audio grezzi]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;FONT Color=blue&amp;gt;[[Creare un Client di Jack con le funzioni esterne del API di libjack]]&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Creare un Client di Jack con le funzioni esterne del API di libJack e GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file WAV da un file .orc e un file .sco di Csound con le funzioni esterne del API di libcsound64]]&lt;br /&gt;
&lt;br /&gt;
* [[Decomprimere e decodificare un file mp3 con le funzioni esterne del API di AVbin]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio ed estrarne informazioni mediante le funzioni esterne del API di libcsfml]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante il codice html]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante il Metodo .Open() della Classe Desktop]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Eseguire un file audio mediante l'oggetto MediaView del componente gb.media.form]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante le funzioni esterne del API di Alsa e SndFile]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante le funzioni esterne del API di GSound]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante le funzioni esterne del API di libaudiofile e di Alsa]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante le funzioni esterne del API di Mpv]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante le funzioni esterne del API di PortAudio e SndFile]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante le funzioni esterne del API di Rhythmbox]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file mp3 usando l'API di Smpeg]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file WAV mediante le funzioni esterne del API di Flite]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file WAV mediante le funzioni esterne del API di libaudio e di Alsa]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre da un file FLAC i dati dell'immagine contenuta]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre da un file MP3 i soli dati audio grezzi mediante la libreria Libmad]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre da un file WAV i dati audio grezzi mediante le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati audio da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i TAG da un file MP3 con le funzioni esterne del API di Id3tag]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i TAG da un file MP3 con le sole funzioni di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i TAG da un file OggVorbis con le sole funzioni di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i TAG da un file SPC con le funzioni esterne del API di Libspctag]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni da un file .wav]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni da un file audio MOD con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni da un file MP3 con le funzioni esterne del API di Smpeg]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni da un file OggVorbis con le funzioni esterne del API di Vorbisfile]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni da un file VOC con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni e TAG da file audio con le funzioni esterne del API di Libtag_c]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni e TAG da un file audio con le funzioni esterne del API di SndFile]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni e TAG da un file MP3 con le funzioni esterne del API di Avbin]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni generali da un file audio aiff con le sole funzioni di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni generali da un file audio con le funzioni esterne del API di Libaudiofile]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni generali da un file audio flac]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre l'immagine contenuta in un file MP3 con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Fondere insieme due file WAV]]&lt;br /&gt;
&lt;br /&gt;
* [[Generare un'onda sinusoidale]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare le frequenze presenti in un'onda audio con le funzioni esterne della libreria Libaubio]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[La gestione dei file audio mediante il componente gb.openal]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[La gestione dei file audio mediante il componente gb.sdl2.audio]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file audio mediante le funzioni esterne del API di Allegro 5]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file audio mediante le funzioni esterne del API di Canberra]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file audio mediante le funzioni esterne del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file audio mediante le funzioni esterne del API di MikMod]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file audio mediante le funzioni esterne del API di Mpeg3]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file audio mediante le funzioni esterne del API di mpg123]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file audio mediante le funzioni esterne del API di Sox]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[La gestione dell'audio e dei file audio mediante il componente gb.media]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di ALSA]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di LibAo]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di OpenAL]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di Opus]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di PulseAudio]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di Sndio]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di VLC]]&lt;br /&gt;
&lt;br /&gt;
* [[La struttura di un file MPEG]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il volume audio di un file WAV mediante le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il volume e la frequenza di campionamento di file audio WAV e AIFF con l'API di Libaudio]] &lt;br /&gt;
&lt;br /&gt;
* [[Modificare la frequenza di campionamento di un file audio con l'API di Libresample e Libsndfile]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare la frequenza di campionamento di un file audio con l' API di Libsamplerate e Libsndfile]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un file WAV da un file Midi con le funzioni esterne del API di FluidSynth]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un file WAV da un file Midi con le funzioni esterne del API di WildMidi]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere con le funzioni esterne del API di Rhythmbox se un file contiene dati audio e/o video]]&lt;br /&gt;
&lt;br /&gt;
* [[Suddividere in due o più parti coerenti e funzionali un file audio mp3]]&lt;br /&gt;
&lt;br /&gt;
* [[Unire due file WAV]]&lt;br /&gt;
&lt;br /&gt;
* [[Visualizzare la forma d'onda di un file WAV]]&lt;br /&gt;
&lt;br /&gt;
==== Ascolto radio da flusso web ====&lt;br /&gt;
&lt;br /&gt;
* [[Registrare in tempo reale il flusso di dati audio di una radio WEB con le risorse della Classe HttpClient di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Registrare in tempo reale in un file l'audio di una radio WEB con le funzioni esterne del API di VLC]]&lt;br /&gt;
&lt;br /&gt;
* [[Riproduzione dell'audio di radio WEB con il Componente gb.media]]&lt;br /&gt;
&lt;br /&gt;
* [[Riproduzione dell'audio di radio WEB con le funzioni esterne del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Riproduzione dell'audio di radio WEB con le funzioni esterne del API di VLC]]&lt;br /&gt;
&lt;br /&gt;
* [[Riproduzione dell'audio di radio WEB con l'oggetto WebView e con il codice HTML]]&lt;br /&gt;
&lt;br /&gt;
* [[Riproduzione e contemporanea registrazione dell'audio di radio WEB mediante il Componente gb.media]]&lt;br /&gt;
&lt;br /&gt;
==== Codifica del parlato e decodifica dei dati codificati ====&lt;br /&gt;
&lt;br /&gt;
* [[Codifica del parlato mediante le funzioni esterne del API di Speex]]&lt;br /&gt;
&lt;br /&gt;
* [[Decodifica dei dati precedentemente codificati mediante le funzioni esterne del API di Speex]]&lt;br /&gt;
&lt;br /&gt;
==== Dal testo al parlato (Text-To-Speech) ====&lt;br /&gt;
&lt;br /&gt;
* [[&amp;quot;Dal testo al parlato&amp;quot; mediante le funzioni esterne del API di eSpeack]]&lt;br /&gt;
&lt;br /&gt;
* [[&amp;quot;Dal testo al parlato&amp;quot; mediante le funzioni esterne del API di Pico TTS]]&lt;br /&gt;
&lt;br /&gt;
* [[&amp;quot;Dal testo al parlato&amp;quot; mediante le funzioni esterne del API di Speech-Dispatcher]]&lt;br /&gt;
&lt;br /&gt;
==== I/O audio ====&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di ALSA i dispositivi audio presenti nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di PortAudio i dispositivi audio presenti nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di RtAudio i dispositivi audio presenti nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di SDL2 i dispositivi audio presenti nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Rilevare se la scheda audio sta processando dati audio]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere con le funzioni esterne di ALSA quali schede audio sono installate nel computer]]&lt;br /&gt;
&lt;br /&gt;
== Gestione dei dati MIDI e dei file ''.mid''==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la durata di un file Midi con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la durata di un file Midi mediante le funzioni esterne del API di Allegro]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la durata in secondi del Tempo Delta fra due Eventi Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la lunghezza in byte di ciascuna traccia MTrk di un file Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere quale file Midi un programma sta eseguendo]]&lt;br /&gt;
&lt;br /&gt;
* [[Conversione del Tempo Delta fra due eventi Midi dai secondi nel valore esadecimale in formato &amp;quot;a lunghezza variabile&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire i dati grezzi delle note del messaggio Midi &amp;quot;NoteOn&amp;quot; nei corrispondenti simboli del protocollo ABC di notazione musicale]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un semplice Client Midi di Jack]]&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare una traccia da un file MIDI]]&lt;br /&gt;
&lt;br /&gt;
* [[Emulare con il Midi il suono del bip prodotto dall'altoparlante del PC]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file MIDI mediante il codice html]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Eseguire un file MIDI mediante il componente gb.openal]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Eseguire un file MIDI mediante il componente gb.sdl2.audio]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file MIDI mediante il Metodo .Open() della Classe Desktop]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Eseguire un file MIDI mediante l'oggetto MediaView del componente gb.media.form]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati degli eventi Midi da un file Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati MIDI da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati Midi dal file audio AIFF con le sole funzioni di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre il testo da un file Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni da un file Midi con le sole funzioni di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Fondere insieme due file MIDI]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestione del MIDI con ALSA]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestione del MIDI con O.S.S.]] (&amp;lt;FONT color=darkred&amp;gt;obsoleto&amp;lt;/font&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare dati Midi grezzi con le funzioni esterne del API di RtMidi]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare dati Midi grezzi con le funzioni esterne del API di Sndio]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare ed inviare dati Midi grezzi con le funzioni esterne del API di PortMidi]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[La gestione dei dati Midi e dei file MIDI mediante il componente gb.media]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei dati Midi mediante le funzioni esterne del API di Libsmf]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei dati Midi senza l'uso delle funzioni di Alsa]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file MIDI mediante le funzioni esterne del API di Fluidsynth]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file MIDI mediante le funzioni esterne del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file MIDI mediante le funzioni esterne del API di OpenAl]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file MIDI mediante le funzioni esterne del API di Rhythmbox]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file MIDI mediante le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file MIDI mediante le funzioni esterne del API di VLC]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file MIDI mediante le funzioni esterne del API di WildMidi]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare i dati del blocco d'intestazione e delle tracce di un file Midi con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la frequenza corrispondente ad una nota Midi e viceversa]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare la corrispondenza fra il numero di tracce dichiarato nel file Midi e quelle effettive]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare l'integrità dei dati del blocco d'intestazione di un file Midi]]&lt;br /&gt;
&lt;br /&gt;
==== I/O Midi ====&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di ALSA i dispositivi Midi presenti nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di PortMidi le porte Midi disponibili nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di RtMidi le porte Midi disponibili nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di TSE3 le porte Midi disponibili nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere i Client Midi di ALSA correnti attivi nel sistema ]]&lt;br /&gt;
&lt;br /&gt;
====Gambas, Midi e Arduino====&lt;br /&gt;
&lt;br /&gt;
* [[Inviare dati Midi da Arduino a Gambas]]&lt;br /&gt;
&lt;br /&gt;
====Gestione dei file soundfont bank====&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file soundfont bank sf2 in un file WAV con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre da un file sf2 i dati audio di ciascun suono campionato e creare un file wav]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni generali dai tag di un file soundfont bank sf2 con le sole funzioni di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare i nomi e le rispettive posizioni degli strumenti musicali in un file sf2 con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un file di dati audio grezzi da un file .pat]]&lt;br /&gt;
&lt;br /&gt;
==== Informazioni e risorse sul Midi ====&lt;br /&gt;
&lt;br /&gt;
* [[Il protocollo Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[La struttura di un file Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[Realizzazione dispositivi Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[Siti web sul Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[Sulla nuova versione Midi 2.0]]&lt;br /&gt;
&lt;br /&gt;
== Gestione dei file ODT ==&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre il file thumbnail contenuto nel file odt]]&lt;br /&gt;
&lt;br /&gt;
* [[Unire più file ODT in un unico file ODT]]&lt;br /&gt;
&lt;br /&gt;
== Gestione dei file PDF ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Codice essenziale per mostrare un file PDF con le risorse del Componente gb.poppler]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Cercare una parola in una pagina di un file PDF con le risorse del Componente gb.poppler]]&lt;br /&gt;
&lt;br /&gt;
* [[Comprimere un file PDF con le funzioni esterne del API di Ghostscript]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire in immagine una parte di una pagina PDF con le risorse del Componente gb.poppler]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file PNG in PDF con le funzioni del API di Cairo]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire una pagina di un file PDF in una immagine con le risorse del Componente gb.poppler]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Creare un file PDF con la proprietà .OutputFile della Classe Printer]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file PDF con le funzioni esterne del API di Cairo]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file PDF con le funzioni esterne del API di Haru]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file PDF con le funzioni esterne della libreria PDFGen]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Creare un file PDF con le risorse del Componente gb.cairo]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file PDF da un file immagine con le risorse del Componente gb.cairo]]&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare i dati immagine da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati audio da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati MIDI da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati video da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre testo e immagini da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Stampare un file PDF]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Struttura di un file PDF]]&lt;br /&gt;
&lt;br /&gt;
== Gestione dei file PS ==&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file PS con le risorse del API di Cairo]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file PS con le risorse del Componente gb.cairo]]&lt;br /&gt;
&lt;br /&gt;
== Gestione dei file RTF ==&lt;br /&gt;
&lt;br /&gt;
* [[Documentazione per la gestione dei file di testo RTF]]&lt;br /&gt;
&lt;br /&gt;
== Gestione del CD e del DVD ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il numero di titoli e di capitoli presenti in un DVD video con le funzioni del API di libdvdread]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero di settori di un CD/DVD in ore,minuti,secondi con le funzioni del API Libdiscid]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire una traccia di un CD-Audio con le risorse del API di libvlc]] &lt;br /&gt;
&lt;br /&gt;
* [[Eseguire una traccia di un CD-Audio con le risorse di linux/cdrom.h e le funzioni esterne di ALSA]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati presenti in un CD-Audio con le risorse di linux/cdrom.h]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare in GNOME il percorso contenente i file delle tracce di un CD-audio]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[La gestione del CD e del DVD mediante il Componente gb.media]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[La gestione del CD e del DVD mediante la funzione esterna 'gst_parse_launch()' di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione del CD e del DVD mediante le funzioni del API di libcdio]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione del CD e del DVD mediante le funzioni del API di SDL]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni di un CD con le funzioni del API di libcdaudio]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni di un CD con la funzione ioctl()]]&lt;br /&gt;
&lt;br /&gt;
== Gestione della Pen-Drive ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere i dispositivi pen-drive usb montati sul sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il contenuto di una pen-drive mediante le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
== Gestione delle immagini e dei colori ==&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere il canale Alfa a un Oggetto Image privo]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare a un Oggetto ''Image'' i valori pixel contenuti in un'area di memoria puntata da un Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare a un Oggetto ''Image'' i valori pixel contenuti in un vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Cancellare una immagine in una PictureBox o in una ImageView]]&lt;br /&gt;
&lt;br /&gt;
* [[Caricare in un Controllo grafico i file immagine come Picture]]&lt;br /&gt;
&lt;br /&gt;
* [[Caricare in un Oggetto grafico le icone messe a disposizione da Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Caricare un file di formato TIFF e da questo creare un file immagine di altro formato con l'API di GDK_PixBuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Catturare un'immagine con una webcam mediante le funzioni esterne del API di libsane]]&lt;br /&gt;
&lt;br /&gt;
* [[Catturare un'immagine con una webcam mediante le funzioni esterne del API di libv4l2]]&lt;br /&gt;
&lt;br /&gt;
* [[Cliccare in un oggetto qualsiasi o in una immagine suddivisi in rettangoli]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Come Gambas gestisce le immagini]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Configurazione, organizzazione ed impostazione dell'oggetto Image secondo i sorgenti di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere i formati immagine disponibili con GTK mediante le funzioni del API di GDK-PixBuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in modo sicuro il formato di un file immagine mediante le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire il formato RGBA di un colore nei corrispondenti valori decimale ed esadecimale]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire il valore di un colore da RGB in HSV]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire il valore di un colore in RGBA]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire immagini RAW di fotocamere digitali mediante le funzioni esterne del API di Libraw]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file immagine di un qualsiasi formato in un file immagine TIFF mediante le funzioni esterne del API di Libgdk_pixbuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file immagine PCX in un file immagine PNG mediante le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un'immagine a colori in un'immagine a scala di grigi mediante le funzioni esterne del API di Libgdk_pixbuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un'immagine da un formato ad un altro mediante le funzioni esterne del API di FreeImage]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un'immagine da un formato ad un altro mediante le funzioni esterne del API di Imlib2]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un'immagine in un file immagine di formato ICO mediante le funzioni esterne del API di Libgdk_pixbuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un oggetto di tipo &amp;quot;Image&amp;quot; in un file di formato TIFF o ICO con le funzioni esterne del API di Libgdk_pixbuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare da codice un'immagine trasparente]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file immagine da dati immagine grezzi mediante le funzioni del API di Imlib2]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un'immagine senza avere dati immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[Curvare la linea di testo in un oggetto Image]]&lt;br /&gt;
&lt;br /&gt;
* [[Decomprimere un file immagine jpeg per ottenerne i dati grezzi mediante le funzioni esterne del API di libjpeg]]&lt;br /&gt;
&lt;br /&gt;
* [[Desaturare un colore]]&lt;br /&gt;
&lt;br /&gt;
* [[Elenco dei nomi dei colori e i corrispondenti valori delle Costanti della Classe Color utilizzati da Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Elenco dei nomi dei colori e i corrispondenti valori RGB sotto X Window]]&lt;br /&gt;
&lt;br /&gt;
* [[Fondere due immagini in una sola]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestione delle immagini con le risorse di Gambas ma senza attivazione dei Componenti che fanno riferimento alle librerie grafiche QT e GTK]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestire un oggetto Image agendo direttamente sulle risorse dei sorgenti Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Immagine di sfondo al testo in una TextEdit ed in una TextLabel]]&lt;br /&gt;
&lt;br /&gt;
* [[Immagine scorrevole]]&lt;br /&gt;
&lt;br /&gt;
* [[Immagine tratta dal WEB resa lampeggiante]]&lt;br /&gt;
&lt;br /&gt;
* [[Imporre un colore uniforme semitrasparente su una immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare i colori dei pixel di una immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare i valori RGBA dei pixel di una immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare il colore di un determinato pixel]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire del testo in una Image ed in una Picture]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire in un'immagine uno sfondo colorato mediante le funzioni esterne del API di Libgdk_pixbuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un'immagine all'interno di un'altra immagine mediante le funzioni esterne del API di Libgdk_pixbuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere le informazioni di una Image dalle sue risorse dei sorgenti di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Modi di caricare un'immagine di tipo ''Picture'']]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare i colori dei pixel di un'immagine con la proprietà .Data della Classe Image ed i Memory Stream]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il colore di un pixel di un'immagine se esso è minore o maggiore di un dato valore]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare l'opacità di un'immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare le dimensioni di una Image usando il suo Metodo .Stretch]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un'immagine con funzioni del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un'immagine con il Controllo WebView]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un'immagine nella finestra di un Editor di testo con funzioni del API di X11 e Imlib2]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare una parte di un'immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni su file immagine JPEG con le funzioni del API di libjpeg]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni su un file immagine PNG con le funzioni del API di libpng]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni sul file immagine con le funzioni del API di GTK+3 e GDK-PixBuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere dati grezzi di un file immagine mediante le funzioni del API di GDK-PixBuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'effettivo valore del colore del pixel individuato con la Proprietà vettoriale Image.Pixels]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere Metadati Exif da un'immagine JPEG con le risorse del API di libexif]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un file immagine PNG da un'immagine di formato SVG]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un file PDF da una Image]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere una schermata (&amp;quot;screenshot&amp;quot;) con Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere una schermata (screenshot) del desktop con le risorse del API di X11 e di Cairo]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere una schermata (screenshot) del desktop con le risorse del API di X11 e di Imlib2]]&lt;br /&gt;
&lt;br /&gt;
* [[Rendere trasparente una immagine in base ad un colore specifico]]&lt;br /&gt;
&lt;br /&gt;
* [[Ridimensionare e mostrare un'immagine in base al punto ove si è cliccato con il puntatore del mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare e ribaltare sul proprio asse una immagine con le funzioni del API di FreeImage]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare specularmente una immagine ed un carattere]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare una immagine sul proprio asse centrale]]&lt;br /&gt;
&lt;br /&gt;
* [[Salvare e richiamare i dati di un file immagine con Settings]]&lt;br /&gt;
&lt;br /&gt;
* [[Salvare un file immagine con le funzioni del API di GDK-PixBuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Salvare una Image come file immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti pixel occupa un testo in un'immagine mediante le funzioni del API di Imlib2]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Scaricare una immagine da un sito internet]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Scaricare una immagine dal sito &amp;quot;Cover Art Archive&amp;quot; mediante le funzioni esterne della libreria libcoverart]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse un'immagine all'interno di una PictureBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere un testo in un'immagine mediante le funzioni del API di Imlib2]]&lt;br /&gt;
&lt;br /&gt;
=== Gestione delle immagini con CAIRO ===&lt;br /&gt;
&lt;br /&gt;
* [[Caricare un Oggetto ''Image'' direttamente in una ''ImageView'' con gb.cairo]]&lt;br /&gt;
* [[Convertire un file immagine in un file PNG con le risorse del Componente gb.cairo]]&lt;br /&gt;
* [[Convertire un file PNG in PDF con le funzioni del API di Cairo]]&lt;br /&gt;
* [[Convertire un file PNG in SVG con le risorse del Componente gb.cairo]]&lt;br /&gt;
* [[Creare file PNG con le risorse del Componente gb.cairo]]&lt;br /&gt;
* [[Creare file PNG con le funzioni esterne del API di Cairo e di Pango]]&lt;br /&gt;
* [[Creare file PNG con le funzioni esterne del API di Cairo]]&lt;br /&gt;
* [[Creare un file immagine PNG trasparente con le funzioni esterne del API di Cairo]]&lt;br /&gt;
* [[Ridurre le dimensioni di una immagine con il Metodo &amp;quot;.Scale()&amp;quot; del Componente gb.cairo]]&lt;br /&gt;
* [[Spostare il testo con il mouse all'interno dell'area grafica con la Classe Cairo]]&lt;br /&gt;
&lt;br /&gt;
=== Gestione delle immagini con il Componente gb.media ===&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le dimensioni di una immagine mediante il Componente gb.media]]&lt;br /&gt;
* [[Convertire i formati immagine mediante il Componente gb.media]]&lt;br /&gt;
* [[Effetto caleidoscopico di un'immagine PNG con il Componente gb.media]]&lt;br /&gt;
* [[Estrarre e salvare singole immagini da una ripresa video mediante WebCam effettuata con il Componente gb.media]]&lt;br /&gt;
* [[Estrarre e salvare singole immagini durante l'esecuzione di un file video mediante il Componente gb.media]]&lt;br /&gt;
* [[Leggere codici a barre con una webcam mediante il Componente gb.media]]&lt;br /&gt;
* [[Mostrare un'immagine mediante il Componente gb.media]]&lt;br /&gt;
* [[Trasformare un'immagine in ascii art mediante il Componente gb.media]]&lt;br /&gt;
&lt;br /&gt;
=== Gestione delle immagini con ImageMagick ===&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file immagine in un altro formato immagine con le funzioni esterne del API di ImageMagick]]&lt;br /&gt;
* [[Modificare la risoluzione in PPI di un'immagine mediante le funzioni esterne del API di ImageMagick]]&lt;br /&gt;
* [[Ridimensionare un'immagine mediante le funzioni esterne del API di ImageMagick]]&lt;br /&gt;
* [[Ruotare un'immagine mediante le funzioni esterne del API di ImageMagick]]&lt;br /&gt;
* [[Sfumare radialmente un'immagine mediante le funzioni esterne del API di ImageMagick]]&lt;br /&gt;
* [[Spostare il contenuto all'interno di un'immagine mediante le funzioni esterne del API di ImageMagick]]&lt;br /&gt;
&lt;br /&gt;
=== Gestione delle immagini e dei file di tipo GIF ===&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file GIF in un file di formato OGV, Matroska e MP4 mediante il Componente gb.media]]&lt;br /&gt;
* [[Convertire un file immagine in un file immagine di tipo GIF con le funzioni esterne del API di LibFreeImage]]&lt;br /&gt;
* [[Creare file GIF con le funzioni esterne del API di Libplot]]&lt;br /&gt;
* [[Creare una GIF animata con le funzioni esterne del API di Libplot]]&lt;br /&gt;
* [[Creare un file immagine GIF con sfondo colorato mediante le funzioni del API di GIFLIB]]&lt;br /&gt;
* [[Creare un file immagine trasparente di tipo GIF con le funzioni del API di GIFLIB]]&lt;br /&gt;
* [[Disegnare e salvare un'immagine di tipo GIF con le funzioni del API di GifLib]]&lt;br /&gt;
* [[Estrarre i fotogrammi che compongono un file immagine di tipo GIF animata]]&lt;br /&gt;
* [[Estrarre informazioni da una GIF animata relative al tempo di esecuzione dei fotogrammi]]&lt;br /&gt;
* [[Modificare il colore di sfondo di un'immagine GIF con le funzioni del API di GifLib]]&lt;br /&gt;
* [[Ottenere alcune informazioni su file immagine GIF con le funzioni del API di GifLib]]&lt;br /&gt;
* [[Utilizzare una GIF animata]]&lt;br /&gt;
&lt;br /&gt;
=== Gestione delle immagini e dei file di tipo SVG ===&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file immagine SVG in un file immagine di altro formato con le funzioni esterne delle librerie librsvg e libgdk_pixbuf]]&lt;br /&gt;
* [[Convertire un file PNG in SVG con le risorse del Componente gb.cairo]]&lt;br /&gt;
* [[Creare file SVG con le risorse del Componente gb.cairo]]&lt;br /&gt;
* [[Creare file SVG con le funzioni esterne del API di Cairo]]&lt;br /&gt;
* [[Gestire un file immagine di formato SVG con la Classe SvgImage]]&lt;br /&gt;
* [[Mostrare in un Form un'immagine SVG]]&lt;br /&gt;
* [[Ottenere un file immagine PNG da un'immagine di formato SVG]]&lt;br /&gt;
&lt;br /&gt;
=== Struttura di file immagine particolari ===&lt;br /&gt;
&lt;br /&gt;
* [[Struttura del formato BMP]]&lt;br /&gt;
* [[Struttura del formato GIF]]&lt;br /&gt;
* [[Struttura del formato PNG]]&lt;br /&gt;
* [[Struttura del formato TIFF]]&lt;br /&gt;
* [[Struttura del formato XBM]]&lt;br /&gt;
* [[Struttura del formato XPM]]&lt;br /&gt;
* [[Struttura e gestione del file di tipo PNM]]&lt;br /&gt;
&lt;br /&gt;
== Grafici ==&lt;br /&gt;
&lt;br /&gt;
* [[Creare un grafico con il componente gb.chart]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un grafico per la console/Terminale]]&lt;br /&gt;
&lt;br /&gt;
== GridView ==&lt;br /&gt;
&lt;br /&gt;
* [[Adattare automaticamente la dimensione del font del testo presente nelle celle di una GridView al loro ridimensionarsi]]&lt;br /&gt;
&lt;br /&gt;
* [[Adattare automaticamente l'altezza e la larghezza di una cella di una GridView al testo contenuto]]&lt;br /&gt;
&lt;br /&gt;
* [[Adattare automaticamente l'altezza e la larghezza di una cella di una GridView all'immagine contenuta]]&lt;br /&gt;
&lt;br /&gt;
* [[Adattare l'altezza e la larghezza della GridView al numero delle righe e delle in essa contenute]]&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere colonne in una GridView da codice]]&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere righe in una GridView da codice mediante un tasto]]&lt;br /&gt;
&lt;br /&gt;
* [[Cambiare il colore di fondo di una riga cliccata in una GridView e far tornare quello di un'altra al colore iniziale]]&lt;br /&gt;
&lt;br /&gt;
* [[Catturare l'immagine di una GridView con il Componente gb.media]]&lt;br /&gt;
&lt;br /&gt;
* [[Centrare il testo nell'header di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Colorare il bordo delle righe di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Colorare il fondo di una cella di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Colorare il fondo di una riga di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Colorare la griglia della GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Effettuare una ricerca nelle celle di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare una riga da una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Far combaciare le immagini poste in due celle adiacenti di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestire testo, colori e immagini nelle celle della GridView con l'Evento _Data()]]&lt;br /&gt;
&lt;br /&gt;
* [[Header di una GridView contenente due o più righe testuali]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare due parole ciascuna all'estremità opposta di una cella di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare le righe, le colonne e l'header di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare font, colore dei caratteri e colore di sfondo diversi per ogni cella di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare lo spessore del bordo delle righe e delle singole celle di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare la cella della GridView nella quale si è cliccato]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare con quale tasto del mouse si è cliccato in una cella della GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un oggetto in una cella di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un ulteriore testo in una GridView sempre nell'ultima riga]] &lt;br /&gt;
&lt;br /&gt;
* [[Inserire un'immagine adattandola alle dimensioni della cella di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare il testo contenuto in una cella di una GridVew al semplice passare del puntatore del mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un Balloon in una GridView in corrispondenza della cella nella quale si è cliccato]]&lt;br /&gt;
&lt;br /&gt;
* [[Nascondere le linee della griglia di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Nascondere tutte le celle di una riga di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Nascondere una Colonna di una GridView]] &lt;br /&gt;
&lt;br /&gt;
* [[Ordinare i valori all'interno di una colonna di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Ordinare in una GridView i valori di più righe in base ad una colonna]]&lt;br /&gt;
&lt;br /&gt;
* [[Ordinare manualmente i valori all'interno di una colonna di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Scambiare il contenuto delle celle di una GridView mediante trascinamento con il mouse ]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere con la tastiera nelle celle di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare il testo da una cella a un'altra di una GridView con il Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare il testo da una cella a un'altra di una GridView senza Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare il testo da una cella di una GridView nella cella di un'altra GridView con il Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare il testo da una cella di una GridView nella cella di un'altra GridView senza Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare su e giù le righe di una GridView con i tasti &amp;quot;up&amp;quot; e &amp;quot;down&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare un'immagine da una cella a un'altra di una GridView con il Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare un'immagine da una cella a un'altra di una GridView senza Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare un'immagine da una PictureBox a una cella di una GridView con il Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare una GridView e il suo contenuto]]&lt;br /&gt;
&lt;br /&gt;
* [[Unire in una GridView le celle in un'unica grande cella]]&lt;br /&gt;
&lt;br /&gt;
== Hard Disk ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere numero seriale, modello ed altre informazioni su hard-disk SATA con la funzione esterna ioctl()]]&lt;br /&gt;
&lt;br /&gt;
== Header file dell'ANSI C e Gambas ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la quantità di memoria occupata dai tipi di dati di C e la loro locazione nei file header]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre il valore di una costante definita in un file d'intestazione in C]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la descrizione del tipo di errore dai file header &amp;quot;errno-base.h&amp;quot; e &amp;quot;errno.h&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== ImageStat ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della classe ImageStat]]&lt;br /&gt;
&lt;br /&gt;
== InputBox ==&lt;br /&gt;
&lt;br /&gt;
* [[Impostare le coordinate ove far aprire la finestra dell'InputBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare l'ID della finestra dell'InputBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Imporre in casi particolari la riapertura dell'InputBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare le dimensioni di un InputBox]]&lt;br /&gt;
&lt;br /&gt;
== Installazione di Gambas3 dai pacchetti binari ==&lt;br /&gt;
&lt;br /&gt;
== Interagire con la tastiera ==&lt;br /&gt;
&lt;br /&gt;
* [[Immissione di dati dalla tastiera durante l'esecuzione di un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire che cliccando su un tasto della tastiera si produca più volte il medesimo effetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire che, mentre si tiene premuto un tasto della tastiera, si produca un effetto cliccando e rilasciando un altro tasto]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare i tasti premuti della tastiera]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare mediante le funzioni del API di SDL2 tutti gli scancode disponibili]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[_KeyPress() - _KeyRelease() - Key]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Sapere via codice se il tasto 'Blocco Maiuscole' è attivo]]&lt;br /&gt;
&lt;br /&gt;
* [[Usare gli Eventi _KeyPress() e _KeyRelease() in un programma con interfaccia a linea di comando]]&lt;br /&gt;
&lt;br /&gt;
== Interfaccia a linea di comando ==&lt;br /&gt;
&lt;br /&gt;
* [[CLI]]&lt;br /&gt;
&lt;br /&gt;
== Interfacciare Gambas con librerie condivise esterne .so ==&lt;br /&gt;
&lt;br /&gt;
===Richiamare funzioni esterne mediante ''EXTERN''===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Extern: richiamare funzioni esterne a Gambas]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Gestione in Gambas delle Strutture esterne===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Gestione delle Strutture esterne]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Gestire con sicurezza le Strutture esterne]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Gestire con un Puntatore le Strutture esterne]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare un valore ad una Struttura di una libreria esterna scrivendo con i Memory Stream nella sua area di memoria]]&lt;br /&gt;
&lt;br /&gt;
* [[Dereferenziare senza Memory-Stream un Puntatore ad una Struttura, passato da una funzione esterna]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare come Struttura in Gambas una Struttura esterna dichiarata, come proprio membro di tipo Puntatore, da una Struttura principale esterna]]&lt;br /&gt;
&lt;br /&gt;
===Richiamare particolari funzioni esterne delle librerie standard in C===&lt;br /&gt;
&lt;br /&gt;
* [[Richiamo ed uso di particolari funzioni esterne delle librerie standard scritte in C]]&lt;br /&gt;
&lt;br /&gt;
===Ulteriori contributi sulla gestione delle librerie condivise .so e delle funzioni esterne===&lt;br /&gt;
&lt;br /&gt;
* [[Avviare con l'appoggio di una libreria esterna un semplice sorgente C senza compilarlo]]&lt;br /&gt;
&lt;br /&gt;
* [[Caricare i dati di un vettore scritto in C in un vettore di un'applicazione Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Come creare una Libreria condivisa (Shared Library) .so]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Come creare una Libreria condivisa .so impostando il suo codice sorgente nell'applicazione Gambas]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Creare una libreria condivisa .so esterna dai file sorgente presenti in una pagina web e senza installarla o caricarla nel sistema]]  &lt;br /&gt;
&lt;br /&gt;
* [[Emulare in Gambas la funzione fwrite() di C]]&lt;br /&gt;
&lt;br /&gt;
* [[Emulare in Gambas la funzione memcpy() di C]]&lt;br /&gt;
&lt;br /&gt;
* [[Emulare in Gambas le macro _IOC, _IOR, _IOW e _IOWR usate con la funzione ioctl()]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestire una libreria esterna che ritorna una Linked List]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire nella libreria condivisa esterna .so anche codice Assembly]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'indirizzo e il valore di una Costante e di una variabile globale situate in una libreria condivisa]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare a una funzione esterna un Puntatore che successivamente deve essere passato anche ad altre funzioni esterne]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare un'area riservata di memoria ad una funzione esterna]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare con l'appoggio di una libreria esterna una funzione presente in un sorgente C]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare funzioni esterne di librerie scritte in C++]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivendo particolari librerie esterne in C]]&lt;br /&gt;
&lt;br /&gt;
* [[Un contributo sulle funzioni esterne in Gambas a cura di Doriano B.]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare quali dati Gambas passa ad una funzione esterna]]&lt;br /&gt;
&lt;br /&gt;
===Altre modalità di chiamata delle funzioni esterne===&lt;br /&gt;
&lt;br /&gt;
* [[Caricamento dinamico di librerie .so con il subsistema 'loadso' di SDL2]]&lt;br /&gt;
* [[Chiamare funzioni esterne mediante le risorse della libreria dlfcn.h]]&lt;br /&gt;
* [[Utilizzare il metodo 'System.GetExternSymbol()' per richiamare funzioni esterne di librerie condivise]]&lt;br /&gt;
&lt;br /&gt;
== Librerie .gambas ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Creare, importare ed utilizzare librerie .gambas]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Librerie della Comunità Gambas-it.org ====&lt;br /&gt;
&lt;br /&gt;
* [[RTFLib.gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[strLib.gambas]]&lt;br /&gt;
&lt;br /&gt;
== ListBox ==&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare ad un oggetto di testo il contenuto di un elemento di una ListBox cliccandovi sopra]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare colori allo sfondo ed al testo di una riga selezionata di una ListBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare uno o più item di una ListBox selezionati con il mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Far coincidere da codice l'altezza di una ListBox con la somma delle altezze dei suoi Item]]&lt;br /&gt;
&lt;br /&gt;
* [[Far mostrare in una ListBox le ultime voci ogni volta che il loro numero aumenta]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare il numero d'indice della riga di una ListBox sulla quale si è cliccato con il mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un array di dati di tipo stringa in una ListBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un oggetto in un item di una ListBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Interscambiare la posizione del contenuto degli item di una ListBox mediante trascinamento con il mouse ]]&lt;br /&gt;
&lt;br /&gt;
* [[ListBox con due o più righe per item]]&lt;br /&gt;
&lt;br /&gt;
* [[Riordinare manualmente con il mouse gli elementi di una ListBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Se l'Evento MouseDown() della ListBox non funziona]]&lt;br /&gt;
&lt;br /&gt;
==Liste Lineari==&lt;br /&gt;
&lt;br /&gt;
* [[Emulare in Gambas una Lista Lineare del linguaggio C]]&lt;br /&gt;
&lt;br /&gt;
== ListView ==&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere una nuova voce nella prima posizione di una Listview]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare colori allo sfondo ed al testo di una riga selezionata di una ListView]]&lt;br /&gt;
&lt;br /&gt;
* [[Evitare che appaia il popmenu quando si clicca al di fuori di un elemento di una ListView]]&lt;br /&gt;
&lt;br /&gt;
== Logging ==&lt;br /&gt;
&lt;br /&gt;
* [[Attivare e registrare informazioni un singolo file di log]]&lt;br /&gt;
&lt;br /&gt;
== Map - MapView - Coordinate geografiche - Georeferenziazione ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Istruzioni essenziali per mostrare una mappa in una MapView]]&amp;lt;/b&amp;gt;&lt;br /&gt;
* [[Arduino: misurare il campo magnetico terrestre con i magnetometri]]&lt;br /&gt;
* [[Calcolare il rilevamento (bearing) in gradi]]&lt;br /&gt;
* [[Calcolare la distanza tra due punti geografici, dei quali si conoscono latitudine e longitudine]]&lt;br /&gt;
* [[Calcolare l'area e il perimetro di poligoni disegnati sulla mappa con le risorse di gb.map]]&lt;br /&gt;
* [[Conoscere la versione più recente di Google Maps satellite]]&lt;br /&gt;
* [[Conoscere le risorse formali contenute da un oggetto della Classe _ShapeItem]]&lt;br /&gt;
* [[Convertire una coordinata dal formato gradi primi secondi del sistema EPSG:4326 WGS 84 al suo formato decimale e viceversa]]&lt;br /&gt;
* [[Convertire una coordinata geografica dal sistema EPSG:4326 WGS 84 al sistema EPSG:3857 e viceversa]]&lt;br /&gt;
* [[Convertire una coordinata geografica dal sistema UTM al sistema EPSG:4326 WGS 84 e viceversa]]&lt;br /&gt;
* [[Creare da una carta topografica i file delle tessere di una mappa e utilizzarli con MapView]]&lt;br /&gt;
* [[Disegnare sulla MapView dei cerchi concentrici al punto ove si è cliccato con il puntatore del mouse]]&lt;br /&gt;
* [[Disegnare un cerchio o un punto su una MapView]]&lt;br /&gt;
* [[Disegnare un poligono su una MapView usando l'Oggetto &amp;quot;Figlio&amp;quot; DrawingArea]]&lt;br /&gt;
* [[Disegnare un mirino come cursore del mouse su una MapView]]&lt;br /&gt;
* [[Disegnare un percorso su una MapView e calcolarne la lunghezza]]&lt;br /&gt;
* [[Elenco di raster Tile Server online con rispettive URL]]&lt;br /&gt;
* [[Eliminare un marcatore grafico da una mappa su una MapView]]&lt;br /&gt;
* [[Eseguire un file audio o Midi quando si clicca sulla MapView]]&lt;br /&gt;
* [[Estrarre le coordinate geografiche dai TAG GPS eventualmente presenti in un file immagine JPEG]]&lt;br /&gt;
* [[Estrarre le coordinate geografiche presenti in un file gpx]]&lt;br /&gt;
* [[Georeferenziare una mappa con QGIS]]&lt;br /&gt;
* [[Individuare i valori x e y della tessera sulla quale si è cliccato]]&lt;br /&gt;
* [[Individuare il punto di intersezione degli angoli di direzione di due elementi geografici rispetto all'osservatore]]&lt;br /&gt;
* [[Individuare su una MapView un punto geografico avendo un punto iniziale, l'angolo di declinazione e la distanza]]&lt;br /&gt;
* [[Inserire del testo su una MapView]]&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Inserire un marcatore di coordinate su una MapView]]&amp;lt;/b&amp;gt;&lt;br /&gt;
* [[Inserire un Oggetto grafico su una MapView]]&lt;br /&gt;
* [[Inserire un'immagine come marcatore di coordinate su una MapView]]&lt;br /&gt;
* [[Mostrare la mappa topografica IGM 1 25000 fornita dal Geoportale Nazionale del Ministero dell'Ambiente]]&lt;br /&gt;
* [[Mostrare nella finestra guida dei simboli, dichiarati nel codice, la mappa topografica IGM 1_25000 fornita dall'ISPRA  ]]&lt;br /&gt;
* [[Mostrare sulla MapView disegni, immagini e Controlli senza l'uso del Metodo Map.AddShape()]]&lt;br /&gt;
* [[Ottenere la distanza piana di due punti su una carta topografica]]&lt;br /&gt;
* [[Ottenere la Latitudine e la Longitudine del punto sulla mappa cliccato con il puntatore del mouse]]&lt;br /&gt;
* [[Ottenere la Longitudine e la Latitudine dell'angolo superiore sinistro dell'immagine di una mappa da un file GEOTIFF con le sole risorse di Gambas]]&lt;br /&gt;
* [[Ottenere le coordinate geografiche dei punti sulla mappa sui quali si passa con il puntatore del mouse]]&lt;br /&gt;
* [[Ottenere informazioni da un file GEOTIFF con l'API di libgeotiff]]&lt;br /&gt;
* [[Ottenere un file pdf dalla mappa mostrata da una MapView]]&lt;br /&gt;
* [[Ottenere un file png dalla mappa mostrata da una MapView]]&lt;br /&gt;
* [[Ottenere una Image dalla mappa mostrata da una MapView]]&lt;br /&gt;
* [[Registrare quanto mostrato da una MapView e farne un video]]&lt;br /&gt;
* [[Rendere trasparente la mappa mostrata da una MapView]]&lt;br /&gt;
* [[Ruotare la mappa]]&lt;br /&gt;
* [[Sapere sulla MapView se il puntatore del mouse è all'interno di una determinata area della mappa]]&lt;br /&gt;
* [[Scalare la dimensione della mappa in una Mapview]]&lt;br /&gt;
* [[Usare il Metodo '.AddPolygon()' di gb.map]]&lt;br /&gt;
* [[Usare il Metodo '.AddPolyLine()' di gb.map]]&lt;br /&gt;
* [[Utilizzando un Oggetto di visualizzazione diverso da una MapView consentire uno spostamento morbido e uniforme della mappa]]&lt;br /&gt;
* [[Utilizzare il Geoportale del Servizio Geologico d'Italia dell'I.S.P.R.A.]]&lt;br /&gt;
* [[Utilizzare il Geoportale Nazionale del Ministero dell'Ambiente]]&lt;br /&gt;
* [[Utilizzare in una MapView mappe fornite secondo lo standard WMS (Web Map Service)]]&lt;br /&gt;
* [[Utilizzare le tessere di una mappa senza connessione a internet]]&lt;br /&gt;
* [[Utilizzare una DrawingArea o una ImageView con gb.map anziché una MapView]]&lt;br /&gt;
* [[Utilizzare una MediaView con gb.map anziché una MapView]]&lt;br /&gt;
* [[Verificare le tessere dei livelli delle Map tiles]]&lt;br /&gt;
&lt;br /&gt;
== Menu ==&lt;br /&gt;
&lt;br /&gt;
* [[Colorare la barra dei Menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare Menu da codice e non con l'Editor-Menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare Menu popup da codice]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare Menu popup utilizzando l'Editor di menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Evitare che appaia il popmenu quando si clicca al di fuori di un elemento di una ListView]]&lt;br /&gt;
&lt;br /&gt;
* [[Far apparire un Balloon, quando si passa con il mouse su un menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Fare riferimento alle voci del Menu da altri Form]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire che appaia la finestra del menu predefinito cliccando con il tasto destro del mouse su un Controllo di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire una linea separatrice in un Menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare selezione di sotto-voci di un Menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Modifiche delle proprietà dei Menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare più righe di testo nella voce di un Menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Rilevare quale sotto-voce di menu è stata cliccata]]&lt;br /&gt;
&lt;br /&gt;
== MenuButton ==&lt;br /&gt;
&lt;br /&gt;
* [[Creare Menu a finestra con MenuButton]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare via Editor dalla IDE un Menu con sotto-menu che funzioni come popup in un MenuButton]]&lt;br /&gt;
&lt;br /&gt;
== Message ==&lt;br /&gt;
&lt;br /&gt;
* [[Impostare le dimensioni del Message]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare l'ID della finestra di un Message]]&lt;br /&gt;
&lt;br /&gt;
* [[Interruzione di riga con ritorno a capo in un Message]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un MessageBox in un programma con interfaccia a 'riga di comando']]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare la finestra di un Message]]&lt;br /&gt;
&lt;br /&gt;
== Miscellanea ==&lt;br /&gt;
&lt;br /&gt;
* [[Controllare la batteria del proprio portatile con le funzioni esterne di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire i gradi della temperatura da un'unità di scala di misura in un'altra]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare il QR Code con le risorse della libreria esterna libqrencode]]&lt;br /&gt;
&lt;br /&gt;
* [[Effettuare il PING]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare e usare in Gambas i simboli musicali forniti dal sistema UNICODE]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni sul tempo meteorologico di una città mediante il sito web wttr.in]]&lt;br /&gt;
&lt;br /&gt;
== Monitor - Schermo ==&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni relative al display video mediante le funzioni del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni relative allo schermo mediante la funzione ioctl()]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni relative allo schermo mediante le funzioni del API di CBX]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni sugli schermi disponibili mediante le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere le dimensioni del monitor e la sua posizione sullo schermo con le funzioni esterne del API di Allegro 5]]&lt;br /&gt;
&lt;br /&gt;
== Mouse ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le coordinate correnti del mouse sul Form senza tenere premuto un tasto del mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le coordinate correnti del mouse sullo schermo]]&lt;br /&gt;
&lt;br /&gt;
* [[Evento rotellina del mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Far assumere al puntatore grafico del mouse l'aspetto dell'attesa]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare i dati del mouse dal file-device hidraw]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare i dati del mouse dai file-device mouse, mice, event]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare il tasto premuto del mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare l'aspetto del puntatore grafico del mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Reiterare una procedura quando il tasto del mouse viene tenuto premuto su un Controllo]]&lt;br /&gt;
&lt;br /&gt;
* [[Segnalatore del puntatore del mouse sullo schermo usando le funzioni esterne del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Simulare il tasto premuto del mouse usando le funzioni esterne del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Sollevare l'Evento _MouseMove() di un Oggetto grafico spostando su di esso il mouse senza tenere premuto un suo tasto]] &lt;br /&gt;
&lt;br /&gt;
* [[Spostare da codice il mouse sullo schermo]]&lt;br /&gt;
&lt;br /&gt;
== MovieBox ==&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un'immagine animata in una MovieBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un'immagine animata con il Drop del suo file in una MovieBox]]&lt;br /&gt;
&lt;br /&gt;
== Oggetti ==&lt;br /&gt;
&lt;br /&gt;
=== Oggetti in generale ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Assegnare da codice più oggetti ad un Gruppo di eventi]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere un Evento o anche integrare quelli già posseduti da un Oggetto &amp;quot;Figlio&amp;quot; di un Oggetto più complesso]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare un valore a una proprietà di un Oggetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il tipo di Oggetto a cui appartiene un identificatore]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Creare array di oggetti]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Distruggere gli Oggetti che non posseggono il Metodo .Delete()]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire che un oggetto sollevi qualsiasi evento]]&lt;br /&gt;
&lt;br /&gt;
* [[Istanziare un oggetto mediante la Classe &amp;quot;Object&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere nell'area di memoria occupata da un oggetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Metodi _New() e _Free() degli oggetti]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il valore di una proprietà ad una parte di più oggetti conosciuti del medesimo tipo]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare e gestire più oggetti assegnati a variabili con medesimo identificatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare un Metodo di un oggetto con la Classe Object]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere il nome del Componente al quale appartiene la Classe di un oggetto utilizzato]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere la quantità di memoria occupata da un oggetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere l'oggetto che ha scatenato l'evento]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quante istanze di una Classe sono state create]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un oggetto è un'istanza di una determinata Classe]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare la proprietà .Tag come un array di tipo Variant]]&lt;br /&gt;
&lt;br /&gt;
=== Oggetti grafici, Controlli e Widget===&lt;br /&gt;
&lt;br /&gt;
* [[Adattare la dimensione del font in un Oggetto grafico se il testo occupa una lunghezza o un'altezza superiore a quella dell'Oggetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Adattare la dimensione di un Oggetto grafico al testo contenuto]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare un Gruppo di Eventi a più Controlli modificando manualmente il file sorgente del programma Gambas]]  &lt;br /&gt;
&lt;br /&gt;
* [[Centrare un oggetto grafico all'interno di un Contenitore]]&lt;br /&gt;
&lt;br /&gt;
* [[Cliccare in un oggetto grafico qualsiasi o in una immagine suddivisi in rettangoli]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere gli oggetti grafici 'figli' costituenti l'oggetto 'padre']]&lt;br /&gt;
&lt;br /&gt;
* [[Copiare uno o più caratteri di un testo da una Label o da una TextLabel e incollarli in un altro Controllo di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare e dimensionare un oggetto con lo spostamento del mouse sul form]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file immagine dagli oggetti presenti in un Contenitore]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare widget di Controlli grafici]]&lt;br /&gt;
&lt;br /&gt;
* [[Differenza fra la proprietà &amp;quot;.Children&amp;quot; e la proprietà &amp;quot;.Controls&amp;quot; di un oggetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Distruggere i Controlli grafici posti in un Contenitore]]&lt;br /&gt;
&lt;br /&gt;
* [[Far mostrare il simbolo &amp;quot;&amp;amp;&amp;quot; su un Controllo grafico fornito della Proprietà .Text]]&lt;br /&gt;
&lt;br /&gt;
* [[Fissare la distanza di un Controllo grafico in modo costante rispetto ai bordi del Form durante il ridimensionamento di questo]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare il numero d'indice di Controlli appartenenti al medesimo gruppo di Eventi senza servirsi di sue specifiche proprietà]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare una Classe di Oggetti grafici fra molti posti in un Contenitore]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare uno specifico Controllo con Last in base alla sua Proprietà &amp;quot;.Id&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare uno specifico Controllo in base alla sua Proprietà &amp;quot;.Name&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Metodo di pseudo indirizzamento ad Oggetti grafici]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare la dimensione di un Oggetto grafico con il mouse impostando i punti di contatto intorno al suo perimetro]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare la dimensione di un Oggetto grafico ruotando la rotellina del mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare in un Oggetto di testo il contenuto di un file trascinandolo e rilasciandolo senza l'uso delle specifiche risorse di Gambas del Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Oggetti grafici e di testo che supportano il codice HTML]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Oggetti scorrevoli]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere risultati diversi in base alla parte del Controllo premuta dal mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Porre sotto osservazione un Oggetto grafico]]&lt;br /&gt;
&lt;br /&gt;
* [[Posizione equidistante di un Oggetto rispetto al margine destro del suo Contenitore e ad un punto alla sua sinistra]]&lt;br /&gt;
&lt;br /&gt;
* [[Raggiungere e gestire gli oggetti di FMain da una classe secondaria]]&lt;br /&gt;
&lt;br /&gt;
* [[Riposizionare in modo circolare più oggetti posti in pila]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un oggetto, spostato sul Form con il mouse, è al di sopra di un altro oggetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Selezionare con lo spostamento del mouse un'area di un oggetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Sollevare l'Evento _MouseMove() di un Oggetto grafico spostando su di esso il mouse senza tenere premuto un suo tasto]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Spostare Oggetti grafici con il mouse all'interno di un contenitore senza Drag &amp;amp; Drop]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Spostare o ridimensionare un oggetto a seconda del punto ove si clicca]]&lt;br /&gt;
&lt;br /&gt;
* [[Uso di Unicode con gli oggetti di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare anche in altre subroutine un Oggetto grafico dichiarato localmente]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare l'esistenza di un Controllo in un Contenitore]]&lt;br /&gt;
&lt;br /&gt;
== ODBC ==&lt;br /&gt;
&lt;br /&gt;
* [[ODBC]]&lt;br /&gt;
&lt;br /&gt;
== OpenGL ==&lt;br /&gt;
&lt;br /&gt;
* [[Gambas e Opengl]]&lt;br /&gt;
&lt;br /&gt;
* [[OpenGL: lezioni di Grafica Interattiva]]&lt;br /&gt;
&lt;br /&gt;
* [[Textures]]&lt;br /&gt;
&lt;br /&gt;
== Password ==&lt;br /&gt;
&lt;br /&gt;
* [[Inserire le password per lanciare comandi]]&lt;br /&gt;
&lt;br /&gt;
== Pdfwriter ==&lt;br /&gt;
&lt;br /&gt;
* [[Guida ai report]]&lt;br /&gt;
&lt;br /&gt;
== Porte ==&lt;br /&gt;
&lt;br /&gt;
* [[Accesso alle Porte Seriali]]&lt;br /&gt;
&lt;br /&gt;
* [[Approfondimento sull'accesso alle porte USB]]&lt;br /&gt;
&lt;br /&gt;
* [[Uso delle Porte Parallele]]&lt;br /&gt;
&lt;br /&gt;
== Posta elettronica ==&lt;br /&gt;
&lt;br /&gt;
* [[Invio della posta elettronica]]&lt;br /&gt;
&lt;br /&gt;
* [[Invio di posta elettronica con SMTP e SSL mediante le funzioni esterne del API di Libcurl]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere la posta elettronica con IMAP e SSL mediante le funzioni esterne del API di Libcurl]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere la posta elettronica con POP3 e SSL mediante le funzioni esterne del API di Libcurl]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere la posta elettronica mediante le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
== Processi ==&lt;br /&gt;
&lt;br /&gt;
=== Gestione dei Processi in genere ===&lt;br /&gt;
&lt;br /&gt;
* [[Cambiare in esecuzione la directory di lavoro di un processo Gambas con la funzione esterna chdir()]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in tempo reale il numero dell'ultimo processo appena aperto]]&lt;br /&gt;
&lt;br /&gt;
=== Gestione dei Processi mediante &amp;quot;Process&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
* [[Apertura e chiusura di un processo mediante Process]]&lt;br /&gt;
&lt;br /&gt;
* [[Attendere e verificare la chiusura di un programma gestito da Process]]&lt;br /&gt;
&lt;br /&gt;
* [[Lettura dati da un Processo e scrittura dati in un Processo mediante Process]]&lt;br /&gt;
&lt;br /&gt;
* [[Terminare automaticamente un Processo dopo un periodo di tempo dalla sua apertura con Process]]&lt;br /&gt;
&lt;br /&gt;
== Programmi Gambas e programmi esterni ==&lt;br /&gt;
&lt;br /&gt;
* [[Agire sulla finestra di un qualunque programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Attivare la finestra di un programma con le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Avviare un'applicazione Gambas in un determinato desktop]]&lt;br /&gt;
&lt;br /&gt;
* [[Avviare un progetto Gambas dalla sua cartella]]&lt;br /&gt;
&lt;br /&gt;
* [[Catturare con il Componente gb.media quanto mostrato dalla finestra di un programma o sulla Scrivania e farne un file video]]&lt;br /&gt;
&lt;br /&gt;
* [[Catturare immagini di una finestra di un programma e farne un file audio-video OGG-Theora con le funzioni esterne del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Catturare l'immagine della finestra di un programma mediante le risorse della Classe DesktopWindow e le funzioni esterne del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Chiudere la finestra di un programma Gambas premendo i tasti Ctrl e 'c' della tastiera]]&lt;br /&gt;
&lt;br /&gt;
* [[Chiudere le finestre secondarie di un programma Gambas lasciando aperto il solo Form principale]]&lt;br /&gt;
&lt;br /&gt;
* [[Chiudere programmi esterni]]&lt;br /&gt;
&lt;br /&gt;
* [[Chiudere un programma Gambas se si clicca all'esterno della sua finestra principale]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le risorse del API di Glib il percorso assoluto di un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere gli attributi della finestra di un programma con le funzioni esterne del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la directory in cui sono memorizzati i file temporanei del processo corrente di un programma Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Contare le righe di codice di un progetto Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Copiare in una cartella un programma.gambas contenuto in un altro programma.gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare una cartella delle preferenze di un programma Gambas con le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Elencare il PID ed il corrispondente nome di ciascun processo attivo]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre l'icona di un programma associato ad un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire l'avvio di un programma.gambas già avviato]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire la chiusura di un programma Gambas se si clicca sul tastino con la X in alto a destra della sua finestra principale]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare con certezza un file presente nella cartella di un progetto Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare ed estrarre il PID di un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare ed estrarre l'ID della finestra di un programma ]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare ID e nome delle finestre attive con le risorse del Componente gb.desktop]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare ID e nome delle finestre attive, nonché il PID dei loro programmi con le risorse del Componente gb.desktop.x11]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare il nome della finestra di un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare il nome di un programma Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare il percorso ove risiede la cartella del progetto Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare l'ID ed il nome della finestra attiva mediante le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare l'ID ed il nome di una finestra nonché il PID del programma mediante le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Inglobare in un programma Gambas la finestra di un altro programma Gambas mediante le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Lanciare da un'applicazione Gambas il Terminale e far partire da esso un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Lanciare un programma esterno conoscendo soltanto il nome del suo file eseguibile presente nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Lanciare un programma Gambas da linea di comando]]&lt;br /&gt;
&lt;br /&gt;
* [[Lanciare un programma senza Shell, ma da una finestra di un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare le dimensioni della finestra di un programma con le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Muovere e modificare le dimensioni della finestra di un programma con le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Muovere la finestra di un programma con le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il percorso assoluto della directory dei dati dell'applicazione Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni sulle applicazioni client in esecuzione su un display con le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la directory di lavoro corrente dell'applicazione Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la schermata (screenshot) della finestra di un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare dati in runtime ad un programma 'a linea di comando']]&lt;br /&gt;
&lt;br /&gt;
* [[Porre la finestra di un programma esterno in primo piano]]&lt;br /&gt;
&lt;br /&gt;
* [[Salvare un file nella Directory di Lavoro di un programma Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quando il puntatore del mouse si trova sulla finestra di un programma esterno]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanto tempo è passato dall'inizio del programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un programma esterno è già in funzione]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se il programma Gambas sta funzionando come progetto dall'IDE oppure come eseguibile .gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare la finestra di un programma da un desktop ad un altro del video]]&lt;br /&gt;
&lt;br /&gt;
* [[Uscire da un'applicazione Gambas premendo un tasto mediante le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
===Trasmissione di dati fra due programmi Gambas o fra un programma esterno ed un programma Gambas===&lt;br /&gt;
&lt;br /&gt;
* [[Indirizzare dati da un programma ad un altro e ad un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare i dati inviati allo standard output da un programma C]]&lt;br /&gt;
&lt;br /&gt;
* [[Inviare dati da un programma Gambas ad un altro mediante le risorse del Componente DBus]]&lt;br /&gt;
&lt;br /&gt;
* [[Inviare dati stringa da un programma Gambas a un programma esterno avente un'area di testo o a un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Ricevere dati da un programma esterno mediante un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Ricevere un 'segnale' da un programma C]]&lt;br /&gt;
&lt;br /&gt;
* [[Trasmissione di dati fra due o più programmi Gambas mediante la Classe Socket del Componente gb.net]]&lt;br /&gt;
&lt;br /&gt;
* [[Trasmissione di dati fra due o più programmi Gambas mediante la Classe UdpSocket del Componente gb.net]]&lt;br /&gt;
&lt;br /&gt;
* [[Usare ALSA per far comunicare due o più programmi Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Usare due programmi Gambas contemporaneamente mediante Process, lo standard Output e lo standard Input]]&lt;br /&gt;
&lt;br /&gt;
* [[Usare uno pseudoterminale per far comunicare bidirezionalmente due programmi]]&lt;br /&gt;
&lt;br /&gt;
== ProgressBar e simulazioni di ProgressBar==&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere una simil-ProgressBar da una LCDLabel]]&lt;br /&gt;
&lt;br /&gt;
* [[Pseudo-ProgressBar in un'applicazione 'a riga di comando']]&lt;br /&gt;
&lt;br /&gt;
* [[Simulare una ProgressBar mediante una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare la barra indicatrice di una ProgressBar con il mouse]]&lt;br /&gt;
&lt;br /&gt;
== Puntatori - Memory Stream ==&lt;br /&gt;
&lt;br /&gt;
====Puntatori====&lt;br /&gt;
* [[Assegnare ad un Puntatore la rappresentazione numerica di un indirizzo di memoria contenuto da un altro Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare ad un Puntatore un'area di memoria riservata con Alloc()]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare un Puntatore ad una Struttura per dereferenziarlo]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare un vettore ad una variabile di tipo Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Cambiare la dimensione di un'area di memoria mediante Realloc()]]&lt;br /&gt;
&lt;br /&gt;
* [[Deallocare un'area di memoria precedentemente allocata con alloc() e assicurarsi che il Puntatore non punti a un indirizzo rilevante di memoria]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Dereferenziare un Puntatore con le funzioni specifiche di dereferenziazione e con i Memory Stream]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Dereferenziare un Puntatore con un vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Dereferenziare un Puntatore di Puntatore con le funzioni specifiche di dereferenziazione e con i Memory Stream]]&lt;br /&gt;
&lt;br /&gt;
* [[Differenza fra Assegnazione a un Puntatore di un indirizzo di memoria e Dereferenziazione di un Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestire un Puntatore con le funzioni esterne del API di Glib]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il valore di una variabile Integer puntata da un Puntatore e sua dereferenziazione con le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Opportunità di azzerare tutti i byte di un'area di memoria riservata seppur senza deallocarla]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il puntatore a una variabile vettoriale]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il puntatore di una variabile di tipo Image]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il puntatore di una variabile di tipo Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il valore numerico dell'indirizzo di memoria contenuto dal Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Passaggio di un argomento per 'indirizzo' ad una Funzione]]&lt;br /&gt;
&lt;br /&gt;
* [[Porre a zero i valori contenuti dall'area di memoria puntata da un Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere i valori contenuti da un file in un'area riservata di memoria]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Scrivere nell'area di memoria puntata da un Puntatore]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Vedere e modificare con i Puntatori un byte costituente il valore di una variabile]]&lt;br /&gt;
&lt;br /&gt;
==== Memory Stream ====&lt;br /&gt;
&lt;br /&gt;
* [[Definizione ed uso dei Memory Stream]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare con i Memory Stream un'area di memoria simile ad una Struttura avente come membro un'altra Struttura]]&lt;br /&gt;
&lt;br /&gt;
== RadioButton==&lt;br /&gt;
&lt;br /&gt;
* [[Adattare la lunghezza del RadioButton al testo contenuto]]&lt;br /&gt;
&lt;br /&gt;
== Report (gb.report2) ==&lt;br /&gt;
&lt;br /&gt;
* [[Creare report con il componente gb.report2]]&lt;br /&gt;
&lt;br /&gt;
== Scanner ==&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire una scansione con lo Scanner mediante le funzioni esterne di libsane]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire una scansione e riconoscimento caratteri (OCR) con l'API di Sane, Tesseract e Leptonica]]&lt;br /&gt;
&lt;br /&gt;
* [[Usare le risorse del Componente gb.scanner di Gambas]]&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
&lt;br /&gt;
* [[Scripting con Gambas]]&lt;br /&gt;
&lt;br /&gt;
==ScrollArea==&lt;br /&gt;
&lt;br /&gt;
* [[Usare la ScrollArea]]&lt;br /&gt;
&lt;br /&gt;
==ScrollView==&lt;br /&gt;
&lt;br /&gt;
* [[Usare la ScrollView]]&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della classe Settings]]&lt;br /&gt;
&lt;br /&gt;
== Sistema operativo - Dispositivi - Interfacce - Reti ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con la funzione esterna getrlimit() i valori limite che il kernel impone per alcune risorse]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere  con le risorse del API di Glib la directory unica per l'utente corrente sul sistema locale]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le sole risorse di Gambas i dispositivi esterni SCSI o SATA montati]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere i dispositivi usb di memorizzazione di massa con le funzioni esterne di libudev]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il nome delle interfacce di rete presenti nel proprio sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il file-devide pts associato ad un Terminale o console con la funzione esterna ttyname()]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il fuso orario (TimeZone) impostato nel proprio sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il nome del file-device del Terminale di controllo del processo con la funzione esterna ctermid()]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere l'hostname impostato nel proprio sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la dimensione del Dispositivo a blocchi]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la distribuzione Linux montata]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la valuta monetaria locale utilizzata dal sistema operativo]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le impostazioni del separatore decimale nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le impostazioni per il separatore delle migliaia]]&lt;br /&gt;
&lt;br /&gt;
* [[Identificare univocamente un computer]]&lt;br /&gt;
&lt;br /&gt;
* [[La cartella ove sono depositate le icone fornite dal sistema operativo Linux]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere il file fstab per avere informazioni sui vari filesystem montati]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere gli indirizzi IP di ogni interfaccia presente sulla medesima macchina]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere i valori di baud rates del flusso in entrata ed in uscita dei file-device terminali]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la distribuzione di Linux montata, il tipo di architettura e la versione del kernel]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il nome dell'host corrispondente ad un indirizzo IP e viceversa]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il solo nome del proprio sistema operativo]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni dal proprio dispositivo wireless con le risorse del API di libiw]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni generali sui dispositivi network mediante le risorse del API di Libnm-glib]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni sulle statistiche di sistema globali con la funzione esterna sysinfo()]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la lista di tutte le variabili d'ambiente nel proprio sistema mediante le risorse del API di GLIB-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la lista di tutti i dispositivi PCI presenti nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere mediante le funzioni esterne del API di Libusb la lista di tutti i dispositivi USB attivi nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere mediante le funzioni esterne del API di Libgusb la lista di tutti i dispositivi USB attivi nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere mediante le funzioni esterne della libreria Libudev un elenco degli oggetti hidraw collegati al sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un Identificativo Univoco Universale - UUID]]&lt;br /&gt;
&lt;br /&gt;
* [[Visualizzare il tempo trascorso dall'ultimo avvio del sistema]]&lt;br /&gt;
&lt;br /&gt;
== Slider ==&lt;br /&gt;
&lt;br /&gt;
* [[Creare uno pseudo-slider]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare uno pseudo-slider con uno o più cursori posti fra un valore minimo e uno massimo variabili]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare il segna-valori lungo lo Slider]]&lt;br /&gt;
&lt;br /&gt;
* [[Variare il valore dello Slider ruotando la rotellina del mouse]]&lt;br /&gt;
&lt;br /&gt;
== SpinBar ==&lt;br /&gt;
* [[Adattare la SpinBar a valori in virgola mobile con più di tre decimali]]&lt;br /&gt;
&lt;br /&gt;
== SpinBox ==&lt;br /&gt;
* [[Variare il valore di uno SpinBox da codice e non con il controllo diretto del mouse]]&lt;br /&gt;
&lt;br /&gt;
== Spinner ==&lt;br /&gt;
* [[Uso dello ''Spinner'']]&lt;br /&gt;
&lt;br /&gt;
==Sqlite==&lt;br /&gt;
* [[Creare un DataBase sqlite3]]&lt;br /&gt;
* [[Utilizzo base di Gambas e Sqlite3]]&lt;br /&gt;
&lt;br /&gt;
== Stampa - Printer==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Stampare in Gambas]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Individuare le stampanti presenti nel proprio sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare il contenuto grafico di una PictureBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare il testo presente in oggetti di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare un Controllo grafico posto sul Form]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare un file con le funzioni del API di cups]]&lt;br /&gt;
&lt;br /&gt;
* [[Verifica ed eliminazione dei processi di stampa mediante le funzioni del API di CUPS]]&lt;br /&gt;
&lt;br /&gt;
== Stringhe, caratteri, testo e file di testo ==&lt;br /&gt;
&lt;br /&gt;
* [[Accedere ai caratteri contenuti da una variabile di tipo stringa come se questa fosse una vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere una riga di caratteri alla fine di un file di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[&amp;quot;Andare a capo&amp;quot; in un oggetto di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Associare una stringa a un identificatore unico numerico mediante le funzioni Quarks del API di libglib-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Cercare la seconda occorrenza di una lettera fra tre o più]]&lt;br /&gt;
&lt;br /&gt;
* [[Cercare una parola in una stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Concatenare due stringhe]]&lt;br /&gt;
&lt;br /&gt;
* [[Confrontare due stringhe]]&lt;br /&gt;
&lt;br /&gt;
* [[Confrontare i caratteri di due stringhe]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le sole risorse di Gambas il numero di occorrenze in una stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il numero di occorrenze in una stringa con la funzione esterna PyUnicode_Count() della libreria libpython3]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il numero e la posizione di tutte le occorrenze di una sottostringa in una stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Conversione di due valori, costituenti un carattere speciale, nella sua rappresentazione grafica]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire due unità numeriche stringa graficamente rappresentanti un valore esadecimale nel corrispondente valore decimale effettivo]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire in stringa senza funzioni il contenuto di una variabile non di tipo Stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire in un tipo di dati numerico un valore letto in formato Stringa da un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un carattere maiuscolo in minuscolo senza la funzione LCase()]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un codice Unicode in carattere UTF-8 con la funzione g_unichar_to_utf8() della libreria libglib-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero di tipo stringa in un valore di tipo Float con la funzione g_strtod() della libreria glib-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero di tipo stringa in un valore di tipo Float con la funzione  PyOS_string_to_double() della libreria libpython3]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero in un carattere ASCII]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un collegamento ipertestuale]]&lt;br /&gt;
&lt;br /&gt;
* [[Filtrare i caratteri invalidi UTF8 ed ASCII da una stringa con le funzioni esterne del API di PulseAudio]]&lt;br /&gt;
&lt;br /&gt;
* [[Funzione simile a String()]]&lt;br /&gt;
&lt;br /&gt;
* [[Funzione simile a String.Len()]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare i valori costituenti i caratteri tipo UTF-8 di lettere localizzate]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare in un testo i caratteri non alfanumerici e la loro posizione]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare in una stringa i caratteri ricorrenti e loro posizioni]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire in una stringa caratteri ASCII non stampabili]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un testo in diagonale in un Controllo grafico]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare in maiuscolo il primo carattere di una stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare un carattere di una stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare del testo al di sopra di una immagine avendo una PictureBox ed un oggetto di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare del testo con caratteri ruotati orizzontalmente e verticalmente]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare il simbolo dell'Euro]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare in una stringa le virgolette]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare con il punto anziché con la virgola un numero in virgola mobile rappresentato in formato stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Non visualizzare i caratteri non-stampabili di una stringa che inizia con caratteri stampabili]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere con l'API di Libglib-2.0 il codice UNICODE di un carattere UTF-8]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere da un testo una parte delimitata da due parole]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere da un valore numerico i caratteri ASCII corrispondenti a ciascun byte componente il numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il valore ASCII di un carattere]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un file RTF da un file UTF8 e viceversa con le funzioni esterne del API di Librtfcomp]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un'unica stringa dalle stringhe contenute dagli elementi di un vettore di tipo Stringa]] &lt;br /&gt;
&lt;br /&gt;
* [[Porre a &amp;quot;Null&amp;quot; tutti gli elementi di un vettore di tipo Stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Rappresentare in formato stringa un numero avente i punti delle migliaia e la virgola dei decimali]]&lt;br /&gt;
&lt;br /&gt;
* [[Ribaltare i caratteri e invertire il testo in un Controllo grafico che supporta il RichText]]&lt;br /&gt;
&lt;br /&gt;
* [[Rimuovere da una stringa tutti i caratteri non-stampabili eventualmente presenti]]&lt;br /&gt;
&lt;br /&gt;
* [[Rimuovere da una stringa uno o più caratteri del codice ASCII esteso]]&lt;br /&gt;
&lt;br /&gt;
* [[Rimuovere tot caratteri da una stringa mediante le funzioni esterne del API di Libglib-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Riposizionare in modo casuale i caratteri di una stringa con la funzione esterna strfry()]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere con l'API di Libglib-2.0 se un carattere è stampabile]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere con l'API di Libglib-2.0 se un codice UNICODE corrisponde ad un carattere alfabetico]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se una stringa è formata soltanto da caratteri alfanumerici]]&lt;br /&gt;
&lt;br /&gt;
* [[Scomporre una stringa e caricare ogni parola in una variabile array]]&lt;br /&gt;
&lt;br /&gt;
* [[Scritta lampeggiante]]&lt;br /&gt;
&lt;br /&gt;
* [[Scritta scorrevole]]&lt;br /&gt;
&lt;br /&gt;
* [[Sovrascrivere una stringa con uno o più caratteri]]&lt;br /&gt;
&lt;br /&gt;
* [[Testo verticale]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare in una Costante un numero esadecimale per rappresentare un carattere ASCII]]&lt;br /&gt;
&lt;br /&gt;
* [[Verifica &amp;quot;passo-passo&amp;quot; di ciascun carattere in una data stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare con le funzioni del API di Libglib-2.0 se una stringa inizia con un prefisso o termina con un siffisso]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare con le risorse del API di PulseAudio se una stringa contiene solo caratteri UTF8 validi]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare se in una stringa vi sono caratteri non stampabili]]&lt;br /&gt;
&lt;br /&gt;
== Strutture ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Strutture: dichiarazione ed uso]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare a una Struttura i valori contenuti in un'area di memoria creata con la funzione Alloc()]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare direttamente i valori di dimensione conosciuta, letti da un file, ad una Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare i valori di un file ad una Struttura mediante un Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Configurazione, organizzazione ed impostazione dell'oggetto Struttura secondo i sorgenti di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere i nomi identificatori dei membri di una Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la dimensione di una Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere via codice il nome di una Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere e scrivere direttamente nell'area di memoria di una Struttura accedendovi con la classe Object]]&lt;br /&gt;
&lt;br /&gt;
* [[Nascondere un valore in una Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Ordinare gli elementi di un vettore di Strutture in base ad un loro medesimo membro]]&lt;br /&gt;
&lt;br /&gt;
* [[Ordinare gli elementi dei membri vettoriali di una Struttura in base ad uno di loro]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il puntatore di una variabile di tipo Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il puntatore direttamente ai dati associati a una Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare una Struttura con Event]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere i dati dei membri di una Struttura in un file direttamente]]&lt;br /&gt;
&lt;br /&gt;
* [[Strutture e Funzioni esterne]]&lt;br /&gt;
&lt;br /&gt;
* [[Uso delle Strutture tra Classi e Moduli]]&lt;br /&gt;
&lt;br /&gt;
== SwitchButton ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso dello &amp;quot;SwitchButton&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== TableView ==&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare i dati di una TextArea a una TableView]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un oggetto in una cella di una TableView]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il contenuto di una cella di una TableView cliccandoci dentro]]&lt;br /&gt;
&lt;br /&gt;
* [[Selezionare una intera riga di una TableView]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare il tasto Tab della tastiera per spostare il cursore del mouse fra le celle di una TableView]]&lt;br /&gt;
&lt;br /&gt;
* [[Visualizzare automaticamente una specifica riga di una TableView senza dover agire sulla ScrollBar laterale]]&lt;br /&gt;
&lt;br /&gt;
== TabPanel ==&lt;br /&gt;
&lt;br /&gt;
* [[Cancellare il testo presente in uno o più Controlli di testo posti su una TabPanel]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare l'immagine ed il colore del titolo delle tabelle di una TabPanel]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire tabelle ed oggetti all'interno di una TabPanel]]&lt;br /&gt;
&lt;br /&gt;
== TabStrip ==&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere Controlli su una determinata scheda di una TabStrip successivamente alla sua creazione]]&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere schede in una TabStrip successivamente alla sua creazione]]&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare una scheda da una TabStrip]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati dagli oggetti presenti sulle schede di una TabStrip]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire più schede e Controlli in una TabStrip nel momento della sua creazione]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il valore delle proprietà degli oggetti posti sulla scheda in primo piano di una TabStrip]]&lt;br /&gt;
&lt;br /&gt;
* [[Nascondere una scheda di una TabStrip]]&lt;br /&gt;
&lt;br /&gt;
== Tavoletta grafica e Gambas ==&lt;br /&gt;
&lt;br /&gt;
* [[Leggere l'azione di una penna su una Tavoletta grafica]]&lt;br /&gt;
&lt;br /&gt;
== Tempo, Date e Temporizzazioni ==&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare il numero di giorni compresi fra due date]]&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare il tempo trascorso mediante le funzioni esterne del sub-sistema Timers del API di GLib]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il fuso orario (TimeZone) impostato nel proprio sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il giorno della settimana di una data mediante le risorse della libreria standard C &amp;quot;time.h&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il numero di giorni posseduti da un mese]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire data ed orario da formato Date in un numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire i giorni in formato anni:mesi:giorni]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire i millisecondi in formato minuti:secondi.millisecondi]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire i secondi in formato ore:minuti:secondi]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un Cronometro]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un metronomo per console]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un Timer con le funzioni esterne delle librerie standard C &amp;quot;signal.h&amp;quot; e &amp;quot;time.h&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Formattare &amp;quot;hh:nn:ss&amp;quot; dai soli secondi]]&lt;br /&gt;
&lt;br /&gt;
* [[Funzione di attesa in millisecondi con la libreria esterna libpulsecore]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestione del tempo mediante le funzioni esterne del API di Libcsfml]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere con le risorse della libreria Libc.so.6 il tempo impiegato per eseguire un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere con le risorse della libreria standard C &amp;quot;time.h&amp;quot; la data nella forma &amp;quot;giorno-della-settimana mese giorno ora:min:sec anno&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il tempo trascorso dall'inizializzazione della libreria SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'orario locale comprensivo dei microsecondi con la funzione esterna g_date_time_get_microsecond() del API di GLIB]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'orario locale comprensivo dei nanosecondi con le risorse di alcune librerie standard C]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la differenza temporale fra due orari]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere una data e-o l'orario comprensivo dei millisecondi]]&lt;br /&gt;
&lt;br /&gt;
* [[Porre in pausa il programma per un dato numero di microsecondi con la funzione esterna g_usleep() del API di GLIB]]&lt;br /&gt;
&lt;br /&gt;
* [[Rappresentazione stringa localizzata e non-localizzata di una data]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere di quanti giorni è formato un determinato anno]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere di quanti giorni è formato il mese corrente]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanto tempo è passato dall'inizio del programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti microsecondi sono passati dalla data iniziale del tempo Unix sino alla data e all'orario correnti]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti millisecondi sono passati dalla data iniziale del tempo Unix sino alla data e all'orario correnti]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti nanosecondi sono passati dalla data iniziale del tempo Unix sino alla data e all'orario correnti]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti secondi bisogna aggiungere all'orario locale per ottenere l'orario UTC]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti secondi sono passati dalla data iniziale del tempo Unix sino alla data e all'orario correnti]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti secondi sono passati dall'inizio del giorno corrente]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti giorni sono passati dall'inizio dell'anno corrente]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti secondi sono passati dall'inizio dell'anno corrente]]&lt;br /&gt;
&lt;br /&gt;
* [[Temporizzare una funzione o un evento]]&lt;br /&gt;
&lt;br /&gt;
== Terminale - Console IDE Gambas ==&lt;br /&gt;
&lt;br /&gt;
* [[Aprire un Terminale con Desktop.OpenTerminal e passargli una riga di comando]]&lt;br /&gt;
&lt;br /&gt;
* [[Aprire un Terminale e passargli una riga di comando mediante le funzioni esterne del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Attendere in un'applicazione 'a riga di comando' la pressione del tasto 'Invio']]&lt;br /&gt;
&lt;br /&gt;
* [[Colorare testo e sfondo in Console o Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il numero di linee e di colonne costituenti la corrente dimensione di un terminale o console]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in tempo reale il file-device &amp;quot;pts&amp;quot; dell'ultimo Terminale appena aperto]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la riga e la colonna nelle quali è posizionato il cursore in un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Formattare il testo da mostrare in console o in terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare i dati inviati allo standard output da un programma C]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare il risultato restituito ad intervalli temporali di un comando bash]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare la stringa di caratteri immessi dall'utente nella console o Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare quanto viene scritto manualmente nella console o in un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Inviare il testo, colorato e ruotato, in un Terminale con l'API di libcaca]]&lt;br /&gt;
&lt;br /&gt;
* [[Lanciare da un'applicazione Gambas il Terminale e far partire da esso un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Lanciare da un'applicazione Gambas un comando bash e far scrivere il risultato in un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il prompt bash]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare in runtime il numero del file-device 'pts' di un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Pulire il Terminale o la console via codice]]&lt;br /&gt;
&lt;br /&gt;
* [[Reindirizzare dati stringa dalla console ad un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Rendere la console dell'IDE funzionale come un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere nella console (standard output) di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere nella finestra di un Terminale distinto dal programma Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere nello Standard Input di un Terminale con un programma Gambas 'a riga di comando']]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare da codice il cursore all'interno del Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare il cursore in un Terminale lungo una riga di caratteri]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare un punto nella console o nel Terminale alle coordinate x, y]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare una stringa in console con allineamento a destra o a sinistra]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare una stringa in console sempre su una medesima riga]]&lt;br /&gt;
&lt;br /&gt;
== TextArea ==&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un testo da un Controllo all'interno del testo di una TextArea senza l'uso del Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare che siano stati aggiunti uno o più caratteri a una TextArea con l'opzione &amp;quot;Incolla&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== TextBox ==&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere in un TextBox dalla posizione manualmente mutata del cursore]]&lt;br /&gt;
&lt;br /&gt;
* [[Sovrascrivere mediante nuovi caratteri i caratteri già presenti in un TextBox]]&lt;br /&gt;
&lt;br /&gt;
== ToolTip ==&lt;br /&gt;
&lt;br /&gt;
* [[Chiudere un ToolTip anticipatamente]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il colore e la dimensione del font del testo del ToolTip]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare la dimensione del ToolTip]]&lt;br /&gt;
&lt;br /&gt;
== Valori numerici, Operazioni matematiche, Bit==&lt;br /&gt;
&lt;br /&gt;
* [[Arrotondamento di un numero con virgola mobile]]&lt;br /&gt;
&lt;br /&gt;
* [[Arrotondare un Intero al più prossimo valore inferiore multiplo di 2, 4, 8, 16, 32 e 64]]&lt;br /&gt;
&lt;br /&gt;
* [[Arrotondare un Intero al successivo multiplo di 2, 4, 8, 16, 32 e 64]]&lt;br /&gt;
&lt;br /&gt;
* [[Azzerare tutti gli elementi di un vettore di tipo numerico]]&lt;br /&gt;
&lt;br /&gt;
* [[Cercare un valore all'interno di un file aperto come un flusso di dati di tipo File]]&lt;br /&gt;
&lt;br /&gt;
* [[Cercare un valore all'interno di un file aperto come un flusso di dati di tipo Stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare i numeri di Fibonacci]]&lt;br /&gt;
&lt;br /&gt;
* [[Confrontare due Interi con la funzione esterna gst_util_seqnum_compare() del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere di un numero il multiplo posto immediatamente dopo un altro numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere di un numero la posizione del primo bit da destra impostato a 1]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere gli angoli acuti di un triangolo rettangolo dai cateti noti]]&lt;br /&gt;
&lt;br /&gt;
* [[Conversione Big-Endian/Little-Endian]]&lt;br /&gt;
&lt;br /&gt;
* [[Conversione da Base64]]&lt;br /&gt;
&lt;br /&gt;
* [[Conversione di un angolo da valori sessagesimali in decimali e viceversa]]&lt;br /&gt;
&lt;br /&gt;
* [[Conversione in Base64]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire in un tipo di dati numerico un valore letto in formato Stringa da un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da Decimale in Binario]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da rappresentazione binaria in decimale]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da rappresentazione Decimale a Carattere ASCII]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da rappresentazione Decimale a Esadecimale]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da rappresentazione Decimale a Ottale]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da rappresentazione Esadecimale a Decimale]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da rappresentazione esadecimale in binaria]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da rappresentazione ottale in decimale]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero decimale in numerazione romana]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un valore di tipo Float in un Long con la funzione gst_util_gdouble_to_guint64() del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un valore di tipo Float in una stringa con la funzione PyOS_double_to_string() della libreria libpython3]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un valore di tipo Long in un Float con la funzione gst_util_guint64_to_gdouble() del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un valore numerico di tipo Float in una stringa di caratteri ASCII]]&lt;br /&gt;
&lt;br /&gt;
* [[Distinguere ogni byte della rappresentazione esadecimale di un valore decimale]]&lt;br /&gt;
&lt;br /&gt;
* [[Effettuare con le funzioni Glib-2.0 alcune operazioni sui bit di un valore di una variabile puntata da un Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Elevamento a potenza]]&lt;br /&gt;
&lt;br /&gt;
* [[Esempio di utilizzo delle funzioni esterne del API di GMP]]&lt;br /&gt;
&lt;br /&gt;
* [[Esponente di una potenza]]&lt;br /&gt;
&lt;br /&gt;
* [[Generare numeri casuali con le funzioni esterne del API di GLib]]&lt;br /&gt;
&lt;br /&gt;
* [[Generare numeri casuali con le funzioni esterne srand() e rand() di stdlib.h]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestire numeri superiori al limite massimo supportato dal tipo Long]]&lt;br /&gt;
&lt;br /&gt;
* [[Invertire le cifre di un numero intero]]&lt;br /&gt;
&lt;br /&gt;
* [[Massimo Comun Divisore di due numeri con la funzione gst_util_greatest_common_divisor() di libgstreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Massimo Comun Divisore di due numeri con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Minimo Comune Multiplo di due numeri con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Notazione scientifica e notazione esponenziale in Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Operazioni con precisione quadrupla a 128-bit con numeri in virgola mobile mediante la libreria quadmath.h]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere da un valore numerico i caratteri ASCII corrispondenti a ciascun byte componente il numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere dai suoi singoli dati-byte un valore numerico di tipo superiore al Byte]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere di un numero in virgola mobile la rappresentazione del separatore con il punto anziché con la virgola]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere i &amp;quot;reali&amp;quot; valori numerici da una lettura di tipo Stringa di un flusso di dati]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il ''nibble'' alto ed il ''nibble'' basso di un numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il numero più piccolo e quello più grande fra tre o più numeri mediante le funzioni esterne del API di libgsl]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il resto da due operandi di tipo Float di una divisione con le risorse del API di Libm.so.6]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere in Gambas il risultato di uno spostamento di bit scritto in linguaggio C]] &lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la parte intera e quella decimale di un numero in virgola mobile]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la rappresentazione come stringa in memoria di un valore numerico]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere numeri casuali di ambito Byte dai file-device /dev/random e /dev/urandom]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un numero dalla sua memorizzazione in formato Big-Endian]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un numero dalla sua memorizzazione in formato Little-Endian]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un valore numerico dalla rappresentazione in memoria come stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Porre a 0 oppure a 1 un bit di un numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Rappresentare un numero in alcune basi numeriche]]&lt;br /&gt;
&lt;br /&gt;
* [[Rendere la sola parte decimale di un numero in virgola mobile come un numero di tipo Intero]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere con le funzioni esterne del API di Glib quanti bit sono necessari per contenere un numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere il tipo di dato più piccolo in Gambas capace di contenere e rappresentare un numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti bit posti ad 1 sono presenti in un numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se la cifra delle unità di un numero è zero]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un numero è pari o dispari]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un numero rientra in un ambito definito di due valori]]&lt;br /&gt;
&lt;br /&gt;
* [[Scambiare i rispettivi valori fra due variabili]]&lt;br /&gt;
&lt;br /&gt;
* [[Sostituire gli operatori logici di spostamento dei bit con semplici operazioni]]&lt;br /&gt;
&lt;br /&gt;
* [[Sottrazione con operatori bitwise]]&lt;br /&gt;
&lt;br /&gt;
* [[Trasformare un valore di tipo Float in una frazione con la funzione gst_util_double_to_fraction() della libreria libgstreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Trasformare una frazione in un valore di tipo Float con la funzione gst_util_fraction_to_double() della libreria libgstreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Troncare alcune cifre decimali in un valore in virgola mobile]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare se un numero è una potenza di 2]]&lt;br /&gt;
&lt;br /&gt;
== ValueBox ==&lt;br /&gt;
&lt;br /&gt;
* [[Modificare l'allineamento del valore numerico in un ValueBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Rappresentare in un ValueBox un numero avente i punti delle migliaia e la virgola dei decimali]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere testo in un ValueBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare in un ValueBox vari tipi di valori]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare l'evento _Change() in un ValueBox]]&lt;br /&gt;
&lt;br /&gt;
== Variabili in particolare ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il nome di una variabile 'Pubblica']]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in runtime il numero identificatore di un tipo di dato di una variabile presente nel codice]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere via codice la quantità di memoria occupata da una variabile]]&lt;br /&gt;
&lt;br /&gt;
* [[Contenere valori di diverso tipo]]&lt;br /&gt;
&lt;br /&gt;
* [[Rendere esplicitamente una variabile quale elemento di un vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Usare come identificatore di variabile il nome di una parola chiave o di una funzione ovvero un carattere non consentito]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare l'indirizzo di memoria di una variabile]]&lt;br /&gt;
&lt;br /&gt;
== Video ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con 'proc...fdinfo' la quantità dei dati elaborati di un file video]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere quale file video un programma sta eseguendo]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire in streaming un video da youtube mediante l'oggetto WebView]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file Video con il codice HTML]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file Video con le funzioni esterne del API di Libmpv]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file Video mediante il Metodo .Open() della Classe Desktop]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati video da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[La gestione dei dati video con la Classe MediaView del componente gb.media.form]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[La gestione del video e dei file video con il componente gb.media]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[La gestione del video e dei file video  con le funzioni esterne del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione del video e dei file video con le funzioni esterne del API di VLC]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni generali su flussi multimediali con le funzioni esterne del API di Quvi]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni generali sull'audio e sul video con le funzioni esterne del API di Libquicktime]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere con le funzioni esterne del API di Rhythmbox se un file contiene dati audio e/o video]]&lt;br /&gt;
&lt;br /&gt;
====i/o video====&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere i driver video disponibili nel sistema mediante le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni sul dispositivo video di una webcam con le funzioni esterne del API di libv4l2]]&lt;br /&gt;
&lt;br /&gt;
== Watcher ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della classe Watcher]]&lt;br /&gt;
&lt;br /&gt;
== Web ==&lt;br /&gt;
&lt;br /&gt;
* [[Acquisire il codice HTML di una pagina web]]&lt;br /&gt;
&lt;br /&gt;
* [[Caricare una pagina web]]&lt;br /&gt;
&lt;br /&gt;
* [[Controllare i link contenuti da una pagina web]]&lt;br /&gt;
&lt;br /&gt;
* [[Decodificare con le risorse del API di Libidn i nomi di dominio internazionalizzati]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il valore del colore di un pixel di una pagina web aperta con l'Oggetto WebView]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'immagine di una pagina web]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un indirizzo web è valido]]&lt;br /&gt;
&lt;br /&gt;
== WorkSpace ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della Classe WorkSpace]]&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Guide_della_comunit%C3%A0&amp;diff=40771</id>
		<title>Guide della comunità</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Guide_della_comunit%C3%A0&amp;diff=40771"/>
		<updated>2025-01-19T16:11:37Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Raccolta di guide sui componenti, sui metodi e sugli algoritmi del linguaggio Gambas, nonché su ogni altro argomento utile, scritti e mantenuti dalla comunità italiana Gambas-it&lt;br /&gt;
&lt;br /&gt;
== Array (Vettori) e Matrici ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Array: creazione, modifica e riempimento]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Array multidimensionali con numero determinato di elementi]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Array multidimensionali con numero indeterminato di elementi]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Array annidati]]&lt;br /&gt;
&lt;br /&gt;
* [[Array contenenti array di varie dimensioni]]&lt;br /&gt;
&lt;br /&gt;
* [[Array in linea]]&lt;br /&gt;
&lt;br /&gt;
* [[Accedere linearmente in scrittura ed in lettura ad una Matrice]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare ad un vettore i valori contenuti da un'area di memoria puntata da un Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare ciascuna cifra di un numero a un elemento di un vettore di tipo Byte]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare i byte dei dati di un numero agli elementi di un vettore di tipo Byte]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare un vettore ad una variabile di tipo Object]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare un vettore ad una variabile di tipo Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Configurazione, organizzazione ed impostazione dell'array secondo i sorgenti di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere quale elemento di un vettore contiene un determinato valore]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con i Puntatori i valori contenuti in un vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il valore numerico più alto contenuto da un vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la dimensione ed il numero di elementi di una Matrice]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in un array di tipo Stringa la quantità maggiore di caratteri contenuta nei suoi elementi]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in un array di tipo Stringa l'elemento che contiene la quantità maggiore di caratteri]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire i valori di tipo Byte di un vettore in valori di tipo Stringa]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Copie di variabili array]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare più elementi da un array]]&lt;br /&gt;
&lt;br /&gt;
* [[Emulare la funzione Asc() con il vettore di tipo Byte]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestione di una coda mediante array in modo circolare]]&lt;br /&gt;
&lt;br /&gt;
* [[Installazione di Gambas3 dai pacchetti binari]]&lt;br /&gt;
&lt;br /&gt;
* [[Invertire l'ordine dei valori contenuti dagli elementi di un vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Invertire l'ordine nelle coppie di byte dell'area di memoria di un vettore con la funzione esterna swab()]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere e scrivere in un vettore mediante i Memory Stream]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il puntatore a una variabile vettoriale]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un vettore di tipo Byte da una Stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Porre a zero i valori contenuti da un Vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Proprietà ReadOnly dell'Array (proprietà di sola lettura)]]&lt;br /&gt;
&lt;br /&gt;
* [[Raccogliere il valore contenuto nell'ultimo elemento di indice non conosciuto di un vettore restituito da una funzione]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere in un vettore i dati di un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare un Vettore al posto di una Matrice]]&lt;br /&gt;
&lt;br /&gt;
== Balloon ==&lt;br /&gt;
&lt;br /&gt;
* [[Colorare il testo di un Balloon]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un'immagine in un Ballon]]&lt;br /&gt;
&lt;br /&gt;
* [[Posizionare arbitrariamente un Balloon]]&lt;br /&gt;
&lt;br /&gt;
== Classi ==&lt;br /&gt;
&lt;br /&gt;
===Classi in generale===&lt;br /&gt;
&lt;br /&gt;
* [[Accedere alla Struttura della risorsa &amp;quot;Classe&amp;quot;, come dichiarata nei sorgenti di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le risorse possedute da una Classe]]&lt;br /&gt;
&lt;br /&gt;
* [[Rendere gli elementi di una Classe richiamabili da un progetto Gambas esterno]]&lt;br /&gt;
&lt;br /&gt;
* [[Usare una Classe come fosse una Funzione]]&lt;br /&gt;
&lt;br /&gt;
===Classi particolari native===&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere una funzione personalizzata alla Classe nativa String]]&lt;br /&gt;
&lt;br /&gt;
* [[La classe Action]]&lt;br /&gt;
&lt;br /&gt;
===Classi specifiche===&lt;br /&gt;
&lt;br /&gt;
* [[Creare da codice una Classe specifica]]&lt;br /&gt;
&lt;br /&gt;
* [[Variabile del tipo di una Classe specifica creata]]&lt;br /&gt;
&lt;br /&gt;
* [[Vettore del tipo di una Classe specifica creata]]&lt;br /&gt;
 &lt;br /&gt;
====Classi particolari realizzate della Comunità Gambas-it.org====&lt;br /&gt;
&lt;br /&gt;
* [[Clib]]&lt;br /&gt;
&lt;br /&gt;
* [[csvbox]]&lt;br /&gt;
&lt;br /&gt;
* [[CTable]]&lt;br /&gt;
&lt;br /&gt;
* [[Fifo]]&lt;br /&gt;
&lt;br /&gt;
* [[GLibrary]]&lt;br /&gt;
&lt;br /&gt;
* [[GridViewUtil]]&lt;br /&gt;
&lt;br /&gt;
* [[PdfWriter]]&lt;br /&gt;
&lt;br /&gt;
* [[TrasfImpLett]]&lt;br /&gt;
&lt;br /&gt;
== Clipboard ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della classe Clipboard]]&lt;br /&gt;
&lt;br /&gt;
== Collection ==&lt;br /&gt;
&lt;br /&gt;
* [[Collection]]&lt;br /&gt;
&lt;br /&gt;
* [[Confronto Array di Strutture verso Collezione di Classi]]&lt;br /&gt;
&lt;br /&gt;
* [[Definizione esplicita di una Collection]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il valore attribuito a una chiave della Collection]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare un campo di una Collection in un'altra Collection]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare un Metodo o una Proprietà della Classe di un Oggetto inserito in una Collection]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare un'intera Collection nel campo di un'altra Collection]]&lt;br /&gt;
&lt;br /&gt;
== ColorInfo ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della classe ColorInfo]]&lt;br /&gt;
&lt;br /&gt;
== ColumnView ==&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere una colonna a una ColumnView]]&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere una riga a una ColumnView]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare colori allo sfondo ed al testo di una riga selezionata di una ColumnView]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare il testo a una cella della ColumnView]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare la larghezza delle colonne in una ColumnView]]&lt;br /&gt;
&lt;br /&gt;
== ComboBox ==&lt;br /&gt;
&lt;br /&gt;
* [[ComboBox che consente di posizionarsi sulla prima ricorrenza di un item quando si digitano le sue prime lettere]]&lt;br /&gt;
* [[ComboBox che mostra immagini anziché caratteri alfanumerici]]&lt;br /&gt;
* [[ComboBox: creare una lista da codice]]&lt;br /&gt;
* [[Impostare il colore del testo di ogni elemento della lista del ComboBox]]&lt;br /&gt;
* [[Impostare il colore dello sfondo del ComboBox]]&lt;br /&gt;
* [[Ridimensionare la larghezza della finestra a cascata di un ComboBox in base alla lunghezza testuale di un elemento della lista]]&lt;br /&gt;
* [[Scegliere da codice un elemento presente in un ComboBox]]&lt;br /&gt;
* [[Scegliere da codice un indice del ComboBox]]&lt;br /&gt;
&lt;br /&gt;
==Come Compilare Gambas==&lt;br /&gt;
* [[Compilare Gambas]]&lt;br /&gt;
&lt;br /&gt;
== Componenti ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Cosa è un Componente di Gambas]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Attivare un Componente dinamicamente da codice]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il nome del Componente di appartenenza di una Classe mediante i sorgenti di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le Classi possedute da un Componente]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare un Componente obsoleto]]&lt;br /&gt;
&lt;br /&gt;
=== Realizzazione dei Componenti in linguaggio Gambas ===&lt;br /&gt;
&lt;br /&gt;
* [[Come creare un Componente scritto in linguaggio Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Tutorial - creare un componente: il frame]]&lt;br /&gt;
&lt;br /&gt;
==== Componenti della Comunità Gambas-it.org ====&lt;br /&gt;
&lt;br /&gt;
* [[gb.strLib]]&lt;br /&gt;
&lt;br /&gt;
* [[gb.textpro]]&lt;br /&gt;
&lt;br /&gt;
* [[GridBox]]&lt;br /&gt;
&lt;br /&gt;
* [[INILib]]&lt;br /&gt;
&lt;br /&gt;
* [[InvBox]]&lt;br /&gt;
&lt;br /&gt;
* [[qrcodereader]]&lt;br /&gt;
&lt;br /&gt;
* [[XMLLib]]&lt;br /&gt;
&lt;br /&gt;
=== Realizzazione dei Componenti in linguaggio C ===&lt;br /&gt;
&lt;br /&gt;
* [[Creare un Componente per Gambas scritto in linguaggio C]]&lt;br /&gt;
&lt;br /&gt;
== CPU e Scheda Madre==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con alcune funzioni della libreria libc.so.6 il numero dei processori configurati e disponibili]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il numero dei processori presenti nel proprio calcolatore con la Proprietà System.Cores]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il numero dei processori presenti nel proprio calcolatore leggendo il file di sistema &amp;quot;cpuinfo&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la frequenza delle CPU mediante le funzioni esterne del API di Libcpufreq]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la risoluzione dei clock hardware con le risorse esterne dichiarate nel file header &amp;quot;time.h&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Controllare la temperatura della CPU con le sole funzioni di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Controllare la temperatura dell'hardware mediante le funzioni del API di libsensors]]&lt;br /&gt;
&lt;br /&gt;
* [[Generare arbitrariamente un errore &amp;quot;CPU Time Limit Exceeded&amp;quot; con la funzione esterna vlimit()]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni sulla CPU mediante l'API di Libavutil]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni sulla CPU mediante l'API di Libcpuid]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni generali sulla CPU con le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni generali sulla CPU con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare la frequenza delle CPU con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
== Creazione pacchetti di installazione ==&lt;br /&gt;
&lt;br /&gt;
* [[Creare un AppImage firmata di un progetto Gambas]]&lt;br /&gt;
&lt;br /&gt;
== DBus ==&lt;br /&gt;
&lt;br /&gt;
* [[Introduzione a DBus]]&lt;br /&gt;
&lt;br /&gt;
* [[Inviare dati da un programma Gambas ad un altro mediante le risorse del Componente DBus]]&lt;br /&gt;
&lt;br /&gt;
== Desktop - Scrivania ==&lt;br /&gt;
&lt;br /&gt;
* [[Far mostrare sulla Scrivania i messaggi della specifica Desktop Notifications mediante le funzioni esterne del API di Libnotify]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare con precisione il percorso ed il nome della Scrivania]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il valore di un pixel sulla Scrivania]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni sulle icone presenti sulla Scrivania]]&lt;br /&gt;
&lt;br /&gt;
== DesktopFile ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso del Metodo .RunExec()]]&lt;br /&gt;
&lt;br /&gt;
== DesktopWatcher ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della classe DesktopWatcher]]&lt;br /&gt;
&lt;br /&gt;
== DesktopWindow ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della classe DesktopWindow]]&lt;br /&gt;
&lt;br /&gt;
== Dialog ==&lt;br /&gt;
&lt;br /&gt;
* [[Caricare in un Dialog più file da aprire in sequenza]]&lt;br /&gt;
&lt;br /&gt;
* [[Far mostrare in un Dialog l'estensione dell'ultimo file precedentemente aperto]]&lt;br /&gt;
&lt;br /&gt;
* [[Far mostrare in un Dialog una particolare estensione di file]]&lt;br /&gt;
&lt;br /&gt;
* [[Filtrare contemporaneamente con il Dialog.Filter più estensioni di file]]&lt;br /&gt;
&lt;br /&gt;
* [[Preimpostare il percorso della finestra del Dialog]]&lt;br /&gt;
&lt;br /&gt;
* [[Ridimensionare la finestra del Dialog da codice]]&lt;br /&gt;
&lt;br /&gt;
== DirView - FileView ==&lt;br /&gt;
&lt;br /&gt;
* [[Copiare un file utilizzando gli oggetti DirView e FileView]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare con diversi colori i nomi dei file in una FileView]]&lt;br /&gt;
&lt;br /&gt;
== Drag &amp;amp; Drop ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Codice essenziale per effettuare il Drag-Drop di un'immagine da un Controllo grafico in un altro]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Codice essenziale per effettuare il Drag-Drop di un testo]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Mantenere durante il Drag&amp;amp;Drop il cursore del mouse nel punto dell'immagine ove si è cliccato]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare il contenuto di un file di testo con il solo Drop del file in un oggetto di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un'immagine con il Drop del suo file in una PictureBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il percorso di un file trasportato e rilasciato con Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare Oggetti grafici con il mouse all'interno di un Contenitore mediante Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
== DrawingArea ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Istruzioni essenziali per disegnare su una DrawingArea]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Calcolo e rappresentazione grafica in una DrawingArea del Seno e del Coseno]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare e distruggere un Controllo grafico in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare, spostare e distruggere un'immagine in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Curvare il testo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea dei punti]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea due immagini sovrapposte anche consentendo il cambio di opacità di quella disegnata sopra]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea l'intersezione perpendicolare di due linee]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea linee mediante codice]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea linee rette con il mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea sulla base dei punti cliccati un parallelogramma con angoli retti]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un carattere punto per punto]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un cerchio]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un eptagono regolare]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un esagono regolare]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un goniometro]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un ottagono regolare]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un pentagono regolare]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un poligono]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un rettangolo]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un rettangolo colorato con distinzione sfumata fra i colori]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un rombo]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un romboide]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un triangolo]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea una figura piana]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea una pseudo-galleria rettangolare tridimensionale in prospettiva con effetto grafico di movimento in avanti]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea una spirale]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare un Button contenente un'icona e un testo mediante la DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare un misuratore analogico su una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare un orologio su una DrawingArea prendendo l'orario del sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Drag-Drop di un testo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Drag-Drop di un'immagine in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Evidenziare il puntatore del mouse quando si clicca sulla DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Far scorrere un testo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Generare un file immagine da una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Generare un file PDF da una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire in una DrawingArea che si esegua il codice presente nell'Evento &amp;quot;_Draw()&amp;quot; , qualora sia sollevato arbitrariamente più di una volta]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare l'opacità di un disegno in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare alcune sfumature di un colore in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il valore di un pixel in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'effetto della gomma per cancellare in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare direttamente ad un oggetto Image i dati grezzi dei pixel di una DrawingArea mediante le risorse del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare il testo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare qualsiasi elemento da disegnare in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un arco in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un cerchio disegnato in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un eptagono in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un esagono in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un ottagono in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un pentagono in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un quadrato ed un rettangolo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un rombo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un romboide in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un triangolo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare una figura piana intorno a una circonferenza in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un'immagine sul proprio asse centrale in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere del testo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse il testo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse senza Drag&amp;amp;Drop un'immagine caricata in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse un cerchio in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse un Controllo grafico generato in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse un rettangolo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse un triangolo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse un'ellisse in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare il contenuto di una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
== File e Directory ==&lt;br /&gt;
&lt;br /&gt;
* [[Aprire un file mediante la Classe 'DesktopFile' con il programma al quale è associato]]&lt;br /&gt;
&lt;br /&gt;
* [[Arrestare temporaneamente l'intercettazione del flusso di dati da un file-device]]&lt;br /&gt;
&lt;br /&gt;
* [[Azzerare un gruppo di byte in un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Chiudere un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Comprimere un file in un file compresso .zip mediante le funzioni esterne del API di libzip]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere a quale applicazione è associato un tipo di file]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere caratteristiche generali dei file]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere ed impostare i permessi di un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere i permessi di un file mediante le funzioni esterne del API di libgio-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il file referenziato da un collegamento simbolico]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il mime-type di un file  mediante le funzioni esterne del API di libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il mime-type di un file  mediante le funzioni esterne del API di libmagic]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il mime-type di un file mediante le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il tipo di file mediante le funzioni esterne del API di libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il tipo di file mediante le funzioni esterne del API di libglib-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la data di accesso e di modifica di un file con le funzioni esterne del API di libgio-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la dimensione di un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire con la funzione g_filename_from_uri() di libglib-2.0 la URI di un file nel corrispondente identificativo comunemente usato]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire con la funzione g_filename_to_uri() di libglib-2.0 il percorso identificativo di un file nella sua corrispondente URI]]&lt;br /&gt;
&lt;br /&gt;
* [[Copiare ricorsivamente una cartella]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file e scrivervi dati con le funzioni esterne della libreria libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file bash]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un link simbolico di un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Controllare l'uguaglianza di due file mediante le funzioni esterne del API di libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Effettuare una copia di un file e verificarne la progressione]]&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare un byte all'interno di un file binario]]&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare un file mediante le funzioni esterne del API di GLib]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre con le funzioni del API di libzip i file contenuti da un file compresso .zip]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre da una cartella uno o più file nascosti]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre il percorso di un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre l'icona di un tipo di file]]&lt;br /&gt;
&lt;br /&gt;
* [[Evitare l'errore &amp;quot;Stream chiuso&amp;quot; dopo aver chiuso un flusso di dati]]&lt;br /&gt;
&lt;br /&gt;
* [[Identificare un tipo di file dalla sua estensione]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostazione dei permessi di un file con la funzione 'g_chmod' del API di libglib-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[L'oggetto File secondo i sorgenti di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere dati dai &amp;quot;File Descriptor&amp;quot; passati da funzioni esterne]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere il contenuto di una Directory mediante le risorse dichiarate nel file header &amp;quot;dirent.h&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere in una cartella con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere un file con READ]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere un file di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere un file di testo con carattere di fine riga di codifica MAC]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare le date di accesso e di modifica dell'inode di un file con le risorse esterne di utime.h]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare o eliminare una riga in un file di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Monitorare con le funzioni esterne del API di libgio-2.0 le modifiche apportate ad un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni generali sui file]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere all'apertura di un file un Puntatore anziché una variabile di tipo File]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il nome di un file mediante le funzioni esterne del API di libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il percorso di un file, associato a un programma .gambas, aprendolo con un doppio-clic]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il percorso di un file trasportato e rilasciato con Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il solo nome ed il solo percorso di un file con le funzioni esterne del API di Glib-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'intero percorso di un file mediante le funzioni esterne del API di libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la directory di appartenenza di un file mediante le funzioni esterne del API di libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un file coerente da dati con rappresentazione come stringa in memoria]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un numero dalla sua memorizzazione in formato Big-Endian]]&lt;br /&gt;
&lt;br /&gt;
* [[Percorso assoluto e percorso relativo dei file]]&lt;br /&gt;
&lt;br /&gt;
* [[Porre sotto osservazione con Read Watch due o più file]]&lt;br /&gt;
&lt;br /&gt;
* [[Raccogliere solo alcune righe all'interno di un file di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Reindirizzare lo standard output con Output To]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare un file dalla Home]]&lt;br /&gt;
&lt;br /&gt;
* [[Rinominare un file mediante le funzioni esterne del API di GLib]]&lt;br /&gt;
&lt;br /&gt;
* [[Salvare i byte-dati di un file in un file di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Salvare in un file le stringhe contenute in un vettore di tipo Stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere con le risorse del API di Glib se il percorso di un file è un percorso assoluto]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere in tempo reale se un file di nome conosciuto viene modificato o distrutto]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere l'ordine dei byte utilizzato dal sistema per salvare i dati]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quale file è stato creato per ultimo]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un file di nome sconosciuto è stato creato o distrutto]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un file esiste mediante le funzioni esterne del API di libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Scaricare un file da internet]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere all'interno di un file di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere in un file i dati presenti in un vettore di tipo Byte]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere in un file solo alcuni dati presenti in un'area riservata di memoria]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere un file di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare un file nel Cestino e ripristinarlo nella sua Cartella di origine]]&lt;br /&gt;
&lt;br /&gt;
* [[Troncare un file ad una determinata dimensione con la funzione esterna truncate()]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare l'esistenza di una directory]]&lt;br /&gt;
&lt;br /&gt;
== FileChooser ==&lt;br /&gt;
&lt;br /&gt;
* [[Impedire in un FileChooser che facendo doppio-clic su un file, ne venga richiesta la sovrascrittura]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare da codice la modalità di visualizzazione interna dei file in un FileChooser]]&lt;br /&gt;
&lt;br /&gt;
== Font ==&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare Font senza installarli nel sistema]]&lt;br /&gt;
&lt;br /&gt;
== Form, Finestre e Contenitori ==&lt;br /&gt;
&lt;br /&gt;
* [[Chiudere tutte le finestre aperte da un applicativo]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un Form mediante la Classe Window]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare una finestra e disegnarvi una scacchiera con le funzioni del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare una finestra ed inserirvi del testo con le funzioni esterne di Libcaca]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare una finestra mediante le funzioni del API di GTK+3]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare una finestra mediante le funzioni del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare una finestra mediante le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare una finestra mediante le funzioni del API di XCB]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file immagine dagli oggetti presenti in un Contenitore]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un Form trasparente]]&lt;br /&gt;
&lt;br /&gt;
* [[Dimensionare il Form o un'altra finestra considerando la presenza della barra delle applicazioni sulla Scrivania]]&lt;br /&gt;
&lt;br /&gt;
* [[Evitare la perdita di memoria chiudendo forzatamente un Form]]&lt;br /&gt;
&lt;br /&gt;
* [[Evento Form_Activate e sua possibile sostituzione]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire l'apertura di un Form secondario più di una volta]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire la chiusura di un Form quando si clicca sulla &amp;quot;X&amp;quot; nell'angolo in alto a destra]]&lt;br /&gt;
&lt;br /&gt;
* [[Inglobare un Form o una finestra in un altro suo Form o finestra del medesimo programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Mantenere il Form di un'applicazione Gambas sempre in primo piano]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare una immagine JPEG in una finestra con le funzioni del API di X11 e di Libjpeg]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un'immagine del Form]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare ad un Form un valore diverso da un Intero alla chiusura di un Form secondario]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare valori e altre risorse da un Form principale a un Form secondario]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare valori e altre risorse da un Form secondario a un Form principale]]&lt;br /&gt;
&lt;br /&gt;
* [[Rapporto fra ShowModal ed il Metodo Form.Close]]&lt;br /&gt;
&lt;br /&gt;
* [[Referenziare in modo appropriato lo spazio all'interno di un Contenitore rispetto ai suoi Oggetti figli]]&lt;br /&gt;
&lt;br /&gt;
* [[Restituire ad un Form un valore passato ad Form secondario]]&lt;br /&gt;
&lt;br /&gt;
* [[Semitrasparenza di un Form]]&lt;br /&gt;
&lt;br /&gt;
* [[Simulare il posizionamento di alcuni ToolButton sulla barra del titolo della finestra]]&lt;br /&gt;
&lt;br /&gt;
* [[Sollevare l'evento _Resize al ridimensionamento di un Form secondario]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare un Form con il mouse sulla Scrivania]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare se un Form è attivo]]&lt;br /&gt;
&lt;br /&gt;
== Funzioni ==&lt;br /&gt;
&lt;br /&gt;
* [[Differenza fra Sub, Procedure e Function]]&lt;br /&gt;
&lt;br /&gt;
* [[Emulare i Puntatori a Funzione del linguaggio C mediante gli Oggetti]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestire Funzioni come oggetti]]&lt;br /&gt;
&lt;br /&gt;
* [[Passaggio di un argomento per 'indirizzo' ad una Funzione]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare a una funzione un numero imprecisato di argomenti]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere una Funzione]]&lt;br /&gt;
&lt;br /&gt;
== Gambas ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la versione di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le parole-chiave usate in Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Far apparire un commento a una risorsa nella finestrina guida nell'editor del codice]]&lt;br /&gt;
&lt;br /&gt;
* [[Icone messe a disposizione da Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare in un file compilato .gambas gli eventuali file esterni in esso allegati]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare la cartella principale dei file sorgenti di Gambas contenente la sub-cartella di un file immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[La cartella ove sono salvati in copia i file delle informazioni della wiki ufficiale sulle risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'indirizzo effettivo dei file ospitati in un progetto Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Visualizzare tutti gli elementi rilevanti di Gambas contenuti dal codice di un progetto]]&lt;br /&gt;
&lt;br /&gt;
== Gambas con HTML e JavaScript ==&lt;br /&gt;
&lt;br /&gt;
* [[Gambas con HTML e JavaScript - Uso necessario dell'oggetto WebView]]&lt;br /&gt;
&lt;br /&gt;
==== Applicazioni specifiche ====&lt;br /&gt;
&lt;br /&gt;
* [[Creare un ComboBox in una tabella e passare i suoi valori selezionati al codice Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire dati con un InputBox mediante codice HTML]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere un valore generato da un codice HTML/JavaScript]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare una finestra tipo MessageBox mediante codice HTML]]&lt;br /&gt;
&lt;br /&gt;
* [[Testo scorrevole dall'alto verso il basso e viceversa]]&lt;br /&gt;
&lt;br /&gt;
== Gambas e Arduino ==&lt;br /&gt;
&lt;br /&gt;
* [[Far interagire Gambas con Arduino]]&lt;br /&gt;
&lt;br /&gt;
* [[Inviare dati ad Arduino]]&lt;br /&gt;
&lt;br /&gt;
* [[Ricevere dati da Arduino]]&lt;br /&gt;
&lt;br /&gt;
* [[Ricevere da Arduino un tipo di dato di dimensione superiore al Byte]]&lt;br /&gt;
&lt;br /&gt;
* [[Ricevere una Struttura da Arduino]]&lt;br /&gt;
&lt;br /&gt;
== Gambas3 &amp;amp; SubVersion ==&lt;br /&gt;
&lt;br /&gt;
* [[Gambas3 &amp;amp; SubVersion]]&lt;br /&gt;
&lt;br /&gt;
== Gestione Basi di Dati ==&lt;br /&gt;
&lt;br /&gt;
* [[Installazione Server PostgreSQL]]&lt;br /&gt;
&lt;br /&gt;
== Gestione dei dati audio e dei file audio ==&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare i beat per minuto (BpM) di un file audio con le funzioni esterne del API di Libaubio]]&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare la durata di un file audio WAV]]&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare la durata di un file MP3 con le sole risorse native di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare la potenza di picco e di ampiezza di un file WAV con le funzioni esterne del API di Libaudiofile]]&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare la quantità di dati audio grezzi di un file WAV necessari per eseguire tot secondi di audio]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere alcune informazioni generali di un file OGG con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il bitrate di un file MP3 con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in tempo reale con &amp;quot;proc...fdinfo&amp;quot; la quantità dei dati elaborati di un file audio]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in tempo reale la quantità di frame audio processati dalla scheda audio]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la frequenza di campionamento di un file MP3 con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la quantità di canali di un file MP3 con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la versione e il layer di un file MP3 con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere quale file audio un programma sta eseguendo]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file audio in formato OggVorbis con le funzioni esterne del API di libfishsound, libsndfile e liboggz]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file audio in formato OggVorbis con le funzioni esterne del API di libsndfile]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file audio in testo con le risorse del API di Sndfile]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file OggVorbis in WAV con le funzioni esterne del API di Libvorbisidec]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file OggVorbis in WAV ed estrarne anche informazioni con le funzioni esterne del API di VorbisFile]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file WAV in formato AAC con le funzioni esterne del API di Faac]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file WAV in formato MP3 con le funzioni esterne del API di Lame]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file WAV in formato OggVorbis con le funzioni esterne del API di libvorbisfile, libvorbisenc e libogg]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare il blocco d'intestazione di un file WAV avendo dati audio grezzi]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;FONT Color=blue&amp;gt;[[Creare un Client di Jack con le funzioni esterne del API di libjack]]&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Creare un Client di Jack con le funzioni esterne del API di libJack e GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file WAV da un file .orc e un file .sco di Csound con le funzioni esterne del API di libcsound64]]&lt;br /&gt;
&lt;br /&gt;
* [[Decomprimere e decodificare un file mp3 con le funzioni esterne del API di AVbin]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio ed estrarne informazioni mediante le funzioni esterne del API di libcsfml]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante il codice html]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante il Metodo .Open() della Classe Desktop]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Eseguire un file audio mediante l'oggetto MediaView del componente gb.media.form]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante le funzioni esterne del API di Alsa e SndFile]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante le funzioni esterne del API di GSound]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante le funzioni esterne del API di libaudiofile e di Alsa]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante le funzioni esterne del API di Mpv]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante le funzioni esterne del API di PortAudio e SndFile]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante le funzioni esterne del API di Rhythmbox]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file mp3 usando l'API di Smpeg]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file WAV mediante le funzioni esterne del API di Flite]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file WAV mediante le funzioni esterne del API di libaudio e di Alsa]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre da un file FLAC i dati dell'immagine contenuta]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre da un file MP3 i soli dati audio grezzi mediante la libreria Libmad]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre da un file WAV i dati audio grezzi mediante le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati audio da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i TAG da un file MP3 con le funzioni esterne del API di Id3tag]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i TAG da un file MP3 con le sole funzioni di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i TAG da un file OggVorbis con le sole funzioni di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i TAG da un file SPC con le funzioni esterne del API di Libspctag]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni da un file .wav]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni da un file audio MOD con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni da un file MP3 con le funzioni esterne del API di Smpeg]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni da un file OggVorbis con le funzioni esterne del API di Vorbisfile]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni da un file VOC con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni e TAG da file audio con le funzioni esterne del API di Libtag_c]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni e TAG da un file audio con le funzioni esterne del API di SndFile]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni e TAG da un file MP3 con le funzioni esterne del API di Avbin]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni generali da un file audio aiff con le sole funzioni di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni generali da un file audio con le funzioni esterne del API di Libaudiofile]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni generali da un file audio flac]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre l'immagine contenuta in un file MP3 con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Fondere insieme due file WAV]]&lt;br /&gt;
&lt;br /&gt;
* [[Generare un'onda sinusoidale]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare le frequenze presenti in un'onda audio con le funzioni esterne della libreria Libaubio]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[La gestione dei file audio mediante il componente gb.openal]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[La gestione dei file audio mediante il componente gb.sdl2.audio]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file audio mediante le funzioni esterne del API di Allegro 5]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file audio mediante le funzioni esterne del API di Canberra]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file audio mediante le funzioni esterne del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file audio mediante le funzioni esterne del API di MikMod]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file audio mediante le funzioni esterne del API di Mpeg3]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file audio mediante le funzioni esterne del API di mpg123]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file audio mediante le funzioni esterne del API di Sox]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[La gestione dell'audio e dei file audio mediante il componente gb.media]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di ALSA]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di LibAo]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di OpenAL]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di Opus]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di PulseAudio]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di Sndio]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di VLC]]&lt;br /&gt;
&lt;br /&gt;
* [[La struttura di un file MPEG]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il volume audio di un file WAV mediante le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il volume e la frequenza di campionamento di file audio WAV e AIFF con l'API di Libaudio]] &lt;br /&gt;
&lt;br /&gt;
* [[Modificare la frequenza di campionamento di un file audio con l'API di Libresample e Libsndfile]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare la frequenza di campionamento di un file audio con l' API di Libsamplerate e Libsndfile]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un file WAV da un file Midi con le funzioni esterne del API di FluidSynth]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un file WAV da un file Midi con le funzioni esterne del API di WildMidi]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere con le funzioni esterne del API di Rhythmbox se un file contiene dati audio e/o video]]&lt;br /&gt;
&lt;br /&gt;
* [[Suddividere in due o più parti coerenti e funzionali un file audio mp3]]&lt;br /&gt;
&lt;br /&gt;
* [[Unire due file WAV]]&lt;br /&gt;
&lt;br /&gt;
* [[Visualizzare la forma d'onda di un file WAV]]&lt;br /&gt;
&lt;br /&gt;
==== Ascolto radio da flusso web ====&lt;br /&gt;
&lt;br /&gt;
* [[Registrare in tempo reale il flusso di dati audio di una radio WEB con le risorse della Classe HttpClient di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Registrare in tempo reale in un file l'audio di una radio WEB con le funzioni esterne del API di VLC]]&lt;br /&gt;
&lt;br /&gt;
* [[Riproduzione dell'audio di radio WEB con il Componente gb.media]]&lt;br /&gt;
&lt;br /&gt;
* [[Riproduzione dell'audio di radio WEB con le funzioni esterne del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Riproduzione dell'audio di radio WEB con le funzioni esterne del API di VLC]]&lt;br /&gt;
&lt;br /&gt;
* [[Riproduzione dell'audio di radio WEB con l'oggetto WebView e con il codice HTML]]&lt;br /&gt;
&lt;br /&gt;
* [[Riproduzione e contemporanea registrazione dell'audio di radio WEB mediante il Componente gb.media]]&lt;br /&gt;
&lt;br /&gt;
==== Codifica del parlato e decodifica dei dati codificati ====&lt;br /&gt;
&lt;br /&gt;
* [[Codifica del parlato mediante le funzioni esterne del API di Speex]]&lt;br /&gt;
&lt;br /&gt;
* [[Decodifica dei dati precedentemente codificati mediante le funzioni esterne del API di Speex]]&lt;br /&gt;
&lt;br /&gt;
==== Dal testo al parlato (Text-To-Speech) ====&lt;br /&gt;
&lt;br /&gt;
* [[&amp;quot;Dal testo al parlato&amp;quot; mediante le funzioni esterne del API di eSpeack]]&lt;br /&gt;
&lt;br /&gt;
* [[&amp;quot;Dal testo al parlato&amp;quot; mediante le funzioni esterne del API di Pico TTS]]&lt;br /&gt;
&lt;br /&gt;
* [[&amp;quot;Dal testo al parlato&amp;quot; mediante le funzioni esterne del API di Speech-Dispatcher]]&lt;br /&gt;
&lt;br /&gt;
==== I/O audio ====&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di ALSA i dispositivi audio presenti nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di PortAudio i dispositivi audio presenti nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di RtAudio i dispositivi audio presenti nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di SDL2 i dispositivi audio presenti nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Rilevare se la scheda audio sta processando dati audio]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere con le funzioni esterne di ALSA quali schede audio sono installate nel computer]]&lt;br /&gt;
&lt;br /&gt;
== Gestione dei dati MIDI e dei file ''.mid''==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la durata di un file Midi con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la durata di un file Midi mediante le funzioni esterne del API di Allegro]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la durata in secondi del Tempo Delta fra due Eventi Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la lunghezza in byte di ciascuna traccia MTrk di un file Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere quale file Midi un programma sta eseguendo]]&lt;br /&gt;
&lt;br /&gt;
* [[Conversione del Tempo Delta fra due eventi Midi dai secondi nel valore esadecimale in formato &amp;quot;a lunghezza variabile&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire i dati grezzi delle note del messaggio Midi &amp;quot;NoteOn&amp;quot; nei corrispondenti simboli del protocollo ABC di notazione musicale]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un semplice Client Midi di Jack]]&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare una traccia da un file MIDI]]&lt;br /&gt;
&lt;br /&gt;
* [[Emulare con il Midi il suono del bip prodotto dall'altoparlante del PC]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file MIDI mediante il codice html]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Eseguire un file MIDI mediante il componente gb.openal]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Eseguire un file MIDI mediante il componente gb.sdl2.audio]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file MIDI mediante il Metodo .Open() della Classe Desktop]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Eseguire un file MIDI mediante l'oggetto MediaView del componente gb.media.form]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati degli eventi Midi da un file Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati MIDI da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati Midi dal file audio AIFF con le sole funzioni di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre il testo da un file Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni da un file Midi con le sole funzioni di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Fondere insieme due file MIDI]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestione del MIDI con ALSA]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestione del MIDI con O.S.S.]] (&amp;lt;FONT color=darkred&amp;gt;obsoleto&amp;lt;/font&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare dati Midi grezzi con le funzioni esterne del API di RtMidi]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare dati Midi grezzi con le funzioni esterne del API di Sndio]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare ed inviare dati Midi grezzi con le funzioni esterne del API di PortMidi]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[La gestione dei dati Midi e dei file MIDI mediante il componente gb.media]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei dati Midi mediante le funzioni esterne del API di Libsmf]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei dati Midi senza l'uso delle funzioni di Alsa]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file MIDI mediante le funzioni esterne del API di Fluidsynth]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file MIDI mediante le funzioni esterne del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file MIDI mediante le funzioni esterne del API di OpenAl]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file MIDI mediante le funzioni esterne del API di Rhythmbox]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file MIDI mediante le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file MIDI mediante le funzioni esterne del API di VLC]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file MIDI mediante le funzioni esterne del API di WildMidi]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare i dati del blocco d'intestazione e delle tracce di un file Midi con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la frequenza corrispondente ad una nota Midi e viceversa]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare la corrispondenza fra il numero di tracce dichiarato nel file Midi e quelle effettive]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare l'integrità dei dati del blocco d'intestazione di un file Midi]]&lt;br /&gt;
&lt;br /&gt;
==== I/O Midi ====&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di ALSA i dispositivi Midi presenti nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di PortMidi le porte Midi disponibili nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di RtMidi le porte Midi disponibili nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di TSE3 le porte Midi disponibili nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere i Client Midi di ALSA correnti attivi nel sistema ]]&lt;br /&gt;
&lt;br /&gt;
====Gambas, Midi e Arduino====&lt;br /&gt;
&lt;br /&gt;
* [[Inviare dati Midi da Arduino a Gambas]]&lt;br /&gt;
&lt;br /&gt;
====Gestione dei file soundfont bank====&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file soundfont bank sf2 in un file WAV con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre da un file sf2 i dati audio di ciascun suono campionato e creare un file wav]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni generali dai tag di un file soundfont bank sf2 con le sole funzioni di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare i nomi e le rispettive posizioni degli strumenti musicali in un file sf2 con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un file di dati audio grezzi da un file .pat]]&lt;br /&gt;
&lt;br /&gt;
==== Informazioni e risorse sul Midi ====&lt;br /&gt;
&lt;br /&gt;
* [[Il protocollo Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[La struttura di un file Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[Realizzazione dispositivi Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[Siti web sul Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[Sulla nuova versione Midi 2.0]]&lt;br /&gt;
&lt;br /&gt;
== Gestione dei file ODT ==&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre il file thumbnail contenuto nel file odt]]&lt;br /&gt;
&lt;br /&gt;
* [[Unire più file ODT in un unico file ODT]]&lt;br /&gt;
&lt;br /&gt;
== Gestione dei file PDF ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Codice essenziale per mostrare un file PDF con le risorse del Componente gb.poppler]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Cercare una parola in una pagina di un file PDF con le risorse del Componente gb.poppler]]&lt;br /&gt;
&lt;br /&gt;
* [[Comprimere un file PDF con le funzioni esterne del API di Ghostscript]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire in immagine una parte di una pagina PDF con le risorse del Componente gb.poppler]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file PNG in PDF con le funzioni del API di Cairo]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire una pagina di un file PDF in una immagine con le risorse del Componente gb.poppler]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Creare un file PDF con la proprietà .OutputFile della Classe Printer]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file PDF con le funzioni esterne del API di Cairo]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file PDF con le funzioni esterne del API di Haru]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file PDF con le funzioni esterne della libreria PDFGen]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Creare un file PDF con le risorse del Componente gb.cairo]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file PDF da un file immagine con le risorse del Componente gb.cairo]]&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare i dati immagine da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati audio da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati MIDI da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati video da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre testo e immagini da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Stampare un file PDF]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Struttura di un file PDF]]&lt;br /&gt;
&lt;br /&gt;
== Gestione dei file PS ==&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file PS con le risorse del API di Cairo]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file PS con le risorse del Componente gb.cairo]]&lt;br /&gt;
&lt;br /&gt;
== Gestione dei file RTF ==&lt;br /&gt;
&lt;br /&gt;
* [[Documentazione per la gestione dei file di testo RTF]]&lt;br /&gt;
&lt;br /&gt;
== Gestione del CD e del DVD ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il numero di titoli e di capitoli presenti in un DVD video con le funzioni del API di libdvdread]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero di settori di un CD/DVD in ore,minuti,secondi con le funzioni del API Libdiscid]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire una traccia di un CD-Audio con le risorse del API di libvlc]] &lt;br /&gt;
&lt;br /&gt;
* [[Eseguire una traccia di un CD-Audio con le risorse di linux/cdrom.h e le funzioni esterne di ALSA]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati presenti in un CD-Audio con le risorse di linux/cdrom.h]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare in GNOME il percorso contenente i file delle tracce di un CD-audio]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[La gestione del CD e del DVD mediante il Componente gb.media]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[La gestione del CD e del DVD mediante la funzione esterna 'gst_parse_launch()' di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione del CD e del DVD mediante le funzioni del API di libcdio]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione del CD e del DVD mediante le funzioni del API di SDL]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni di un CD con le funzioni del API di libcdaudio]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni di un CD con la funzione ioctl()]]&lt;br /&gt;
&lt;br /&gt;
== Gestione della Pen-Drive ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere i dispositivi pen-drive usb montati sul sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il contenuto di una pen-drive mediante le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
== Gestione delle immagini e dei colori ==&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere il canale Alfa a un Oggetto Image privo]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare a un Oggetto ''Image'' i valori pixel contenuti in un'area di memoria puntata da un Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare a un Oggetto ''Image'' i valori pixel contenuti in un vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Cancellare una immagine in una PictureBox o in una ImageView]]&lt;br /&gt;
&lt;br /&gt;
* [[Caricare in un Controllo grafico i file immagine come Picture]]&lt;br /&gt;
&lt;br /&gt;
* [[Caricare in un Oggetto grafico le icone messe a disposizione da Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Caricare un file di formato TIFF e da questo creare un file immagine di altro formato con l'API di GDK_PixBuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Catturare un'immagine con una webcam mediante le funzioni esterne del API di libsane]]&lt;br /&gt;
&lt;br /&gt;
* [[Catturare un'immagine con una webcam mediante le funzioni esterne del API di libv4l2]]&lt;br /&gt;
&lt;br /&gt;
* [[Cliccare in un oggetto qualsiasi o in una immagine suddivisi in rettangoli]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Come Gambas gestisce le immagini]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Configurazione, organizzazione ed impostazione dell'oggetto Image secondo i sorgenti di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere i formati immagine disponibili con GTK mediante le funzioni del API di GDK-PixBuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in modo sicuro il formato di un file immagine mediante le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire il formato RGBA di un colore nei corrispondenti valori decimale ed esadecimale]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire il valore di un colore da RGB in HSV]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire il valore di un colore in RGBA]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire immagini RAW di fotocamere digitali mediante le funzioni esterne del API di Libraw]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file immagine di un qualsiasi formato in un file immagine TIFF mediante le funzioni esterne del API di Libgdk_pixbuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file immagine PCX in un file immagine PNG mediante le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un'immagine a colori in un'immagine a scala di grigi mediante le funzioni esterne del API di Libgdk_pixbuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un'immagine da un formato ad un altro mediante le funzioni esterne del API di FreeImage]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un'immagine da un formato ad un altro mediante le funzioni esterne del API di Imlib2]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un'immagine in un file immagine di formato ICO mediante le funzioni esterne del API di Libgdk_pixbuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un oggetto di tipo &amp;quot;Image&amp;quot; in un file di formato TIFF o ICO con le funzioni esterne del API di Libgdk_pixbuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare da codice un'immagine trasparente]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file immagine da dati immagine grezzi mediante le funzioni del API di Imlib2]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un'immagine senza avere dati immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[Curvare la linea di testo in un oggetto Image]]&lt;br /&gt;
&lt;br /&gt;
* [[Decomprimere un file immagine jpeg per ottenerne i dati grezzi mediante le funzioni esterne del API di libjpeg]]&lt;br /&gt;
&lt;br /&gt;
* [[Desaturare un colore]]&lt;br /&gt;
&lt;br /&gt;
* [[Elenco dei nomi dei colori e i corrispondenti valori delle Costanti della Classe Color utilizzati da Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Elenco dei nomi dei colori e i corrispondenti valori RGB sotto X Window]]&lt;br /&gt;
&lt;br /&gt;
* [[Fondere due immagini in una sola]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestione delle immagini con le risorse di Gambas ma senza attivazione dei Componenti che fanno riferimento alle librerie grafiche QT e GTK]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestire un oggetto Image agendo direttamente sulle risorse dei sorgenti Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Immagine di sfondo al testo in una TextEdit ed in una TextLabel]]&lt;br /&gt;
&lt;br /&gt;
* [[Immagine scorrevole]]&lt;br /&gt;
&lt;br /&gt;
* [[Immagine tratta dal WEB resa lampeggiante]]&lt;br /&gt;
&lt;br /&gt;
* [[Imporre un colore uniforme semitrasparente su una immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare i colori dei pixel di una immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare i valori RGBA dei pixel di una immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare il colore di un determinato pixel]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire del testo in una Image ed in una Picture]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire in un'immagine uno sfondo colorato mediante le funzioni esterne del API di Libgdk_pixbuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un'immagine all'interno di un'altra immagine mediante le funzioni esterne del API di Libgdk_pixbuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere le informazioni di una Image dalle sue risorse dei sorgenti di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Modi di caricare un'immagine di tipo ''Picture'']]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare i colori dei pixel di un'immagine con la proprietà .Data della Classe Image ed i Memory Stream]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il colore di un pixel di un'immagine se esso è minore o maggiore di un dato valore]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare l'opacità di un'immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare le dimensioni di una Image usando il suo Metodo .Stretch]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un'immagine con funzioni del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un'immagine con il Controllo WebView]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un'immagine nella finestra di un Editor di testo con funzioni del API di X11 e Imlib2]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare una parte di un'immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni su file immagine JPEG con le funzioni del API di libjpeg]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni su un file immagine PNG con le funzioni del API di libpng]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni sul file immagine con le funzioni del API di GTK+3 e GDK-PixBuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere dati grezzi di un file immagine mediante le funzioni del API di GDK-PixBuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'effettivo valore del colore del pixel individuato con la Proprietà vettoriale Image.Pixels]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere Metadati Exif da un'immagine JPEG con le risorse del API di libexif]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un file immagine PNG da un'immagine di formato SVG]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un file PDF da una Image]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere una schermata (&amp;quot;screenshot&amp;quot;) con Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere una schermata (screenshot) del desktop con le risorse del API di X11 e di Cairo]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere una schermata (screenshot) del desktop con le risorse del API di X11 e di Imlib2]]&lt;br /&gt;
&lt;br /&gt;
* [[Rendere trasparente una immagine in base ad un colore specifico]]&lt;br /&gt;
&lt;br /&gt;
* [[Ridimensionare e mostrare un'immagine in base al punto ove si è cliccato con il puntatore del mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare e ribaltare sul proprio asse una immagine con le funzioni del API di FreeImage]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare specularmente una immagine ed un carattere]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare una immagine sul proprio asse centrale]]&lt;br /&gt;
&lt;br /&gt;
* [[Salvare e richiamare i dati di un file immagine con Settings]]&lt;br /&gt;
&lt;br /&gt;
* [[Salvare un file immagine con le funzioni del API di GDK-PixBuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Salvare una Image come file immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti pixel occupa un testo in un'immagine mediante le funzioni del API di Imlib2]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Scaricare una immagine da un sito internet]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Scaricare una immagine dal sito &amp;quot;Cover Art Archive&amp;quot; mediante le funzioni esterne della libreria libcoverart]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse un'immagine all'interno di una PictureBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere un testo in un'immagine mediante le funzioni del API di Imlib2]]&lt;br /&gt;
&lt;br /&gt;
=== Gestione delle immagini con CAIRO ===&lt;br /&gt;
&lt;br /&gt;
* [[Caricare un Oggetto ''Image'' direttamente in una ''ImageView'' con gb.cairo]]&lt;br /&gt;
* [[Convertire un file immagine in un file PNG con le risorse del Componente gb.cairo]]&lt;br /&gt;
* [[Convertire un file PNG in PDF con le funzioni del API di Cairo]]&lt;br /&gt;
* [[Convertire un file PNG in SVG con le risorse del Componente gb.cairo]]&lt;br /&gt;
* [[Creare file PNG con le risorse del Componente gb.cairo]]&lt;br /&gt;
* [[Creare file PNG con le funzioni esterne del API di Cairo e di Pango]]&lt;br /&gt;
* [[Creare file PNG con le funzioni esterne del API di Cairo]]&lt;br /&gt;
* [[Creare un file immagine PNG trasparente con le funzioni esterne del API di Cairo]]&lt;br /&gt;
* [[Ridurre le dimensioni di una immagine con il Metodo &amp;quot;.Scale()&amp;quot; del Componente gb.cairo]]&lt;br /&gt;
* [[Spostare il testo con il mouse all'interno dell'area grafica con la Classe Cairo]]&lt;br /&gt;
&lt;br /&gt;
=== Gestione delle immagini con il Componente gb.media ===&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le dimensioni di una immagine mediante il Componente gb.media]]&lt;br /&gt;
* [[Convertire i formati immagine mediante il Componente gb.media]]&lt;br /&gt;
* [[Effetto caleidoscopico di un'immagine PNG con il Componente gb.media]]&lt;br /&gt;
* [[Estrarre e salvare singole immagini da una ripresa video mediante WebCam effettuata con il Componente gb.media]]&lt;br /&gt;
* [[Estrarre e salvare singole immagini durante l'esecuzione di un file video mediante il Componente gb.media]]&lt;br /&gt;
* [[Leggere codici a barre con una webcam mediante il Componente gb.media]]&lt;br /&gt;
* [[Mostrare un'immagine mediante il Componente gb.media]]&lt;br /&gt;
* [[Trasformare un'immagine in ascii art mediante il Componente gb.media]]&lt;br /&gt;
&lt;br /&gt;
=== Gestione delle immagini con ImageMagick ===&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file immagine in un altro formato immagine con le funzioni esterne del API di ImageMagick]]&lt;br /&gt;
* [[Modificare la risoluzione in PPI di un'immagine mediante le funzioni esterne del API di ImageMagick]]&lt;br /&gt;
* [[Ridimensionare un'immagine mediante le funzioni esterne del API di ImageMagick]]&lt;br /&gt;
* [[Ruotare un'immagine mediante le funzioni esterne del API di ImageMagick]]&lt;br /&gt;
* [[Sfumare radialmente un'immagine mediante le funzioni esterne del API di ImageMagick]]&lt;br /&gt;
* [[Spostare il contenuto all'interno di un'immagine mediante le funzioni esterne del API di ImageMagick]]&lt;br /&gt;
&lt;br /&gt;
=== Gestione delle immagini e dei file di tipo GIF ===&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file GIF in un file di formato OGV, Matroska e MP4 mediante il Componente gb.media]]&lt;br /&gt;
* [[Convertire un file immagine in un file immagine di tipo GIF con le funzioni esterne del API di LibFreeImage]]&lt;br /&gt;
* [[Creare file GIF con le funzioni esterne del API di Libplot]]&lt;br /&gt;
* [[Creare una GIF animata con le funzioni esterne del API di Libplot]]&lt;br /&gt;
* [[Creare un file immagine GIF con sfondo colorato mediante le funzioni del API di GIFLIB]]&lt;br /&gt;
* [[Creare un file immagine trasparente di tipo GIF con le funzioni del API di GIFLIB]]&lt;br /&gt;
* [[Disegnare e salvare un'immagine di tipo GIF con le funzioni del API di GifLib]]&lt;br /&gt;
* [[Estrarre i fotogrammi che compongono un file immagine di tipo GIF animata]]&lt;br /&gt;
* [[Estrarre informazioni da una GIF animata relative al tempo di esecuzione dei fotogrammi]]&lt;br /&gt;
* [[Modificare il colore di sfondo di un'immagine GIF con le funzioni del API di GifLib]]&lt;br /&gt;
* [[Ottenere alcune informazioni su file immagine GIF con le funzioni del API di GifLib]]&lt;br /&gt;
* [[Utilizzare una GIF animata]]&lt;br /&gt;
&lt;br /&gt;
=== Gestione delle immagini e dei file di tipo SVG ===&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file immagine SVG in un file immagine di altro formato con le funzioni esterne delle librerie librsvg e libgdk_pixbuf]]&lt;br /&gt;
* [[Convertire un file PNG in SVG con le risorse del Componente gb.cairo]]&lt;br /&gt;
* [[Creare file SVG con le risorse del Componente gb.cairo]]&lt;br /&gt;
* [[Creare file SVG con le funzioni esterne del API di Cairo]]&lt;br /&gt;
* [[Gestire un file immagine di formato SVG con la Classe SvgImage]]&lt;br /&gt;
* [[Mostrare in un Form un'immagine SVG]]&lt;br /&gt;
* [[Ottenere un file immagine PNG da un'immagine di formato SVG]]&lt;br /&gt;
&lt;br /&gt;
=== Struttura di file immagine particolari ===&lt;br /&gt;
&lt;br /&gt;
* [[Struttura del formato BMP]]&lt;br /&gt;
* [[Struttura del formato GIF]]&lt;br /&gt;
* [[Struttura del formato PNG]]&lt;br /&gt;
* [[Struttura del formato TIFF]]&lt;br /&gt;
* [[Struttura del formato XBM]]&lt;br /&gt;
* [[Struttura del formato XPM]]&lt;br /&gt;
* [[Struttura e gestione del file di tipo PNM]]&lt;br /&gt;
&lt;br /&gt;
== Grafici ==&lt;br /&gt;
&lt;br /&gt;
* [[Creare un grafico con il componente gb.chart]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un grafico per la console/Terminale]]&lt;br /&gt;
&lt;br /&gt;
== GridView ==&lt;br /&gt;
&lt;br /&gt;
* [[Adattare automaticamente la dimensione del font del testo presente nelle celle di una GridView al loro ridimensionarsi]]&lt;br /&gt;
&lt;br /&gt;
* [[Adattare automaticamente l'altezza e la larghezza di una cella di una GridView al testo contenuto]]&lt;br /&gt;
&lt;br /&gt;
* [[Adattare automaticamente l'altezza e la larghezza di una cella di una GridView all'immagine contenuta]]&lt;br /&gt;
&lt;br /&gt;
* [[Adattare l'altezza e la larghezza della GridView al numero delle righe e delle in essa contenute]]&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere colonne in una GridView da codice]]&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere righe in una GridView da codice mediante un tasto]]&lt;br /&gt;
&lt;br /&gt;
* [[Cambiare il colore di fondo di una riga cliccata in una GridView e far tornare quello di un'altra al colore iniziale]]&lt;br /&gt;
&lt;br /&gt;
* [[Catturare l'immagine di una GridView con il Componente gb.media]]&lt;br /&gt;
&lt;br /&gt;
* [[Centrare il testo nell'header di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Colorare il bordo delle righe di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Colorare il fondo di una cella di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Colorare il fondo di una riga di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Colorare la griglia della GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Effettuare una ricerca nelle celle di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare una riga da una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Far combaciare le immagini poste in due celle adiacenti di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestire testo, colori e immagini nelle celle della GridView con l'Evento _Data()]]&lt;br /&gt;
&lt;br /&gt;
* [[Header di una GridView contenente due o più righe testuali]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare due parole ciascuna all'estremità opposta di una cella di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare le righe, le colonne e l'header di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare font, colore dei caratteri e colore di sfondo diversi per ogni cella di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare lo spessore del bordo delle righe e delle singole celle di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare la cella della GridView nella quale si è cliccato]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare con quale tasto del mouse si è cliccato in una cella della GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un oggetto in una cella di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un ulteriore testo in una GridView sempre nell'ultima riga]] &lt;br /&gt;
&lt;br /&gt;
* [[Inserire un'immagine adattandola alle dimensioni della cella di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare il testo contenuto in una cella di una GridVew al semplice passare del puntatore del mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un Balloon in una GridView in corrispondenza della cella nella quale si è cliccato]]&lt;br /&gt;
&lt;br /&gt;
* [[Nascondere le linee della griglia di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Nascondere tutte le celle di una riga di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Nascondere una Colonna di una GridView]] &lt;br /&gt;
&lt;br /&gt;
* [[Ordinare i valori all'interno di una colonna di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Ordinare in una GridView i valori di più righe in base ad una colonna]]&lt;br /&gt;
&lt;br /&gt;
* [[Ordinare manualmente i valori all'interno di una colonna di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Scambiare il contenuto delle celle di una GridView mediante trascinamento con il mouse ]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere con la tastiera nelle celle di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare il testo da una cella a un'altra di una GridView con il Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare il testo da una cella a un'altra di una GridView senza Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare il testo da una cella di una GridView nella cella di un'altra GridView con il Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare il testo da una cella di una GridView nella cella di un'altra GridView senza Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare su e giù le righe di una GridView con i tasti &amp;quot;up&amp;quot; e &amp;quot;down&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare un'immagine da una cella a un'altra di una GridView con il Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare un'immagine da una cella a un'altra di una GridView senza Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare un'immagine da una PictureBox a una cella di una GridView con il Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare una GridView e il suo contenuto]]&lt;br /&gt;
&lt;br /&gt;
* [[Unire in una GridView le celle in un'unica grande cella]]&lt;br /&gt;
&lt;br /&gt;
== Hard Disk ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere numero seriale, modello ed altre informazioni su hard-disk SATA con la funzione esterna ioctl()]]&lt;br /&gt;
&lt;br /&gt;
== Header file dell'ANSI C e Gambas ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la quantità di memoria occupata dai tipi di dati di C e la loro locazione nei file header]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre il valore di una costante definita in un file d'intestazione in C]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la descrizione del tipo di errore dai file header &amp;quot;errno-base.h&amp;quot; e &amp;quot;errno.h&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== ImageStat ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della classe ImageStat]]&lt;br /&gt;
&lt;br /&gt;
== InputBox ==&lt;br /&gt;
&lt;br /&gt;
* [[Impostare le coordinate ove far aprire la finestra dell'InputBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare l'ID della finestra dell'InputBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Imporre in casi particolari la riapertura dell'InputBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare le dimensioni di un InputBox]]&lt;br /&gt;
&lt;br /&gt;
== Interagire con la tastiera ==&lt;br /&gt;
&lt;br /&gt;
* [[Immissione di dati dalla tastiera durante l'esecuzione di un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire che cliccando su un tasto della tastiera si produca più volte il medesimo effetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire che, mentre si tiene premuto un tasto della tastiera, si produca un effetto cliccando e rilasciando un altro tasto]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare i tasti premuti della tastiera]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare mediante le funzioni del API di SDL2 tutti gli scancode disponibili]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[_KeyPress() - _KeyRelease() - Key]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Sapere via codice se il tasto 'Blocco Maiuscole' è attivo]]&lt;br /&gt;
&lt;br /&gt;
* [[Usare gli Eventi _KeyPress() e _KeyRelease() in un programma con interfaccia a linea di comando]]&lt;br /&gt;
&lt;br /&gt;
== Interfaccia a linea di comando ==&lt;br /&gt;
&lt;br /&gt;
* [[CLI]]&lt;br /&gt;
&lt;br /&gt;
== Interfacciare Gambas con librerie condivise esterne .so ==&lt;br /&gt;
&lt;br /&gt;
===Richiamare funzioni esterne mediante ''EXTERN''===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Extern: richiamare funzioni esterne a Gambas]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Gestione in Gambas delle Strutture esterne===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Gestione delle Strutture esterne]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Gestire con sicurezza le Strutture esterne]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Gestire con un Puntatore le Strutture esterne]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare un valore ad una Struttura di una libreria esterna scrivendo con i Memory Stream nella sua area di memoria]]&lt;br /&gt;
&lt;br /&gt;
* [[Dereferenziare senza Memory-Stream un Puntatore ad una Struttura, passato da una funzione esterna]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare come Struttura in Gambas una Struttura esterna dichiarata, come proprio membro di tipo Puntatore, da una Struttura principale esterna]]&lt;br /&gt;
&lt;br /&gt;
===Richiamare particolari funzioni esterne delle librerie standard in C===&lt;br /&gt;
&lt;br /&gt;
* [[Richiamo ed uso di particolari funzioni esterne delle librerie standard scritte in C]]&lt;br /&gt;
&lt;br /&gt;
===Ulteriori contributi sulla gestione delle librerie condivise .so e delle funzioni esterne===&lt;br /&gt;
&lt;br /&gt;
* [[Avviare con l'appoggio di una libreria esterna un semplice sorgente C senza compilarlo]]&lt;br /&gt;
&lt;br /&gt;
* [[Caricare i dati di un vettore scritto in C in un vettore di un'applicazione Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Come creare una Libreria condivisa (Shared Library) .so]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Come creare una Libreria condivisa .so impostando il suo codice sorgente nell'applicazione Gambas]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Creare una libreria condivisa .so esterna dai file sorgente presenti in una pagina web e senza installarla o caricarla nel sistema]]  &lt;br /&gt;
&lt;br /&gt;
* [[Emulare in Gambas la funzione fwrite() di C]]&lt;br /&gt;
&lt;br /&gt;
* [[Emulare in Gambas la funzione memcpy() di C]]&lt;br /&gt;
&lt;br /&gt;
* [[Emulare in Gambas le macro _IOC, _IOR, _IOW e _IOWR usate con la funzione ioctl()]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestire una libreria esterna che ritorna una Linked List]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire nella libreria condivisa esterna .so anche codice Assembly]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'indirizzo e il valore di una Costante e di una variabile globale situate in una libreria condivisa]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare a una funzione esterna un Puntatore che successivamente deve essere passato anche ad altre funzioni esterne]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare un'area riservata di memoria ad una funzione esterna]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare con l'appoggio di una libreria esterna una funzione presente in un sorgente C]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare funzioni esterne di librerie scritte in C++]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivendo particolari librerie esterne in C]]&lt;br /&gt;
&lt;br /&gt;
* [[Un contributo sulle funzioni esterne in Gambas a cura di Doriano B.]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare quali dati Gambas passa ad una funzione esterna]]&lt;br /&gt;
&lt;br /&gt;
===Altre modalità di chiamata delle funzioni esterne===&lt;br /&gt;
&lt;br /&gt;
* [[Caricamento dinamico di librerie .so con il subsistema 'loadso' di SDL2]]&lt;br /&gt;
* [[Chiamare funzioni esterne mediante le risorse della libreria dlfcn.h]]&lt;br /&gt;
* [[Utilizzare il metodo 'System.GetExternSymbol()' per richiamare funzioni esterne di librerie condivise]]&lt;br /&gt;
&lt;br /&gt;
== Librerie .gambas ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Creare, importare ed utilizzare librerie .gambas]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Librerie della Comunità Gambas-it.org ====&lt;br /&gt;
&lt;br /&gt;
* [[RTFLib.gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[strLib.gambas]]&lt;br /&gt;
&lt;br /&gt;
== ListBox ==&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare ad un oggetto di testo il contenuto di un elemento di una ListBox cliccandovi sopra]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare colori allo sfondo ed al testo di una riga selezionata di una ListBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare uno o più item di una ListBox selezionati con il mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Far coincidere da codice l'altezza di una ListBox con la somma delle altezze dei suoi Item]]&lt;br /&gt;
&lt;br /&gt;
* [[Far mostrare in una ListBox le ultime voci ogni volta che il loro numero aumenta]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare il numero d'indice della riga di una ListBox sulla quale si è cliccato con il mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un array di dati di tipo stringa in una ListBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un oggetto in un item di una ListBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Interscambiare la posizione del contenuto degli item di una ListBox mediante trascinamento con il mouse ]]&lt;br /&gt;
&lt;br /&gt;
* [[ListBox con due o più righe per item]]&lt;br /&gt;
&lt;br /&gt;
* [[Riordinare manualmente con il mouse gli elementi di una ListBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Se l'Evento MouseDown() della ListBox non funziona]]&lt;br /&gt;
&lt;br /&gt;
==Liste Lineari==&lt;br /&gt;
&lt;br /&gt;
* [[Emulare in Gambas una Lista Lineare del linguaggio C]]&lt;br /&gt;
&lt;br /&gt;
== ListView ==&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere una nuova voce nella prima posizione di una Listview]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare colori allo sfondo ed al testo di una riga selezionata di una ListView]]&lt;br /&gt;
&lt;br /&gt;
* [[Evitare che appaia il popmenu quando si clicca al di fuori di un elemento di una ListView]]&lt;br /&gt;
&lt;br /&gt;
== Logging ==&lt;br /&gt;
&lt;br /&gt;
* [[Attivare e registrare informazioni un singolo file di log]]&lt;br /&gt;
&lt;br /&gt;
== Map - MapView - Coordinate geografiche - Georeferenziazione ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Istruzioni essenziali per mostrare una mappa in una MapView]]&amp;lt;/b&amp;gt;&lt;br /&gt;
* [[Arduino: misurare il campo magnetico terrestre con i magnetometri]]&lt;br /&gt;
* [[Calcolare il rilevamento (bearing) in gradi]]&lt;br /&gt;
* [[Calcolare la distanza tra due punti geografici, dei quali si conoscono latitudine e longitudine]]&lt;br /&gt;
* [[Calcolare l'area e il perimetro di poligoni disegnati sulla mappa con le risorse di gb.map]]&lt;br /&gt;
* [[Conoscere la versione più recente di Google Maps satellite]]&lt;br /&gt;
* [[Conoscere le risorse formali contenute da un oggetto della Classe _ShapeItem]]&lt;br /&gt;
* [[Convertire una coordinata dal formato gradi primi secondi del sistema EPSG:4326 WGS 84 al suo formato decimale e viceversa]]&lt;br /&gt;
* [[Convertire una coordinata geografica dal sistema EPSG:4326 WGS 84 al sistema EPSG:3857 e viceversa]]&lt;br /&gt;
* [[Convertire una coordinata geografica dal sistema UTM al sistema EPSG:4326 WGS 84 e viceversa]]&lt;br /&gt;
* [[Creare da una carta topografica i file delle tessere di una mappa e utilizzarli con MapView]]&lt;br /&gt;
* [[Disegnare sulla MapView dei cerchi concentrici al punto ove si è cliccato con il puntatore del mouse]]&lt;br /&gt;
* [[Disegnare un cerchio o un punto su una MapView]]&lt;br /&gt;
* [[Disegnare un poligono su una MapView usando l'Oggetto &amp;quot;Figlio&amp;quot; DrawingArea]]&lt;br /&gt;
* [[Disegnare un mirino come cursore del mouse su una MapView]]&lt;br /&gt;
* [[Disegnare un percorso su una MapView e calcolarne la lunghezza]]&lt;br /&gt;
* [[Elenco di raster Tile Server online con rispettive URL]]&lt;br /&gt;
* [[Eliminare un marcatore grafico da una mappa su una MapView]]&lt;br /&gt;
* [[Eseguire un file audio o Midi quando si clicca sulla MapView]]&lt;br /&gt;
* [[Estrarre le coordinate geografiche dai TAG GPS eventualmente presenti in un file immagine JPEG]]&lt;br /&gt;
* [[Estrarre le coordinate geografiche presenti in un file gpx]]&lt;br /&gt;
* [[Georeferenziare una mappa con QGIS]]&lt;br /&gt;
* [[Individuare i valori x e y della tessera sulla quale si è cliccato]]&lt;br /&gt;
* [[Individuare il punto di intersezione degli angoli di direzione di due elementi geografici rispetto all'osservatore]]&lt;br /&gt;
* [[Individuare su una MapView un punto geografico avendo un punto iniziale, l'angolo di declinazione e la distanza]]&lt;br /&gt;
* [[Inserire del testo su una MapView]]&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Inserire un marcatore di coordinate su una MapView]]&amp;lt;/b&amp;gt;&lt;br /&gt;
* [[Inserire un Oggetto grafico su una MapView]]&lt;br /&gt;
* [[Inserire un'immagine come marcatore di coordinate su una MapView]]&lt;br /&gt;
* [[Mostrare la mappa topografica IGM 1 25000 fornita dal Geoportale Nazionale del Ministero dell'Ambiente]]&lt;br /&gt;
* [[Mostrare nella finestra guida dei simboli, dichiarati nel codice, la mappa topografica IGM 1_25000 fornita dall'ISPRA  ]]&lt;br /&gt;
* [[Mostrare sulla MapView disegni, immagini e Controlli senza l'uso del Metodo Map.AddShape()]]&lt;br /&gt;
* [[Ottenere la distanza piana di due punti su una carta topografica]]&lt;br /&gt;
* [[Ottenere la Latitudine e la Longitudine del punto sulla mappa cliccato con il puntatore del mouse]]&lt;br /&gt;
* [[Ottenere la Longitudine e la Latitudine dell'angolo superiore sinistro dell'immagine di una mappa da un file GEOTIFF con le sole risorse di Gambas]]&lt;br /&gt;
* [[Ottenere le coordinate geografiche dei punti sulla mappa sui quali si passa con il puntatore del mouse]]&lt;br /&gt;
* [[Ottenere informazioni da un file GEOTIFF con l'API di libgeotiff]]&lt;br /&gt;
* [[Ottenere un file pdf dalla mappa mostrata da una MapView]]&lt;br /&gt;
* [[Ottenere un file png dalla mappa mostrata da una MapView]]&lt;br /&gt;
* [[Ottenere una Image dalla mappa mostrata da una MapView]]&lt;br /&gt;
* [[Registrare quanto mostrato da una MapView e farne un video]]&lt;br /&gt;
* [[Rendere trasparente la mappa mostrata da una MapView]]&lt;br /&gt;
* [[Ruotare la mappa]]&lt;br /&gt;
* [[Sapere sulla MapView se il puntatore del mouse è all'interno di una determinata area della mappa]]&lt;br /&gt;
* [[Scalare la dimensione della mappa in una Mapview]]&lt;br /&gt;
* [[Usare il Metodo '.AddPolygon()' di gb.map]]&lt;br /&gt;
* [[Usare il Metodo '.AddPolyLine()' di gb.map]]&lt;br /&gt;
* [[Utilizzando un Oggetto di visualizzazione diverso da una MapView consentire uno spostamento morbido e uniforme della mappa]]&lt;br /&gt;
* [[Utilizzare il Geoportale del Servizio Geologico d'Italia dell'I.S.P.R.A.]]&lt;br /&gt;
* [[Utilizzare il Geoportale Nazionale del Ministero dell'Ambiente]]&lt;br /&gt;
* [[Utilizzare in una MapView mappe fornite secondo lo standard WMS (Web Map Service)]]&lt;br /&gt;
* [[Utilizzare le tessere di una mappa senza connessione a internet]]&lt;br /&gt;
* [[Utilizzare una DrawingArea o una ImageView con gb.map anziché una MapView]]&lt;br /&gt;
* [[Utilizzare una MediaView con gb.map anziché una MapView]]&lt;br /&gt;
* [[Verificare le tessere dei livelli delle Map tiles]]&lt;br /&gt;
&lt;br /&gt;
== Menu ==&lt;br /&gt;
&lt;br /&gt;
* [[Colorare la barra dei Menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare Menu da codice e non con l'Editor-Menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare Menu popup da codice]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare Menu popup utilizzando l'Editor di menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Evitare che appaia il popmenu quando si clicca al di fuori di un elemento di una ListView]]&lt;br /&gt;
&lt;br /&gt;
* [[Far apparire un Balloon, quando si passa con il mouse su un menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Fare riferimento alle voci del Menu da altri Form]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire che appaia la finestra del menu predefinito cliccando con il tasto destro del mouse su un Controllo di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire una linea separatrice in un Menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare selezione di sotto-voci di un Menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Modifiche delle proprietà dei Menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare più righe di testo nella voce di un Menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Rilevare quale sotto-voce di menu è stata cliccata]]&lt;br /&gt;
&lt;br /&gt;
== MenuButton ==&lt;br /&gt;
&lt;br /&gt;
* [[Creare Menu a finestra con MenuButton]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare via Editor dalla IDE un Menu con sotto-menu che funzioni come popup in un MenuButton]]&lt;br /&gt;
&lt;br /&gt;
== Message ==&lt;br /&gt;
&lt;br /&gt;
* [[Impostare le dimensioni del Message]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare l'ID della finestra di un Message]]&lt;br /&gt;
&lt;br /&gt;
* [[Interruzione di riga con ritorno a capo in un Message]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un MessageBox in un programma con interfaccia a 'riga di comando']]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare la finestra di un Message]]&lt;br /&gt;
&lt;br /&gt;
== Miscellanea ==&lt;br /&gt;
&lt;br /&gt;
* [[Controllare la batteria del proprio portatile con le funzioni esterne di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire i gradi della temperatura da un'unità di scala di misura in un'altra]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare il QR Code con le risorse della libreria esterna libqrencode]]&lt;br /&gt;
&lt;br /&gt;
* [[Effettuare il PING]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare e usare in Gambas i simboli musicali forniti dal sistema UNICODE]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni sul tempo meteorologico di una città mediante il sito web wttr.in]]&lt;br /&gt;
&lt;br /&gt;
== Monitor - Schermo ==&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni relative al display video mediante le funzioni del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni relative allo schermo mediante la funzione ioctl()]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni relative allo schermo mediante le funzioni del API di CBX]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni sugli schermi disponibili mediante le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere le dimensioni del monitor e la sua posizione sullo schermo con le funzioni esterne del API di Allegro 5]]&lt;br /&gt;
&lt;br /&gt;
== Mouse ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le coordinate correnti del mouse sul Form senza tenere premuto un tasto del mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le coordinate correnti del mouse sullo schermo]]&lt;br /&gt;
&lt;br /&gt;
* [[Evento rotellina del mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Far assumere al puntatore grafico del mouse l'aspetto dell'attesa]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare i dati del mouse dal file-device hidraw]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare i dati del mouse dai file-device mouse, mice, event]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare il tasto premuto del mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare l'aspetto del puntatore grafico del mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Reiterare una procedura quando il tasto del mouse viene tenuto premuto su un Controllo]]&lt;br /&gt;
&lt;br /&gt;
* [[Segnalatore del puntatore del mouse sullo schermo usando le funzioni esterne del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Simulare il tasto premuto del mouse usando le funzioni esterne del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Sollevare l'Evento _MouseMove() di un Oggetto grafico spostando su di esso il mouse senza tenere premuto un suo tasto]] &lt;br /&gt;
&lt;br /&gt;
* [[Spostare da codice il mouse sullo schermo]]&lt;br /&gt;
&lt;br /&gt;
== MovieBox ==&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un'immagine animata in una MovieBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un'immagine animata con il Drop del suo file in una MovieBox]]&lt;br /&gt;
&lt;br /&gt;
== Oggetti ==&lt;br /&gt;
&lt;br /&gt;
=== Oggetti in generale ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Assegnare da codice più oggetti ad un Gruppo di eventi]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere un Evento o anche integrare quelli già posseduti da un Oggetto &amp;quot;Figlio&amp;quot; di un Oggetto più complesso]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare un valore a una proprietà di un Oggetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il tipo di Oggetto a cui appartiene un identificatore]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Creare array di oggetti]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Distruggere gli Oggetti che non posseggono il Metodo .Delete()]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire che un oggetto sollevi qualsiasi evento]]&lt;br /&gt;
&lt;br /&gt;
* [[Istanziare un oggetto mediante la Classe &amp;quot;Object&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere nell'area di memoria occupata da un oggetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Metodi _New() e _Free() degli oggetti]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il valore di una proprietà ad una parte di più oggetti conosciuti del medesimo tipo]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare e gestire più oggetti assegnati a variabili con medesimo identificatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare un Metodo di un oggetto con la Classe Object]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere il nome del Componente al quale appartiene la Classe di un oggetto utilizzato]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere la quantità di memoria occupata da un oggetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere l'oggetto che ha scatenato l'evento]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quante istanze di una Classe sono state create]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un oggetto è un'istanza di una determinata Classe]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare la proprietà .Tag come un array di tipo Variant]]&lt;br /&gt;
&lt;br /&gt;
=== Oggetti grafici, Controlli e Widget===&lt;br /&gt;
&lt;br /&gt;
* [[Adattare la dimensione del font in un Oggetto grafico se il testo occupa una lunghezza o un'altezza superiore a quella dell'Oggetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Adattare la dimensione di un Oggetto grafico al testo contenuto]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare un Gruppo di Eventi a più Controlli modificando manualmente il file sorgente del programma Gambas]]  &lt;br /&gt;
&lt;br /&gt;
* [[Centrare un oggetto grafico all'interno di un Contenitore]]&lt;br /&gt;
&lt;br /&gt;
* [[Cliccare in un oggetto grafico qualsiasi o in una immagine suddivisi in rettangoli]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere gli oggetti grafici 'figli' costituenti l'oggetto 'padre']]&lt;br /&gt;
&lt;br /&gt;
* [[Copiare uno o più caratteri di un testo da una Label o da una TextLabel e incollarli in un altro Controllo di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare e dimensionare un oggetto con lo spostamento del mouse sul form]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file immagine dagli oggetti presenti in un Contenitore]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare widget di Controlli grafici]]&lt;br /&gt;
&lt;br /&gt;
* [[Differenza fra la proprietà &amp;quot;.Children&amp;quot; e la proprietà &amp;quot;.Controls&amp;quot; di un oggetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Distruggere i Controlli grafici posti in un Contenitore]]&lt;br /&gt;
&lt;br /&gt;
* [[Far mostrare il simbolo &amp;quot;&amp;amp;&amp;quot; su un Controllo grafico fornito della Proprietà .Text]]&lt;br /&gt;
&lt;br /&gt;
* [[Fissare la distanza di un Controllo grafico in modo costante rispetto ai bordi del Form durante il ridimensionamento di questo]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare il numero d'indice di Controlli appartenenti al medesimo gruppo di Eventi senza servirsi di sue specifiche proprietà]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare una Classe di Oggetti grafici fra molti posti in un Contenitore]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare uno specifico Controllo con Last in base alla sua Proprietà &amp;quot;.Id&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare uno specifico Controllo in base alla sua Proprietà &amp;quot;.Name&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Metodo di pseudo indirizzamento ad Oggetti grafici]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare la dimensione di un Oggetto grafico con il mouse impostando i punti di contatto intorno al suo perimetro]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare la dimensione di un Oggetto grafico ruotando la rotellina del mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare in un Oggetto di testo il contenuto di un file trascinandolo e rilasciandolo senza l'uso delle specifiche risorse di Gambas del Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Oggetti grafici e di testo che supportano il codice HTML]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Oggetti scorrevoli]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere risultati diversi in base alla parte del Controllo premuta dal mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Porre sotto osservazione un Oggetto grafico]]&lt;br /&gt;
&lt;br /&gt;
* [[Posizione equidistante di un Oggetto rispetto al margine destro del suo Contenitore e ad un punto alla sua sinistra]]&lt;br /&gt;
&lt;br /&gt;
* [[Raggiungere e gestire gli oggetti di FMain da una classe secondaria]]&lt;br /&gt;
&lt;br /&gt;
* [[Riposizionare in modo circolare più oggetti posti in pila]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un oggetto, spostato sul Form con il mouse, è al di sopra di un altro oggetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Selezionare con lo spostamento del mouse un'area di un oggetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Sollevare l'Evento _MouseMove() di un Oggetto grafico spostando su di esso il mouse senza tenere premuto un suo tasto]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Spostare Oggetti grafici con il mouse all'interno di un contenitore senza Drag &amp;amp; Drop]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Spostare o ridimensionare un oggetto a seconda del punto ove si clicca]]&lt;br /&gt;
&lt;br /&gt;
* [[Uso di Unicode con gli oggetti di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare anche in altre subroutine un Oggetto grafico dichiarato localmente]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare l'esistenza di un Controllo in un Contenitore]]&lt;br /&gt;
&lt;br /&gt;
== ODBC ==&lt;br /&gt;
&lt;br /&gt;
* [[ODBC]]&lt;br /&gt;
&lt;br /&gt;
== OpenGL ==&lt;br /&gt;
&lt;br /&gt;
* [[Gambas e Opengl]]&lt;br /&gt;
&lt;br /&gt;
* [[OpenGL: lezioni di Grafica Interattiva]]&lt;br /&gt;
&lt;br /&gt;
* [[Textures]]&lt;br /&gt;
&lt;br /&gt;
== Password ==&lt;br /&gt;
&lt;br /&gt;
* [[Inserire le password per lanciare comandi]]&lt;br /&gt;
&lt;br /&gt;
== Pdfwriter ==&lt;br /&gt;
&lt;br /&gt;
* [[Guida ai report]]&lt;br /&gt;
&lt;br /&gt;
== Porte ==&lt;br /&gt;
&lt;br /&gt;
* [[Accesso alle Porte Seriali]]&lt;br /&gt;
&lt;br /&gt;
* [[Approfondimento sull'accesso alle porte USB]]&lt;br /&gt;
&lt;br /&gt;
* [[Uso delle Porte Parallele]]&lt;br /&gt;
&lt;br /&gt;
== Posta elettronica ==&lt;br /&gt;
&lt;br /&gt;
* [[Invio della posta elettronica]]&lt;br /&gt;
&lt;br /&gt;
* [[Invio di posta elettronica con SMTP e SSL mediante le funzioni esterne del API di Libcurl]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere la posta elettronica con IMAP e SSL mediante le funzioni esterne del API di Libcurl]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere la posta elettronica con POP3 e SSL mediante le funzioni esterne del API di Libcurl]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere la posta elettronica mediante le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
== Processi ==&lt;br /&gt;
&lt;br /&gt;
=== Gestione dei Processi in genere ===&lt;br /&gt;
&lt;br /&gt;
* [[Cambiare in esecuzione la directory di lavoro di un processo Gambas con la funzione esterna chdir()]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in tempo reale il numero dell'ultimo processo appena aperto]]&lt;br /&gt;
&lt;br /&gt;
=== Gestione dei Processi mediante &amp;quot;Process&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
* [[Apertura e chiusura di un processo mediante Process]]&lt;br /&gt;
&lt;br /&gt;
* [[Attendere e verificare la chiusura di un programma gestito da Process]]&lt;br /&gt;
&lt;br /&gt;
* [[Lettura dati da un Processo e scrittura dati in un Processo mediante Process]]&lt;br /&gt;
&lt;br /&gt;
* [[Terminare automaticamente un Processo dopo un periodo di tempo dalla sua apertura con Process]]&lt;br /&gt;
&lt;br /&gt;
== Programmi Gambas e programmi esterni ==&lt;br /&gt;
&lt;br /&gt;
* [[Agire sulla finestra di un qualunque programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Attivare la finestra di un programma con le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Avviare un'applicazione Gambas in un determinato desktop]]&lt;br /&gt;
&lt;br /&gt;
* [[Avviare un progetto Gambas dalla sua cartella]]&lt;br /&gt;
&lt;br /&gt;
* [[Catturare con il Componente gb.media quanto mostrato dalla finestra di un programma o sulla Scrivania e farne un file video]]&lt;br /&gt;
&lt;br /&gt;
* [[Catturare immagini di una finestra di un programma e farne un file audio-video OGG-Theora con le funzioni esterne del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Catturare l'immagine della finestra di un programma mediante le risorse della Classe DesktopWindow e le funzioni esterne del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Chiudere la finestra di un programma Gambas premendo i tasti Ctrl e 'c' della tastiera]]&lt;br /&gt;
&lt;br /&gt;
* [[Chiudere le finestre secondarie di un programma Gambas lasciando aperto il solo Form principale]]&lt;br /&gt;
&lt;br /&gt;
* [[Chiudere programmi esterni]]&lt;br /&gt;
&lt;br /&gt;
* [[Chiudere un programma Gambas se si clicca all'esterno della sua finestra principale]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le risorse del API di Glib il percorso assoluto di un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere gli attributi della finestra di un programma con le funzioni esterne del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la directory in cui sono memorizzati i file temporanei del processo corrente di un programma Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Contare le righe di codice di un progetto Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Copiare in una cartella un programma.gambas contenuto in un altro programma.gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare una cartella delle preferenze di un programma Gambas con le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Elencare il PID ed il corrispondente nome di ciascun processo attivo]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre l'icona di un programma associato ad un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire l'avvio di un programma.gambas già avviato]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire la chiusura di un programma Gambas se si clicca sul tastino con la X in alto a destra della sua finestra principale]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare con certezza un file presente nella cartella di un progetto Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare ed estrarre il PID di un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare ed estrarre l'ID della finestra di un programma ]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare ID e nome delle finestre attive con le risorse del Componente gb.desktop]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare ID e nome delle finestre attive, nonché il PID dei loro programmi con le risorse del Componente gb.desktop.x11]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare il nome della finestra di un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare il nome di un programma Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare il percorso ove risiede la cartella del progetto Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare l'ID ed il nome della finestra attiva mediante le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare l'ID ed il nome di una finestra nonché il PID del programma mediante le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Inglobare in un programma Gambas la finestra di un altro programma Gambas mediante le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Lanciare da un'applicazione Gambas il Terminale e far partire da esso un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Lanciare un programma esterno conoscendo soltanto il nome del suo file eseguibile presente nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Lanciare un programma Gambas da linea di comando]]&lt;br /&gt;
&lt;br /&gt;
* [[Lanciare un programma senza Shell, ma da una finestra di un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare le dimensioni della finestra di un programma con le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Muovere e modificare le dimensioni della finestra di un programma con le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Muovere la finestra di un programma con le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il percorso assoluto della directory dei dati dell'applicazione Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni sulle applicazioni client in esecuzione su un display con le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la directory di lavoro corrente dell'applicazione Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la schermata (screenshot) della finestra di un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare dati in runtime ad un programma 'a linea di comando']]&lt;br /&gt;
&lt;br /&gt;
* [[Porre la finestra di un programma esterno in primo piano]]&lt;br /&gt;
&lt;br /&gt;
* [[Salvare un file nella Directory di Lavoro di un programma Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quando il puntatore del mouse si trova sulla finestra di un programma esterno]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanto tempo è passato dall'inizio del programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un programma esterno è già in funzione]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se il programma Gambas sta funzionando come progetto dall'IDE oppure come eseguibile .gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare la finestra di un programma da un desktop ad un altro del video]]&lt;br /&gt;
&lt;br /&gt;
* [[Uscire da un'applicazione Gambas premendo un tasto mediante le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
===Trasmissione di dati fra due programmi Gambas o fra un programma esterno ed un programma Gambas===&lt;br /&gt;
&lt;br /&gt;
* [[Indirizzare dati da un programma ad un altro e ad un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare i dati inviati allo standard output da un programma C]]&lt;br /&gt;
&lt;br /&gt;
* [[Inviare dati da un programma Gambas ad un altro mediante le risorse del Componente DBus]]&lt;br /&gt;
&lt;br /&gt;
* [[Inviare dati stringa da un programma Gambas a un programma esterno avente un'area di testo o a un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Ricevere dati da un programma esterno mediante un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Ricevere un 'segnale' da un programma C]]&lt;br /&gt;
&lt;br /&gt;
* [[Trasmissione di dati fra due o più programmi Gambas mediante la Classe Socket del Componente gb.net]]&lt;br /&gt;
&lt;br /&gt;
* [[Trasmissione di dati fra due o più programmi Gambas mediante la Classe UdpSocket del Componente gb.net]]&lt;br /&gt;
&lt;br /&gt;
* [[Usare ALSA per far comunicare due o più programmi Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Usare due programmi Gambas contemporaneamente mediante Process, lo standard Output e lo standard Input]]&lt;br /&gt;
&lt;br /&gt;
* [[Usare uno pseudoterminale per far comunicare bidirezionalmente due programmi]]&lt;br /&gt;
&lt;br /&gt;
== ProgressBar e simulazioni di ProgressBar==&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere una simil-ProgressBar da una LCDLabel]]&lt;br /&gt;
&lt;br /&gt;
* [[Pseudo-ProgressBar in un'applicazione 'a riga di comando']]&lt;br /&gt;
&lt;br /&gt;
* [[Simulare una ProgressBar mediante una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare la barra indicatrice di una ProgressBar con il mouse]]&lt;br /&gt;
&lt;br /&gt;
== Puntatori - Memory Stream ==&lt;br /&gt;
&lt;br /&gt;
====Puntatori====&lt;br /&gt;
* [[Assegnare ad un Puntatore la rappresentazione numerica di un indirizzo di memoria contenuto da un altro Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare ad un Puntatore un'area di memoria riservata con Alloc()]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare un Puntatore ad una Struttura per dereferenziarlo]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare un vettore ad una variabile di tipo Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Cambiare la dimensione di un'area di memoria mediante Realloc()]]&lt;br /&gt;
&lt;br /&gt;
* [[Deallocare un'area di memoria precedentemente allocata con alloc() e assicurarsi che il Puntatore non punti a un indirizzo rilevante di memoria]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Dereferenziare un Puntatore con le funzioni specifiche di dereferenziazione e con i Memory Stream]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Dereferenziare un Puntatore con un vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Dereferenziare un Puntatore di Puntatore con le funzioni specifiche di dereferenziazione e con i Memory Stream]]&lt;br /&gt;
&lt;br /&gt;
* [[Differenza fra Assegnazione a un Puntatore di un indirizzo di memoria e Dereferenziazione di un Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestire un Puntatore con le funzioni esterne del API di Glib]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il valore di una variabile Integer puntata da un Puntatore e sua dereferenziazione con le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Opportunità di azzerare tutti i byte di un'area di memoria riservata seppur senza deallocarla]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il puntatore a una variabile vettoriale]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il puntatore di una variabile di tipo Image]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il puntatore di una variabile di tipo Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il valore numerico dell'indirizzo di memoria contenuto dal Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Passaggio di un argomento per 'indirizzo' ad una Funzione]]&lt;br /&gt;
&lt;br /&gt;
* [[Porre a zero i valori contenuti dall'area di memoria puntata da un Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere i valori contenuti da un file in un'area riservata di memoria]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Scrivere nell'area di memoria puntata da un Puntatore]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Vedere e modificare con i Puntatori un byte costituente il valore di una variabile]]&lt;br /&gt;
&lt;br /&gt;
==== Memory Stream ====&lt;br /&gt;
&lt;br /&gt;
* [[Definizione ed uso dei Memory Stream]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare con i Memory Stream un'area di memoria simile ad una Struttura avente come membro un'altra Struttura]]&lt;br /&gt;
&lt;br /&gt;
== RadioButton==&lt;br /&gt;
&lt;br /&gt;
* [[Adattare la lunghezza del RadioButton al testo contenuto]]&lt;br /&gt;
&lt;br /&gt;
== Report (gb.report2) ==&lt;br /&gt;
&lt;br /&gt;
* [[Creare report con il componente gb.report2]]&lt;br /&gt;
&lt;br /&gt;
== Scanner ==&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire una scansione con lo Scanner mediante le funzioni esterne di libsane]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire una scansione e riconoscimento caratteri (OCR) con l'API di Sane, Tesseract e Leptonica]]&lt;br /&gt;
&lt;br /&gt;
* [[Usare le risorse del Componente gb.scanner di Gambas]]&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
&lt;br /&gt;
* [[Scripting con Gambas]]&lt;br /&gt;
&lt;br /&gt;
==ScrollArea==&lt;br /&gt;
&lt;br /&gt;
* [[Usare la ScrollArea]]&lt;br /&gt;
&lt;br /&gt;
==ScrollView==&lt;br /&gt;
&lt;br /&gt;
* [[Usare la ScrollView]]&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della classe Settings]]&lt;br /&gt;
&lt;br /&gt;
== Sistema operativo - Dispositivi - Interfacce - Reti ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con la funzione esterna getrlimit() i valori limite che il kernel impone per alcune risorse]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere  con le risorse del API di Glib la directory unica per l'utente corrente sul sistema locale]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le sole risorse di Gambas i dispositivi esterni SCSI o SATA montati]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere i dispositivi usb di memorizzazione di massa con le funzioni esterne di libudev]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il nome delle interfacce di rete presenti nel proprio sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il file-devide pts associato ad un Terminale o console con la funzione esterna ttyname()]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il fuso orario (TimeZone) impostato nel proprio sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il nome del file-device del Terminale di controllo del processo con la funzione esterna ctermid()]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere l'hostname impostato nel proprio sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la dimensione del Dispositivo a blocchi]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la distribuzione Linux montata]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la valuta monetaria locale utilizzata dal sistema operativo]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le impostazioni del separatore decimale nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le impostazioni per il separatore delle migliaia]]&lt;br /&gt;
&lt;br /&gt;
* [[Identificare univocamente un computer]]&lt;br /&gt;
&lt;br /&gt;
* [[La cartella ove sono depositate le icone fornite dal sistema operativo Linux]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere il file fstab per avere informazioni sui vari filesystem montati]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere gli indirizzi IP di ogni interfaccia presente sulla medesima macchina]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere i valori di baud rates del flusso in entrata ed in uscita dei file-device terminali]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la distribuzione di Linux montata, il tipo di architettura e la versione del kernel]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il nome dell'host corrispondente ad un indirizzo IP e viceversa]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il solo nome del proprio sistema operativo]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni dal proprio dispositivo wireless con le risorse del API di libiw]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni generali sui dispositivi network mediante le risorse del API di Libnm-glib]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni sulle statistiche di sistema globali con la funzione esterna sysinfo()]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la lista di tutte le variabili d'ambiente nel proprio sistema mediante le risorse del API di GLIB-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la lista di tutti i dispositivi PCI presenti nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere mediante le funzioni esterne del API di Libusb la lista di tutti i dispositivi USB attivi nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere mediante le funzioni esterne del API di Libgusb la lista di tutti i dispositivi USB attivi nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere mediante le funzioni esterne della libreria Libudev un elenco degli oggetti hidraw collegati al sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un Identificativo Univoco Universale - UUID]]&lt;br /&gt;
&lt;br /&gt;
* [[Visualizzare il tempo trascorso dall'ultimo avvio del sistema]]&lt;br /&gt;
&lt;br /&gt;
== Slider ==&lt;br /&gt;
&lt;br /&gt;
* [[Creare uno pseudo-slider]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare uno pseudo-slider con uno o più cursori posti fra un valore minimo e uno massimo variabili]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare il segna-valori lungo lo Slider]]&lt;br /&gt;
&lt;br /&gt;
* [[Variare il valore dello Slider ruotando la rotellina del mouse]]&lt;br /&gt;
&lt;br /&gt;
== SpinBar ==&lt;br /&gt;
* [[Adattare la SpinBar a valori in virgola mobile con più di tre decimali]]&lt;br /&gt;
&lt;br /&gt;
== SpinBox ==&lt;br /&gt;
* [[Variare il valore di uno SpinBox da codice e non con il controllo diretto del mouse]]&lt;br /&gt;
&lt;br /&gt;
== Spinner ==&lt;br /&gt;
* [[Uso dello ''Spinner'']]&lt;br /&gt;
&lt;br /&gt;
==Sqlite==&lt;br /&gt;
* [[Creare un DataBase sqlite3]]&lt;br /&gt;
* [[Utilizzo base di Gambas e Sqlite3]]&lt;br /&gt;
&lt;br /&gt;
== Stampa - Printer==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Stampare in Gambas]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Individuare le stampanti presenti nel proprio sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare il contenuto grafico di una PictureBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare il testo presente in oggetti di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare un Controllo grafico posto sul Form]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare un file con le funzioni del API di cups]]&lt;br /&gt;
&lt;br /&gt;
* [[Verifica ed eliminazione dei processi di stampa mediante le funzioni del API di CUPS]]&lt;br /&gt;
&lt;br /&gt;
== Stringhe, caratteri, testo e file di testo ==&lt;br /&gt;
&lt;br /&gt;
* [[Accedere ai caratteri contenuti da una variabile di tipo stringa come se questa fosse una vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere una riga di caratteri alla fine di un file di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[&amp;quot;Andare a capo&amp;quot; in un oggetto di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Associare una stringa a un identificatore unico numerico mediante le funzioni Quarks del API di libglib-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Cercare la seconda occorrenza di una lettera fra tre o più]]&lt;br /&gt;
&lt;br /&gt;
* [[Cercare una parola in una stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Concatenare due stringhe]]&lt;br /&gt;
&lt;br /&gt;
* [[Confrontare due stringhe]]&lt;br /&gt;
&lt;br /&gt;
* [[Confrontare i caratteri di due stringhe]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le sole risorse di Gambas il numero di occorrenze in una stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il numero di occorrenze in una stringa con la funzione esterna PyUnicode_Count() della libreria libpython3]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il numero e la posizione di tutte le occorrenze di una sottostringa in una stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Conversione di due valori, costituenti un carattere speciale, nella sua rappresentazione grafica]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire due unità numeriche stringa graficamente rappresentanti un valore esadecimale nel corrispondente valore decimale effettivo]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire in stringa senza funzioni il contenuto di una variabile non di tipo Stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire in un tipo di dati numerico un valore letto in formato Stringa da un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un carattere maiuscolo in minuscolo senza la funzione LCase()]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un codice Unicode in carattere UTF-8 con la funzione g_unichar_to_utf8() della libreria libglib-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero di tipo stringa in un valore di tipo Float con la funzione g_strtod() della libreria glib-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero di tipo stringa in un valore di tipo Float con la funzione  PyOS_string_to_double() della libreria libpython3]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero in un carattere ASCII]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un collegamento ipertestuale]]&lt;br /&gt;
&lt;br /&gt;
* [[Filtrare i caratteri invalidi UTF8 ed ASCII da una stringa con le funzioni esterne del API di PulseAudio]]&lt;br /&gt;
&lt;br /&gt;
* [[Funzione simile a String()]]&lt;br /&gt;
&lt;br /&gt;
* [[Funzione simile a String.Len()]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare i valori costituenti i caratteri tipo UTF-8 di lettere localizzate]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare in un testo i caratteri non alfanumerici e la loro posizione]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare in una stringa i caratteri ricorrenti e loro posizioni]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire in una stringa caratteri ASCII non stampabili]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un testo in diagonale in un Controllo grafico]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare in maiuscolo il primo carattere di una stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare un carattere di una stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare del testo al di sopra di una immagine avendo una PictureBox ed un oggetto di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare del testo con caratteri ruotati orizzontalmente e verticalmente]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare il simbolo dell'Euro]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare in una stringa le virgolette]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare con il punto anziché con la virgola un numero in virgola mobile rappresentato in formato stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Non visualizzare i caratteri non-stampabili di una stringa che inizia con caratteri stampabili]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere con l'API di Libglib-2.0 il codice UNICODE di un carattere UTF-8]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere da un testo una parte delimitata da due parole]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere da un valore numerico i caratteri ASCII corrispondenti a ciascun byte componente il numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il valore ASCII di un carattere]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un file RTF da un file UTF8 e viceversa con le funzioni esterne del API di Librtfcomp]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un'unica stringa dalle stringhe contenute dagli elementi di un vettore di tipo Stringa]] &lt;br /&gt;
&lt;br /&gt;
* [[Porre a &amp;quot;Null&amp;quot; tutti gli elementi di un vettore di tipo Stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Rappresentare in formato stringa un numero avente i punti delle migliaia e la virgola dei decimali]]&lt;br /&gt;
&lt;br /&gt;
* [[Ribaltare i caratteri e invertire il testo in un Controllo grafico che supporta il RichText]]&lt;br /&gt;
&lt;br /&gt;
* [[Rimuovere da una stringa tutti i caratteri non-stampabili eventualmente presenti]]&lt;br /&gt;
&lt;br /&gt;
* [[Rimuovere da una stringa uno o più caratteri del codice ASCII esteso]]&lt;br /&gt;
&lt;br /&gt;
* [[Rimuovere tot caratteri da una stringa mediante le funzioni esterne del API di Libglib-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Riposizionare in modo casuale i caratteri di una stringa con la funzione esterna strfry()]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere con l'API di Libglib-2.0 se un carattere è stampabile]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere con l'API di Libglib-2.0 se un codice UNICODE corrisponde ad un carattere alfabetico]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se una stringa è formata soltanto da caratteri alfanumerici]]&lt;br /&gt;
&lt;br /&gt;
* [[Scomporre una stringa e caricare ogni parola in una variabile array]]&lt;br /&gt;
&lt;br /&gt;
* [[Scritta lampeggiante]]&lt;br /&gt;
&lt;br /&gt;
* [[Scritta scorrevole]]&lt;br /&gt;
&lt;br /&gt;
* [[Sovrascrivere una stringa con uno o più caratteri]]&lt;br /&gt;
&lt;br /&gt;
* [[Testo verticale]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare in una Costante un numero esadecimale per rappresentare un carattere ASCII]]&lt;br /&gt;
&lt;br /&gt;
* [[Verifica &amp;quot;passo-passo&amp;quot; di ciascun carattere in una data stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare con le funzioni del API di Libglib-2.0 se una stringa inizia con un prefisso o termina con un siffisso]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare con le risorse del API di PulseAudio se una stringa contiene solo caratteri UTF8 validi]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare se in una stringa vi sono caratteri non stampabili]]&lt;br /&gt;
&lt;br /&gt;
== Strutture ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Strutture: dichiarazione ed uso]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare a una Struttura i valori contenuti in un'area di memoria creata con la funzione Alloc()]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare direttamente i valori di dimensione conosciuta, letti da un file, ad una Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare i valori di un file ad una Struttura mediante un Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Configurazione, organizzazione ed impostazione dell'oggetto Struttura secondo i sorgenti di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere i nomi identificatori dei membri di una Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la dimensione di una Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere via codice il nome di una Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere e scrivere direttamente nell'area di memoria di una Struttura accedendovi con la classe Object]]&lt;br /&gt;
&lt;br /&gt;
* [[Nascondere un valore in una Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Ordinare gli elementi di un vettore di Strutture in base ad un loro medesimo membro]]&lt;br /&gt;
&lt;br /&gt;
* [[Ordinare gli elementi dei membri vettoriali di una Struttura in base ad uno di loro]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il puntatore di una variabile di tipo Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il puntatore direttamente ai dati associati a una Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare una Struttura con Event]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere i dati dei membri di una Struttura in un file direttamente]]&lt;br /&gt;
&lt;br /&gt;
* [[Strutture e Funzioni esterne]]&lt;br /&gt;
&lt;br /&gt;
* [[Uso delle Strutture tra Classi e Moduli]]&lt;br /&gt;
&lt;br /&gt;
== SwitchButton ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso dello &amp;quot;SwitchButton&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== TableView ==&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare i dati di una TextArea a una TableView]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un oggetto in una cella di una TableView]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il contenuto di una cella di una TableView cliccandoci dentro]]&lt;br /&gt;
&lt;br /&gt;
* [[Selezionare una intera riga di una TableView]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare il tasto Tab della tastiera per spostare il cursore del mouse fra le celle di una TableView]]&lt;br /&gt;
&lt;br /&gt;
* [[Visualizzare automaticamente una specifica riga di una TableView senza dover agire sulla ScrollBar laterale]]&lt;br /&gt;
&lt;br /&gt;
== TabPanel ==&lt;br /&gt;
&lt;br /&gt;
* [[Cancellare il testo presente in uno o più Controlli di testo posti su una TabPanel]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare l'immagine ed il colore del titolo delle tabelle di una TabPanel]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire tabelle ed oggetti all'interno di una TabPanel]]&lt;br /&gt;
&lt;br /&gt;
== TabStrip ==&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere Controlli su una determinata scheda di una TabStrip successivamente alla sua creazione]]&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere schede in una TabStrip successivamente alla sua creazione]]&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare una scheda da una TabStrip]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati dagli oggetti presenti sulle schede di una TabStrip]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire più schede e Controlli in una TabStrip nel momento della sua creazione]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il valore delle proprietà degli oggetti posti sulla scheda in primo piano di una TabStrip]]&lt;br /&gt;
&lt;br /&gt;
* [[Nascondere una scheda di una TabStrip]]&lt;br /&gt;
&lt;br /&gt;
== Tavoletta grafica e Gambas ==&lt;br /&gt;
&lt;br /&gt;
* [[Leggere l'azione di una penna su una Tavoletta grafica]]&lt;br /&gt;
&lt;br /&gt;
== Tempo, Date e Temporizzazioni ==&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare il numero di giorni compresi fra due date]]&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare il tempo trascorso mediante le funzioni esterne del sub-sistema Timers del API di GLib]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il fuso orario (TimeZone) impostato nel proprio sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il giorno della settimana di una data mediante le risorse della libreria standard C &amp;quot;time.h&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il numero di giorni posseduti da un mese]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire data ed orario da formato Date in un numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire i giorni in formato anni:mesi:giorni]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire i millisecondi in formato minuti:secondi.millisecondi]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire i secondi in formato ore:minuti:secondi]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un Cronometro]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un metronomo per console]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un Timer con le funzioni esterne delle librerie standard C &amp;quot;signal.h&amp;quot; e &amp;quot;time.h&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Formattare &amp;quot;hh:nn:ss&amp;quot; dai soli secondi]]&lt;br /&gt;
&lt;br /&gt;
* [[Funzione di attesa in millisecondi con la libreria esterna libpulsecore]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestione del tempo mediante le funzioni esterne del API di Libcsfml]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere con le risorse della libreria Libc.so.6 il tempo impiegato per eseguire un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere con le risorse della libreria standard C &amp;quot;time.h&amp;quot; la data nella forma &amp;quot;giorno-della-settimana mese giorno ora:min:sec anno&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il tempo trascorso dall'inizializzazione della libreria SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'orario locale comprensivo dei microsecondi con la funzione esterna g_date_time_get_microsecond() del API di GLIB]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'orario locale comprensivo dei nanosecondi con le risorse di alcune librerie standard C]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la differenza temporale fra due orari]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere una data e-o l'orario comprensivo dei millisecondi]]&lt;br /&gt;
&lt;br /&gt;
* [[Porre in pausa il programma per un dato numero di microsecondi con la funzione esterna g_usleep() del API di GLIB]]&lt;br /&gt;
&lt;br /&gt;
* [[Rappresentazione stringa localizzata e non-localizzata di una data]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere di quanti giorni è formato un determinato anno]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere di quanti giorni è formato il mese corrente]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanto tempo è passato dall'inizio del programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti microsecondi sono passati dalla data iniziale del tempo Unix sino alla data e all'orario correnti]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti millisecondi sono passati dalla data iniziale del tempo Unix sino alla data e all'orario correnti]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti nanosecondi sono passati dalla data iniziale del tempo Unix sino alla data e all'orario correnti]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti secondi bisogna aggiungere all'orario locale per ottenere l'orario UTC]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti secondi sono passati dalla data iniziale del tempo Unix sino alla data e all'orario correnti]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti secondi sono passati dall'inizio del giorno corrente]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti giorni sono passati dall'inizio dell'anno corrente]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti secondi sono passati dall'inizio dell'anno corrente]]&lt;br /&gt;
&lt;br /&gt;
* [[Temporizzare una funzione o un evento]]&lt;br /&gt;
&lt;br /&gt;
== Terminale - Console IDE Gambas ==&lt;br /&gt;
&lt;br /&gt;
* [[Aprire un Terminale con Desktop.OpenTerminal e passargli una riga di comando]]&lt;br /&gt;
&lt;br /&gt;
* [[Aprire un Terminale e passargli una riga di comando mediante le funzioni esterne del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Attendere in un'applicazione 'a riga di comando' la pressione del tasto 'Invio']]&lt;br /&gt;
&lt;br /&gt;
* [[Colorare testo e sfondo in Console o Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il numero di linee e di colonne costituenti la corrente dimensione di un terminale o console]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in tempo reale il file-device &amp;quot;pts&amp;quot; dell'ultimo Terminale appena aperto]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la riga e la colonna nelle quali è posizionato il cursore in un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Formattare il testo da mostrare in console o in terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare i dati inviati allo standard output da un programma C]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare il risultato restituito ad intervalli temporali di un comando bash]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare la stringa di caratteri immessi dall'utente nella console o Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare quanto viene scritto manualmente nella console o in un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Inviare il testo, colorato e ruotato, in un Terminale con l'API di libcaca]]&lt;br /&gt;
&lt;br /&gt;
* [[Lanciare da un'applicazione Gambas il Terminale e far partire da esso un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Lanciare da un'applicazione Gambas un comando bash e far scrivere il risultato in un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il prompt bash]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare in runtime il numero del file-device 'pts' di un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Pulire il Terminale o la console via codice]]&lt;br /&gt;
&lt;br /&gt;
* [[Reindirizzare dati stringa dalla console ad un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Rendere la console dell'IDE funzionale come un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere nella console (standard output) di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere nella finestra di un Terminale distinto dal programma Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere nello Standard Input di un Terminale con un programma Gambas 'a riga di comando']]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare da codice il cursore all'interno del Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare il cursore in un Terminale lungo una riga di caratteri]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare un punto nella console o nel Terminale alle coordinate x, y]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare una stringa in console con allineamento a destra o a sinistra]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare una stringa in console sempre su una medesima riga]]&lt;br /&gt;
&lt;br /&gt;
== TextArea ==&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un testo da un Controllo all'interno del testo di una TextArea senza l'uso del Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare che siano stati aggiunti uno o più caratteri a una TextArea con l'opzione &amp;quot;Incolla&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== TextBox ==&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere in un TextBox dalla posizione manualmente mutata del cursore]]&lt;br /&gt;
&lt;br /&gt;
* [[Sovrascrivere mediante nuovi caratteri i caratteri già presenti in un TextBox]]&lt;br /&gt;
&lt;br /&gt;
== ToolTip ==&lt;br /&gt;
&lt;br /&gt;
* [[Chiudere un ToolTip anticipatamente]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il colore e la dimensione del font del testo del ToolTip]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare la dimensione del ToolTip]]&lt;br /&gt;
&lt;br /&gt;
== Valori numerici, Operazioni matematiche, Bit==&lt;br /&gt;
&lt;br /&gt;
* [[Arrotondamento di un numero con virgola mobile]]&lt;br /&gt;
&lt;br /&gt;
* [[Arrotondare un Intero al più prossimo valore inferiore multiplo di 2, 4, 8, 16, 32 e 64]]&lt;br /&gt;
&lt;br /&gt;
* [[Arrotondare un Intero al successivo multiplo di 2, 4, 8, 16, 32 e 64]]&lt;br /&gt;
&lt;br /&gt;
* [[Azzerare tutti gli elementi di un vettore di tipo numerico]]&lt;br /&gt;
&lt;br /&gt;
* [[Cercare un valore all'interno di un file aperto come un flusso di dati di tipo File]]&lt;br /&gt;
&lt;br /&gt;
* [[Cercare un valore all'interno di un file aperto come un flusso di dati di tipo Stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare i numeri di Fibonacci]]&lt;br /&gt;
&lt;br /&gt;
* [[Confrontare due Interi con la funzione esterna gst_util_seqnum_compare() del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere di un numero il multiplo posto immediatamente dopo un altro numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere di un numero la posizione del primo bit da destra impostato a 1]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere gli angoli acuti di un triangolo rettangolo dai cateti noti]]&lt;br /&gt;
&lt;br /&gt;
* [[Conversione Big-Endian/Little-Endian]]&lt;br /&gt;
&lt;br /&gt;
* [[Conversione da Base64]]&lt;br /&gt;
&lt;br /&gt;
* [[Conversione di un angolo da valori sessagesimali in decimali e viceversa]]&lt;br /&gt;
&lt;br /&gt;
* [[Conversione in Base64]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire in un tipo di dati numerico un valore letto in formato Stringa da un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da Decimale in Binario]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da rappresentazione binaria in decimale]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da rappresentazione Decimale a Carattere ASCII]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da rappresentazione Decimale a Esadecimale]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da rappresentazione Decimale a Ottale]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da rappresentazione Esadecimale a Decimale]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da rappresentazione esadecimale in binaria]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da rappresentazione ottale in decimale]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero decimale in numerazione romana]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un valore di tipo Float in un Long con la funzione gst_util_gdouble_to_guint64() del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un valore di tipo Float in una stringa con la funzione PyOS_double_to_string() della libreria libpython3]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un valore di tipo Long in un Float con la funzione gst_util_guint64_to_gdouble() del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un valore numerico di tipo Float in una stringa di caratteri ASCII]]&lt;br /&gt;
&lt;br /&gt;
* [[Distinguere ogni byte della rappresentazione esadecimale di un valore decimale]]&lt;br /&gt;
&lt;br /&gt;
* [[Effettuare con le funzioni Glib-2.0 alcune operazioni sui bit di un valore di una variabile puntata da un Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Elevamento a potenza]]&lt;br /&gt;
&lt;br /&gt;
* [[Esempio di utilizzo delle funzioni esterne del API di GMP]]&lt;br /&gt;
&lt;br /&gt;
* [[Esponente di una potenza]]&lt;br /&gt;
&lt;br /&gt;
* [[Generare numeri casuali con le funzioni esterne del API di GLib]]&lt;br /&gt;
&lt;br /&gt;
* [[Generare numeri casuali con le funzioni esterne srand() e rand() di stdlib.h]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestire numeri superiori al limite massimo supportato dal tipo Long]]&lt;br /&gt;
&lt;br /&gt;
* [[Invertire le cifre di un numero intero]]&lt;br /&gt;
&lt;br /&gt;
* [[Massimo Comun Divisore di due numeri con la funzione gst_util_greatest_common_divisor() di libgstreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Massimo Comun Divisore di due numeri con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Minimo Comune Multiplo di due numeri con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Notazione scientifica e notazione esponenziale in Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Operazioni con precisione quadrupla a 128-bit con numeri in virgola mobile mediante la libreria quadmath.h]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere da un valore numerico i caratteri ASCII corrispondenti a ciascun byte componente il numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere dai suoi singoli dati-byte un valore numerico di tipo superiore al Byte]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere di un numero in virgola mobile la rappresentazione del separatore con il punto anziché con la virgola]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere i &amp;quot;reali&amp;quot; valori numerici da una lettura di tipo Stringa di un flusso di dati]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il ''nibble'' alto ed il ''nibble'' basso di un numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il numero più piccolo e quello più grande fra tre o più numeri mediante le funzioni esterne del API di libgsl]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il resto da due operandi di tipo Float di una divisione con le risorse del API di Libm.so.6]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere in Gambas il risultato di uno spostamento di bit scritto in linguaggio C]] &lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la parte intera e quella decimale di un numero in virgola mobile]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la rappresentazione come stringa in memoria di un valore numerico]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere numeri casuali di ambito Byte dai file-device /dev/random e /dev/urandom]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un numero dalla sua memorizzazione in formato Big-Endian]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un numero dalla sua memorizzazione in formato Little-Endian]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un valore numerico dalla rappresentazione in memoria come stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Porre a 0 oppure a 1 un bit di un numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Rappresentare un numero in alcune basi numeriche]]&lt;br /&gt;
&lt;br /&gt;
* [[Rendere la sola parte decimale di un numero in virgola mobile come un numero di tipo Intero]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere con le funzioni esterne del API di Glib quanti bit sono necessari per contenere un numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere il tipo di dato più piccolo in Gambas capace di contenere e rappresentare un numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti bit posti ad 1 sono presenti in un numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se la cifra delle unità di un numero è zero]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un numero è pari o dispari]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un numero rientra in un ambito definito di due valori]]&lt;br /&gt;
&lt;br /&gt;
* [[Scambiare i rispettivi valori fra due variabili]]&lt;br /&gt;
&lt;br /&gt;
* [[Sostituire gli operatori logici di spostamento dei bit con semplici operazioni]]&lt;br /&gt;
&lt;br /&gt;
* [[Sottrazione con operatori bitwise]]&lt;br /&gt;
&lt;br /&gt;
* [[Trasformare un valore di tipo Float in una frazione con la funzione gst_util_double_to_fraction() della libreria libgstreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Trasformare una frazione in un valore di tipo Float con la funzione gst_util_fraction_to_double() della libreria libgstreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Troncare alcune cifre decimali in un valore in virgola mobile]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare se un numero è una potenza di 2]]&lt;br /&gt;
&lt;br /&gt;
== ValueBox ==&lt;br /&gt;
&lt;br /&gt;
* [[Modificare l'allineamento del valore numerico in un ValueBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Rappresentare in un ValueBox un numero avente i punti delle migliaia e la virgola dei decimali]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere testo in un ValueBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare in un ValueBox vari tipi di valori]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare l'evento _Change() in un ValueBox]]&lt;br /&gt;
&lt;br /&gt;
== Variabili in particolare ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il nome di una variabile 'Pubblica']]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in runtime il numero identificatore di un tipo di dato di una variabile presente nel codice]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere via codice la quantità di memoria occupata da una variabile]]&lt;br /&gt;
&lt;br /&gt;
* [[Contenere valori di diverso tipo]]&lt;br /&gt;
&lt;br /&gt;
* [[Rendere esplicitamente una variabile quale elemento di un vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Usare come identificatore di variabile il nome di una parola chiave o di una funzione ovvero un carattere non consentito]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare l'indirizzo di memoria di una variabile]]&lt;br /&gt;
&lt;br /&gt;
== Video ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con 'proc...fdinfo' la quantità dei dati elaborati di un file video]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere quale file video un programma sta eseguendo]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire in streaming un video da youtube mediante l'oggetto WebView]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file Video con il codice HTML]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file Video con le funzioni esterne del API di Libmpv]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file Video mediante il Metodo .Open() della Classe Desktop]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati video da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[La gestione dei dati video con la Classe MediaView del componente gb.media.form]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[La gestione del video e dei file video con il componente gb.media]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[La gestione del video e dei file video  con le funzioni esterne del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione del video e dei file video con le funzioni esterne del API di VLC]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni generali su flussi multimediali con le funzioni esterne del API di Quvi]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni generali sull'audio e sul video con le funzioni esterne del API di Libquicktime]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere con le funzioni esterne del API di Rhythmbox se un file contiene dati audio e/o video]]&lt;br /&gt;
&lt;br /&gt;
====i/o video====&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere i driver video disponibili nel sistema mediante le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni sul dispositivo video di una webcam con le funzioni esterne del API di libv4l2]]&lt;br /&gt;
&lt;br /&gt;
== Watcher ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della classe Watcher]]&lt;br /&gt;
&lt;br /&gt;
== Web ==&lt;br /&gt;
&lt;br /&gt;
* [[Acquisire il codice HTML di una pagina web]]&lt;br /&gt;
&lt;br /&gt;
* [[Caricare una pagina web]]&lt;br /&gt;
&lt;br /&gt;
* [[Controllare i link contenuti da una pagina web]]&lt;br /&gt;
&lt;br /&gt;
* [[Decodificare con le risorse del API di Libidn i nomi di dominio internazionalizzati]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il valore del colore di un pixel di una pagina web aperta con l'Oggetto WebView]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'immagine di una pagina web]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un indirizzo web è valido]]&lt;br /&gt;
&lt;br /&gt;
== WorkSpace ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della Classe WorkSpace]]&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40770</id>
		<title>Installazione di Gambas3 dai pacchetti binari</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40770"/>
		<updated>2025-01-19T16:03:45Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Launchpad ==&lt;br /&gt;
&lt;br /&gt;
Grazie ai cambiamenti avvenuti su Launchpad (''il PPA funzionava solo su Ubuntu e derivate'') ora i pacchetti binari vengono confezionati attraverso '''OBS''' (''openSUSE Build Service'') e sono disponibili per un maggior numero di distribuzioni.&amp;lt;br&amp;gt;&lt;br /&gt;
Vedi annuncio da parte di Minisini del 16 Dicembre 2024 qui:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambas.sourceforge.net/en/main.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Premessa ==&lt;br /&gt;
&lt;br /&gt;
Come possiamo leggere sulla wiki di Gambas per poter usare OBS occorre che sul nostro sistema sia presente il comando '''Curl''' e per quanto riguarda ''ArchLinux'' occorre posizionare il ''repository di Gambas'' al primo posto nel ''file /etc/pacman.conf'' così:&lt;br /&gt;
&lt;br /&gt;
  sudo nano /etc/pacman.conf&lt;br /&gt;
&lt;br /&gt;
Quindi occorre posizionare il repo di Gambas per primo aggiungendo:&lt;br /&gt;
&lt;br /&gt;
  [home_gambas_3.20_Arch]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/3.20/Arch/$arch&lt;br /&gt;
&lt;br /&gt;
== OBS vs PPA ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Come per il PPA, OBS è disponibile per le versioni Stabile e Master qui i collegamenti con i comandi corretti:&amp;lt;br&amp;gt;&lt;br /&gt;
https://software.opensuse.org/download/package?package=gambas3-ide&amp;amp;project=home%3Agambas%3A3.20&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
https://software.opensuse.org//download.html?project=home%3Agambas%3Amaster&amp;amp;package=gambas3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aggiungere il Repository alla distribuzione ==&lt;br /&gt;
&lt;br /&gt;
Anche se la wiki appare chiara, faremo un esempio pratico di come installare il repository per la distribuzione '''Debian 12'''.&amp;lt;br&amp;gt;&lt;br /&gt;
La procedura è simile anche per le altre distribuzioni.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': le distribuzioni derivate tipo Mint dovranno riferirsi alla versione di Ubuntu da cui dipendono (es. Mint 22 = xUbuntu 24.04)&lt;br /&gt;
&lt;br /&gt;
Apriamo il terminale e digitiamo uno alla volta i comandi scritti alla voce “Aggiungi il repository e installa manualmente” , vale a dire:&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/3.20/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:gambas:3.20.list&lt;br /&gt;
&lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:3.20/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_gambas_3.20.gpg &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
Il vantaggio di poter installare anche i soli repository è evidente, se abbiamo un gruppo che dipende dai nostri programmi possiamo inviare il solo pacchetto.deb che pescherà dal repo le sole librerie utili a esso, più avanti vedremo una piccola dimostrazione di come fare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare Gambas3 vero e proprio ==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install gambas3-ide&lt;br /&gt;
Fatto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare un pacchetto deb di Gambas3 ==&lt;br /&gt;
&lt;br /&gt;
Su una distribuzione Debian priva di Gambas3, come detto, basterà aggiungere il repository da OBS per poter installare un pacchetto creato con l’ultima versione.&lt;br /&gt;
&lt;br /&gt;
Per la prova, sulla VM in cui ho installato Gambas, ho scaricato dalla Farm il progetto ''CuckooClock'' e ho creato un &amp;lt;u&amp;gt;pacchetto per Debian&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In una nuova VM con il solo sistema operativo aggiornato ho importato la cartella ''debian'' contenente tutti i pacchetti creati da Gambas.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo punto ho aperto il terminale e dato i seguenti comandi:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/3.20/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:gambas:3.20.list&lt;br /&gt;
&lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:3.20/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_gambas_3.20.gpg &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': volendo, al posto del repository della stabile possiamo anche installare il repository della versione Master.&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Essendo su ''Gnome'' ho scaricato anche i pacchetti per il funzionamento con le librerie QT5:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock-qt5_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Fatto, ora possiamo aprire il progetto da ''Attività'' &amp;gt; ''Mostra applicazioni'' e possiamo anche bloccarlo sulla Dash&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40769</id>
		<title>Installazione di Gambas3 dai pacchetti binari</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Installazione_di_Gambas3_dai_pacchetti_binari&amp;diff=40769"/>
		<updated>2025-01-19T15:56:55Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: Creata pagina con &amp;quot; == Launchpad ==  Grazie ai cambiamenti avvenuti su Launchpad (''il PPA funzionava solo su Ubuntu e derivate'') ora i pacchetti binari vengono confezionati attraverso '''OBS''...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Launchpad ==&lt;br /&gt;
&lt;br /&gt;
Grazie ai cambiamenti avvenuti su Launchpad (''il PPA funzionava solo su Ubuntu e derivate'') ora i pacchetti binari vengono confezionati attraverso '''OBS''' (''openSUSE Build Service'') e sono disponibili per un maggior numero di distribuzioni.&amp;lt;br&amp;gt;&lt;br /&gt;
Vedi annuncio da parte di Minisini del 16 Dicembre 2024 qui:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambas.sourceforge.net/en/main.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Premessa ==&lt;br /&gt;
&lt;br /&gt;
Come potete leggere sulla wiki di Gambas per poter usare OBS occorre che sul nostro sistema sia presente il comando '''Curl''' e per quanto riguarda ''ArchLinux'' occorre posizionare il ''repository di Gambas'' al primo posto nel ''file /etc/pacman.conf'' così:&lt;br /&gt;
&lt;br /&gt;
  sudo nano /etc/pacman.conf&lt;br /&gt;
&lt;br /&gt;
Quindi come da immagine posizionare il repo di Gambas come primo aggiungendo:&lt;br /&gt;
&lt;br /&gt;
  [home_gambas_3.20_Arch]&lt;br /&gt;
  Server = https://download.opensuse.org/repositories/home:/gambas:/3.20/Arch/$arch&lt;br /&gt;
&lt;br /&gt;
[[File:pacman-conf.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OBS vs PPA ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Come per il PPA, OBS è disponibile per le versioni Stabile e Master qui i collegamenti:&amp;lt;br&amp;gt;&lt;br /&gt;
https://software.opensuse.org/download/package?package=gambas3-ide&amp;amp;project=home%3Agambas%3A3.20&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
https://software.opensuse.org//download.html?project=home%3Agambas%3Amaster&amp;amp;package=gambas3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aggiungere il Repository alla distribuzione ==&lt;br /&gt;
&lt;br /&gt;
Anche se la wiki appare chiara, faremo un esempio pratico di come installare il repository per la distribuzione Debian 12.&amp;lt;br&amp;gt;&lt;br /&gt;
La procedura è simile anche per le altre distribuzioni.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  '''Attenzione''': le distribuzioni derivate tipo Mint dovranno riferirsi alla versione di Ubuntu da cui dipendono (es. Mint 22 = xUbuntu 24.04)&lt;br /&gt;
&lt;br /&gt;
Apriamo il terminale e digitiamo uno alla volta i comandi scritti alla voce “Aggiungi il repository e installa manualmente” , vale a dire:&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/3.20/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:gambas:3.20.list&lt;br /&gt;
&lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:3.20/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_gambas_3.20.gpg &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
Il vantaggio di poter installare anche i soli repository è evidente, se avete un gruppo che dipende dai vostri programmi potete inviare il solo pacchetto.deb che pescherà dal repo le sole librerie utili a esso, più avanti vedremo una piccola dimostrazione di come fare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare Gambas3 vero e proprio ==&lt;br /&gt;
&lt;br /&gt;
  sudo apt install gambas3-ide&lt;br /&gt;
Fatto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installare un pacchetto deb di Gambas3 ==&lt;br /&gt;
&lt;br /&gt;
Su una distribuzione Debian priva di Gambas3, come detto, basterà aggiungere il repository da OBS per poter installare un pacchetto creato con l’ultima versione.&lt;br /&gt;
&lt;br /&gt;
Per la prova, sulla VM in cui ho installato Gambas, ho scaricato dalla Farm il progetto ''CuckooClock'' e ho creato un &amp;lt;u&amp;gt;pacchetto per Debian&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In una nuova VM con il solo sistema operativo aggiornato ho importato la cartella debian contenente tutti i pacchetti creati da Gambas.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo punto ho aperto il terminale e dato i seguenti comandi:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install curl&lt;br /&gt;
&lt;br /&gt;
  echo 'deb http://download.opensuse.org/repositories/home:/gambas:/3.20/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:gambas:3.20.list&lt;br /&gt;
&lt;br /&gt;
  curl -fsSL https://download.opensuse.org/repositories/home:gambas:3.20/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_gambas_3.20.gpg &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': volendo, al posto del repository della stabile possiamo anche installare il repository della versione Master.&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Essendo su ''Gnome'' ho scaricato anche i pacchetti per il funzionamento con le librerie QT5:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install ./cuckooclock-qt5_0.1.10-1_all.deb&lt;br /&gt;
&lt;br /&gt;
Fatto, ora possiamo aprire il progetto da ''Attività'' &amp;gt; ''Mostra applicazioni'' e possiamo anche bloccarlo sulla Dash&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40747</id>
		<title>Compilare Gambas</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40747"/>
		<updated>2025-01-01T16:31:59Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== I Repository ==&lt;br /&gt;
&lt;br /&gt;
Per chi viene da altri sistemi operativi l’installazione di un programma in Linux può apparire poco chiara.&amp;lt;br&amp;gt;&lt;br /&gt;
Ormai, visto che tutti abbiamo uno smartphone, l’idea di uno ''Store'', cioè di un luogo virtuale da cui scaricare un’applicazione che ci serve, non è più una novità e infatti il sistema è stato copiato da Linux e dai suoi '''Repository'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Se in Linux serve un dato programma basta sceglierlo nel repository, fra le tante applicazioni del genere disponibili liberamente, installarlo e siamo subito operativi.&lt;br /&gt;
&lt;br /&gt;
Purtroppo date le tante distribuzioni che arricchiscono Linux, non sempre i programmi ivi presenti sono all’ultima versione, questo accade per i programmi più diffusi figurarsi per quelli di nicchia come ''Gambas''.&lt;br /&gt;
&lt;br /&gt;
Quindi se si vuole l’ultima versione di ''Gambas'', ''Stable'' oppure ''Master'' quella fresca di giornata con tutti gli ultimi ''fix'', non rimane altra scelta che compilare.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;Invero per chi usa Ubuntu o una sua derivata tipo Mint esistono dei repository speciali chiamati '''PPA''', quello di Gambas è curato direttamente da ''Benoit Minisini'' ideatore di ''Gambas''.&amp;lt;br&amp;gt;&lt;br /&gt;
Normalmente 24 ore dopo l’uscita, la nuova versione è disponibile.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo link troviamo i comandi per il terminale:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambaswiki.org/wiki/install/ubuntu#t1&amp;lt;/strike&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  '''Nota''': occorre leggere l'annuncio di Minisini del 13 novembre 2024 su Launchpad qui: https://gambas.sourceforge.net/en/main.html &amp;lt;br&amp;gt; Leggere anche questo topic sul nostro forum: https://www.gambas-it.org/smf/index.php?topic=11103.msg54741#msg54741&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cosa significa compilare ==&lt;br /&gt;
&lt;br /&gt;
Compilare è una &amp;lt;u&amp;gt;semplicissima operazione&amp;lt;/u&amp;gt; che permette di trasformare un file di codice sorgente in un file binario eseguibile dalla nostra distribuzione.&lt;br /&gt;
&lt;br /&gt;
L’operazione consiste nell’inviare al compilatore ''gcc'' attraverso il terminale alcuni comandi che eseguono degli ''script'' di shell e delle ''macro'' che automatizzano il tutto.&amp;lt;br&amp;gt;&lt;br /&gt;
Per prima cosa vengono eseguiti gli ''script'' che predispongono il codice per la nostra distribuzione quindi le funzioni (''macro'') che creano e installano l’eseguibile.&lt;br /&gt;
&lt;br /&gt;
Compilare un programma in GNU/Linux consiste in pratica nel dare tre comandi da terminale (''configure'' [script], ''make'' e ''make install'' [funzioni]), quale è dunque il motivo che spaventa i più?&lt;br /&gt;
&lt;br /&gt;
Credo che quello principale sia che ''Windows'' ci ha abituato a fare tutto attraverso le finestre e pertanto scrivere comandi in un terminale ci appare una cosa aliena, però se abbiamo velleità di programmazione la cosa risulta risibile, visto che programmare altro non è che scrivere comandi, i nostri comandi.&lt;br /&gt;
&lt;br /&gt;
''Gambas'', come tutte le applicazioni ''open source'' viene rilasciato sotto forma di codice sorgente &amp;lt;SUP&amp;gt;&amp;amp;#091;[[#Note|Nota 1]]&amp;amp;#093;&amp;lt;/sup&amp;gt; ed è attualmente presente su ''GitLab'' a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas&lt;br /&gt;
&lt;br /&gt;
''GitLab'' si apre sulla versione ''Master'' (quella in corso di sviluppo), ma agendo sul pulsante menu è possibile scegliere la versione stabile (''Stable'').&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi il suo codice può essere scaricato da li, anche graficamente, come file compresso: ''Tarball'' (con estensione .tar.gz, .tar.bz2 o .tar) oppure ''Zip'' (.zip).&lt;br /&gt;
&lt;br /&gt;
Dopo aver scaricato il file nella cartella desiderata, tipicamente la nostra ''home'', si può decomprimerlo usando il tasto destro del mouse e l’apposita voce di menu, ma visto che comunque per compilare dai sorgenti si dovrà fare uso del terminale e più avanti verrà descritta l’intera operazione di scaricamento da ''GitLab'', scaricare il file in questo modo appare inutile, a meno che si stia cercando una versione precedente l’attuale.&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi è comunque bene sapere che anche da ''GitLab'' sotto la voce ''Comit'' si può scaricare in forma compressa qualunque ''Gambas precedente'' sia stabile che di sviluppo.&lt;br /&gt;
&lt;br /&gt;
== Le librerie dinamiche ==&lt;br /&gt;
&lt;br /&gt;
Tutto troppo facile, vero?&amp;lt;br&amp;gt;&lt;br /&gt;
Uno potrebbe immaginare che vengano celate delle difficoltà !&amp;lt;br&amp;gt;&lt;br /&gt;
E infatti, la difficoltà del caso si chiama '''Libreria'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Un programma per funzionare ha bisogno che nel sistema siano installate determinate librerie, esattamente quelle della giusta versione.&amp;lt;br&amp;gt;&lt;br /&gt;
Pertanto installare un programma è semplice, trovare le librerie di cui si necessita per la distribuzione in nostro uso lo è un po’ meno e non perché sia difficile installarle ma perché è difficile capire come è stata nominata quella specifica libreria.&amp;lt;br&amp;gt;&lt;br /&gt;
''Gambas'' oltre che un programma è anche un linguaggio di programmazione e va da se che si basi su moltissime librerie.&lt;br /&gt;
&lt;br /&gt;
== Niente panico ==&lt;br /&gt;
&lt;br /&gt;
La stragrande maggioranza delle distribuzioni deriva da poche altre distribuzioni, per le più diffuse, le librerie utili a ''Gambas'' sono elencate nel file di configurazione YAML a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas/-/blob/master/.gitlab-ci.yml&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': il tipo di desktop in uso non è importante per la compilazione, quello che conta riguardo alle librerie da scaricare è la '''distribuzione''' che è il modo in uso a GNU/Linux di chiamare il sistema operativo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per compilare Gambas ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
  '''Nota''': la compilazione va fatta su una distribuzione pulita, vale a dire che ''Gambas'' non può essere già presente anche se scaricato dai repository.&amp;lt;br&amp;gt;Se è già presente, prima di poter compilare ''Gambas'' occorre &amp;lt;u&amp;gt;rimuoverlo completamente&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Qui come esempio useremo una distribuzione basata su ''Arch Linux'', tipo ''Manjaro'', ''Endeavour'' oltre che naturalmente a ''Arch'' stesso.&amp;lt;br&amp;gt;&lt;br /&gt;
Attualmente ''Benoit Minisini'' utilizza ''Manjaro'' con ''KDE''.&lt;br /&gt;
&lt;br /&gt;
''Quanto qui descritto si può adattare a qualunque altra distribuzione ed è indirizzato a programmatori dilettanti come lo scrivente, se siete dei professionisti il consiglio è di dare un’occhiata comunque''.&amp;lt;br&amp;gt;&lt;br /&gt;
Quello che segue servirà a preparare la giusta lista dei comandi che poi daremo da terminale usando il copia e incolla.&lt;br /&gt;
&lt;br /&gt;
* Copiamo il codice ''yaml'' su cui è basata la nostra distribuzione.&amp;lt;br&amp;gt;Ad esempio se noi utilizzassimo ''Mint 22'', dovremmo copiare il codice yaml di ''Ubuntu Noble'' sulla quale ''Mint 22'' è basata.&amp;lt;br&amp;gt;'''Attenzione''': le librerie in ''yaml''  sono scritte in modo differente in base alla distribuzione, alcune sono incolonnate come quelle di ''Arch'' altre scritte sequenzialmente in un unica lunga stringa vedi ''Ubuntu'', dobbiamo accertarci di copiare tutto.&lt;br /&gt;
* Incolliamo il codice yaml su un file di testo con l’aiuto di un editor e andiamo a cambiarlo così:&lt;br /&gt;
** eliminiamo le prime quattro righe&lt;br /&gt;
** anteponiamo '''sudo''' davanti al/ai comando che installa le librerie, nel caso di ''Arch'' si dovrà dare due comandi come scritto nel file, se nella nostra distribuzione non abbiamo sudo ci dobbiamo trasformare in utente ''root'' per poter installare le librerie.&amp;lt;br&amp;gt;Dopo averle incollate le librerie vanno cambiate in modo che siano separate fra di loro da uno spazio eliminando così eventuali tabulazioni e/o gli accapo.&lt;br /&gt;
** Ora dipende da quale Gambas desideriamo scaricare e installare,  questo nuovo comando dobbiamo inserirlo, in una nuova riga, nel file di testo subito dopo le librerie e serve a copiare in una nuova cartella all’interno della nostra ''home'' il progetto ''Gambas'' da compilare, per la versione stabile il comando è:&amp;lt;br&amp;gt;git clone --branch stable --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo chiamata ''Master'' il comando è:&amp;lt;br&amp;gt;git clone --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambasdevel&lt;br /&gt;
** Dopo aver aggiunto il comando desiderato, occorre spostarsi all’interno della nuova cartella con uno di questi comandi, per la versione stabile il comando è:&amp;lt;br&amp;gt;cd gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo il comando è:&amp;lt;br&amp;gt;cd gambasdevel&lt;br /&gt;
** Gli altri comandi incollati rimangono invariati, tranne l'ultimo anch'esso preceduto da '''sudo''', vale a dire:&amp;lt;br&amp;gt;./reconf-all&amp;lt;br&amp;gt;GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl&amp;lt;br&amp;gt;make -j$(nproc)&amp;lt;br&amp;gt;sudo make install&lt;br /&gt;
&lt;br /&gt;
A questo punto, se avessimo scelto la versione di sviluppo (''Master''), il nostro file di testo dovrebbe assomigliare a questo, da notare che per facilitare la lettura, ho aggiunto degli spazi tra un comando e l’altro:&lt;br /&gt;
&lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm alure autoconf automake bzip2 zstd coreutils curl dbus gcc gdk-pixbuf2 git glew glib2 gmime3 gsl gst-plugins-base gstreamer gtk2 gtk3 imlib2 intltool libffi libgl libgnome-keyring mariadb-libs librsvg libsm libxcursor libxml2 libxslt libxtst mariadb make mesa ncurses pcre''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm pkg-config poppler poppler-glib postgresql postgresql-libs qt5-svg qt5-x11extras sdl2 sdl2_gfx sdl2_image sdl2_mixer sdl2_net sdl2_ttf sdl_mixer sdl_ttf smpeg sqlite unixodbc v4l-utils xdg-utils zlib gettext qt5-webengine webkit2gtk qt6-svg qt6-webengine mongo-c-driver''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
Non ci rimane che copiare e incollare, &amp;lt;u&amp;gt;un comando alla volta&amp;lt;/u&amp;gt;, nel terminale della nostra distribuzione che nel caso dell'esempio è ''Manjaro Linux''.&amp;lt;br&amp;gt;&lt;br /&gt;
Come detto se la nostra distribuzione non usa ''sudo'' occorre che al posto di sudo ci eleviamo a utente '''root''', senza mettere '''sudo''' nel comando.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per aggiornare ==&lt;br /&gt;
&lt;br /&gt;
Questo sistema è un po' drastico e se si ha padronanza di ''git'' possiamo anche saltarlo, occorre solo sapere che è l’unico sistema che garantisce l’aggiornamento sicuro di Gambas:&lt;br /&gt;
&lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make uninstall''&lt;br /&gt;
  &lt;br /&gt;
  ''cd''&lt;br /&gt;
  &lt;br /&gt;
  ''rm -rf gambasdevel/''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
'''Nota''': se usiamo la versione stabile dobbiamo sostituire ''gambasdevel'' con ''gambas-stable'' e cambiare il comando git clone con quello del ramo stabile (''git clone --branch stable --depth=1 https://gitlab.com/gambas/gambas.git gambas-stable'').&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Note==&lt;br /&gt;
[1] È proprio il fatto di dover nascondere il codice per poterlo vendere che in Windows i programmi vengono distribuiti come binari (.exe).&amp;lt;br&amp;gt;&lt;br /&gt;
Sono decisamente facili da installare (meno che da repository) rispetto alla compilazione, ma dobbiamo ammettere che compilare è molto meno oneroso.&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40746</id>
		<title>Compilare Gambas</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40746"/>
		<updated>2025-01-01T16:31:01Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== I Repository ==&lt;br /&gt;
&lt;br /&gt;
Per chi viene da altri sistemi operativi l’installazione di un programma in Linux può apparire poco chiara.&amp;lt;br&amp;gt;&lt;br /&gt;
Ormai, visto che tutti abbiamo uno smartphone, l’idea di uno ''Store'', cioè di un luogo virtuale da cui scaricare un’applicazione che ci serve, non è più una novità e infatti il sistema è stato copiato da Linux e dai suoi '''Repository'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Se in Linux serve un dato programma basta sceglierlo nel repository, fra le tante applicazioni del genere disponibili liberamente, installarlo e siamo subito operativi.&lt;br /&gt;
&lt;br /&gt;
Purtroppo date le tante distribuzioni che arricchiscono Linux, non sempre i programmi ivi presenti sono all’ultima versione, questo accade per i programmi più diffusi figurarsi per quelli di nicchia come ''Gambas''.&lt;br /&gt;
&lt;br /&gt;
Quindi se si vuole l’ultima versione di ''Gambas'', ''Stable'' oppure ''Master'' quella fresca di giornata con tutti gli ultimi ''fix'', non rimane altra scelta che compilare.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;Invero per chi usa Ubuntu o una sua derivata tipo Mint esistono dei repository speciali chiamati '''PPA''', quello di Gambas è curato direttamente da ''Benoit Minisini'' ideatore di ''Gambas''.&amp;lt;br&amp;gt;&lt;br /&gt;
Normalmente 24 ore dopo l’uscita, la nuova versione è disponibile.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo link troviamo i comandi per il terminale:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambaswiki.org/wiki/install/ubuntu#t1&amp;lt;/strike&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  '''Nota''': occorre leggere l'annuncio di Minisini del 13 novembre 2024 su Launchpad qui: https://gambas.sourceforge.net/en/main.html &amp;lt;br&amp;gt; Leggere anche questo topic sul nostro forum: https://www.gambas-it.org/smf/index.php?topic=11103.msg54741#msg54741&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cosa significa compilare ==&lt;br /&gt;
&lt;br /&gt;
Compilare è una &amp;lt;u&amp;gt;semplicissima operazione&amp;lt;/u&amp;gt; che permette di trasformare un file di codice sorgente in un file binario eseguibile dalla nostra distribuzione.&lt;br /&gt;
&lt;br /&gt;
L’operazione consiste nell’inviare al compilatore ''gcc'' attraverso il terminale alcuni comandi che eseguono degli ''script'' di shell e delle ''macro'' che automatizzano il tutto.&amp;lt;br&amp;gt;&lt;br /&gt;
Per prima cosa vengono eseguiti gli ''script'' che predispongono il codice per la nostra distribuzione quindi le funzioni (''macro'') che creano e installano l’eseguibile.&lt;br /&gt;
&lt;br /&gt;
Compilare un programma in GNU/Linux consiste in pratica nel dare tre comandi da terminale (''configure'' [script], ''make'' e ''make install'' [funzioni]), quale è dunque il motivo che spaventa i più?&lt;br /&gt;
&lt;br /&gt;
Credo che quello principale sia che ''Windows'' ci ha abituato a fare tutto attraverso le finestre e pertanto scrivere comandi in un terminale ci appare una cosa aliena, però se abbiamo velleità di programmazione la cosa risulta risibile, visto che programmare altro non è che scrivere comandi, i nostri comandi.&lt;br /&gt;
&lt;br /&gt;
''Gambas'', come tutte le applicazioni ''open source'' viene rilasciato sotto forma di codice sorgente &amp;lt;SUP&amp;gt;&amp;amp;#091;[[#Note|Nota 1]]&amp;amp;#093;&amp;lt;/sup&amp;gt; ed è attualmente presente su ''GitLab'' a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas&lt;br /&gt;
&lt;br /&gt;
''GitLab'' si apre sulla versione ''Master'' (quella in corso di sviluppo), ma agendo sul pulsante menu è possibile scegliere la versione stabile (''Stable'').&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi il suo codice può essere scaricato da li, anche graficamente, come file compresso: ''Tarball'' (con estensione .tar.gz, .tar.bz2 o .tar) oppure ''Zip'' (.zip).&lt;br /&gt;
&lt;br /&gt;
Dopo aver scaricato il file nella cartella desiderata, tipicamente la nostra ''home'', si può decomprimerlo usando il tasto destro del mouse e l’apposita voce di menu, ma visto che comunque per compilare dai sorgenti si dovrà fare uso del terminale e più avanti verrà descritta l’intera operazione di scaricamento da ''GitLab'', scaricare il file in questo modo appare inutile, a meno che si stia cercando una versione precedente l’attuale.&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi è comunque bene sapere che anche da ''GitLab'' sotto la voce ''Comit'' si può scaricare in forma compressa qualunque ''Gambas precedente'' sia stabile che di sviluppo.&lt;br /&gt;
&lt;br /&gt;
== Le librerie dinamiche ==&lt;br /&gt;
&lt;br /&gt;
Tutto troppo facile, vero?&amp;lt;br&amp;gt;&lt;br /&gt;
Uno potrebbe immaginare che vengano celate delle difficoltà !&amp;lt;br&amp;gt;&lt;br /&gt;
E infatti, la difficoltà del caso si chiama '''Libreria'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Un programma per funzionare ha bisogno che nel sistema siano installate determinate librerie, esattamente quelle della giusta versione.&amp;lt;br&amp;gt;&lt;br /&gt;
Pertanto installare un programma è semplice, trovare le librerie di cui si necessita per la distribuzione in nostro uso lo è un po’ meno e non perché sia difficile installarle ma perché è difficile capire come è stata nominata quella specifica libreria.&amp;lt;br&amp;gt;&lt;br /&gt;
''Gambas'' oltre che un programma è anche un linguaggio di programmazione e va da se che si basi su moltissime librerie.&lt;br /&gt;
&lt;br /&gt;
== Niente panico ==&lt;br /&gt;
&lt;br /&gt;
La stragrande maggioranza delle distribuzioni deriva da poche altre distribuzioni, per le più diffuse, le librerie utili a ''Gambas'' sono elencate nel file di configurazione YAML a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas/-/blob/master/.gitlab-ci.yml&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': il tipo di desktop in uso non è importante per la compilazione, quello che conta riguardo alle librerie da scaricare è la '''distribuzione''' che è il modo in uso a GNU/Linux di chiamare il sistema operativo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per compilare Gambas ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
  '''Nota''': la compilazione va fatta su una distribuzione pulita, vale a dire che ''Gambas'' non può essere già presente anche se scaricato dai repository.&amp;lt;br&amp;gt;Se è già presente, prima di poter compilare ''Gambas'' occorre &amp;lt;u&amp;gt;rimuoverlo completamente&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Qui come esempio useremo una distribuzione basata su ''Arch Linux'', tipo ''Manjaro'', ''Endeavour'' oltre che naturalmente a ''Arch'' stesso.&amp;lt;br&amp;gt;&lt;br /&gt;
Attualmente ''Benoit Minisini'' utilizza ''Manjaro'' con ''KDE''.&lt;br /&gt;
&lt;br /&gt;
''Quanto qui descritto si può adattare a qualunque altra distribuzione ed è indirizzato a programmatori dilettanti come lo scrivente, se siete dei professionisti il consiglio è di dare un’occhiata comunque''.&amp;lt;br&amp;gt;&lt;br /&gt;
Quello che segue servirà a preparare la giusta lista dei comandi che poi daremo da terminale usando il copia e incolla.&lt;br /&gt;
&lt;br /&gt;
* Copiamo il codice ''yaml'' su cui è basata la nostra distribuzione.&amp;lt;br&amp;gt;Ad esempio se noi utilizzassimo ''Mint 22'', dovremmo copiare il codice yaml di ''Ubuntu Noble'' sulla quale ''Mint 22'' è basata.&amp;lt;br&amp;gt;'''Attenzione''': le librerie in ''yaml''  sono scritte in modo differente in base alla distribuzione, alcune sono incolonnate come quelle di ''Arch'' altre scritte sequenzialmente in un unica lunga stringa vedi ''Ubuntu'', dobbiamo accertarci di copiare tutto.&lt;br /&gt;
* Incolliamo il codice yaml su un file di testo con l’aiuto di un editor e andiamo a cambiarlo così:&lt;br /&gt;
** eliminiamo le prime quattro righe&lt;br /&gt;
** anteponiamo '''sudo''' davanti al/ai comando che installa le librerie, nel caso di ''Arch'' si dovrà dare due comandi come scritto nel file, se nella nostra distribuzione non abbiamo sudo ci dobbiamo trasformare in utente ''root'' per poter installare le librerie.&amp;lt;br&amp;gt;Dopo averle incollate le librerie vanno cambiate in modo che siano separate fra di loro da uno spazio eliminando così eventuali tabulazioni e/o gli accapo.&lt;br /&gt;
** Ora dipende da quale Gambas desideriamo scaricare e installare,  questo nuovo comando dobbiamo inserirlo, in una nuova riga, nel file di testo subito dopo le librerie e serve a copiare in una nuova cartella all’interno della nostra ''home'' il progetto ''Gambas'' da compilare, per la versione stabile il comando è:&amp;lt;br&amp;gt;git clone --branch stable --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo chiamata ''Master'' il comando è:&amp;lt;br&amp;gt;git clone --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambasdevel&lt;br /&gt;
** Dopo aver aggiunto il comando desiderato, occorre spostarsi all’interno della nuova cartella con uno di questi comandi, per la versione stabile il comando è:&amp;lt;br&amp;gt;cd gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo il comando è:&amp;lt;br&amp;gt;cd gambasdevel&lt;br /&gt;
** Gli altri comandi incollati rimangono invariati, tranne l'ultimo anch'esso preceduto da '''sudo''', vale a dire:&amp;lt;br&amp;gt;./reconf-all&amp;lt;br&amp;gt;GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl&amp;lt;br&amp;gt;make -j$(nproc)&amp;lt;br&amp;gt;sudo make install&lt;br /&gt;
&lt;br /&gt;
A questo punto, se avessimo scelto la versione di sviluppo (''Master''), il nostro file di testo dovrebbe assomigliare a questo, da notare che per facilitare la lettura, ho aggiunto degli spazi tra un comando e l’altro:&lt;br /&gt;
&lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm alure autoconf automake bzip2 zstd coreutils curl dbus gcc gdk-pixbuf2 git glew glib2 gmime3 gsl gst-plugins-base gstreamer gtk2 gtk3 imlib2 intltool libffi libgl libgnome-keyring mariadb-libs librsvg libsm libxcursor libxml2 libxslt libxtst mariadb make mesa ncurses pcre''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm pkg-config poppler poppler-glib postgresql postgresql-libs qt5-svg qt5-x11extras sdl2 sdl2_gfx sdl2_image sdl2_mixer sdl2_net sdl2_ttf sdl_mixer sdl_ttf smpeg sqlite unixodbc v4l-utils xdg-utils zlib gettext qt5-webengine webkit2gtk qt6-svg qt6-webengine mongo-c-driver''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
Non ci rimane che copiare e incollare, &amp;lt;u&amp;gt;un comando alla volta&amp;lt;/u&amp;gt;, nel terminale della nostra distribuzione che nel caso dell'esempio è ''Manjaro Linux''.&amp;lt;br&amp;gt;&lt;br /&gt;
Come detto se la nostra distribuzione non usa ''sudo'' occorre che al posto di sudo ci eleviamo a utente '''root''', senza mettere '''sudo''' nel comando.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per aggiornare ==&lt;br /&gt;
&lt;br /&gt;
Questo sistema è un po' drastico e se si ha padronanza di ''git'' possiamo anche saltarlo, occorre solo sapere che è l’unico sistema che garantisce l’aggiornamento sicuro di Gambas:&lt;br /&gt;
&lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make uninstall''&lt;br /&gt;
  &lt;br /&gt;
  ''cd''&lt;br /&gt;
  &lt;br /&gt;
  ''rm -rf gambasdevel/''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
'''Nota''': se usiamo la versione stabile dobbiamo sostituire ''gambasdevel'' con ''gambas-stable'' e cambiare il comando git clone con quello del ramo stabile (''git clone --branch stable --depth=1 https://gitlab.com/gambas/gambas.git gambas-stable'').&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Note==&lt;br /&gt;
[1] È proprio il fatto di dover nascondere il codice per poterlo vendere che in Windows i programmi vengono distribuiti come binari (.exe).&amp;lt;br&amp;gt;&lt;br /&gt;
Sono decisamente facili da installare (meno che da repository) rispetto alla compilazione, ma dobbiamo ammettere che compilare è molto meno oneroso.&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40643</id>
		<title>Compilare Gambas</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40643"/>
		<updated>2024-12-14T16:36:43Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== I Repository ==&lt;br /&gt;
&lt;br /&gt;
Per chi viene da altri sistemi operativi l’installazione di un programma in Linux può apparire poco chiara.&amp;lt;br&amp;gt;&lt;br /&gt;
Ormai, visto che tutti abbiamo uno smartphone, l’idea di uno ''Store'', cioè di un luogo virtuale da cui scaricare un’applicazione che ci serve, non è più una novità e infatti il sistema è stato copiato da Linux e dai suoi '''Repository'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Se in Linux serve un dato programma basta sceglierlo nel repository, fra le tante applicazioni del genere disponibili liberamente, installarlo e siamo subito operativi.&lt;br /&gt;
&lt;br /&gt;
Purtroppo date le tante distribuzioni che arricchiscono Linux, non sempre i programmi ivi presenti sono all’ultima versione, questo accade per i programmi più diffusi figurarsi per quelli di nicchia come ''Gambas''.&lt;br /&gt;
&lt;br /&gt;
Quindi se si vuole l’ultima versione di ''Gambas'', ''Stable'' oppure ''Master'' quella fresca di giornata con tutti gli ultimi ''fix'', non rimane altra scelta che compilare.&lt;br /&gt;
&lt;br /&gt;
Invero per chi usa Ubuntu o una sua derivata tipo Mint esistono dei repository speciali chiamati '''PPA''', quello di Gambas è curato direttamente da ''Benoit Minisini'' ideatore di ''Gambas''.&amp;lt;br&amp;gt;&lt;br /&gt;
Normalmente 24 ore dopo l’uscita, la nuova versione è disponibile.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo link troviamo i comandi per il terminale:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambaswiki.org/wiki/install/ubuntu#t1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cosa significa compilare ==&lt;br /&gt;
&lt;br /&gt;
Compilare è una &amp;lt;u&amp;gt;semplicissima operazione&amp;lt;/u&amp;gt; che permette di trasformare un file di codice sorgente in un file binario eseguibile dalla nostra distribuzione.&lt;br /&gt;
&lt;br /&gt;
L’operazione consiste nell’inviare al compilatore ''gcc'' attraverso il terminale alcuni comandi che eseguono degli ''script'' di shell e delle ''macro'' che automatizzano il tutto.&amp;lt;br&amp;gt;&lt;br /&gt;
Per prima cosa vengono eseguiti gli ''script'' che predispongono il codice per la nostra distribuzione quindi le funzioni (''macro'') che creano e installano l’eseguibile.&lt;br /&gt;
&lt;br /&gt;
Compilare un programma in GNU/Linux consiste in pratica nel dare tre comandi da terminale (''configure'' [script], ''make'' e ''make install'' [funzioni]), quale è dunque il motivo che spaventa i più?&lt;br /&gt;
&lt;br /&gt;
Credo che quello principale sia che ''Windows'' ci ha abituato a fare tutto attraverso le finestre e pertanto scrivere comandi in un terminale ci appare una cosa aliena, però se abbiamo velleità di programmazione la cosa risulta risibile, visto che programmare altro non è che scrivere comandi, i nostri comandi.&lt;br /&gt;
&lt;br /&gt;
''Gambas'', come tutte le applicazioni ''open source'' viene rilasciato sotto forma di codice sorgente &amp;lt;SUP&amp;gt;&amp;amp;#091;[[#Note|Nota 1]]&amp;amp;#093;&amp;lt;/sup&amp;gt; ed è attualmente presente su ''GitLab'' a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas&lt;br /&gt;
&lt;br /&gt;
''GitLab'' si apre sulla versione ''Master'' (quella in corso di sviluppo), ma agendo sul pulsante menu è possibile scegliere la versione stabile (''Stable'').&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi il suo codice può essere scaricato da li, anche graficamente, come file compresso: ''Tarball'' (con estensione .tar.gz, .tar.bz2 o .tar) oppure ''Zip'' (.zip).&lt;br /&gt;
&lt;br /&gt;
Dopo aver scaricato il file nella cartella desiderata, tipicamente la nostra ''home'', si può decomprimerlo usando il tasto destro del mouse e l’apposita voce di menu, ma visto che comunque per compilare dai sorgenti si dovrà fare uso del terminale e più avanti verrà descritta l’intera operazione di scaricamento da ''GitLab'', scaricare il file in questo modo appare inutile, a meno che si stia cercando una versione precedente l’attuale.&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi è comunque bene sapere che anche da ''GitLab'' sotto la voce ''Comit'' si può scaricare in forma compressa qualunque ''Gambas precedente'' sia stabile che di sviluppo.&lt;br /&gt;
&lt;br /&gt;
== Le librerie dinamiche ==&lt;br /&gt;
&lt;br /&gt;
Tutto troppo facile, vero?&amp;lt;br&amp;gt;&lt;br /&gt;
Uno potrebbe immaginare che vengano celate delle difficoltà !&amp;lt;br&amp;gt;&lt;br /&gt;
E infatti, la difficoltà del caso si chiama '''Libreria'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Un programma per funzionare ha bisogno che nel sistema siano installate determinate librerie, esattamente quelle della giusta versione.&amp;lt;br&amp;gt;&lt;br /&gt;
Pertanto installare un programma è semplice, trovare le librerie di cui si necessita per la distribuzione in nostro uso lo è un po’ meno e non perché sia difficile installarle ma perché è difficile capire come è stata nominata quella specifica libreria.&amp;lt;br&amp;gt;&lt;br /&gt;
''Gambas'' oltre che un programma è anche un linguaggio di programmazione e va da se che si basi su moltissime librerie.&lt;br /&gt;
&lt;br /&gt;
== Niente panico ==&lt;br /&gt;
&lt;br /&gt;
La stragrande maggioranza delle distribuzioni deriva da poche altre distribuzioni, per le più diffuse, le librerie utili a ''Gambas'' sono elencate nel file di configurazione YAML a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas/-/blob/master/.gitlab-ci.yml&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': il tipo di desktop in uso non è importante per la compilazione, quello che conta riguardo alle librerie da scaricare è la '''distribuzione''' che è il modo in uso a GNU/Linux di chiamare il sistema operativo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per compilare Gambas ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
  '''Nota''': la compilazione va fatta su una distribuzione pulita, vale a dire che ''Gambas'' non può essere già presente anche se scaricato dai repository.&amp;lt;br&amp;gt;Se è già presente, prima di poter compilare ''Gambas'' occorre &amp;lt;u&amp;gt;rimuoverlo completamente&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Qui come esempio useremo una distribuzione basata su ''Arch Linux'', tipo ''Manjaro'', ''Endeavour'' oltre che naturalmente a ''Arch'' stesso.&amp;lt;br&amp;gt;&lt;br /&gt;
Attualmente ''Benoit Minisini'' utilizza ''Manjaro'' con ''KDE''.&lt;br /&gt;
&lt;br /&gt;
''Quanto qui descritto si può adattare a qualunque altra distribuzione ed è indirizzato a programmatori dilettanti come lo scrivente, se siete dei professionisti il consiglio è di dare un’occhiata comunque''.&amp;lt;br&amp;gt;&lt;br /&gt;
Quello che segue servirà a preparare la giusta lista dei comandi che poi daremo da terminale usando il copia e incolla.&lt;br /&gt;
&lt;br /&gt;
* Copiamo il codice ''yaml'' su cui è basata la nostra distribuzione.&amp;lt;br&amp;gt;Ad esempio se noi utilizzassimo ''Mint 22'', dovremmo copiare il codice yaml di ''Ubuntu Noble'' sulla quale ''Mint 22'' è basata.&amp;lt;br&amp;gt;'''Attenzione''': le librerie in ''yaml''  sono scritte in modo differente in base alla distribuzione, alcune sono incolonnate come quelle di ''Arch'' altre scritte sequenzialmente in un unica lunga stringa vedi ''Ubuntu'', dobbiamo accertarci di copiare tutto.&lt;br /&gt;
* Incolliamo il codice yaml su un file di testo con l’aiuto di un editor e andiamo a cambiarlo così:&lt;br /&gt;
** eliminiamo le prime quattro righe&lt;br /&gt;
** anteponiamo '''sudo''' davanti al/ai comando che installa le librerie, nel caso di ''Arch'' si dovrà dare due comandi come scritto nel file, se nella nostra distribuzione non abbiamo sudo ci dobbiamo trasformare in utente ''root'' per poter installare le librerie.&amp;lt;br&amp;gt;Dopo averle incollate le librerie vanno cambiate in modo che siano separate fra di loro da uno spazio eliminando così eventuali tabulazioni e/o gli accapo.&lt;br /&gt;
** Ora dipende da quale Gambas desideriamo scaricare e installare,  questo nuovo comando dobbiamo inserirlo, in una nuova riga, nel file di testo subito dopo le librerie e serve a copiare in una nuova cartella all’interno della nostra ''home'' il progetto ''Gambas'' da compilare, per la versione stabile il comando è:&amp;lt;br&amp;gt;git clone --branch stable --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo chiamata ''Master'' il comando è:&amp;lt;br&amp;gt;git clone --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambasdevel&lt;br /&gt;
** Dopo aver aggiunto il comando desiderato, occorre spostarsi all’interno della nuova cartella con uno di questi comandi, per la versione stabile il comando è:&amp;lt;br&amp;gt;cd gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo il comando è:&amp;lt;br&amp;gt;cd gambasdevel&lt;br /&gt;
** Gli altri comandi incollati rimangono invariati, tranne l'ultimo anch'esso preceduto da '''sudo''', vale a dire:&amp;lt;br&amp;gt;./reconf-all&amp;lt;br&amp;gt;GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl&amp;lt;br&amp;gt;make -j$(nproc)&amp;lt;br&amp;gt;sudo make install&lt;br /&gt;
&lt;br /&gt;
A questo punto, se avessimo scelto la versione di sviluppo (''Master''), il nostro file di testo dovrebbe assomigliare a questo, da notare che per facilitare la lettura, ho aggiunto degli spazi tra un comando e l’altro:&lt;br /&gt;
&lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm alure autoconf automake bzip2 zstd coreutils curl dbus gcc gdk-pixbuf2 git glew glib2 gmime3 gsl gst-plugins-base gstreamer gtk2 gtk3 imlib2 intltool libffi libgl libgnome-keyring mariadb-libs librsvg libsm libxcursor libxml2 libxslt libxtst mariadb make mesa ncurses pcre''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm pkg-config poppler poppler-glib postgresql postgresql-libs qt5-svg qt5-x11extras sdl2 sdl2_gfx sdl2_image sdl2_mixer sdl2_net sdl2_ttf sdl_mixer sdl_ttf smpeg sqlite unixodbc v4l-utils xdg-utils zlib gettext qt5-webengine webkit2gtk qt6-svg qt6-webengine mongo-c-driver''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
Non ci rimane che copiare e incollare, &amp;lt;u&amp;gt;un comando alla volta&amp;lt;/u&amp;gt;, nel terminale della nostra distribuzione che nel caso dell'esempio è ''Manjaro Linux''.&amp;lt;br&amp;gt;&lt;br /&gt;
Come detto se la nostra distribuzione non usa ''sudo'' occorre che al posto di sudo ci eleviamo a utente '''root''', senza mettere '''sudo''' nel comando.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per aggiornare ==&lt;br /&gt;
&lt;br /&gt;
Questo sistema è un po' drastico e se si ha padronanza di ''git'' possiamo anche saltarlo, occorre solo sapere che è l’unico sistema che garantisce l’aggiornamento sicuro di Gambas:&lt;br /&gt;
&lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make uninstall''&lt;br /&gt;
  &lt;br /&gt;
  ''cd''&lt;br /&gt;
  &lt;br /&gt;
  ''rm -rf gambasdevel/''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
'''Nota''': se usiamo la versione stabile dobbiamo sostituire ''gambasdevel'' con ''gambas-stable'' e cambiare il comando git clone con quello del ramo stabile (''git clone --branch stable --depth=1 https://gitlab.com/gambas/gambas.git gambas-stable'').&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Note==&lt;br /&gt;
[1] È proprio il fatto di dover nascondere il codice per poterlo vendere che in Windows i programmi vengono distribuiti come binari (.exe).&amp;lt;br&amp;gt;&lt;br /&gt;
Sono decisamente facili da installare (meno che da repository) rispetto alla compilazione, ma dobbiamo ammettere che compilare è molto meno oneroso.&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40642</id>
		<title>Compilare Gambas</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40642"/>
		<updated>2024-12-14T16:34:31Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== I Repository ==&lt;br /&gt;
&lt;br /&gt;
Per chi viene da altri sistemi operativi l’installazione di un programma in Linux può apparire poco chiara.&amp;lt;br&amp;gt;&lt;br /&gt;
Ormai, visto che tutti abbiamo uno smartphone, l’idea di uno ''Store'', cioè di un luogo virtuale da cui scaricare un’applicazione che ci serve, non è più una novità e infatti il sistema è stato copiato da Linux e dai suoi '''Repository'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Se in Linux serve un dato programma basta sceglierlo nel repository, fra le tante applicazioni del genere disponibili liberamente, installarlo e siamo subito operativi.&lt;br /&gt;
&lt;br /&gt;
Purtroppo date le tante distribuzioni che arricchiscono Linux, non sempre i programmi ivi presenti sono all’ultima versione, questo accade per i programmi più diffusi figurarsi per quelli di nicchia come ''Gambas''.&lt;br /&gt;
&lt;br /&gt;
Quindi se si vuole l’ultima versione di ''Gambas'', ''Stable'' oppure ''Master'' quella fresca di giornata con tutti gli ultimi ''fix'', non rimane altra scelta che compilare.&lt;br /&gt;
&lt;br /&gt;
Invero per chi usa Ubuntu o una sua derivata tipo Mint esistono dei repository speciali chiamati '''PPA''', quello di Gambas è curato direttamente da ''Benoit Minisini'' ideatore di ''Gambas''.&amp;lt;br&amp;gt;&lt;br /&gt;
Normalmente 24 ore dopo l’uscita, la nuova versione è disponibile.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo link troviamo i comandi per il terminale:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambaswiki.org/wiki/install/ubuntu#t1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cosa significa compilare ==&lt;br /&gt;
&lt;br /&gt;
Compilare è una &amp;lt;u&amp;gt;semplicissima operazione&amp;lt;/u&amp;gt; che permette di trasformare un file di codice sorgente in un file binario eseguibile dalla nostra distribuzione.&lt;br /&gt;
&lt;br /&gt;
L’operazione consiste nell’inviare al compilatore ''gcc'' attraverso il terminale alcuni comandi che eseguono degli ''script'' di shell e delle ''macro'' che automatizzano il tutto.&amp;lt;br&amp;gt;&lt;br /&gt;
Per prima cosa vengono eseguiti gli ''script'' che predispongono il codice per la nostra distribuzione quindi le funzioni (''macro'') che creano e installano l’eseguibile.&lt;br /&gt;
&lt;br /&gt;
Compilare un programma in GNU/Linux consiste in pratica nel dare tre comandi da terminale (''configure'' [script], ''make'' e ''make install'' [funzioni]), quale è dunque il motivo che spaventa i più?&lt;br /&gt;
&lt;br /&gt;
Credo che quello principale sia che ''Windows'' ci ha abituato a fare tutto attraverso le finestre e pertanto scrivere comandi in un terminale ci appare una cosa aliena, però se abbiamo velleità di programmazione la cosa risulta risibile, visto che programmare altro non è che scrivere comandi, i nostri comandi.&lt;br /&gt;
&lt;br /&gt;
''Gambas'', come tutte le applicazioni ''open source'' viene rilasciato sotto forma di codice sorgente &amp;lt;SUP&amp;gt;&amp;amp;#091;[[#Note|Nota 1]]&amp;amp;#093;&amp;lt;/sup&amp;gt; ed è attualmente presente su ''GitLab'' a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas&lt;br /&gt;
&lt;br /&gt;
''GitLab'' si apre sulla versione ''Master'' (quella in corso di sviluppo), ma agendo sul pulsante menu è possibile scegliere la versione stabile (''Stable'').&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi il suo codice può essere scaricato da li, anche graficamente, come file compresso: ''Tarball'' (con estensione .tar.gz, .tar.bz2 o .tar) oppure ''Zip'' (.zip).&lt;br /&gt;
&lt;br /&gt;
Dopo aver scaricato il file nella cartella desiderata, tipicamente la nostra ''home'', si può decomprimerlo usando il tasto destro del mouse e l’apposita voce di menu, ma visto che comunque per compilare dai sorgenti si dovrà fare uso del terminale e più avanti verrà descritta l’intera operazione di scaricamento da ''GitLab'', scaricare il file in questo modo appare inutile, a meno che si stia cercando una versione precedente l’attuale.&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi è comunque bene sapere che anche da ''GitLab'' sotto la voce ''Comit'' si può scaricare in forma compressa qualunque ''Gambas precedente'' sia stabile che di sviluppo.&lt;br /&gt;
&lt;br /&gt;
== Le librerie dinamiche ==&lt;br /&gt;
&lt;br /&gt;
Tutto troppo facile, vero?&amp;lt;br&amp;gt;&lt;br /&gt;
Uno potrebbe immaginare che vengano celate delle difficoltà !&amp;lt;br&amp;gt;&lt;br /&gt;
E infatti, la difficoltà del caso si chiama '''Libreria'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Un programma per funzionare ha bisogno che nel sistema siano installate determinate librerie, esattamente quelle della giusta versione.&amp;lt;br&amp;gt;&lt;br /&gt;
Pertanto installare un programma è semplice, trovare le librerie di cui si necessita per la distribuzione in nostro uso lo è un po’ meno e non perché sia difficile installarle ma perché è difficile capire come è stata nominata quella specifica libreria.&amp;lt;br&amp;gt;&lt;br /&gt;
''Gambas'' oltre che un programma è anche un linguaggio di programmazione e va da se che si basi su moltissime librerie.&lt;br /&gt;
&lt;br /&gt;
== Niente panico ==&lt;br /&gt;
&lt;br /&gt;
La stragrande maggioranza delle distribuzioni deriva da poche altre distribuzioni, per le più diffuse, le librerie utili a ''Gambas'' sono elencate nel file di configurazione YAML a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas/-/blob/master/.gitlab-ci.yml&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': il tipo di desktop in uso non è importante per la compilazione, quello che conta riguardo alle librerie da scaricare è la '''distribuzione''' che è il modo in uso a GNU/Linux di chiamare il sistema operativo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per compilare Gambas ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
  '''Nota''': la compilazione va fatta su una distribuzione pulita, vale a dire che ''Gambas'' non può essere già presente anche se scaricato dai repository.&amp;lt;br&amp;gt;Se è già presente, prima di poter compilare ''Gambas'' occorre &amp;lt;u&amp;gt;rimuoverlo completamente&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Qui come esempio useremo una distribuzione basata su ''Arch Linux'', tipo ''Manjaro'', ''Endeavour'' oltre che naturalmente a ''Arch'' stesso.&amp;lt;br&amp;gt;&lt;br /&gt;
Attualmente ''Benoit Minisini'' utilizza ''Manjaro'' con ''KDE''.&lt;br /&gt;
&lt;br /&gt;
''Quanto qui descritto si può adattare a qualunque altra distribuzione ed è indirizzato a programmatori dilettanti come lo scrivente, se siete dei professionisti il consiglio è di dare un’occhiata comunque''.&amp;lt;br&amp;gt;&lt;br /&gt;
Quello che segue servirà a preparare la giusta lista dei comandi che poi daremo da terminale usando il copia e incolla.&lt;br /&gt;
&lt;br /&gt;
* Copiamo il codice ''yaml'' su cui è basata la nostra distribuzione.&amp;lt;br&amp;gt;Ad esempio se noi utilizzassimo ''Mint 22'', dovremmo copiare il codice yaml di ''Ubuntu Noble'' sulla quale ''Mint 22'' è basata.&amp;lt;br&amp;gt;'''Attenzione''': le librerie in ''yaml''  sono scritte in modo differente in base alla distribuzione, alcune sono incolonnate come quelle di ''Arch'' altre scritte sequenzialmente in un unica lunga stringa vedi ''Ubuntu'', dobbiamo accertarci di copiare tutto.&lt;br /&gt;
* Incolliamo il codice yaml su un file di testo con l’aiuto di un editor e andiamo a cambiarlo così:&lt;br /&gt;
** eliminiamo le prime quattro righe&lt;br /&gt;
** anteponiamo '''sudo''' davanti al/ai comando che installa le librerie, nel caso di ''Arch'' si dovrà dare due comandi come scritto nel file, se nella nostra distribuzione non abbiamo sudo ci dobbiamo trasformare in utente ''root'' per poter installare le librerie.&amp;lt;br&amp;gt;Dopo averle incollate le librerie vanno cambiate in modo che siano separate fra di loro da uno spazio eliminando così eventuali tabulazioni e/o gli accapo.&lt;br /&gt;
** Ora dipende da quale Gambas desideriamo scaricare e installare,  questo nuovo comando dobbiamo inserirlo, in una nuova riga, nel file di testo subito dopo le librerie e serve a copiare in una nuova cartella all’interno della nostra ''home'' il progetto ''Gambas'' da compilare, per la versione stabile il comando è:&amp;lt;br&amp;gt;git clone --branch stable --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo chiamata ''Master'' il comando è:&amp;lt;br&amp;gt;git clone --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambasdevel&lt;br /&gt;
** Dopo aver aggiunto il comando desiderato, occorre spostarsi all’interno della nuova cartella con uno di questi comandi, per la versione stabile il comando è:&amp;lt;br&amp;gt;cd gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo il comando è:&amp;lt;br&amp;gt;cd gambasdevel&lt;br /&gt;
** Gli altri comandi incollati rimangono invariati, tranne l'ultimo anch'esso preceduto da '''sudo''', vale a dire:&amp;lt;br&amp;gt;./reconf-all&amp;lt;br&amp;gt;GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl&amp;lt;br&amp;gt;make -j$(nproc)&amp;lt;br&amp;gt;sudo make install&lt;br /&gt;
&lt;br /&gt;
A questo punto, se avessimo scelto la versione di sviluppo (''Master''), il nostro file di testo dovrebbe assomigliare a questo, da notare che per facilitare la lettura, ho aggiunto degli spazi tra un comando e l’altro:&lt;br /&gt;
&lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm alure autoconf automake bzip2 zstd coreutils curl dbus gcc gdk-pixbuf2 git glew glib2 gmime3 gsl gst-plugins-base gstreamer gtk2 gtk3 imlib2 intltool libffi libgl libgnome-keyring mariadb-libs librsvg libsm libxcursor libxml2 libxslt libxtst mariadb make mesa ncurses pcre''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm pkg-config poppler poppler-glib postgresql postgresql-libs qt5-svg qt5-x11extras sdl2 sdl2_gfx sdl2_image sdl2_mixer sdl2_net sdl2_ttf sdl_mixer sdl_ttf smpeg sqlite unixodbc v4l-utils xdg-utils zlib gettext qt5-webengine webkit2gtk qt6-svg qt6-webengine mongo-c-driver''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
Non ci rimane che copiare e incollare, &amp;lt;u&amp;gt;un comando alla volta&amp;lt;/u&amp;gt;, nel terminale della nostra distribuzione che nel caso dell'esempio è ''Manjaro Linux''.&amp;lt;br&amp;gt;&lt;br /&gt;
Come detto se la nostra distribuzione non usa ''sudo'' occorre che al posto di sudo ci eleviamo a utente '''root''', senza mettere '''sudo''' nel comando.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per aggiornare ==&lt;br /&gt;
&lt;br /&gt;
Questo sistema è un po' drastico e se si ha padronanza di ''git'' possiamo anche saltarlo, occorre solo sapere che è l’unico sistema che garantisce l’aggiornamento sicuro di Gambas:&lt;br /&gt;
&lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make uninstall''&lt;br /&gt;
  &lt;br /&gt;
  ''cd''&lt;br /&gt;
  &lt;br /&gt;
  ''rm -rf gambasdevel/''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
'''Nota''': se usiamo la versione stabile dobbiamo sostituire ''gambasdevel'' con ''gambas-stable'' e combiare il comando git clone con quello del ramo stabile (''git clone --branch stable --depth=1 https://gitlab.com/gambas/gambas.git gambas-stable'').&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Note==&lt;br /&gt;
[1] È proprio il fatto di dover nascondere il codice per poterlo vendere che in Windows i programmi vengono distribuiti come binari (.exe).&amp;lt;br&amp;gt;&lt;br /&gt;
Sono decisamente facili da installare (meno che da repository) rispetto alla compilazione, ma dobbiamo ammettere che compilare è molto meno oneroso.&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40641</id>
		<title>Compilare Gambas</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40641"/>
		<updated>2024-12-14T16:32:59Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== I Repository ==&lt;br /&gt;
&lt;br /&gt;
Per chi viene da altri sistemi operativi l’installazione di un programma in Linux può apparire poco chiara.&amp;lt;br&amp;gt;&lt;br /&gt;
Ormai, visto che tutti abbiamo uno smartphone, l’idea di uno ''Store'', cioè di un luogo virtuale da cui scaricare un’applicazione che ci serve, non è più una novità e infatti il sistema è stato copiato da Linux e dai suoi '''Repository'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Se in Linux serve un dato programma basta sceglierlo nel repository, fra le tante applicazioni del genere disponibili liberamente, installarlo e siamo subito operativi.&lt;br /&gt;
&lt;br /&gt;
Purtroppo date le tante distribuzioni che arricchiscono Linux, non sempre i programmi ivi presenti sono all’ultima versione, questo accade per i programmi più diffusi figurarsi per quelli di nicchia come ''Gambas''.&lt;br /&gt;
&lt;br /&gt;
Quindi se si vuole l’ultima versione di ''Gambas'', ''Stable'' oppure ''Master'' quella fresca di giornata con tutti gli ultimi ''fix'', non rimane altra scelta che compilare.&lt;br /&gt;
&lt;br /&gt;
Invero per chi usa Ubuntu o una sua derivata tipo Mint esistono dei repository speciali chiamati '''PPA''', quello di Gambas è curato direttamente da ''Benoit Minisini'' ideatore di ''Gambas''.&amp;lt;br&amp;gt;&lt;br /&gt;
Normalmente 24 ore dopo l’uscita, la nuova versione è disponibile.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo link troviamo i comandi per il terminale:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambaswiki.org/wiki/install/ubuntu#t1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cosa significa compilare ==&lt;br /&gt;
&lt;br /&gt;
Compilare è una &amp;lt;u&amp;gt;semplicissima operazione&amp;lt;/u&amp;gt; che permette di trasformare un file di codice sorgente in un file binario eseguibile dalla nostra distribuzione.&lt;br /&gt;
&lt;br /&gt;
L’operazione consiste nell’inviare al compilatore ''gcc'' attraverso il terminale alcuni comandi che eseguono degli ''script'' di shell e delle ''macro'' che automatizzano il tutto.&amp;lt;br&amp;gt;&lt;br /&gt;
Per prima cosa vengono eseguiti gli ''script'' che predispongono il codice per la nostra distribuzione quindi le funzioni (''macro'') che creano e installano l’eseguibile.&lt;br /&gt;
&lt;br /&gt;
Compilare un programma in GNU/Linux consiste in pratica nel dare tre comandi da terminale (''configure'' [script], ''make'' e ''make install'' [funzioni]), quale è dunque il motivo che spaventa i più?&lt;br /&gt;
&lt;br /&gt;
Credo che quello principale sia che ''Windows'' ci ha abituato a fare tutto attraverso le finestre e pertanto scrivere comandi in un terminale ci appare una cosa aliena, però se abbiamo velleità di programmazione la cosa risulta risibile, visto che programmare altro non è che scrivere comandi, i nostri comandi.&lt;br /&gt;
&lt;br /&gt;
''Gambas'', come tutte le applicazioni ''open source'' viene rilasciato sotto forma di codice sorgente &amp;lt;SUP&amp;gt;&amp;amp;#091;[[#Note|Nota 1]]&amp;amp;#093;&amp;lt;/sup&amp;gt; ed è attualmente presente su ''GitLab'' a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas&lt;br /&gt;
&lt;br /&gt;
''GitLab'' si apre sulla versione ''Master'' (quella in corso di sviluppo), ma agendo sul pulsante menu è possibile scegliere la versione stabile (''Stable'').&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi il suo codice può essere scaricato da li, anche graficamente, come file compresso: ''Tarball'' (con estensione .tar.gz, .tar.bz2 o .tar) oppure ''Zip'' (.zip).&lt;br /&gt;
&lt;br /&gt;
Dopo aver scaricato il file nella cartella desiderata, tipicamente la nostra ''home'', si può decomprimerlo usando il tasto destro del mouse e l’apposita voce di menu, ma visto che comunque per compilare dai sorgenti si dovrà fare uso del terminale e più avanti verrà descritta l’intera operazione di scaricamento da ''GitLab'', scaricare il file in questo modo appare inutile, a meno che si stia cercando una versione precedente l’attuale.&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi è comunque bene sapere che anche da ''GitLab'' sotto la voce ''Comit'' si può scaricare in forma compressa qualunque ''Gambas precedente'' sia stabile che di sviluppo.&lt;br /&gt;
&lt;br /&gt;
== Le librerie dinamiche ==&lt;br /&gt;
&lt;br /&gt;
Tutto troppo facile, vero?&amp;lt;br&amp;gt;&lt;br /&gt;
Uno potrebbe immaginare che vengano celate delle difficoltà !&amp;lt;br&amp;gt;&lt;br /&gt;
E infatti, la difficoltà del caso si chiama '''Libreria'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Un programma per funzionare ha bisogno che nel sistema siano installate determinate librerie, esattamente quelle della giusta versione.&amp;lt;br&amp;gt;&lt;br /&gt;
Pertanto installare un programma è semplice, trovare le librerie di cui si necessita per la distribuzione in nostro uso lo è un po’ meno e non perché sia difficile installarle ma perché è difficile capire come è stata nominata quella specifica libreria.&amp;lt;br&amp;gt;&lt;br /&gt;
''Gambas'' oltre che un programma è anche un linguaggio di programmazione e va da se che si basi su moltissime librerie.&lt;br /&gt;
&lt;br /&gt;
== Niente panico ==&lt;br /&gt;
&lt;br /&gt;
La stragrande maggioranza delle distribuzioni deriva da poche altre distribuzioni, per le più diffuse, le librerie utili a ''Gambas'' sono elencate nel file di configurazione YAML a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas/-/blob/master/.gitlab-ci.yml&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': il tipo di desktop in uso non è importante per la compilazione, quello che conta riguardo alle librerie da scaricare è la '''distribuzione''' che è il modo in uso a GNU/Linux di chiamare il sistema operativo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per compilare Gambas ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
  '''Nota''': la compilazione va fatta su una distribuzione pulita, vale a dire che ''Gambas'' non può essere già presente anche se scaricato dai repository.&amp;lt;br&amp;gt;Se è già presente, prima di poter compilare ''Gambas'' occorre &amp;lt;u&amp;gt;rimuoverlo completamente&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Qui come esempio useremo una distribuzione basata su ''Arch Linux'', tipo ''Manjaro'', ''Endeavour'' oltre che naturalmente a ''Arch'' stesso.&amp;lt;br&amp;gt;&lt;br /&gt;
Attualmente ''Benoit Minisini'' utilizza ''Manjaro'' con ''KDE''.&lt;br /&gt;
&lt;br /&gt;
''Quanto qui descritto si può adattare a qualunque altra distribuzione ed è indirizzato a programmatori dilettanti come lo scrivente, se siete dei professionisti il consiglio è di dare un’occhiata comunque''.&amp;lt;br&amp;gt;&lt;br /&gt;
Quello che segue servirà a preparare la giusta lista dei comandi che poi daremo da terminale usando il copia e incolla.&lt;br /&gt;
&lt;br /&gt;
* Copiamo il codice ''yaml'' su cui è basata la nostra distribuzione.&amp;lt;br&amp;gt;Ad esempio se noi utilizzassimo ''Mint 22'', dovremmo copiare il codice yaml di ''Ubuntu Noble'' sulla quale ''Mint 22'' è basata.&amp;lt;br&amp;gt;'''Attenzione''': le librerie in ''yaml''  sono scritte in modo differente in base alla distribuzione, alcune sono incolonnate come quelle di ''Arch'' altre scritte sequenzialmente in un unica lunga stringa vedi ''Ubuntu'', dobbiamo accertarci di copiare tutto.&lt;br /&gt;
* Incolliamo il codice yaml su un file di testo con l’aiuto di un editor e andiamo a cambiarlo così:&lt;br /&gt;
** eliminiamo le prime quattro righe&lt;br /&gt;
** anteponiamo '''sudo''' davanti al/ai comando che installa le librerie, nel caso di ''Arch'' si dovrà dare due comandi come scritto nel file, se nella nostra distribuzione non abbiamo sudo ci dobbiamo trasformare in utente ''root'' per poter installare le librerie.&amp;lt;br&amp;gt;Dopo averle incollate le librerie vanno cambiate in modo che siano separate fra di loro da uno spazio eliminando così eventuali tabulazioni e/o gli accapo.&lt;br /&gt;
** Ora dipende da quale Gambas desideriamo scaricare e installare,  questo nuovo comando dobbiamo inserirlo, in una nuova riga, nel file di testo subito dopo le librerie e serve a copiare in una nuova cartella all’interno della nostra ''home'' il progetto ''Gambas'' da compilare, per la versione stabile il comando è:&amp;lt;br&amp;gt;git clone --branch stable --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo chiamata ''Master'' il comando è:&amp;lt;br&amp;gt;git clone --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambasdevel&lt;br /&gt;
** Dopo aver aggiunto il comando desiderato, occorre spostarsi all’interno della nuova cartella con uno di questi comandi, per la versione stabile il comando è:&amp;lt;br&amp;gt;cd gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo il comando è:&amp;lt;br&amp;gt;cd gambasdevel&lt;br /&gt;
** Gli altri comandi incollati rimangono invariati, tranne l'ultimo anch'esso preceduto da '''sudo''', vale a dire:&amp;lt;br&amp;gt;./reconf-all&amp;lt;br&amp;gt;GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl&amp;lt;br&amp;gt;make -j$(nproc)&amp;lt;br&amp;gt;sudo make install&lt;br /&gt;
&lt;br /&gt;
A questo punto, se avessimo scelto la versione di sviluppo (''Master''), il nostro file di testo dovrebbe assomigliare a questo, da notare che per facilitare la lettura, ho aggiunto degli spazi tra un comando e l’altro:&lt;br /&gt;
&lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm alure autoconf automake bzip2 zstd coreutils curl dbus gcc gdk-pixbuf2 git glew glib2 gmime3 gsl gst-plugins-base gstreamer gtk2 gtk3 imlib2 intltool libffi libgl libgnome-keyring mariadb-libs librsvg libsm libxcursor libxml2 libxslt libxtst mariadb make mesa ncurses pcre''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm pkg-config poppler poppler-glib postgresql postgresql-libs qt5-svg qt5-x11extras sdl2 sdl2_gfx sdl2_image sdl2_mixer sdl2_net sdl2_ttf sdl_mixer sdl_ttf smpeg sqlite unixodbc v4l-utils xdg-utils zlib gettext qt5-webengine webkit2gtk qt6-svg qt6-webengine mongo-c-driver''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
Non ci rimane che copiare e incollare, &amp;lt;u&amp;gt;un comando alla volta&amp;lt;/u&amp;gt;, nel terminale della nostra distribuzione che nel caso dell'esempio è ''Manjaro Linux''.&amp;lt;br&amp;gt;&lt;br /&gt;
Come detto se la nostra distribuzione non usa ''sudo'' occorre che al posto di sudo ci eleviamo a utente '''root''', senza mettere '''sudo''' nel comando.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per aggiornare ==&lt;br /&gt;
&lt;br /&gt;
Questo sistema è un po' drastico e se si ha padronanza di ''git'' possiamo anche saltarlo, occorre solo sapere che è l’unico sistema che garantisce l’aggiornamento sicuro di Gambas:&lt;br /&gt;
&lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make uninstall''&lt;br /&gt;
  &lt;br /&gt;
  ''cd''&lt;br /&gt;
  &lt;br /&gt;
  ''rm -rf gambasdevel/''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
'''Nota''': se usiamo la versione stabile dobbiamo sostituire ''gambasdevel'' con ''gambas-stable'' e combiare il comando git clone con quello del ramo stabile (devi sopra).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Note==&lt;br /&gt;
[1] È proprio il fatto di dover nascondere il codice per poterlo vendere che in Windows i programmi vengono distribuiti come binari (.exe).&amp;lt;br&amp;gt;&lt;br /&gt;
Sono decisamente facili da installare (meno che da repository) rispetto alla compilazione, ma dobbiamo ammettere che compilare è molto meno oneroso.&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40630</id>
		<title>Compilare Gambas</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40630"/>
		<updated>2024-12-12T16:05:23Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== I Repository ==&lt;br /&gt;
&lt;br /&gt;
Per chi viene da altri sistemi operativi l’installazione di un programma in Linux può apparire poco chiara.&amp;lt;br&amp;gt;&lt;br /&gt;
Ormai, visto che tutti abbiamo uno smartphone, l’idea di uno ''Store'', cioè di un luogo virtuale da cui scaricare un’applicazione che ci serve, non è più una novità e infatti il sistema è stato copiato da Linux e dai suoi '''Repository'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Se in Linux serve un dato programma basta sceglierlo nel repository, fra le tante applicazioni del genere disponibili liberamente, installarlo e siamo subito operativi.&lt;br /&gt;
&lt;br /&gt;
Purtroppo date le tante distribuzioni che arricchiscono Linux, non sempre i programmi ivi presenti sono all’ultima versione, questo accade per i programmi più diffusi figurarsi per quelli di nicchia come ''Gambas''.&lt;br /&gt;
&lt;br /&gt;
Quindi se si vuole l’ultima versione di ''Gambas'', ''Stable'' oppure ''Master'' quella fresca di giornata con tutti gli ultimi ''fix'', non rimane altra scelta che compilare.&lt;br /&gt;
&lt;br /&gt;
Invero per chi usa Ubuntu o una sua derivata tipo Mint esistono dei repository speciali chiamati '''PPA''', quello di Gambas è curato direttamente da ''Benoit Minisini'' ideatore di ''Gambas''.&amp;lt;br&amp;gt;&lt;br /&gt;
Normalmente 24 ore dopo l’uscita, la nuova versione è disponibile.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo link troviamo i comandi per il terminale:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambaswiki.org/wiki/install/ubuntu#t1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cosa significa compilare ==&lt;br /&gt;
&lt;br /&gt;
Compilare è una &amp;lt;u&amp;gt;semplicissima operazione&amp;lt;/u&amp;gt; che permette di trasformare un file di codice sorgente in un file binario eseguibile dalla nostra distribuzione.&lt;br /&gt;
&lt;br /&gt;
L’operazione consiste nell’inviare al compilatore ''gcc'' attraverso il terminale alcuni comandi che eseguono degli ''script'' di shell e delle ''macro'' che automatizzano il tutto.&amp;lt;br&amp;gt;&lt;br /&gt;
Per prima cosa vengono eseguiti gli ''script'' che predispongono il codice per la nostra distribuzione quindi le funzioni (''macro'') che creano e installano l’eseguibile.&lt;br /&gt;
&lt;br /&gt;
Compilare un programma in GNU/Linux consiste in pratica nel dare tre comandi da terminale (''configure'' [script], ''make'' e ''make install'' [funzioni]), quale è dunque il motivo che spaventa i più?&lt;br /&gt;
&lt;br /&gt;
Credo che quello principale sia che ''Windows'' ci ha abituato a fare tutto attraverso le finestre e pertanto scrivere comandi in un terminale ci appare una cosa aliena, però se abbiamo velleità di programmazione la cosa risulta risibile, visto che programmare altro non è che scrivere comandi, i nostri comandi.&lt;br /&gt;
&lt;br /&gt;
''Gambas'', come tutte le applicazioni ''open source'' viene rilasciato sotto forma di codice sorgente &amp;lt;SUP&amp;gt;&amp;amp;#091;[[#Note|Nota 1]]&amp;amp;#093;&amp;lt;/sup&amp;gt; ed è attualmente presente su ''GitLab'' a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas&lt;br /&gt;
&lt;br /&gt;
''GitLab'' si apre sulla versione ''Master'' (quella in corso di sviluppo), ma agendo sul pulsante menu è possibile scegliere la versione stabile (''Stable'').&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi il suo codice può essere scaricato da li, anche graficamente, come file compresso: ''Tarball'' (con estensione .tar.gz, .tar.bz2 o .tar) oppure ''Zip'' (.zip).&lt;br /&gt;
&lt;br /&gt;
Dopo aver scaricato il file nella cartella desiderata, tipicamente la nostra ''home'', si può decomprimerlo usando il tasto destro del mouse e l’apposita voce di menu, ma visto che comunque per compilare dai sorgenti si dovrà fare uso del terminale e più avanti verrà descritta l’intera operazione di scaricamento da ''GitLab'', scaricare il file in questo modo appare inutile, a meno che si stia cercando una versione precedente l’attuale.&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi è comunque bene sapere che anche da ''GitLab'' sotto la voce ''Comit'' si può scaricare in forma compressa qualunque ''Gambas precedente'' sia stabile che di sviluppo.&lt;br /&gt;
&lt;br /&gt;
== Le librerie dinamiche ==&lt;br /&gt;
&lt;br /&gt;
Tutto troppo facile, vero?&amp;lt;br&amp;gt;&lt;br /&gt;
Uno potrebbe immaginare che vengano celate delle difficoltà !&amp;lt;br&amp;gt;&lt;br /&gt;
E infatti, la difficoltà del caso si chiama '''Libreria'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Un programma per funzionare ha bisogno che nel sistema siano installate determinate librerie, esattamente quelle della giusta versione.&amp;lt;br&amp;gt;&lt;br /&gt;
Pertanto installare un programma è semplice, trovare le librerie di cui si necessita per la distribuzione in nostro uso lo è un po’ meno e non perché sia difficile installarle ma perché è difficile capire come è stata nominata quella specifica libreria.&amp;lt;br&amp;gt;&lt;br /&gt;
''Gambas'' oltre che un programma è anche un linguaggio di programmazione e va da se che si basi su moltissime librerie.&lt;br /&gt;
&lt;br /&gt;
== Niente panico ==&lt;br /&gt;
&lt;br /&gt;
La stragrande maggioranza delle distribuzioni deriva da poche altre distribuzioni, per le più diffuse, le librerie utili a ''Gambas'' sono elencate nel file di configurazione YAML a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas/-/blob/master/.gitlab-ci.yml&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': il tipo di desktop in uso non è importante per la compilazione, quello che conta riguardo alle librerie da scaricare è la '''distribuzione''' che è il modo in uso a GNU/Linux di chiamare il sistema operativo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per compilare Gambas ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
  '''Nota''': la compilazione va fatta su una distribuzione pulita, vale a dire che ''Gambas'' non può essere già presente anche se scaricato dai repository.&amp;lt;br&amp;gt;Se è già presente, prima di poter compilare ''Gambas'' occorre &amp;lt;u&amp;gt;rimuoverlo completamente&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Qui come esempio useremo una distribuzione basata su ''Arch Linux'', tipo ''Manjaro'', ''Endeavour'' oltre che naturalmente a ''Arch'' stesso.&amp;lt;br&amp;gt;&lt;br /&gt;
Attualmente ''Benoit Minisini'' utilizza ''Manjaro'' con ''KDE''.&lt;br /&gt;
&lt;br /&gt;
''Quanto qui descritto si può adattare a qualunque altra distribuzione ed è indirizzato a programmatori dilettanti come lo scrivente, se siete dei professionisti il consiglio è di dare un’occhiata comunque''.&amp;lt;br&amp;gt;&lt;br /&gt;
Quello che segue servirà a preparare la giusta lista dei comandi che poi daremo da terminale usando il copia e incolla.&lt;br /&gt;
&lt;br /&gt;
* Copiamo il codice ''yaml'' su cui è basata la nostra distribuzione.&amp;lt;br&amp;gt;Ad esempio se noi utilizzassimo ''Mint 22'', dovremmo copiare il codice yaml di ''Ubuntu Noble'' sulla quale ''Mint 22'' è basata.&amp;lt;br&amp;gt;'''Attenzione''': le librerie in ''yaml''  sono scritte in modo differente in base alla distribuzione, alcune sono incolonnate come quelle di ''Arch'' altre scritte sequenzialmente in un unica lunga stringa vedi ''Ubuntu'', dobbiamo accertarci di copiare tutto.&lt;br /&gt;
* Incolliamo il codice yaml su un file di testo con l’aiuto di un editor e andiamo a cambiarlo così:&lt;br /&gt;
** eliminiamo le prime quattro righe&lt;br /&gt;
** anteponiamo '''sudo''' davanti al/ai comando che installa le librerie, nel caso di ''Arch'' si dovrà dare due comandi come scritto nel file, se nella nostra distribuzione non abbiamo sudo ci dobbiamo trasformare in utente ''root'' per poter installare le librerie.&amp;lt;br&amp;gt;Dopo averle incollate le librerie vanno cambiate in modo che siano separate fra di loro da uno spazio eliminando così eventuali tabulazioni e/o gli accapo.&lt;br /&gt;
** Ora dipende da quale Gambas desideriamo scaricare e installare,  questo nuovo comando dobbiamo inserirlo, in una nuova riga, nel file di testo subito dopo le librerie e serve a copiare in una nuova cartella all’interno della nostra ''home'' il progetto ''Gambas'' da compilare, per la versione stabile il comando è:&amp;lt;br&amp;gt;git clone --branch stable --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo chiamata ''Master'' il comando è:&amp;lt;br&amp;gt;git clone --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambasdevel&lt;br /&gt;
** Dopo aver aggiunto il comando desiderato, occorre spostarsi all’interno della nuova cartella con uno di questi comandi, per la versione stabile il comando è:&amp;lt;br&amp;gt;cd gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo il comando è:&amp;lt;br&amp;gt;cd gambasdevel&lt;br /&gt;
** Gli altri comandi incollati rimangono invariati, tranne l'ultimo anch'esso preceduto da '''sudo''', vale a dire:&amp;lt;br&amp;gt;./reconf-all&amp;lt;br&amp;gt;GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl&amp;lt;br&amp;gt;make -j$(nproc)&amp;lt;br&amp;gt;sudo make install&lt;br /&gt;
&lt;br /&gt;
A questo punto, se avessimo scelto la versione di sviluppo (''Master''), il nostro file di testo dovrebbe assomigliare a questo, da notare che per facilitare la lettura, ho aggiunto degli spazi tra un comando e l’altro:&lt;br /&gt;
&lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm alure autoconf automake bzip2 zstd coreutils curl dbus gcc gdk-pixbuf2 git glew glib2 gmime3 gsl gst-plugins-base gstreamer gtk2 gtk3 imlib2 intltool libffi libgl libgnome-keyring mariadb-libs librsvg libsm libxcursor libxml2 libxslt libxtst mariadb make mesa ncurses pcre''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm pkg-config poppler poppler-glib postgresql postgresql-libs qt5-svg qt5-x11extras sdl2 sdl2_gfx sdl2_image sdl2_mixer sdl2_net sdl2_ttf sdl_mixer sdl_ttf smpeg sqlite unixodbc v4l-utils xdg-utils zlib gettext qt5-webengine webkit2gtk qt6-svg qt6-webengine mongo-c-driver''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
Non ci rimane che copiare e incollare, &amp;lt;u&amp;gt;un comando alla volta&amp;lt;/u&amp;gt;, nel terminale della nostra distribuzione che nel caso dell'esempio è ''Manjaro Linux''.&amp;lt;br&amp;gt;&lt;br /&gt;
Come detto se la nostra distribuzione non usa ''sudo'' occorre che al posto di sudo ci eleviamo a utente '''root''', senza mettere '''sudo''' nel comando.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per aggiornare ==&lt;br /&gt;
&lt;br /&gt;
Questo sistema è un po' drastico e se si ha padronanza di ''git'' possiamo anche saltarlo, occorre solo sapere che è l’unico sistema che garantisce l’aggiornamento sicuro di Gambas:&lt;br /&gt;
&lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make uninstall''&lt;br /&gt;
  &lt;br /&gt;
  ''cd''&lt;br /&gt;
  &lt;br /&gt;
  ''rm -rf gambasdevel/''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https&amp;amp;#058;//gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
'''Nota''': se usiamo la versione stabile dobbiamo sostituire ''gambasdevel'' con ''gambas-stable'' .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Note==&lt;br /&gt;
[1] È proprio il fatto di dover nascondere il codice per poterlo vendere che in Windows i programmi vengono distribuiti come binari (.exe).&amp;lt;br&amp;gt;&lt;br /&gt;
Sono decisamente facili da installare (meno che da repository) rispetto alla compilazione, ma dobbiamo ammettere che compilare è molto meno oneroso.&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Guide_della_comunit%C3%A0&amp;diff=40628</id>
		<title>Guide della comunità</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Guide_della_comunit%C3%A0&amp;diff=40628"/>
		<updated>2024-12-11T13:34:40Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Raccolta di guide sui componenti, sui metodi e sugli algoritmi del linguaggio Gambas, nonché su ogni altro argomento utile, scritti e mantenuti dalla comunità italiana Gambas-it&lt;br /&gt;
&lt;br /&gt;
== Array (Vettori) e Matrici ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Array: creazione, modifica e riempimento]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Array multidimensionali con numero determinato di elementi]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Array multidimensionali con numero indeterminato di elementi]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Array annidati]]&lt;br /&gt;
&lt;br /&gt;
* [[Array contenenti array di varie dimensioni]]&lt;br /&gt;
&lt;br /&gt;
* [[Array in linea]]&lt;br /&gt;
&lt;br /&gt;
* [[Accedere linearmente in scrittura ed in lettura ad una Matrice]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare ad un vettore i valori contenuti da un'area di memoria puntata da un Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare ciascuna cifra di un numero a un elemento di un vettore di tipo Byte]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare i byte dei dati di un numero agli elementi di un vettore di tipo Byte]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare un vettore ad una variabile di tipo Object]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare un vettore ad una variabile di tipo Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Configurazione, organizzazione ed impostazione dell'array secondo i sorgenti di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere quale elemento di un vettore contiene un determinato valore]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con i Puntatori i valori contenuti in un vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il valore numerico più alto contenuto da un vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la dimensione ed il numero di elementi di una Matrice]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in un array di tipo Stringa la quantità maggiore di caratteri contenuta nei suoi elementi]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in un array di tipo Stringa l'elemento che contiene la quantità maggiore di caratteri]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire i valori di tipo Byte di un vettore in valori di tipo Stringa]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Copie di variabili array]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare più elementi da un array]]&lt;br /&gt;
&lt;br /&gt;
* [[Emulare la funzione Asc() con il vettore di tipo Byte]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestione di una coda mediante array in modo circolare]]&lt;br /&gt;
&lt;br /&gt;
* [[Invertire l'ordine dei valori contenuti dagli elementi di un vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Invertire l'ordine nelle coppie di byte dell'area di memoria di un vettore con la funzione esterna swab()]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere e scrivere in un vettore mediante i Memory Stream]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il puntatore a una variabile vettoriale]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un vettore di tipo Byte da una Stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Porre a zero i valori contenuti da un Vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Proprietà ReadOnly dell'Array (proprietà di sola lettura)]]&lt;br /&gt;
&lt;br /&gt;
* [[Raccogliere il valore contenuto nell'ultimo elemento di indice non conosciuto di un vettore restituito da una funzione]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere in un vettore i dati di un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare un Vettore al posto di una Matrice]]&lt;br /&gt;
&lt;br /&gt;
== Balloon ==&lt;br /&gt;
&lt;br /&gt;
* [[Colorare il testo di un Balloon]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un'immagine in un Ballon]]&lt;br /&gt;
&lt;br /&gt;
* [[Posizionare arbitrariamente un Balloon]]&lt;br /&gt;
&lt;br /&gt;
== Classi ==&lt;br /&gt;
&lt;br /&gt;
===Classi in generale===&lt;br /&gt;
&lt;br /&gt;
* [[Accedere alla Struttura della risorsa &amp;quot;Classe&amp;quot;, come dichiarata nei sorgenti di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le risorse possedute da una Classe]]&lt;br /&gt;
&lt;br /&gt;
* [[Rendere gli elementi di una Classe richiamabili da un progetto Gambas esterno]]&lt;br /&gt;
&lt;br /&gt;
* [[Usare una Classe come fosse una Funzione]]&lt;br /&gt;
&lt;br /&gt;
===Classi particolari native===&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere una funzione personalizzata alla Classe nativa String]]&lt;br /&gt;
&lt;br /&gt;
* [[La classe Action]]&lt;br /&gt;
&lt;br /&gt;
===Classi specifiche===&lt;br /&gt;
&lt;br /&gt;
* [[Creare da codice una Classe specifica]]&lt;br /&gt;
&lt;br /&gt;
* [[Variabile del tipo di una Classe specifica creata]]&lt;br /&gt;
&lt;br /&gt;
* [[Vettore del tipo di una Classe specifica creata]]&lt;br /&gt;
 &lt;br /&gt;
====Classi particolari realizzate della Comunità Gambas-it.org====&lt;br /&gt;
&lt;br /&gt;
* [[Clib]]&lt;br /&gt;
&lt;br /&gt;
* [[csvbox]]&lt;br /&gt;
&lt;br /&gt;
* [[CTable]]&lt;br /&gt;
&lt;br /&gt;
* [[Fifo]]&lt;br /&gt;
&lt;br /&gt;
* [[GLibrary]]&lt;br /&gt;
&lt;br /&gt;
* [[GridViewUtil]]&lt;br /&gt;
&lt;br /&gt;
* [[PdfWriter]]&lt;br /&gt;
&lt;br /&gt;
* [[TrasfImpLett]]&lt;br /&gt;
&lt;br /&gt;
== Clipboard ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della classe Clipboard]]&lt;br /&gt;
&lt;br /&gt;
== Collection ==&lt;br /&gt;
&lt;br /&gt;
* [[Collection]]&lt;br /&gt;
&lt;br /&gt;
* [[Confronto Array di Strutture verso Collezione di Classi]]&lt;br /&gt;
&lt;br /&gt;
* [[Definizione esplicita di una Collection]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il valore attribuito a una chiave della Collection]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare un campo di una Collection in un'altra Collection]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare un Metodo o una Proprietà della Classe di un Oggetto inserito in una Collection]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare un'intera Collection nel campo di un'altra Collection]]&lt;br /&gt;
&lt;br /&gt;
== ColorInfo ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della classe ColorInfo]]&lt;br /&gt;
&lt;br /&gt;
== ColumnView ==&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere una colonna a una ColumnView]]&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere una riga a una ColumnView]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare colori allo sfondo ed al testo di una riga selezionata di una ColumnView]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare il testo a una cella della ColumnView]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare la larghezza delle colonne in una ColumnView]]&lt;br /&gt;
&lt;br /&gt;
== ComboBox ==&lt;br /&gt;
&lt;br /&gt;
* [[ComboBox che consente di posizionarsi sulla prima ricorrenza di un item quando si digitano le sue prime lettere]]&lt;br /&gt;
* [[ComboBox che mostra immagini anziché caratteri alfanumerici]]&lt;br /&gt;
* [[ComboBox: creare una lista da codice]]&lt;br /&gt;
* [[Impostare il colore del testo di ogni elemento della lista del ComboBox]]&lt;br /&gt;
* [[Impostare il colore dello sfondo del ComboBox]]&lt;br /&gt;
* [[Ridimensionare la larghezza della finestra a cascata di un ComboBox in base alla lunghezza testuale di un elemento della lista]]&lt;br /&gt;
* [[Scegliere da codice un elemento presente in un ComboBox]]&lt;br /&gt;
* [[Scegliere da codice un indice del ComboBox]]&lt;br /&gt;
&lt;br /&gt;
==Come Compilare Gambas==&lt;br /&gt;
* [[Compilare Gambas]]&lt;br /&gt;
&lt;br /&gt;
== Componenti ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Cosa è un Componente di Gambas]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Attivare un Componente dinamicamente da codice]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il nome del Componente di appartenenza di una Classe mediante i sorgenti di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le Classi possedute da un Componente]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare un Componente obsoleto]]&lt;br /&gt;
&lt;br /&gt;
=== Realizzazione dei Componenti in linguaggio Gambas ===&lt;br /&gt;
&lt;br /&gt;
* [[Come creare un Componente scritto in linguaggio Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Tutorial - creare un componente: il frame]]&lt;br /&gt;
&lt;br /&gt;
==== Componenti della Comunità Gambas-it.org ====&lt;br /&gt;
&lt;br /&gt;
* [[gb.strLib]]&lt;br /&gt;
&lt;br /&gt;
* [[gb.textpro]]&lt;br /&gt;
&lt;br /&gt;
* [[GridBox]]&lt;br /&gt;
&lt;br /&gt;
* [[INILib]]&lt;br /&gt;
&lt;br /&gt;
* [[InvBox]]&lt;br /&gt;
&lt;br /&gt;
* [[qrcodereader]]&lt;br /&gt;
&lt;br /&gt;
* [[XMLLib]]&lt;br /&gt;
&lt;br /&gt;
=== Realizzazione dei Componenti in linguaggio C ===&lt;br /&gt;
&lt;br /&gt;
* [[Creare un Componente per Gambas scritto in linguaggio C]]&lt;br /&gt;
&lt;br /&gt;
== CPU e Scheda Madre==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con alcune funzioni della libreria libc.so.6 il numero dei processori configurati e disponibili]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il numero dei processori presenti nel proprio calcolatore con la Proprietà System.Cores]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il numero dei processori presenti nel proprio calcolatore leggendo il file di sistema &amp;quot;cpuinfo&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la frequenza delle CPU mediante le funzioni esterne del API di Libcpufreq]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la risoluzione dei clock hardware con le risorse esterne dichiarate nel file header &amp;quot;time.h&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Controllare la temperatura della CPU con le sole funzioni di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Controllare la temperatura dell'hardware mediante le funzioni del API di libsensors]]&lt;br /&gt;
&lt;br /&gt;
* [[Generare arbitrariamente un errore &amp;quot;CPU Time Limit Exceeded&amp;quot; con la funzione esterna vlimit()]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni sulla CPU mediante l'API di Libavutil]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni sulla CPU mediante l'API di Libcpuid]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni generali sulla CPU con le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni generali sulla CPU con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare la frequenza delle CPU con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
== Creazione pacchetti di installazione ==&lt;br /&gt;
&lt;br /&gt;
* [[Creare un AppImage firmata di un progetto Gambas]]&lt;br /&gt;
&lt;br /&gt;
== DBus ==&lt;br /&gt;
&lt;br /&gt;
* [[Introduzione a DBus]]&lt;br /&gt;
&lt;br /&gt;
* [[Inviare dati da un programma Gambas ad un altro mediante le risorse del Componente DBus]]&lt;br /&gt;
&lt;br /&gt;
== Desktop - Scrivania ==&lt;br /&gt;
&lt;br /&gt;
* [[Far mostrare sulla Scrivania i messaggi della specifica Desktop Notifications mediante le funzioni esterne del API di Libnotify]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare con precisione il percorso ed il nome della Scrivania]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il valore di un pixel sulla Scrivania]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni sulle icone presenti sulla Scrivania]]&lt;br /&gt;
&lt;br /&gt;
== DesktopFile ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso del Metodo .RunExec()]]&lt;br /&gt;
&lt;br /&gt;
== DesktopWatcher ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della classe DesktopWatcher]]&lt;br /&gt;
&lt;br /&gt;
== DesktopWindow ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della classe DesktopWindow]]&lt;br /&gt;
&lt;br /&gt;
== Dialog ==&lt;br /&gt;
&lt;br /&gt;
* [[Caricare in un Dialog più file da aprire in sequenza]]&lt;br /&gt;
&lt;br /&gt;
* [[Far mostrare in un Dialog l'estensione dell'ultimo file precedentemente aperto]]&lt;br /&gt;
&lt;br /&gt;
* [[Far mostrare in un Dialog una particolare estensione di file]]&lt;br /&gt;
&lt;br /&gt;
* [[Filtrare contemporaneamente con il Dialog.Filter più estensioni di file]]&lt;br /&gt;
&lt;br /&gt;
* [[Preimpostare il percorso della finestra del Dialog]]&lt;br /&gt;
&lt;br /&gt;
* [[Ridimensionare la finestra del Dialog da codice]]&lt;br /&gt;
&lt;br /&gt;
== DirView - FileView ==&lt;br /&gt;
&lt;br /&gt;
* [[Copiare un file utilizzando gli oggetti DirView e FileView]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare con diversi colori i nomi dei file in una FileView]]&lt;br /&gt;
&lt;br /&gt;
== Drag &amp;amp; Drop ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Codice essenziale per effettuare il Drag-Drop di un'immagine da un Controllo grafico in un altro]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Codice essenziale per effettuare il Drag-Drop di un testo]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Mantenere durante il Drag&amp;amp;Drop il cursore del mouse nel punto dell'immagine ove si è cliccato]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare il contenuto di un file di testo con il solo Drop del file in un oggetto di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un'immagine con il Drop del suo file in una PictureBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il percorso di un file trasportato e rilasciato con Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare Oggetti grafici con il mouse all'interno di un Contenitore mediante Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
== DrawingArea ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Istruzioni essenziali per disegnare su una DrawingArea]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Calcolo e rappresentazione grafica in una DrawingArea del Seno e del Coseno]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare e distruggere un Controllo grafico in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare, spostare e distruggere un'immagine in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Curvare il testo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea dei punti]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea due immagini sovrapposte anche consentendo il cambio di opacità di quella disegnata sopra]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea l'intersezione perpendicolare di due linee]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea linee mediante codice]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea linee rette con il mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea sulla base dei punti cliccati un parallelogramma con angoli retti]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un carattere punto per punto]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un cerchio]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un eptagono regolare]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un esagono regolare]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un goniometro]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un ottagono regolare]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un pentagono regolare]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un poligono]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un rettangolo]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un rettangolo colorato con distinzione sfumata fra i colori]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un rombo]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un romboide]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea un triangolo]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea una pseudo-galleria rettangolare tridimensionale in prospettiva con effetto grafico di movimento in avanti]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare in una DrawingArea una spirale]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare un Button contenente un'icona e un testo mediante la DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare un misuratore analogico su una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Disegnare un orologio su una DrawingArea prendendo l'orario del sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Drag-Drop di un testo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Drag-Drop di un'immagine in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Evidenziare il puntatore del mouse quando si clicca sulla DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Far scorrere un testo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Generare un file immagine da una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Generare un file PDF da una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire in una DrawingArea che si esegua il codice presente nell'Evento &amp;quot;_Draw()&amp;quot; , qualora sia sollevato arbitrariamente più di una volta]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare l'opacità di un disegno in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare alcune sfumature di un colore in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il valore di un pixel in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'effetto della gomma per cancellare in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare direttamente ad un oggetto Image i dati grezzi dei pixel di una DrawingArea mediante le risorse del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare il testo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare qualsiasi elemento da disegnare in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un arco in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un cerchio disegnato in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un eptagono in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un esagono in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un ottagono in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un pentagono in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un quadrato ed un rettangolo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un rombo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un romboide in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un triangolo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare una figura piana intorno a una circonferenza in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare un'immagine sul proprio asse centrale in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere del testo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse il testo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse senza Drag&amp;amp;Drop un'immagine caricata in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse un cerchio in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse un Controllo grafico generato in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse un rettangolo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse un triangolo in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse un'ellisse in una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare il contenuto di una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
== File e Directory ==&lt;br /&gt;
&lt;br /&gt;
* [[Aprire un file mediante la Classe 'DesktopFile' con il programma al quale è associato]]&lt;br /&gt;
&lt;br /&gt;
* [[Arrestare temporaneamente l'intercettazione del flusso di dati da un file-device]]&lt;br /&gt;
&lt;br /&gt;
* [[Azzerare un gruppo di byte in un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Chiudere un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Comprimere un file in un file compresso .zip mediante le funzioni esterne del API di libzip]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere a quale applicazione è associato un tipo di file]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere caratteristiche generali dei file]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere ed impostare i permessi di un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere i permessi di un file mediante le funzioni esterne del API di libgio-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il file referenziato da un collegamento simbolico]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il mime-type di un file  mediante le funzioni esterne del API di libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il mime-type di un file  mediante le funzioni esterne del API di libmagic]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il mime-type di un file mediante le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il tipo di file mediante le funzioni esterne del API di libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il tipo di file mediante le funzioni esterne del API di libglib-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la data di accesso e di modifica di un file con le funzioni esterne del API di libgio-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la dimensione di un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire con la funzione g_filename_from_uri() di libglib-2.0 la URI di un file nel corrispondente identificativo comunemente usato]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire con la funzione g_filename_to_uri() di libglib-2.0 il percorso identificativo di un file nella sua corrispondente URI]]&lt;br /&gt;
&lt;br /&gt;
* [[Copiare ricorsivamente una cartella]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file e scrivervi dati con le funzioni esterne della libreria libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file bash]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un link simbolico di un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Controllare l'uguaglianza di due file mediante le funzioni esterne del API di libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Effettuare una copia di un file e verificarne la progressione]]&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare un byte all'interno di un file binario]]&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare un file mediante le funzioni esterne del API di GLib]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre con le funzioni del API di libzip i file contenuti da un file compresso .zip]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre da una cartella uno o più file nascosti]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre il percorso di un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre l'icona di un tipo di file]]&lt;br /&gt;
&lt;br /&gt;
* [[Evitare l'errore &amp;quot;Stream chiuso&amp;quot; dopo aver chiuso un flusso di dati]]&lt;br /&gt;
&lt;br /&gt;
* [[Identificare un tipo di file dalla sua estensione]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostazione dei permessi di un file con la funzione 'g_chmod' del API di libglib-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[L'oggetto File secondo i sorgenti di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere dati dai &amp;quot;File Descriptor&amp;quot; passati da funzioni esterne]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere il contenuto di una Directory mediante le risorse dichiarate nel file header &amp;quot;dirent.h&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere in una cartella con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere un file con READ]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere un file di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere un file di testo con carattere di fine riga di codifica MAC]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare le date di accesso e di modifica dell'inode di un file con le risorse esterne di utime.h]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare o eliminare una riga in un file di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Monitorare con le funzioni esterne del API di libgio-2.0 le modifiche apportate ad un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni generali sui file]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere all'apertura di un file un Puntatore anziché una variabile di tipo File]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il nome di un file mediante le funzioni esterne del API di libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il percorso di un file, associato a un programma .gambas, aprendolo con un doppio-clic]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il percorso di un file trasportato e rilasciato con Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il solo nome ed il solo percorso di un file con le funzioni esterne del API di Glib-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'intero percorso di un file mediante le funzioni esterne del API di libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la directory di appartenenza di un file mediante le funzioni esterne del API di libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un file coerente da dati con rappresentazione come stringa in memoria]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un numero dalla sua memorizzazione in formato Big-Endian]]&lt;br /&gt;
&lt;br /&gt;
* [[Percorso assoluto e percorso relativo dei file]]&lt;br /&gt;
&lt;br /&gt;
* [[Porre sotto osservazione con Read Watch due o più file]]&lt;br /&gt;
&lt;br /&gt;
* [[Raccogliere solo alcune righe all'interno di un file di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Reindirizzare lo standard output con Output To]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare un file dalla Home]]&lt;br /&gt;
&lt;br /&gt;
* [[Rinominare un file mediante le funzioni esterne del API di GLib]]&lt;br /&gt;
&lt;br /&gt;
* [[Salvare i byte-dati di un file in un file di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Salvare in un file le stringhe contenute in un vettore di tipo Stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere con le risorse del API di Glib se il percorso di un file è un percorso assoluto]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere in tempo reale se un file di nome conosciuto viene modificato o distrutto]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere l'ordine dei byte utilizzato dal sistema per salvare i dati]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quale file è stato creato per ultimo]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un file di nome sconosciuto è stato creato o distrutto]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un file esiste mediante le funzioni esterne del API di libgio]]&lt;br /&gt;
&lt;br /&gt;
* [[Scaricare un file da internet]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere all'interno di un file di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere in un file i dati presenti in un vettore di tipo Byte]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere in un file solo alcuni dati presenti in un'area riservata di memoria]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere un file di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare un file nel Cestino e ripristinarlo nella sua Cartella di origine]]&lt;br /&gt;
&lt;br /&gt;
* [[Troncare un file ad una determinata dimensione con la funzione esterna truncate()]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare l'esistenza di una directory]]&lt;br /&gt;
&lt;br /&gt;
== FileChooser ==&lt;br /&gt;
&lt;br /&gt;
* [[Impedire in un FileChooser che facendo doppio-clic su un file, ne venga richiesta la sovrascrittura]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare da codice la modalità di visualizzazione interna dei file in un FileChooser]]&lt;br /&gt;
&lt;br /&gt;
== Font ==&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare Font senza installarli nel sistema]]&lt;br /&gt;
&lt;br /&gt;
== Form, Finestre e Contenitori ==&lt;br /&gt;
&lt;br /&gt;
* [[Chiudere tutte le finestre aperte da un applicativo]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un Form mediante la Classe Window]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare una finestra e disegnarvi una scacchiera con le funzioni del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare una finestra ed inserirvi del testo con le funzioni esterne di Libcaca]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare una finestra mediante le funzioni del API di GTK+3]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare una finestra mediante le funzioni del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare una finestra mediante le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare una finestra mediante le funzioni del API di XCB]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file immagine dagli oggetti presenti in un Contenitore]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un Form trasparente]]&lt;br /&gt;
&lt;br /&gt;
* [[Dimensionare il Form o un'altra finestra considerando la presenza della barra delle applicazioni sulla Scrivania]]&lt;br /&gt;
&lt;br /&gt;
* [[Evitare la perdita di memoria chiudendo forzatamente un Form]]&lt;br /&gt;
&lt;br /&gt;
* [[Evento Form_Activate e sua possibile sostituzione]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire l'apertura di un Form secondario più di una volta]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire la chiusura di un Form quando si clicca sulla &amp;quot;X&amp;quot; nell'angolo in alto a destra]]&lt;br /&gt;
&lt;br /&gt;
* [[Inglobare un Form o una finestra in un altro suo Form o finestra del medesimo programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Mantenere il Form di un'applicazione Gambas sempre in primo piano]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare una immagine JPEG in una finestra con le funzioni del API di X11 e di Libjpeg]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un'immagine del Form]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare ad un Form un valore diverso da un Intero alla chiusura di un Form secondario]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare valori e altre risorse da un Form principale a un Form secondario]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare valori e altre risorse da un Form secondario a un Form principale]]&lt;br /&gt;
&lt;br /&gt;
* [[Rapporto fra ShowModal ed il Metodo Form.Close]]&lt;br /&gt;
&lt;br /&gt;
* [[Referenziare in modo appropriato lo spazio all'interno di un Contenitore rispetto ai suoi Oggetti figli]]&lt;br /&gt;
&lt;br /&gt;
* [[Restituire ad un Form un valore passato ad Form secondario]]&lt;br /&gt;
&lt;br /&gt;
* [[Semitrasparenza di un Form]]&lt;br /&gt;
&lt;br /&gt;
* [[Simulare il posizionamento di alcuni ToolButton sulla barra del titolo della finestra]]&lt;br /&gt;
&lt;br /&gt;
* [[Sollevare l'evento _Resize al ridimensionamento di un Form secondario]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare un Form con il mouse sulla Scrivania]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare se un Form è attivo]]&lt;br /&gt;
&lt;br /&gt;
== Funzioni ==&lt;br /&gt;
&lt;br /&gt;
* [[Differenza fra Sub, Procedure e Function]]&lt;br /&gt;
&lt;br /&gt;
* [[Emulare i Puntatori a Funzione del linguaggio C mediante gli Oggetti]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestire Funzioni come oggetti]]&lt;br /&gt;
&lt;br /&gt;
* [[Passaggio di un argomento per 'indirizzo' ad una Funzione]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare a una funzione un numero imprecisato di argomenti]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere una Funzione]]&lt;br /&gt;
&lt;br /&gt;
== Gambas ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la versione di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le parole-chiave usate in Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Far apparire un commento a una risorsa nella finestrina guida nell'editor del codice]]&lt;br /&gt;
&lt;br /&gt;
* [[Icone messe a disposizione da Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare in un file compilato .gambas gli eventuali file esterni in esso allegati]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare la cartella principale dei file sorgenti di Gambas contenente la sub-cartella di un file immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[La cartella ove sono salvati in copia i file delle informazioni della wiki ufficiale sulle risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'indirizzo effettivo dei file ospitati in un progetto Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Visualizzare tutti gli elementi rilevanti di Gambas contenuti dal codice di un progetto]]&lt;br /&gt;
&lt;br /&gt;
== Gambas con HTML e JavaScript ==&lt;br /&gt;
&lt;br /&gt;
* [[Gambas con HTML e JavaScript - Uso necessario dell'oggetto WebView]]&lt;br /&gt;
&lt;br /&gt;
==== Applicazioni specifiche ====&lt;br /&gt;
&lt;br /&gt;
* [[Creare un ComboBox in una tabella e passare i suoi valori selezionati al codice Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire dati con un InputBox mediante codice HTML]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere un valore generato da un codice HTML/JavaScript]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare una finestra tipo MessageBox mediante codice HTML]]&lt;br /&gt;
&lt;br /&gt;
* [[Testo scorrevole dall'alto verso il basso e viceversa]]&lt;br /&gt;
&lt;br /&gt;
== Gambas e Arduino ==&lt;br /&gt;
&lt;br /&gt;
* [[Far interagire Gambas con Arduino]]&lt;br /&gt;
&lt;br /&gt;
* [[Inviare dati ad Arduino]]&lt;br /&gt;
&lt;br /&gt;
* [[Ricevere dati da Arduino]]&lt;br /&gt;
&lt;br /&gt;
* [[Ricevere da Arduino un tipo di dato di dimensione superiore al Byte]]&lt;br /&gt;
&lt;br /&gt;
* [[Ricevere una Struttura da Arduino]]&lt;br /&gt;
&lt;br /&gt;
== Gambas3 &amp;amp; SubVersion ==&lt;br /&gt;
&lt;br /&gt;
* [[Gambas3 &amp;amp; SubVersion]]&lt;br /&gt;
&lt;br /&gt;
== Gestione Basi di Dati ==&lt;br /&gt;
&lt;br /&gt;
* [[Installazione Server PostgreSQL]]&lt;br /&gt;
&lt;br /&gt;
== Gestione dei dati audio e dei file audio ==&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare i beat per minuto (BpM) di un file audio con le funzioni esterne del API di Libaubio]]&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare la durata di un file audio WAV]]&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare la durata di un file MP3 con le sole risorse native di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare la potenza di picco e di ampiezza di un file WAV con le funzioni esterne del API di Libaudiofile]]&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare la quantità di dati audio grezzi di un file WAV necessari per eseguire tot secondi di audio]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere alcune informazioni generali di un file OGG con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il bitrate di un file MP3 con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in tempo reale con &amp;quot;proc...fdinfo&amp;quot; la quantità dei dati elaborati di un file audio]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in tempo reale la quantità di frame audio processati dalla scheda audio]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la frequenza di campionamento di un file MP3 con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la quantità di canali di un file MP3 con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la versione e il layer di un file MP3 con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere quale file audio un programma sta eseguendo]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file audio in formato OggVorbis con le funzioni esterne del API di libfishsound, libsndfile e liboggz]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file audio in formato OggVorbis con le funzioni esterne del API di libsndfile]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file audio in testo con le risorse del API di Sndfile]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file OggVorbis in WAV con le funzioni esterne del API di Libvorbisidec]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file OggVorbis in WAV ed estrarne anche informazioni con le funzioni esterne del API di VorbisFile]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file WAV in formato AAC con le funzioni esterne del API di Faac]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file WAV in formato MP3 con le funzioni esterne del API di Lame]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file WAV in formato OggVorbis con le funzioni esterne del API di libvorbisfile, libvorbisenc e libogg]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare il blocco d'intestazione di un file WAV avendo dati audio grezzi]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;FONT Color=blue&amp;gt;[[Creare un Client di Jack con le funzioni esterne del API di libjack]]&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Creare un Client di Jack con le funzioni esterne del API di libJack e GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file WAV da un file .orc e un file .sco di Csound con le funzioni esterne del API di libcsound64]]&lt;br /&gt;
&lt;br /&gt;
* [[Decomprimere e decodificare un file mp3 con le funzioni esterne del API di AVbin]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio ed estrarne informazioni mediante le funzioni esterne del API di libcsfml]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante il codice html]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante il Metodo .Open() della Classe Desktop]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Eseguire un file audio mediante l'oggetto MediaView del componente gb.media.form]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante le funzioni esterne del API di Alsa e SndFile]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante le funzioni esterne del API di GSound]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante le funzioni esterne del API di libaudiofile e di Alsa]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante le funzioni esterne del API di Mpv]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante le funzioni esterne del API di PortAudio e SndFile]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file audio mediante le funzioni esterne del API di Rhythmbox]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file mp3 usando l'API di Smpeg]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file WAV mediante le funzioni esterne del API di Flite]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file WAV mediante le funzioni esterne del API di libaudio e di Alsa]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre da un file FLAC i dati dell'immagine contenuta]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre da un file MP3 i soli dati audio grezzi mediante la libreria Libmad]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre da un file WAV i dati audio grezzi mediante le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati audio da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i TAG da un file MP3 con le funzioni esterne del API di Id3tag]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i TAG da un file MP3 con le sole funzioni di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i TAG da un file OggVorbis con le sole funzioni di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i TAG da un file SPC con le funzioni esterne del API di Libspctag]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni da un file .wav]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni da un file audio MOD con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni da un file MP3 con le funzioni esterne del API di Smpeg]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni da un file OggVorbis con le funzioni esterne del API di Vorbisfile]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni da un file VOC con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni e TAG da file audio con le funzioni esterne del API di Libtag_c]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni e TAG da un file audio con le funzioni esterne del API di SndFile]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni e TAG da un file MP3 con le funzioni esterne del API di Avbin]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni generali da un file audio aiff con le sole funzioni di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni generali da un file audio con le funzioni esterne del API di Libaudiofile]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni generali da un file audio flac]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre l'immagine contenuta in un file MP3 con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Fondere insieme due file WAV]]&lt;br /&gt;
&lt;br /&gt;
* [[Generare un'onda sinusoidale]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare le frequenze presenti in un'onda audio con le funzioni esterne della libreria Libaubio]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[La gestione dei file audio mediante il componente gb.openal]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[La gestione dei file audio mediante il componente gb.sdl2.audio]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file audio mediante le funzioni esterne del API di Allegro 5]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file audio mediante le funzioni esterne del API di Canberra]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file audio mediante le funzioni esterne del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file audio mediante le funzioni esterne del API di MikMod]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file audio mediante le funzioni esterne del API di Mpeg3]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file audio mediante le funzioni esterne del API di mpg123]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file audio mediante le funzioni esterne del API di Sox]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[La gestione dell'audio e dei file audio mediante il componente gb.media]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di ALSA]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di LibAo]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di OpenAL]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di Opus]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di PulseAudio]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di Sndio]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dell'audio e dei file audio mediante le funzioni esterne del API di VLC]]&lt;br /&gt;
&lt;br /&gt;
* [[La struttura di un file MPEG]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il volume audio di un file WAV mediante le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il volume e la frequenza di campionamento di file audio WAV e AIFF con l'API di Libaudio]] &lt;br /&gt;
&lt;br /&gt;
* [[Modificare la frequenza di campionamento di un file audio con l'API di Libresample e Libsndfile]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare la frequenza di campionamento di un file audio con l' API di Libsamplerate e Libsndfile]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un file WAV da un file Midi con le funzioni esterne del API di FluidSynth]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un file WAV da un file Midi con le funzioni esterne del API di WildMidi]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere con le funzioni esterne del API di Rhythmbox se un file contiene dati audio e/o video]]&lt;br /&gt;
&lt;br /&gt;
* [[Suddividere in due o più parti coerenti e funzionali un file audio mp3]]&lt;br /&gt;
&lt;br /&gt;
* [[Unire due file WAV]]&lt;br /&gt;
&lt;br /&gt;
* [[Visualizzare la forma d'onda di un file WAV]]&lt;br /&gt;
&lt;br /&gt;
==== Ascolto radio da flusso web ====&lt;br /&gt;
&lt;br /&gt;
* [[Registrare in tempo reale il flusso di dati audio di una radio WEB con le risorse della Classe HttpClient di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Registrare in tempo reale in un file l'audio di una radio WEB con le funzioni esterne del API di VLC]]&lt;br /&gt;
&lt;br /&gt;
* [[Riproduzione dell'audio di radio WEB con il Componente gb.media]]&lt;br /&gt;
&lt;br /&gt;
* [[Riproduzione dell'audio di radio WEB con le funzioni esterne del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Riproduzione dell'audio di radio WEB con le funzioni esterne del API di VLC]]&lt;br /&gt;
&lt;br /&gt;
* [[Riproduzione dell'audio di radio WEB con l'oggetto WebView e con il codice HTML]]&lt;br /&gt;
&lt;br /&gt;
* [[Riproduzione e contemporanea registrazione dell'audio di radio WEB mediante il Componente gb.media]]&lt;br /&gt;
&lt;br /&gt;
==== Codifica del parlato e decodifica dei dati codificati ====&lt;br /&gt;
&lt;br /&gt;
* [[Codifica del parlato mediante le funzioni esterne del API di Speex]]&lt;br /&gt;
&lt;br /&gt;
* [[Decodifica dei dati precedentemente codificati mediante le funzioni esterne del API di Speex]]&lt;br /&gt;
&lt;br /&gt;
==== Dal testo al parlato (Text-To-Speech) ====&lt;br /&gt;
&lt;br /&gt;
* [[&amp;quot;Dal testo al parlato&amp;quot; mediante le funzioni esterne del API di eSpeack]]&lt;br /&gt;
&lt;br /&gt;
* [[&amp;quot;Dal testo al parlato&amp;quot; mediante le funzioni esterne del API di Pico TTS]]&lt;br /&gt;
&lt;br /&gt;
* [[&amp;quot;Dal testo al parlato&amp;quot; mediante le funzioni esterne del API di Speech-Dispatcher]]&lt;br /&gt;
&lt;br /&gt;
==== I/O audio ====&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di ALSA i dispositivi audio presenti nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di PortAudio i dispositivi audio presenti nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di RtAudio i dispositivi audio presenti nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di SDL2 i dispositivi audio presenti nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Rilevare se la scheda audio sta processando dati audio]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere con le funzioni esterne di ALSA quali schede audio sono installate nel computer]]&lt;br /&gt;
&lt;br /&gt;
== Gestione dei dati MIDI e dei file ''.mid''==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la durata di un file Midi con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la durata di un file Midi mediante le funzioni esterne del API di Allegro]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la durata in secondi del Tempo Delta fra due Eventi Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la lunghezza in byte di ciascuna traccia MTrk di un file Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere quale file Midi un programma sta eseguendo]]&lt;br /&gt;
&lt;br /&gt;
* [[Conversione del Tempo Delta fra due eventi Midi dai secondi nel valore esadecimale in formato &amp;quot;a lunghezza variabile&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire i dati grezzi delle note del messaggio Midi &amp;quot;NoteOn&amp;quot; nei corrispondenti simboli del protocollo ABC di notazione musicale]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un semplice Client Midi di Jack]]&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare una traccia da un file MIDI]]&lt;br /&gt;
&lt;br /&gt;
* [[Emulare con il Midi il suono del bip prodotto dall'altoparlante del PC]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file MIDI mediante il codice html]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Eseguire un file MIDI mediante il componente gb.openal]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Eseguire un file MIDI mediante il componente gb.sdl2.audio]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file MIDI mediante il Metodo .Open() della Classe Desktop]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Eseguire un file MIDI mediante l'oggetto MediaView del componente gb.media.form]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati degli eventi Midi da un file Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati MIDI da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati Midi dal file audio AIFF con le sole funzioni di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre il testo da un file Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni da un file Midi con le sole funzioni di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Fondere insieme due file MIDI]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestione del MIDI con ALSA]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestione del MIDI con O.S.S.]] (&amp;lt;FONT color=darkred&amp;gt;obsoleto&amp;lt;/font&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare dati Midi grezzi con le funzioni esterne del API di RtMidi]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare dati Midi grezzi con le funzioni esterne del API di Sndio]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare ed inviare dati Midi grezzi con le funzioni esterne del API di PortMidi]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[La gestione dei dati Midi e dei file MIDI mediante il componente gb.media]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei dati Midi mediante le funzioni esterne del API di Libsmf]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei dati Midi senza l'uso delle funzioni di Alsa]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file MIDI mediante le funzioni esterne del API di Fluidsynth]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file MIDI mediante le funzioni esterne del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file MIDI mediante le funzioni esterne del API di OpenAl]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file MIDI mediante le funzioni esterne del API di Rhythmbox]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file MIDI mediante le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file MIDI mediante le funzioni esterne del API di VLC]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione dei file MIDI mediante le funzioni esterne del API di WildMidi]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare i dati del blocco d'intestazione e delle tracce di un file Midi con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la frequenza corrispondente ad una nota Midi e viceversa]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare la corrispondenza fra il numero di tracce dichiarato nel file Midi e quelle effettive]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare l'integrità dei dati del blocco d'intestazione di un file Midi]]&lt;br /&gt;
&lt;br /&gt;
==== I/O Midi ====&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di ALSA i dispositivi Midi presenti nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di PortMidi le porte Midi disponibili nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di RtMidi le porte Midi disponibili nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le funzioni esterne di TSE3 le porte Midi disponibili nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere i Client Midi di ALSA correnti attivi nel sistema ]]&lt;br /&gt;
&lt;br /&gt;
====Gambas, Midi e Arduino====&lt;br /&gt;
&lt;br /&gt;
* [[Inviare dati Midi da Arduino a Gambas]]&lt;br /&gt;
&lt;br /&gt;
====Gestione dei file soundfont bank====&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file soundfont bank sf2 in un file WAV con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre da un file sf2 i dati audio di ciascun suono campionato e creare un file wav]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre informazioni generali dai tag di un file soundfont bank sf2 con le sole funzioni di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare i nomi e le rispettive posizioni degli strumenti musicali in un file sf2 con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un file di dati audio grezzi da un file .pat]]&lt;br /&gt;
&lt;br /&gt;
==== Informazioni e risorse sul Midi ====&lt;br /&gt;
&lt;br /&gt;
* [[Il protocollo Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[La struttura di un file Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[Realizzazione dispositivi Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[Siti web sul Midi]]&lt;br /&gt;
&lt;br /&gt;
* [[Sulla nuova versione Midi 2.0]]&lt;br /&gt;
&lt;br /&gt;
== Gestione dei file ODT ==&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre il file thumbnail contenuto nel file odt]]&lt;br /&gt;
&lt;br /&gt;
* [[Unire più file ODT in un unico file ODT]]&lt;br /&gt;
&lt;br /&gt;
== Gestione dei file PDF ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Codice essenziale per mostrare un file PDF con le risorse del Componente gb.poppler]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Cercare una parola in una pagina di un file PDF con le risorse del Componente gb.poppler]]&lt;br /&gt;
&lt;br /&gt;
* [[Comprimere un file PDF con le funzioni esterne del API di Ghostscript]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire in immagine una parte di una pagina PDF con le risorse del Componente gb.poppler]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file PNG in PDF con le funzioni del API di Cairo]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire una pagina di un file PDF in una immagine con le risorse del Componente gb.poppler]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Creare un file PDF con la proprietà .OutputFile della Classe Printer]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file PDF con le funzioni esterne del API di Cairo]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file PDF con le funzioni esterne del API di Haru]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file PDF con le funzioni esterne della libreria PDFGen]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Creare un file PDF con le risorse del Componente gb.cairo]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file PDF da un file immagine con le risorse del Componente gb.cairo]]&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare i dati immagine da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati audio da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati MIDI da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati video da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre testo e immagini da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Stampare un file PDF]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Struttura di un file PDF]]&lt;br /&gt;
&lt;br /&gt;
== Gestione dei file PS ==&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file PS con le risorse del API di Cairo]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file PS con le risorse del Componente gb.cairo]]&lt;br /&gt;
&lt;br /&gt;
== Gestione dei file RTF ==&lt;br /&gt;
&lt;br /&gt;
* [[Documentazione per la gestione dei file di testo RTF]]&lt;br /&gt;
&lt;br /&gt;
== Gestione del CD e del DVD ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il numero di titoli e di capitoli presenti in un DVD video con le funzioni del API di libdvdread]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero di settori di un CD/DVD in ore,minuti,secondi con le funzioni del API Libdiscid]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire una traccia di un CD-Audio con le risorse del API di libvlc]] &lt;br /&gt;
&lt;br /&gt;
* [[Eseguire una traccia di un CD-Audio con le risorse di linux/cdrom.h e le funzioni esterne di ALSA]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati presenti in un CD-Audio con le risorse di linux/cdrom.h]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare in GNOME il percorso contenente i file delle tracce di un CD-audio]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[La gestione del CD e del DVD mediante il Componente gb.media]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[La gestione del CD e del DVD mediante la funzione esterna 'gst_parse_launch()' di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione del CD e del DVD mediante le funzioni del API di libcdio]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione del CD e del DVD mediante le funzioni del API di SDL]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni di un CD con le funzioni del API di libcdaudio]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni di un CD con la funzione ioctl()]]&lt;br /&gt;
&lt;br /&gt;
== Gestione della Pen-Drive ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere i dispositivi pen-drive usb montati sul sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il contenuto di una pen-drive mediante le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
== Gestione delle immagini e dei colori ==&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere il canale Alfa a un Oggetto Image privo]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare a un Oggetto ''Image'' i valori pixel contenuti in un'area di memoria puntata da un Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare a un Oggetto ''Image'' i valori pixel contenuti in un vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Cancellare una immagine in una PictureBox o in una ImageView]]&lt;br /&gt;
&lt;br /&gt;
* [[Caricare in un Controllo grafico i file immagine come Picture]]&lt;br /&gt;
&lt;br /&gt;
* [[Caricare in un Oggetto grafico le icone messe a disposizione da Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Caricare un file di formato TIFF e da questo creare un file immagine di altro formato con l'API di GDK_PixBuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Catturare un'immagine con una webcam mediante le funzioni esterne del API di libsane]]&lt;br /&gt;
&lt;br /&gt;
* [[Catturare un'immagine con una webcam mediante le funzioni esterne del API di libv4l2]]&lt;br /&gt;
&lt;br /&gt;
* [[Cliccare in un oggetto qualsiasi o in una immagine suddivisi in rettangoli]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Come Gambas gestisce le immagini]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Configurazione, organizzazione ed impostazione dell'oggetto Image secondo i sorgenti di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere i formati immagine disponibili con GTK mediante le funzioni del API di GDK-PixBuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in modo sicuro il formato di un file immagine mediante le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire il formato RGBA di un colore nei corrispondenti valori decimale ed esadecimale]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire il valore di un colore da RGB in HSV]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire il valore di un colore in RGBA]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire immagini RAW di fotocamere digitali mediante le funzioni esterne del API di Libraw]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file immagine di un qualsiasi formato in un file immagine TIFF mediante le funzioni esterne del API di Libgdk_pixbuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file immagine PCX in un file immagine PNG mediante le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un'immagine a colori in un'immagine a scala di grigi mediante le funzioni esterne del API di Libgdk_pixbuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un'immagine da un formato ad un altro mediante le funzioni esterne del API di FreeImage]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un'immagine da un formato ad un altro mediante le funzioni esterne del API di Imlib2]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un'immagine in un file immagine di formato ICO mediante le funzioni esterne del API di Libgdk_pixbuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un oggetto di tipo &amp;quot;Image&amp;quot; in un file di formato TIFF o ICO con le funzioni esterne del API di Libgdk_pixbuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare da codice un'immagine trasparente]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file immagine da dati immagine grezzi mediante le funzioni del API di Imlib2]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un'immagine senza avere dati immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[Curvare la linea di testo in un oggetto Image]]&lt;br /&gt;
&lt;br /&gt;
* [[Decomprimere un file immagine jpeg per ottenerne i dati grezzi mediante le funzioni esterne del API di libjpeg]]&lt;br /&gt;
&lt;br /&gt;
* [[Desaturare un colore]]&lt;br /&gt;
&lt;br /&gt;
* [[Elenco dei nomi dei colori e i corrispondenti valori delle Costanti della Classe Color utilizzati da Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Elenco dei nomi dei colori e i corrispondenti valori RGB sotto X Window]]&lt;br /&gt;
&lt;br /&gt;
* [[Fondere due immagini in una sola]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestione delle immagini con le risorse di Gambas ma senza attivazione dei Componenti che fanno riferimento alle librerie grafiche QT e GTK]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestire un oggetto Image agendo direttamente sulle risorse dei sorgenti Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Immagine di sfondo al testo in una TextEdit ed in una TextLabel]]&lt;br /&gt;
&lt;br /&gt;
* [[Immagine scorrevole]]&lt;br /&gt;
&lt;br /&gt;
* [[Immagine tratta dal WEB resa lampeggiante]]&lt;br /&gt;
&lt;br /&gt;
* [[Imporre un colore uniforme semitrasparente su una immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare i colori dei pixel di una immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare i valori RGBA dei pixel di una immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare il colore di un determinato pixel]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire del testo in una Image ed in una Picture]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire in un'immagine uno sfondo colorato mediante le funzioni esterne del API di Libgdk_pixbuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un'immagine all'interno di un'altra immagine mediante le funzioni esterne del API di Libgdk_pixbuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere le informazioni di una Image dalle sue risorse dei sorgenti di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Modi di caricare un'immagine di tipo ''Picture'']]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare i colori dei pixel di un'immagine con la proprietà .Data della Classe Image ed i Memory Stream]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il colore di un pixel di un'immagine se esso è minore o maggiore di un dato valore]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare l'opacità di un'immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare le dimensioni di una Image usando il suo Metodo .Stretch]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un'immagine con funzioni del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un'immagine con il Controllo WebView]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un'immagine nella finestra di un Editor di testo con funzioni del API di X11 e Imlib2]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare una parte di un'immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni su file immagine JPEG con le funzioni del API di libjpeg]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni su un file immagine PNG con le funzioni del API di libpng]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni sul file immagine con le funzioni del API di GTK+3 e GDK-PixBuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere dati grezzi di un file immagine mediante le funzioni del API di GDK-PixBuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'effettivo valore del colore del pixel individuato con la Proprietà vettoriale Image.Pixels]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere Metadati Exif da un'immagine JPEG con le risorse del API di libexif]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un file immagine PNG da un'immagine di formato SVG]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un file PDF da una Image]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere una schermata (&amp;quot;screenshot&amp;quot;) con Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere una schermata (screenshot) del desktop con le risorse del API di X11 e di Cairo]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere una schermata (screenshot) del desktop con le risorse del API di X11 e di Imlib2]]&lt;br /&gt;
&lt;br /&gt;
* [[Rendere trasparente una immagine in base ad un colore specifico]]&lt;br /&gt;
&lt;br /&gt;
* [[Ridimensionare e mostrare un'immagine in base al punto ove si è cliccato con il puntatore del mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare e ribaltare sul proprio asse una immagine con le funzioni del API di FreeImage]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare specularmente una immagine ed un carattere]]&lt;br /&gt;
&lt;br /&gt;
* [[Ruotare una immagine sul proprio asse centrale]]&lt;br /&gt;
&lt;br /&gt;
* [[Salvare e richiamare i dati di un file immagine con Settings]]&lt;br /&gt;
&lt;br /&gt;
* [[Salvare un file immagine con le funzioni del API di GDK-PixBuf]]&lt;br /&gt;
&lt;br /&gt;
* [[Salvare una Image come file immagine]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti pixel occupa un testo in un'immagine mediante le funzioni del API di Imlib2]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Scaricare una immagine da un sito internet]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Scaricare una immagine dal sito &amp;quot;Cover Art Archive&amp;quot; mediante le funzioni esterne della libreria libcoverart]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare con il mouse un'immagine all'interno di una PictureBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere un testo in un'immagine mediante le funzioni del API di Imlib2]]&lt;br /&gt;
&lt;br /&gt;
=== Gestione delle immagini con CAIRO ===&lt;br /&gt;
&lt;br /&gt;
* [[Caricare un Oggetto ''Image'' direttamente in una ''ImageView'' con gb.cairo]]&lt;br /&gt;
* [[Convertire un file immagine in un file PNG con le risorse del Componente gb.cairo]]&lt;br /&gt;
* [[Convertire un file PNG in PDF con le funzioni del API di Cairo]]&lt;br /&gt;
* [[Convertire un file PNG in SVG con le risorse del Componente gb.cairo]]&lt;br /&gt;
* [[Creare file PNG con le risorse del Componente gb.cairo]]&lt;br /&gt;
* [[Creare file PNG con le funzioni esterne del API di Cairo e di Pango]]&lt;br /&gt;
* [[Creare file PNG con le funzioni esterne del API di Cairo]]&lt;br /&gt;
* [[Creare un file immagine PNG trasparente con le funzioni esterne del API di Cairo]]&lt;br /&gt;
* [[Ridurre le dimensioni di una immagine con il Metodo &amp;quot;.Scale()&amp;quot; del Componente gb.cairo]]&lt;br /&gt;
* [[Spostare il testo con il mouse all'interno dell'area grafica con la Classe Cairo]]&lt;br /&gt;
&lt;br /&gt;
=== Gestione delle immagini con il Componente gb.media ===&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le dimensioni di una immagine mediante il Componente gb.media]]&lt;br /&gt;
* [[Convertire i formati immagine mediante il Componente gb.media]]&lt;br /&gt;
* [[Effetto caleidoscopico di un'immagine PNG con il Componente gb.media]]&lt;br /&gt;
* [[Estrarre e salvare singole immagini da una ripresa video mediante WebCam effettuata con il Componente gb.media]]&lt;br /&gt;
* [[Estrarre e salvare singole immagini durante l'esecuzione di un file video mediante il Componente gb.media]]&lt;br /&gt;
* [[Leggere codici a barre con una webcam mediante il Componente gb.media]]&lt;br /&gt;
* [[Mostrare un'immagine mediante il Componente gb.media]]&lt;br /&gt;
* [[Trasformare un'immagine in ascii art mediante il Componente gb.media]]&lt;br /&gt;
&lt;br /&gt;
=== Gestione delle immagini con ImageMagick ===&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file immagine in un altro formato immagine con le funzioni esterne del API di ImageMagick]]&lt;br /&gt;
* [[Modificare la risoluzione in PPI di un'immagine mediante le funzioni esterne del API di ImageMagick]]&lt;br /&gt;
* [[Ridimensionare un'immagine mediante le funzioni esterne del API di ImageMagick]]&lt;br /&gt;
* [[Ruotare un'immagine mediante le funzioni esterne del API di ImageMagick]]&lt;br /&gt;
* [[Sfumare radialmente un'immagine mediante le funzioni esterne del API di ImageMagick]]&lt;br /&gt;
* [[Spostare il contenuto all'interno di un'immagine mediante le funzioni esterne del API di ImageMagick]]&lt;br /&gt;
&lt;br /&gt;
=== Gestione delle immagini e dei file di tipo GIF ===&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file GIF in un file di formato OGV, Matroska e MP4 mediante il Componente gb.media]]&lt;br /&gt;
* [[Convertire un file immagine in un file immagine di tipo GIF con le funzioni esterne del API di LibFreeImage]]&lt;br /&gt;
* [[Creare file GIF con le funzioni esterne del API di Libplot]]&lt;br /&gt;
* [[Creare una GIF animata con le funzioni esterne del API di Libplot]]&lt;br /&gt;
* [[Creare un file immagine GIF con sfondo colorato mediante le funzioni del API di GIFLIB]]&lt;br /&gt;
* [[Creare un file immagine trasparente di tipo GIF con le funzioni del API di GIFLIB]]&lt;br /&gt;
* [[Disegnare e salvare un'immagine di tipo GIF con le funzioni del API di GifLib]]&lt;br /&gt;
* [[Estrarre i fotogrammi che compongono un file immagine di tipo GIF animata]]&lt;br /&gt;
* [[Estrarre informazioni da una GIF animata relative al tempo di esecuzione dei fotogrammi]]&lt;br /&gt;
* [[Modificare il colore di sfondo di un'immagine GIF con le funzioni del API di GifLib]]&lt;br /&gt;
* [[Ottenere alcune informazioni su file immagine GIF con le funzioni del API di GifLib]]&lt;br /&gt;
* [[Utilizzare una GIF animata]]&lt;br /&gt;
&lt;br /&gt;
=== Gestione delle immagini e dei file di tipo SVG ===&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un file immagine SVG in un file immagine di altro formato con le funzioni esterne delle librerie librsvg e libgdk_pixbuf]]&lt;br /&gt;
* [[Convertire un file PNG in SVG con le risorse del Componente gb.cairo]]&lt;br /&gt;
* [[Creare file SVG con le risorse del Componente gb.cairo]]&lt;br /&gt;
* [[Creare file SVG con le funzioni esterne del API di Cairo]]&lt;br /&gt;
* [[Gestire un file immagine di formato SVG con la Classe SvgImage]]&lt;br /&gt;
* [[Mostrare in un Form un'immagine SVG]]&lt;br /&gt;
* [[Ottenere un file immagine PNG da un'immagine di formato SVG]]&lt;br /&gt;
&lt;br /&gt;
=== Struttura di file immagine particolari ===&lt;br /&gt;
&lt;br /&gt;
* [[Struttura del formato BMP]]&lt;br /&gt;
* [[Struttura del formato GIF]]&lt;br /&gt;
* [[Struttura del formato PNG]]&lt;br /&gt;
* [[Struttura del formato TIFF]]&lt;br /&gt;
* [[Struttura del formato XBM]]&lt;br /&gt;
* [[Struttura del formato XPM]]&lt;br /&gt;
* [[Struttura e gestione del file di tipo PNM]]&lt;br /&gt;
&lt;br /&gt;
== Grafici ==&lt;br /&gt;
&lt;br /&gt;
* [[Creare un grafico con il componente gb.chart]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un grafico per la console/Terminale]]&lt;br /&gt;
&lt;br /&gt;
== GridView ==&lt;br /&gt;
&lt;br /&gt;
* [[Adattare automaticamente la dimensione del font del testo presente nelle celle di una GridView al loro ridimensionarsi]]&lt;br /&gt;
&lt;br /&gt;
* [[Adattare automaticamente l'altezza e la larghezza di una cella di una GridView al testo contenuto]]&lt;br /&gt;
&lt;br /&gt;
* [[Adattare automaticamente l'altezza e la larghezza di una cella di una GridView all'immagine contenuta]]&lt;br /&gt;
&lt;br /&gt;
* [[Adattare l'altezza e la larghezza della GridView al numero delle righe e delle in essa contenute]]&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere colonne in una GridView da codice]]&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere righe in una GridView da codice mediante un tasto]]&lt;br /&gt;
&lt;br /&gt;
* [[Cambiare il colore di fondo di una riga cliccata in una GridView e far tornare quello di un'altra al colore iniziale]]&lt;br /&gt;
&lt;br /&gt;
* [[Catturare l'immagine di una GridView con il Componente gb.media]]&lt;br /&gt;
&lt;br /&gt;
* [[Centrare il testo nell'header di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Colorare il bordo delle righe di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Colorare il fondo di una cella di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Colorare il fondo di una riga di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Colorare la griglia della GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Effettuare una ricerca nelle celle di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare una riga da una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Far combaciare le immagini poste in due celle adiacenti di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestire testo, colori e immagini nelle celle della GridView con l'Evento _Data()]]&lt;br /&gt;
&lt;br /&gt;
* [[Header di una GridView contenente due o più righe testuali]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare due parole ciascuna all'estremità opposta di una cella di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare le righe, le colonne e l'header di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare font, colore dei caratteri e colore di sfondo diversi per ogni cella di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare lo spessore del bordo delle righe e delle singole celle di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare la cella della GridView nella quale si è cliccato]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare con quale tasto del mouse si è cliccato in una cella della GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un oggetto in una cella di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un ulteriore testo in una GridView sempre nell'ultima riga]] &lt;br /&gt;
&lt;br /&gt;
* [[Inserire un'immagine adattandola alle dimensioni della cella di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare il testo contenuto in una cella di una GridVew al semplice passare del puntatore del mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un Balloon in una GridView in corrispondenza della cella nella quale si è cliccato]]&lt;br /&gt;
&lt;br /&gt;
* [[Nascondere le linee della griglia di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Nascondere tutte le celle di una riga di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Nascondere una Colonna di una GridView]] &lt;br /&gt;
&lt;br /&gt;
* [[Ordinare i valori all'interno di una colonna di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Ordinare in una GridView i valori di più righe in base ad una colonna]]&lt;br /&gt;
&lt;br /&gt;
* [[Ordinare manualmente i valori all'interno di una colonna di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Scambiare il contenuto delle celle di una GridView mediante trascinamento con il mouse ]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere con la tastiera nelle celle di una GridView]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare il testo da una cella a un'altra di una GridView con il Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare il testo da una cella a un'altra di una GridView senza Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare il testo da una cella di una GridView nella cella di un'altra GridView con il Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare il testo da una cella di una GridView nella cella di un'altra GridView senza Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare su e giù le righe di una GridView con i tasti &amp;quot;up&amp;quot; e &amp;quot;down&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare un'immagine da una cella a un'altra di una GridView con il Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare un'immagine da una cella a un'altra di una GridView senza Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare un'immagine da una PictureBox a una cella di una GridView con il Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare una GridView e il suo contenuto]]&lt;br /&gt;
&lt;br /&gt;
* [[Unire in una GridView le celle in un'unica grande cella]]&lt;br /&gt;
&lt;br /&gt;
== Hard Disk ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere numero seriale, modello ed altre informazioni su hard-disk SATA con la funzione esterna ioctl()]]&lt;br /&gt;
&lt;br /&gt;
== Header file dell'ANSI C e Gambas ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la quantità di memoria occupata dai tipi di dati di C e la loro locazione nei file header]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre il valore di una costante definita in un file d'intestazione in C]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la descrizione del tipo di errore dai file header &amp;quot;errno-base.h&amp;quot; e &amp;quot;errno.h&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== ImageStat ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della classe ImageStat]]&lt;br /&gt;
&lt;br /&gt;
== InputBox ==&lt;br /&gt;
&lt;br /&gt;
* [[Impostare le coordinate ove far aprire la finestra dell'InputBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare l'ID della finestra dell'InputBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Imporre in casi particolari la riapertura dell'InputBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare le dimensioni di un InputBox]]&lt;br /&gt;
&lt;br /&gt;
== Interagire con la tastiera ==&lt;br /&gt;
&lt;br /&gt;
* [[Immissione di dati dalla tastiera durante l'esecuzione di un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire che cliccando su un tasto della tastiera si produca più volte il medesimo effetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire che, mentre si tiene premuto un tasto della tastiera, si produca un effetto cliccando e rilasciando un altro tasto]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare i tasti premuti della tastiera]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare mediante le funzioni del API di SDL2 tutti gli scancode disponibili]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[_KeyPress() - _KeyRelease() - Key]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Sapere via codice se il tasto 'Blocco Maiuscole' è attivo]]&lt;br /&gt;
&lt;br /&gt;
* [[Usare gli Eventi _KeyPress() e _KeyRelease() in un programma con interfaccia a linea di comando]]&lt;br /&gt;
&lt;br /&gt;
== Interfaccia a linea di comando ==&lt;br /&gt;
&lt;br /&gt;
* [[CLI]]&lt;br /&gt;
&lt;br /&gt;
== Interfacciare Gambas con librerie condivise esterne .so ==&lt;br /&gt;
&lt;br /&gt;
===Richiamare funzioni esterne mediante ''EXTERN''===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Extern: richiamare funzioni esterne a Gambas]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Gestione in Gambas delle Strutture esterne===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Gestione delle Strutture esterne]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Gestire con sicurezza le Strutture esterne]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Gestire con un Puntatore le Strutture esterne]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare un valore ad una Struttura di una libreria esterna scrivendo con i Memory Stream nella sua area di memoria]]&lt;br /&gt;
&lt;br /&gt;
* [[Dereferenziare senza Memory-Stream un Puntatore ad una Struttura, passato da una funzione esterna]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare come Struttura in Gambas una Struttura esterna dichiarata, come proprio membro di tipo Puntatore, da una Struttura principale esterna]]&lt;br /&gt;
&lt;br /&gt;
===Richiamare particolari funzioni esterne delle librerie standard in C===&lt;br /&gt;
&lt;br /&gt;
* [[Richiamo ed uso di particolari funzioni esterne delle librerie standard scritte in C]]&lt;br /&gt;
&lt;br /&gt;
===Ulteriori contributi sulla gestione delle librerie condivise .so e delle funzioni esterne===&lt;br /&gt;
&lt;br /&gt;
* [[Avviare con l'appoggio di una libreria esterna un semplice sorgente C senza compilarlo]]&lt;br /&gt;
&lt;br /&gt;
* [[Caricare i dati di un vettore scritto in C in un vettore di un'applicazione Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Come creare una Libreria condivisa (Shared Library) .so]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Come creare una Libreria condivisa .so impostando il suo codice sorgente nell'applicazione Gambas]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Creare una libreria condivisa .so esterna dai file sorgente presenti in una pagina web e senza installarla o caricarla nel sistema]]  &lt;br /&gt;
&lt;br /&gt;
* [[Emulare in Gambas la funzione fwrite() di C]]&lt;br /&gt;
&lt;br /&gt;
* [[Emulare in Gambas la funzione memcpy() di C]]&lt;br /&gt;
&lt;br /&gt;
* [[Emulare in Gambas le macro _IOC, _IOR, _IOW e _IOWR usate con la funzione ioctl()]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestire una libreria esterna che ritorna una Linked List]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire nella libreria condivisa esterna .so anche codice Assembly]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'indirizzo e il valore di una Costante e di una variabile globale situate in una libreria condivisa]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare a una funzione esterna un Puntatore che successivamente deve essere passato anche ad altre funzioni esterne]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare un'area riservata di memoria ad una funzione esterna]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare con l'appoggio di una libreria esterna una funzione presente in un sorgente C]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare funzioni esterne di librerie scritte in C++]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivendo particolari librerie esterne in C]]&lt;br /&gt;
&lt;br /&gt;
* [[Un contributo sulle funzioni esterne in Gambas a cura di Doriano B.]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare quali dati Gambas passa ad una funzione esterna]]&lt;br /&gt;
&lt;br /&gt;
===Altre modalità di chiamata delle funzioni esterne===&lt;br /&gt;
&lt;br /&gt;
* [[Caricamento dinamico di librerie .so con il subsistema 'loadso' di SDL2]]&lt;br /&gt;
* [[Chiamare funzioni esterne mediante le risorse della libreria dlfcn.h]]&lt;br /&gt;
* [[Utilizzare il metodo 'System.GetExternSymbol()' per richiamare funzioni esterne di librerie condivise]]&lt;br /&gt;
&lt;br /&gt;
== Librerie .gambas ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Creare, importare ed utilizzare librerie .gambas]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Librerie della Comunità Gambas-it.org ====&lt;br /&gt;
&lt;br /&gt;
* [[RTFLib.gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[strLib.gambas]]&lt;br /&gt;
&lt;br /&gt;
== ListBox ==&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare ad un oggetto di testo il contenuto di un elemento di una ListBox cliccandovi sopra]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare colori allo sfondo ed al testo di una riga selezionata di una ListBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare uno o più item di una ListBox selezionati con il mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Far coincidere da codice l'altezza di una ListBox con la somma delle altezze dei suoi Item]]&lt;br /&gt;
&lt;br /&gt;
* [[Far mostrare in una ListBox le ultime voci ogni volta che il loro numero aumenta]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare il numero d'indice della riga di una ListBox sulla quale si è cliccato con il mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un array di dati di tipo stringa in una ListBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un oggetto in un item di una ListBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Interscambiare la posizione del contenuto degli item di una ListBox mediante trascinamento con il mouse ]]&lt;br /&gt;
&lt;br /&gt;
* [[ListBox con due o più righe per item]]&lt;br /&gt;
&lt;br /&gt;
* [[Riordinare manualmente con il mouse gli elementi di una ListBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Se l'Evento MouseDown() della ListBox non funziona]]&lt;br /&gt;
&lt;br /&gt;
==Liste Lineari==&lt;br /&gt;
&lt;br /&gt;
* [[Emulare in Gambas una Lista Lineare del linguaggio C]]&lt;br /&gt;
&lt;br /&gt;
== ListView ==&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere una nuova voce nella prima posizione di una Listview]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare colori allo sfondo ed al testo di una riga selezionata di una ListView]]&lt;br /&gt;
&lt;br /&gt;
* [[Evitare che appaia il popmenu quando si clicca al di fuori di un elemento di una ListView]]&lt;br /&gt;
&lt;br /&gt;
== Logging ==&lt;br /&gt;
&lt;br /&gt;
* [[Attivare e registrare informazioni un singolo file di log]]&lt;br /&gt;
&lt;br /&gt;
== Map - MapView - Coordinate geografiche - Georeferenziazione ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Istruzioni essenziali per mostrare una mappa in una MapView]]&amp;lt;/b&amp;gt;&lt;br /&gt;
* [[Arduino: misurare il campo magnetico terrestre con i magnetometri]]&lt;br /&gt;
* [[Calcolare il rilevamento (bearing) in gradi]]&lt;br /&gt;
* [[Calcolare la distanza tra due punti geografici, dei quali si conoscono latitudine e longitudine]]&lt;br /&gt;
* [[Calcolare l'area e il perimetro di poligoni disegnati sulla mappa con le risorse di gb.map]]&lt;br /&gt;
* [[Conoscere la versione più recente di Google Maps satellite]]&lt;br /&gt;
* [[Conoscere le risorse formali contenute da un oggetto della Classe _ShapeItem]]&lt;br /&gt;
* [[Convertire una coordinata dal formato gradi primi secondi del sistema EPSG:4326 WGS 84 al suo formato decimale e viceversa]]&lt;br /&gt;
* [[Convertire una coordinata geografica dal sistema EPSG:4326 WGS 84 al sistema EPSG:3857 e viceversa]]&lt;br /&gt;
* [[Convertire una coordinata geografica dal sistema UTM al sistema EPSG:4326 WGS 84 e viceversa]]&lt;br /&gt;
* [[Creare da una carta topografica i file delle tessere di una mappa e utilizzarli con MapView]]&lt;br /&gt;
* [[Disegnare sulla MapView dei cerchi concentrici al punto ove si è cliccato con il puntatore del mouse]]&lt;br /&gt;
* [[Disegnare un cerchio o un punto su una MapView]]&lt;br /&gt;
* [[Disegnare un poligono su una MapView usando l'Oggetto &amp;quot;Figlio&amp;quot; DrawingArea]]&lt;br /&gt;
* [[Disegnare un mirino come cursore del mouse su una MapView]]&lt;br /&gt;
* [[Disegnare un percorso su una MapView e calcolarne la lunghezza]]&lt;br /&gt;
* [[Elenco di raster Tile Server online con rispettive URL]]&lt;br /&gt;
* [[Eliminare un marcatore grafico da una mappa su una MapView]]&lt;br /&gt;
* [[Eseguire un file audio o Midi quando si clicca sulla MapView]]&lt;br /&gt;
* [[Estrarre le coordinate geografiche dai TAG GPS eventualmente presenti in un file immagine JPEG]]&lt;br /&gt;
* [[Estrarre le coordinate geografiche presenti in un file gpx]]&lt;br /&gt;
* [[Georeferenziare una mappa con QGIS]]&lt;br /&gt;
* [[Individuare i valori x e y della tessera sulla quale si è cliccato]]&lt;br /&gt;
* [[Individuare il punto di intersezione degli angoli di direzione di due elementi geografici rispetto all'osservatore]]&lt;br /&gt;
* [[Individuare su una MapView un punto geografico avendo un punto iniziale, l'angolo di declinazione e la distanza]]&lt;br /&gt;
* [[Inserire del testo su una MapView]]&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Inserire un marcatore di coordinate su una MapView]]&amp;lt;/b&amp;gt;&lt;br /&gt;
* [[Inserire un Oggetto grafico su una MapView]]&lt;br /&gt;
* [[Inserire un'immagine come marcatore di coordinate su una MapView]]&lt;br /&gt;
* [[Mostrare la mappa topografica IGM 1 25000 fornita dal Geoportale Nazionale del Ministero dell'Ambiente]]&lt;br /&gt;
* [[Mostrare nella finestra guida dei simboli, dichiarati nel codice, la mappa topografica IGM 1_25000 fornita dall'ISPRA  ]]&lt;br /&gt;
* [[Mostrare sulla MapView disegni, immagini e Controlli senza l'uso del Metodo Map.AddShape()]]&lt;br /&gt;
* [[Ottenere la distanza piana di due punti su una carta topografica]]&lt;br /&gt;
* [[Ottenere la Latitudine e la Longitudine del punto sulla mappa cliccato con il puntatore del mouse]]&lt;br /&gt;
* [[Ottenere la Longitudine e la Latitudine dell'angolo superiore sinistro dell'immagine di una mappa da un file GEOTIFF con le sole risorse di Gambas]]&lt;br /&gt;
* [[Ottenere le coordinate geografiche dei punti sulla mappa sui quali si passa con il puntatore del mouse]]&lt;br /&gt;
* [[Ottenere informazioni da un file GEOTIFF con l'API di libgeotiff]]&lt;br /&gt;
* [[Ottenere un file pdf dalla mappa mostrata da una MapView]]&lt;br /&gt;
* [[Ottenere un file png dalla mappa mostrata da una MapView]]&lt;br /&gt;
* [[Ottenere una Image dalla mappa mostrata da una MapView]]&lt;br /&gt;
* [[Registrare quanto mostrato da una MapView e farne un video]]&lt;br /&gt;
* [[Rendere trasparente la mappa mostrata da una MapView]]&lt;br /&gt;
* [[Ruotare la mappa]]&lt;br /&gt;
* [[Sapere sulla MapView se il puntatore del mouse è all'interno di una determinata area della mappa]]&lt;br /&gt;
* [[Scalare la dimensione della mappa in una Mapview]]&lt;br /&gt;
* [[Usare il Metodo '.AddPolygon()' di gb.map]]&lt;br /&gt;
* [[Usare il Metodo '.AddPolyLine()' di gb.map]]&lt;br /&gt;
* [[Utilizzando un Oggetto di visualizzazione diverso da una MapView consentire uno spostamento morbido e uniforme della mappa]]&lt;br /&gt;
* [[Utilizzare il Geoportale del Servizio Geologico d'Italia dell'I.S.P.R.A.]]&lt;br /&gt;
* [[Utilizzare il Geoportale Nazionale del Ministero dell'Ambiente]]&lt;br /&gt;
* [[Utilizzare in una MapView mappe fornite secondo lo standard WMS (Web Map Service)]]&lt;br /&gt;
* [[Utilizzare le tessere di una mappa senza connessione a internet]]&lt;br /&gt;
* [[Utilizzare una DrawingArea o una ImageView con gb.map anziché una MapView]]&lt;br /&gt;
* [[Utilizzare una MediaView con gb.map anziché una MapView]]&lt;br /&gt;
* [[Verificare le tessere dei livelli delle Map tiles]]&lt;br /&gt;
&lt;br /&gt;
== Menu ==&lt;br /&gt;
&lt;br /&gt;
* [[Colorare la barra dei Menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare Menu da codice e non con l'Editor-Menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare Menu popup da codice]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare Menu popup utilizzando l'Editor di menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Evitare che appaia il popmenu quando si clicca al di fuori di un elemento di una ListView]]&lt;br /&gt;
&lt;br /&gt;
* [[Far apparire un Balloon, quando si passa con il mouse su un menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Fare riferimento alle voci del Menu da altri Form]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire che appaia la finestra del menu predefinito cliccando con il tasto destro del mouse su un Controllo di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire una linea separatrice in un Menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare selezione di sotto-voci di un Menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Modifiche delle proprietà dei Menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare più righe di testo nella voce di un Menu]]&lt;br /&gt;
&lt;br /&gt;
* [[Rilevare quale sotto-voce di menu è stata cliccata]]&lt;br /&gt;
&lt;br /&gt;
== MenuButton ==&lt;br /&gt;
&lt;br /&gt;
* [[Creare Menu a finestra con MenuButton]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare via Editor dalla IDE un Menu con sotto-menu che funzioni come popup in un MenuButton]]&lt;br /&gt;
&lt;br /&gt;
== Message ==&lt;br /&gt;
&lt;br /&gt;
* [[Impostare le dimensioni del Message]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare l'ID della finestra di un Message]]&lt;br /&gt;
&lt;br /&gt;
* [[Interruzione di riga con ritorno a capo in un Message]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un MessageBox in un programma con interfaccia a 'riga di comando']]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare la finestra di un Message]]&lt;br /&gt;
&lt;br /&gt;
== Miscellanea ==&lt;br /&gt;
&lt;br /&gt;
* [[Controllare la batteria del proprio portatile con le funzioni esterne di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire i gradi della temperatura da un'unità di scala di misura in un'altra]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare il QR Code con le risorse della libreria esterna libqrencode]]&lt;br /&gt;
&lt;br /&gt;
* [[Effettuare il PING]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare e usare in Gambas i simboli musicali forniti dal sistema UNICODE]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni sul tempo meteorologico di una città mediante il sito web wttr.in]]&lt;br /&gt;
&lt;br /&gt;
== Monitor - Schermo ==&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni relative al display video mediante le funzioni del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni relative allo schermo mediante la funzione ioctl()]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni relative allo schermo mediante le funzioni del API di CBX]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni sugli schermi disponibili mediante le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere le dimensioni del monitor e la sua posizione sullo schermo con le funzioni esterne del API di Allegro 5]]&lt;br /&gt;
&lt;br /&gt;
== Mouse ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le coordinate correnti del mouse sul Form senza tenere premuto un tasto del mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le coordinate correnti del mouse sullo schermo]]&lt;br /&gt;
&lt;br /&gt;
* [[Evento rotellina del mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Far assumere al puntatore grafico del mouse l'aspetto dell'attesa]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare i dati del mouse dal file-device hidraw]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare i dati del mouse dai file-device mouse, mice, event]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare il tasto premuto del mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare l'aspetto del puntatore grafico del mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Reiterare una procedura quando il tasto del mouse viene tenuto premuto su un Controllo]]&lt;br /&gt;
&lt;br /&gt;
* [[Segnalatore del puntatore del mouse sullo schermo usando le funzioni esterne del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Simulare il tasto premuto del mouse usando le funzioni esterne del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Sollevare l'Evento _MouseMove() di un Oggetto grafico spostando su di esso il mouse senza tenere premuto un suo tasto]] &lt;br /&gt;
&lt;br /&gt;
* [[Spostare da codice il mouse sullo schermo]]&lt;br /&gt;
&lt;br /&gt;
== MovieBox ==&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un'immagine animata in una MovieBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare un'immagine animata con il Drop del suo file in una MovieBox]]&lt;br /&gt;
&lt;br /&gt;
== Oggetti ==&lt;br /&gt;
&lt;br /&gt;
=== Oggetti in generale ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Assegnare da codice più oggetti ad un Gruppo di eventi]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere un Evento o anche integrare quelli già posseduti da un Oggetto &amp;quot;Figlio&amp;quot; di un Oggetto più complesso]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare un valore a una proprietà di un Oggetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il tipo di Oggetto a cui appartiene un identificatore]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Creare array di oggetti]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Distruggere gli Oggetti che non posseggono il Metodo .Delete()]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire che un oggetto sollevi qualsiasi evento]]&lt;br /&gt;
&lt;br /&gt;
* [[Istanziare un oggetto mediante la Classe &amp;quot;Object&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere nell'area di memoria occupata da un oggetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Metodi _New() e _Free() degli oggetti]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il valore di una proprietà ad una parte di più oggetti conosciuti del medesimo tipo]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare e gestire più oggetti assegnati a variabili con medesimo identificatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Richiamare un Metodo di un oggetto con la Classe Object]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere il nome del Componente al quale appartiene la Classe di un oggetto utilizzato]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere la quantità di memoria occupata da un oggetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere l'oggetto che ha scatenato l'evento]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quante istanze di una Classe sono state create]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un oggetto è un'istanza di una determinata Classe]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare la proprietà .Tag come un array di tipo Variant]]&lt;br /&gt;
&lt;br /&gt;
=== Oggetti grafici, Controlli e Widget===&lt;br /&gt;
&lt;br /&gt;
* [[Adattare la dimensione del font in un Oggetto grafico se il testo occupa una lunghezza o un'altezza superiore a quella dell'Oggetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Adattare la dimensione di un Oggetto grafico al testo contenuto]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare un Gruppo di Eventi a più Controlli modificando manualmente il file sorgente del programma Gambas]]  &lt;br /&gt;
&lt;br /&gt;
* [[Centrare un oggetto grafico all'interno di un Contenitore]]&lt;br /&gt;
&lt;br /&gt;
* [[Cliccare in un oggetto grafico qualsiasi o in una immagine suddivisi in rettangoli]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere gli oggetti grafici 'figli' costituenti l'oggetto 'padre']]&lt;br /&gt;
&lt;br /&gt;
* [[Copiare uno o più caratteri di un testo da una Label o da una TextLabel e incollarli in un altro Controllo di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare e dimensionare un oggetto con lo spostamento del mouse sul form]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un file immagine dagli oggetti presenti in un Contenitore]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare widget di Controlli grafici]]&lt;br /&gt;
&lt;br /&gt;
* [[Differenza fra la proprietà &amp;quot;.Children&amp;quot; e la proprietà &amp;quot;.Controls&amp;quot; di un oggetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Distruggere i Controlli grafici posti in un Contenitore]]&lt;br /&gt;
&lt;br /&gt;
* [[Far mostrare il simbolo &amp;quot;&amp;amp;&amp;quot; su un Controllo grafico fornito della Proprietà .Text]]&lt;br /&gt;
&lt;br /&gt;
* [[Fissare la distanza di un Controllo grafico in modo costante rispetto ai bordi del Form durante il ridimensionamento di questo]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare il numero d'indice di Controlli appartenenti al medesimo gruppo di Eventi senza servirsi di sue specifiche proprietà]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare una Classe di Oggetti grafici fra molti posti in un Contenitore]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare uno specifico Controllo con Last in base alla sua Proprietà &amp;quot;.Id&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare uno specifico Controllo in base alla sua Proprietà &amp;quot;.Name&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Metodo di pseudo indirizzamento ad Oggetti grafici]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare la dimensione di un Oggetto grafico con il mouse impostando i punti di contatto intorno al suo perimetro]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare la dimensione di un Oggetto grafico ruotando la rotellina del mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare in un Oggetto di testo il contenuto di un file trascinandolo e rilasciandolo senza l'uso delle specifiche risorse di Gambas del Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Oggetti grafici e di testo che supportano il codice HTML]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Oggetti scorrevoli]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere risultati diversi in base alla parte del Controllo premuta dal mouse]]&lt;br /&gt;
&lt;br /&gt;
* [[Porre sotto osservazione un Oggetto grafico]]&lt;br /&gt;
&lt;br /&gt;
* [[Posizione equidistante di un Oggetto rispetto al margine destro del suo Contenitore e ad un punto alla sua sinistra]]&lt;br /&gt;
&lt;br /&gt;
* [[Raggiungere e gestire gli oggetti di FMain da una classe secondaria]]&lt;br /&gt;
&lt;br /&gt;
* [[Riposizionare in modo circolare più oggetti posti in pila]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un oggetto, spostato sul Form con il mouse, è al di sopra di un altro oggetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Selezionare con lo spostamento del mouse un'area di un oggetto]]&lt;br /&gt;
&lt;br /&gt;
* [[Sollevare l'Evento _MouseMove() di un Oggetto grafico spostando su di esso il mouse senza tenere premuto un suo tasto]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Spostare oggetti con il mouse all'interno di un contenitore mediante Drag &amp;amp; Drop ]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Spostare oggetti con il mouse all'interno di un contenitore senza Drag &amp;amp; Drop]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Spostare o ridimensionare un oggetto a seconda del punto ove si clicca]]&lt;br /&gt;
&lt;br /&gt;
* [[Uso di Unicode con gli oggetti di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare anche in altre subroutine un Oggetto grafico dichiarato localmente]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare l'esistenza di un Controllo in un Contenitore]]&lt;br /&gt;
&lt;br /&gt;
== ODBC ==&lt;br /&gt;
&lt;br /&gt;
* [[ODBC]]&lt;br /&gt;
&lt;br /&gt;
== OpenGL ==&lt;br /&gt;
&lt;br /&gt;
* [[Gambas e Opengl]]&lt;br /&gt;
&lt;br /&gt;
* [[OpenGL: lezioni di Grafica Interattiva]]&lt;br /&gt;
&lt;br /&gt;
* [[Textures]]&lt;br /&gt;
&lt;br /&gt;
== Password ==&lt;br /&gt;
&lt;br /&gt;
* [[Inserire le password per lanciare comandi]]&lt;br /&gt;
&lt;br /&gt;
== Pdfwriter ==&lt;br /&gt;
&lt;br /&gt;
* [[Guida ai report]]&lt;br /&gt;
&lt;br /&gt;
== Porte ==&lt;br /&gt;
&lt;br /&gt;
* [[Accesso alle Porte Seriali]]&lt;br /&gt;
&lt;br /&gt;
* [[Approfondimento sull'accesso alle porte USB]]&lt;br /&gt;
&lt;br /&gt;
* [[Uso delle Porte Parallele]]&lt;br /&gt;
&lt;br /&gt;
== Posta elettronica ==&lt;br /&gt;
&lt;br /&gt;
* [[Invio della posta elettronica]]&lt;br /&gt;
&lt;br /&gt;
* [[Invio di posta elettronica con SMTP e SSL mediante le funzioni esterne del API di Libcurl]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere la posta elettronica con IMAP e SSL mediante le funzioni esterne del API di Libcurl]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere la posta elettronica con POP3 e SSL mediante le funzioni esterne del API di Libcurl]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere la posta elettronica mediante le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
== Processi ==&lt;br /&gt;
&lt;br /&gt;
=== Gestione dei Processi in genere ===&lt;br /&gt;
&lt;br /&gt;
* [[Cambiare in esecuzione la directory di lavoro di un processo Gambas con la funzione esterna chdir()]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in tempo reale il numero dell'ultimo processo appena aperto]]&lt;br /&gt;
&lt;br /&gt;
=== Gestione dei Processi mediante &amp;quot;Process&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
* [[Apertura e chiusura di un processo mediante Process]]&lt;br /&gt;
&lt;br /&gt;
* [[Attendere e verificare la chiusura di un programma gestito da Process]]&lt;br /&gt;
&lt;br /&gt;
* [[Lettura dati da un Processo e scrittura dati in un Processo mediante Process]]&lt;br /&gt;
&lt;br /&gt;
* [[Terminare automaticamente un Processo dopo un periodo di tempo dalla sua apertura con Process]]&lt;br /&gt;
&lt;br /&gt;
== Programmi Gambas e programmi esterni ==&lt;br /&gt;
&lt;br /&gt;
* [[Agire sulla finestra di un qualunque programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Attivare la finestra di un programma con le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Avviare un'applicazione Gambas in un determinato desktop]]&lt;br /&gt;
&lt;br /&gt;
* [[Avviare un progetto Gambas dalla sua cartella]]&lt;br /&gt;
&lt;br /&gt;
* [[Catturare con il Componente gb.media quanto mostrato dalla finestra di un programma o sulla Scrivania e farne un file video]]&lt;br /&gt;
&lt;br /&gt;
* [[Catturare immagini di una finestra di un programma e farne un file audio-video OGG-Theora con le funzioni esterne del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Catturare l'immagine della finestra di un programma mediante le risorse della Classe DesktopWindow e le funzioni esterne del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Chiudere la finestra di un programma Gambas premendo i tasti Ctrl e 'c' della tastiera]]&lt;br /&gt;
&lt;br /&gt;
* [[Chiudere le finestre secondarie di un programma Gambas lasciando aperto il solo Form principale]]&lt;br /&gt;
&lt;br /&gt;
* [[Chiudere programmi esterni]]&lt;br /&gt;
&lt;br /&gt;
* [[Chiudere un programma Gambas se si clicca all'esterno della sua finestra principale]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le risorse del API di Glib il percorso assoluto di un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere gli attributi della finestra di un programma con le funzioni esterne del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la directory in cui sono memorizzati i file temporanei del processo corrente di un programma Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Contare le righe di codice di un progetto Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Copiare in una cartella un programma.gambas contenuto in un altro programma.gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare una cartella delle preferenze di un programma Gambas con le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Elencare il PID ed il corrispondente nome di ciascun processo attivo]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre l'icona di un programma associato ad un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire l'avvio di un programma.gambas già avviato]]&lt;br /&gt;
&lt;br /&gt;
* [[Impedire la chiusura di un programma Gambas se si clicca sul tastino con la X in alto a destra della sua finestra principale]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare con certezza un file presente nella cartella di un progetto Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare ed estrarre il PID di un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare ed estrarre l'ID della finestra di un programma ]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare ID e nome delle finestre attive con le risorse del Componente gb.desktop]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare ID e nome delle finestre attive, nonché il PID dei loro programmi con le risorse del Componente gb.desktop.x11]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare il nome della finestra di un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare il nome di un programma Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare il percorso ove risiede la cartella del progetto Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare l'ID ed il nome della finestra attiva mediante le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare l'ID ed il nome di una finestra nonché il PID del programma mediante le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Inglobare in un programma Gambas la finestra di un altro programma Gambas mediante le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Lanciare da un'applicazione Gambas il Terminale e far partire da esso un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Lanciare un programma esterno conoscendo soltanto il nome del suo file eseguibile presente nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Lanciare un programma Gambas da linea di comando]]&lt;br /&gt;
&lt;br /&gt;
* [[Lanciare un programma senza Shell, ma da una finestra di un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare le dimensioni della finestra di un programma con le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Muovere e modificare le dimensioni della finestra di un programma con le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Muovere la finestra di un programma con le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il percorso assoluto della directory dei dati dell'applicazione Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni sulle applicazioni client in esecuzione su un display con le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la directory di lavoro corrente dell'applicazione Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la schermata (screenshot) della finestra di un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare dati in runtime ad un programma 'a linea di comando']]&lt;br /&gt;
&lt;br /&gt;
* [[Porre la finestra di un programma esterno in primo piano]]&lt;br /&gt;
&lt;br /&gt;
* [[Salvare un file nella Directory di Lavoro di un programma Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quando il puntatore del mouse si trova sulla finestra di un programma esterno]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanto tempo è passato dall'inizio del programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un programma esterno è già in funzione]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se il programma Gambas sta funzionando come progetto dall'IDE oppure come eseguibile .gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare la finestra di un programma da un desktop ad un altro del video]]&lt;br /&gt;
&lt;br /&gt;
* [[Uscire da un'applicazione Gambas premendo un tasto mediante le funzioni del API di X11]]&lt;br /&gt;
&lt;br /&gt;
===Trasmissione di dati fra due programmi Gambas o fra un programma esterno ed un programma Gambas===&lt;br /&gt;
&lt;br /&gt;
* [[Indirizzare dati da un programma ad un altro e ad un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare i dati inviati allo standard output da un programma C]]&lt;br /&gt;
&lt;br /&gt;
* [[Inviare dati da un programma Gambas ad un altro mediante le risorse del Componente DBus]]&lt;br /&gt;
&lt;br /&gt;
* [[Inviare dati stringa da un programma Gambas a un programma esterno avente un'area di testo o a un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Ricevere dati da un programma esterno mediante un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Ricevere un 'segnale' da un programma C]]&lt;br /&gt;
&lt;br /&gt;
* [[Trasmissione di dati fra due o più programmi Gambas mediante la Classe Socket del Componente gb.net]]&lt;br /&gt;
&lt;br /&gt;
* [[Trasmissione di dati fra due o più programmi Gambas mediante la Classe UdpSocket del Componente gb.net]]&lt;br /&gt;
&lt;br /&gt;
* [[Usare ALSA per far comunicare due o più programmi Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Usare due programmi Gambas contemporaneamente mediante Process, lo standard Output e lo standard Input]]&lt;br /&gt;
&lt;br /&gt;
* [[Usare uno pseudoterminale per far comunicare bidirezionalmente due programmi]]&lt;br /&gt;
&lt;br /&gt;
== ProgressBar e simulazioni di ProgressBar==&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere una simil-ProgressBar da una LCDLabel]]&lt;br /&gt;
&lt;br /&gt;
* [[Pseudo-ProgressBar in un'applicazione 'a riga di comando']]&lt;br /&gt;
&lt;br /&gt;
* [[Simulare una ProgressBar mediante una DrawingArea]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare la barra indicatrice di una ProgressBar con il mouse]]&lt;br /&gt;
&lt;br /&gt;
== Puntatori - Memory Stream ==&lt;br /&gt;
&lt;br /&gt;
====Puntatori====&lt;br /&gt;
* [[Assegnare ad un Puntatore la rappresentazione numerica di un indirizzo di memoria contenuto da un altro Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare ad un Puntatore un'area di memoria riservata con Alloc()]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare un Puntatore ad una Struttura per dereferenziarlo]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare un vettore ad una variabile di tipo Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Cambiare la dimensione di un'area di memoria mediante Realloc()]]&lt;br /&gt;
&lt;br /&gt;
* [[Deallocare un'area di memoria precedentemente allocata con alloc() e assicurarsi che il Puntatore non punti a un indirizzo rilevante di memoria]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Dereferenziare un Puntatore con le funzioni specifiche di dereferenziazione e con i Memory Stream]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Dereferenziare un Puntatore con un vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Dereferenziare un Puntatore di Puntatore con le funzioni specifiche di dereferenziazione e con i Memory Stream]]&lt;br /&gt;
&lt;br /&gt;
* [[Differenza fra Assegnazione a un Puntatore di un indirizzo di memoria e Dereferenziazione di un Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestire un Puntatore con le funzioni esterne del API di Glib]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il valore di una variabile Integer puntata da un Puntatore e sua dereferenziazione con le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Opportunità di azzerare tutti i byte di un'area di memoria riservata seppur senza deallocarla]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il puntatore a una variabile vettoriale]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il puntatore di una variabile di tipo Image]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il puntatore di una variabile di tipo Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il valore numerico dell'indirizzo di memoria contenuto dal Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Passaggio di un argomento per 'indirizzo' ad una Funzione]]&lt;br /&gt;
&lt;br /&gt;
* [[Porre a zero i valori contenuti dall'area di memoria puntata da un Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere i valori contenuti da un file in un'area riservata di memoria]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Scrivere nell'area di memoria puntata da un Puntatore]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Vedere e modificare con i Puntatori un byte costituente il valore di una variabile]]&lt;br /&gt;
&lt;br /&gt;
==== Memory Stream ====&lt;br /&gt;
&lt;br /&gt;
* [[Definizione ed uso dei Memory Stream]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare con i Memory Stream un'area di memoria simile ad una Struttura avente come membro un'altra Struttura]]&lt;br /&gt;
&lt;br /&gt;
== RadioButton==&lt;br /&gt;
&lt;br /&gt;
* [[Adattare la lunghezza del RadioButton al testo contenuto]]&lt;br /&gt;
&lt;br /&gt;
== Report (gb.report2) ==&lt;br /&gt;
&lt;br /&gt;
* [[Creare report con il componente gb.report2]]&lt;br /&gt;
&lt;br /&gt;
== Scanner ==&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire una scansione con lo Scanner mediante le funzioni esterne di libsane]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire una scansione e riconoscimento caratteri (OCR) con l'API di Sane, Tesseract e Leptonica]]&lt;br /&gt;
&lt;br /&gt;
* [[Usare le risorse del Componente gb.scanner di Gambas]]&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
&lt;br /&gt;
* [[Scripting con Gambas]]&lt;br /&gt;
&lt;br /&gt;
==ScrollArea==&lt;br /&gt;
&lt;br /&gt;
* [[Usare la ScrollArea]]&lt;br /&gt;
&lt;br /&gt;
==ScrollView==&lt;br /&gt;
&lt;br /&gt;
* [[Usare la ScrollView]]&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della classe Settings]]&lt;br /&gt;
&lt;br /&gt;
== Sistema operativo - Dispositivi - Interfacce - Reti ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con la funzione esterna getrlimit() i valori limite che il kernel impone per alcune risorse]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere  con le risorse del API di Glib la directory unica per l'utente corrente sul sistema locale]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le sole risorse di Gambas i dispositivi esterni SCSI o SATA montati]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere i dispositivi usb di memorizzazione di massa con le funzioni esterne di libudev]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il nome delle interfacce di rete presenti nel proprio sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il file-devide pts associato ad un Terminale o console con la funzione esterna ttyname()]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il fuso orario (TimeZone) impostato nel proprio sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il nome del file-device del Terminale di controllo del processo con la funzione esterna ctermid()]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere l'hostname impostato nel proprio sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la dimensione del Dispositivo a blocchi]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la distribuzione Linux montata]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la valuta monetaria locale utilizzata dal sistema operativo]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le impostazioni del separatore decimale nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere le impostazioni per il separatore delle migliaia]]&lt;br /&gt;
&lt;br /&gt;
* [[Identificare univocamente un computer]]&lt;br /&gt;
&lt;br /&gt;
* [[La cartella ove sono depositate le icone fornite dal sistema operativo Linux]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere il file fstab per avere informazioni sui vari filesystem montati]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere gli indirizzi IP di ogni interfaccia presente sulla medesima macchina]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere i valori di baud rates del flusso in entrata ed in uscita dei file-device terminali]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la distribuzione di Linux montata, il tipo di architettura e la versione del kernel]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il nome dell'host corrispondente ad un indirizzo IP e viceversa]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il solo nome del proprio sistema operativo]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni dal proprio dispositivo wireless con le risorse del API di libiw]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni generali sui dispositivi network mediante le risorse del API di Libnm-glib]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni sulle statistiche di sistema globali con la funzione esterna sysinfo()]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la lista di tutte le variabili d'ambiente nel proprio sistema mediante le risorse del API di GLIB-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la lista di tutti i dispositivi PCI presenti nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere mediante le funzioni esterne del API di Libusb la lista di tutti i dispositivi USB attivi nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere mediante le funzioni esterne del API di Libgusb la lista di tutti i dispositivi USB attivi nel sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere mediante le funzioni esterne della libreria Libudev un elenco degli oggetti hidraw collegati al sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un Identificativo Univoco Universale - UUID]]&lt;br /&gt;
&lt;br /&gt;
* [[Visualizzare il tempo trascorso dall'ultimo avvio del sistema]]&lt;br /&gt;
&lt;br /&gt;
== Slider ==&lt;br /&gt;
&lt;br /&gt;
* [[Creare uno pseudo-slider]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare uno pseudo-slider con uno o più cursori posti fra un valore minimo e uno massimo variabili]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare il segna-valori lungo lo Slider]]&lt;br /&gt;
&lt;br /&gt;
* [[Variare il valore dello Slider ruotando la rotellina del mouse]]&lt;br /&gt;
&lt;br /&gt;
== SpinBar ==&lt;br /&gt;
* [[Adattare la SpinBar a valori in virgola mobile con più di tre decimali]]&lt;br /&gt;
&lt;br /&gt;
== SpinBox ==&lt;br /&gt;
* [[Variare il valore di uno SpinBox da codice e non con il controllo diretto del mouse]]&lt;br /&gt;
&lt;br /&gt;
== Spinner ==&lt;br /&gt;
* [[Uso dello ''Spinner'']]&lt;br /&gt;
&lt;br /&gt;
==Sqlite==&lt;br /&gt;
* [[Creare un DataBase sqlite3]]&lt;br /&gt;
* [[Utilizzo base di Gambas e Sqlite3]]&lt;br /&gt;
&lt;br /&gt;
== Stampa - Printer==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Stampare in Gambas]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Individuare le stampanti presenti nel proprio sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare il contenuto grafico di una PictureBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare il testo presente in oggetti di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare un Controllo grafico posto sul Form]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare un file con le funzioni del API di cups]]&lt;br /&gt;
&lt;br /&gt;
* [[Verifica ed eliminazione dei processi di stampa mediante le funzioni del API di CUPS]]&lt;br /&gt;
&lt;br /&gt;
== Stringhe, caratteri, testo e file di testo ==&lt;br /&gt;
&lt;br /&gt;
* [[Accedere ai caratteri contenuti da una variabile di tipo stringa come se questa fosse una vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere una riga di caratteri alla fine di un file di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[&amp;quot;Andare a capo&amp;quot; in un oggetto di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Associare una stringa a un identificatore unico numerico mediante le funzioni Quarks del API di libglib-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Cercare la seconda occorrenza di una lettera fra tre o più]]&lt;br /&gt;
&lt;br /&gt;
* [[Cercare una parola in una stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Concatenare due stringhe]]&lt;br /&gt;
&lt;br /&gt;
* [[Confrontare due stringhe]]&lt;br /&gt;
&lt;br /&gt;
* [[Confrontare i caratteri di due stringhe]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con le sole risorse di Gambas il numero di occorrenze in una stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il numero di occorrenze in una stringa con la funzione esterna PyUnicode_Count() della libreria libpython3]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il numero e la posizione di tutte le occorrenze di una sottostringa in una stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Conversione di due valori, costituenti un carattere speciale, nella sua rappresentazione grafica]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire due unità numeriche stringa graficamente rappresentanti un valore esadecimale nel corrispondente valore decimale effettivo]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire in stringa senza funzioni il contenuto di una variabile non di tipo Stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire in un tipo di dati numerico un valore letto in formato Stringa da un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un carattere maiuscolo in minuscolo senza la funzione LCase()]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un codice Unicode in carattere UTF-8 con la funzione g_unichar_to_utf8() della libreria libglib-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero di tipo stringa in un valore di tipo Float con la funzione g_strtod() della libreria glib-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero di tipo stringa in un valore di tipo Float con la funzione  PyOS_string_to_double() della libreria libpython3]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero in un carattere ASCII]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un collegamento ipertestuale]]&lt;br /&gt;
&lt;br /&gt;
* [[Filtrare i caratteri invalidi UTF8 ed ASCII da una stringa con le funzioni esterne del API di PulseAudio]]&lt;br /&gt;
&lt;br /&gt;
* [[Funzione simile a String()]]&lt;br /&gt;
&lt;br /&gt;
* [[Funzione simile a String.Len()]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare i valori costituenti i caratteri tipo UTF-8 di lettere localizzate]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare in un testo i caratteri non alfanumerici e la loro posizione]]&lt;br /&gt;
&lt;br /&gt;
* [[Individuare in una stringa i caratteri ricorrenti e loro posizioni]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire in una stringa caratteri ASCII non stampabili]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un testo in diagonale in un Controllo grafico]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare in maiuscolo il primo carattere di una stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare un carattere di una stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare del testo al di sopra di una immagine avendo una PictureBox ed un oggetto di testo]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare del testo con caratteri ruotati orizzontalmente e verticalmente]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare il simbolo dell'Euro]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare in una stringa le virgolette]]&lt;br /&gt;
&lt;br /&gt;
* [[Mostrare con il punto anziché con la virgola un numero in virgola mobile rappresentato in formato stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Non visualizzare i caratteri non-stampabili di una stringa che inizia con caratteri stampabili]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere con l'API di Libglib-2.0 il codice UNICODE di un carattere UTF-8]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere da un testo una parte delimitata da due parole]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere da un valore numerico i caratteri ASCII corrispondenti a ciascun byte componente il numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il valore ASCII di un carattere]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un file RTF da un file UTF8 e viceversa con le funzioni esterne del API di Librtfcomp]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un'unica stringa dalle stringhe contenute dagli elementi di un vettore di tipo Stringa]] &lt;br /&gt;
&lt;br /&gt;
* [[Porre a &amp;quot;Null&amp;quot; tutti gli elementi di un vettore di tipo Stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Rappresentare in formato stringa un numero avente i punti delle migliaia e la virgola dei decimali]]&lt;br /&gt;
&lt;br /&gt;
* [[Ribaltare i caratteri e invertire il testo in un Controllo grafico che supporta il RichText]]&lt;br /&gt;
&lt;br /&gt;
* [[Rimuovere da una stringa tutti i caratteri non-stampabili eventualmente presenti]]&lt;br /&gt;
&lt;br /&gt;
* [[Rimuovere da una stringa uno o più caratteri del codice ASCII esteso]]&lt;br /&gt;
&lt;br /&gt;
* [[Rimuovere tot caratteri da una stringa mediante le funzioni esterne del API di Libglib-2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Riposizionare in modo casuale i caratteri di una stringa con la funzione esterna strfry()]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere con l'API di Libglib-2.0 se un carattere è stampabile]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere con l'API di Libglib-2.0 se un codice UNICODE corrisponde ad un carattere alfabetico]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se una stringa è formata soltanto da caratteri alfanumerici]]&lt;br /&gt;
&lt;br /&gt;
* [[Scomporre una stringa e caricare ogni parola in una variabile array]]&lt;br /&gt;
&lt;br /&gt;
* [[Scritta lampeggiante]]&lt;br /&gt;
&lt;br /&gt;
* [[Scritta scorrevole]]&lt;br /&gt;
&lt;br /&gt;
* [[Sovrascrivere una stringa con uno o più caratteri]]&lt;br /&gt;
&lt;br /&gt;
* [[Testo verticale]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare in una Costante un numero esadecimale per rappresentare un carattere ASCII]]&lt;br /&gt;
&lt;br /&gt;
* [[Verifica &amp;quot;passo-passo&amp;quot; di ciascun carattere in una data stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare con le funzioni del API di Libglib-2.0 se una stringa inizia con un prefisso o termina con un siffisso]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare con le risorse del API di PulseAudio se una stringa contiene solo caratteri UTF8 validi]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare se in una stringa vi sono caratteri non stampabili]]&lt;br /&gt;
&lt;br /&gt;
== Strutture ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[Strutture: dichiarazione ed uso]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare a una Struttura i valori contenuti in un'area di memoria creata con la funzione Alloc()]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare direttamente i valori di dimensione conosciuta, letti da un file, ad una Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare i valori di un file ad una Struttura mediante un Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Configurazione, organizzazione ed impostazione dell'oggetto Struttura secondo i sorgenti di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere i nomi identificatori dei membri di una Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la dimensione di una Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere via codice il nome di una Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Leggere e scrivere direttamente nell'area di memoria di una Struttura accedendovi con la classe Object]]&lt;br /&gt;
&lt;br /&gt;
* [[Nascondere un valore in una Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Ordinare gli elementi di un vettore di Strutture in base ad un loro medesimo membro]]&lt;br /&gt;
&lt;br /&gt;
* [[Ordinare gli elementi dei membri vettoriali di una Struttura in base ad uno di loro]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il puntatore di una variabile di tipo Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il puntatore direttamente ai dati associati a una Struttura]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare una Struttura con Event]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere i dati dei membri di una Struttura in un file direttamente]]&lt;br /&gt;
&lt;br /&gt;
* [[Strutture e Funzioni esterne]]&lt;br /&gt;
&lt;br /&gt;
* [[Uso delle Strutture tra Classi e Moduli]]&lt;br /&gt;
&lt;br /&gt;
== SwitchButton ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso dello &amp;quot;SwitchButton&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== TableView ==&lt;br /&gt;
&lt;br /&gt;
* [[Assegnare i dati di una TextArea a una TableView]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un oggetto in una cella di una TableView]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il contenuto di una cella di una TableView cliccandoci dentro]]&lt;br /&gt;
&lt;br /&gt;
* [[Selezionare una intera riga di una TableView]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare il tasto Tab della tastiera per spostare il cursore del mouse fra le celle di una TableView]]&lt;br /&gt;
&lt;br /&gt;
* [[Visualizzare automaticamente una specifica riga di una TableView senza dover agire sulla ScrollBar laterale]]&lt;br /&gt;
&lt;br /&gt;
== TabPanel ==&lt;br /&gt;
&lt;br /&gt;
* [[Cancellare il testo presente in uno o più Controlli di testo posti su una TabPanel]]&lt;br /&gt;
&lt;br /&gt;
* [[Impostare l'immagine ed il colore del titolo delle tabelle di una TabPanel]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire tabelle ed oggetti all'interno di una TabPanel]]&lt;br /&gt;
&lt;br /&gt;
== TabStrip ==&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere Controlli su una determinata scheda di una TabStrip successivamente alla sua creazione]]&lt;br /&gt;
&lt;br /&gt;
* [[Aggiungere schede in una TabStrip successivamente alla sua creazione]]&lt;br /&gt;
&lt;br /&gt;
* [[Eliminare una scheda da una TabStrip]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati dagli oggetti presenti sulle schede di una TabStrip]]&lt;br /&gt;
&lt;br /&gt;
* [[Inserire più schede e Controlli in una TabStrip nel momento della sua creazione]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il valore delle proprietà degli oggetti posti sulla scheda in primo piano di una TabStrip]]&lt;br /&gt;
&lt;br /&gt;
* [[Nascondere una scheda di una TabStrip]]&lt;br /&gt;
&lt;br /&gt;
== Tavoletta grafica e Gambas ==&lt;br /&gt;
&lt;br /&gt;
* [[Leggere l'azione di una penna su una Tavoletta grafica]]&lt;br /&gt;
&lt;br /&gt;
== Tempo, Date e Temporizzazioni ==&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare il numero di giorni compresi fra due date]]&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare il tempo trascorso mediante le funzioni esterne del sub-sistema Timers del API di GLib]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il fuso orario (TimeZone) impostato nel proprio sistema]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il giorno della settimana di una data mediante le risorse della libreria standard C &amp;quot;time.h&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il numero di giorni posseduti da un mese]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire data ed orario da formato Date in un numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire i giorni in formato anni:mesi:giorni]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire i millisecondi in formato minuti:secondi.millisecondi]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire i secondi in formato ore:minuti:secondi]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un Cronometro]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un metronomo per console]]&lt;br /&gt;
&lt;br /&gt;
* [[Creare un Timer con le funzioni esterne delle librerie standard C &amp;quot;signal.h&amp;quot; e &amp;quot;time.h&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Formattare &amp;quot;hh:nn:ss&amp;quot; dai soli secondi]]&lt;br /&gt;
&lt;br /&gt;
* [[Funzione di attesa in millisecondi con la libreria esterna libpulsecore]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestione del tempo mediante le funzioni esterne del API di Libcsfml]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere con le risorse della libreria Libc.so.6 il tempo impiegato per eseguire un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere con le risorse della libreria standard C &amp;quot;time.h&amp;quot; la data nella forma &amp;quot;giorno-della-settimana mese giorno ora:min:sec anno&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il tempo trascorso dall'inizializzazione della libreria SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'orario locale comprensivo dei microsecondi con la funzione esterna g_date_time_get_microsecond() del API di GLIB]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'orario locale comprensivo dei nanosecondi con le risorse di alcune librerie standard C]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la differenza temporale fra due orari]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere una data e-o l'orario comprensivo dei millisecondi]]&lt;br /&gt;
&lt;br /&gt;
* [[Porre in pausa il programma per un dato numero di microsecondi con la funzione esterna g_usleep() del API di GLIB]]&lt;br /&gt;
&lt;br /&gt;
* [[Rappresentazione stringa localizzata e non-localizzata di una data]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere di quanti giorni è formato un determinato anno]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere di quanti giorni è formato il mese corrente]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanto tempo è passato dall'inizio del programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti microsecondi sono passati dalla data iniziale del tempo Unix sino alla data e all'orario correnti]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti millisecondi sono passati dalla data iniziale del tempo Unix sino alla data e all'orario correnti]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti nanosecondi sono passati dalla data iniziale del tempo Unix sino alla data e all'orario correnti]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti secondi bisogna aggiungere all'orario locale per ottenere l'orario UTC]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti secondi sono passati dalla data iniziale del tempo Unix sino alla data e all'orario correnti]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti secondi sono passati dall'inizio del giorno corrente]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti giorni sono passati dall'inizio dell'anno corrente]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti secondi sono passati dall'inizio dell'anno corrente]]&lt;br /&gt;
&lt;br /&gt;
* [[Temporizzare una funzione o un evento]]&lt;br /&gt;
&lt;br /&gt;
== Terminale - Console IDE Gambas ==&lt;br /&gt;
&lt;br /&gt;
* [[Aprire un Terminale con Desktop.OpenTerminal e passargli una riga di comando]]&lt;br /&gt;
&lt;br /&gt;
* [[Aprire un Terminale e passargli una riga di comando mediante le funzioni esterne del API di X11]]&lt;br /&gt;
&lt;br /&gt;
* [[Attendere in un'applicazione 'a riga di comando' la pressione del tasto 'Invio']]&lt;br /&gt;
&lt;br /&gt;
* [[Colorare testo e sfondo in Console o Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il numero di linee e di colonne costituenti la corrente dimensione di un terminale o console]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in tempo reale il file-device &amp;quot;pts&amp;quot; dell'ultimo Terminale appena aperto]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere la riga e la colonna nelle quali è posizionato il cursore in un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Formattare il testo da mostrare in console o in terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare i dati inviati allo standard output da un programma C]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare il risultato restituito ad intervalli temporali di un comando bash]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare la stringa di caratteri immessi dall'utente nella console o Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Intercettare quanto viene scritto manualmente nella console o in un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Inviare il testo, colorato e ruotato, in un Terminale con l'API di libcaca]]&lt;br /&gt;
&lt;br /&gt;
* [[Lanciare da un'applicazione Gambas il Terminale e far partire da esso un programma]]&lt;br /&gt;
&lt;br /&gt;
* [[Lanciare da un'applicazione Gambas un comando bash e far scrivere il risultato in un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il prompt bash]]&lt;br /&gt;
&lt;br /&gt;
* [[Passare in runtime il numero del file-device 'pts' di un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Pulire il Terminale o la console via codice]]&lt;br /&gt;
&lt;br /&gt;
* [[Reindirizzare dati stringa dalla console ad un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Rendere la console dell'IDE funzionale come un Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere nella console (standard output) di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere nella finestra di un Terminale distinto dal programma Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere nello Standard Input di un Terminale con un programma Gambas 'a riga di comando']]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare da codice il cursore all'interno del Terminale]]&lt;br /&gt;
&lt;br /&gt;
* [[Spostare il cursore in un Terminale lungo una riga di caratteri]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare un punto nella console o nel Terminale alle coordinate x, y]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare una stringa in console con allineamento a destra o a sinistra]]&lt;br /&gt;
&lt;br /&gt;
* [[Stampare una stringa in console sempre su una medesima riga]]&lt;br /&gt;
&lt;br /&gt;
== TextArea ==&lt;br /&gt;
&lt;br /&gt;
* [[Inserire un testo da un Controllo all'interno del testo di una TextArea senza l'uso del Drag&amp;amp;Drop]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare che siano stati aggiunti uno o più caratteri a una TextArea con l'opzione &amp;quot;Incolla&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== TextBox ==&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere in un TextBox dalla posizione manualmente mutata del cursore]]&lt;br /&gt;
&lt;br /&gt;
* [[Sovrascrivere mediante nuovi caratteri i caratteri già presenti in un TextBox]]&lt;br /&gt;
&lt;br /&gt;
== ToolTip ==&lt;br /&gt;
&lt;br /&gt;
* [[Chiudere un ToolTip anticipatamente]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare il colore e la dimensione del font del testo del ToolTip]]&lt;br /&gt;
&lt;br /&gt;
* [[Modificare la dimensione del ToolTip]]&lt;br /&gt;
&lt;br /&gt;
== Valori numerici, Operazioni matematiche, Bit==&lt;br /&gt;
&lt;br /&gt;
* [[Arrotondamento di un numero con virgola mobile]]&lt;br /&gt;
&lt;br /&gt;
* [[Arrotondare un Intero al più prossimo valore inferiore multiplo di 2, 4, 8, 16, 32 e 64]]&lt;br /&gt;
&lt;br /&gt;
* [[Arrotondare un Intero al successivo multiplo di 2, 4, 8, 16, 32 e 64]]&lt;br /&gt;
&lt;br /&gt;
* [[Azzerare tutti gli elementi di un vettore di tipo numerico]]&lt;br /&gt;
&lt;br /&gt;
* [[Cercare un valore all'interno di un file aperto come un flusso di dati di tipo File]]&lt;br /&gt;
&lt;br /&gt;
* [[Cercare un valore all'interno di un file aperto come un flusso di dati di tipo Stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Calcolare i numeri di Fibonacci]]&lt;br /&gt;
&lt;br /&gt;
* [[Confrontare due Interi con la funzione esterna gst_util_seqnum_compare() del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere di un numero il multiplo posto immediatamente dopo un altro numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere di un numero la posizione del primo bit da destra impostato a 1]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere gli angoli acuti di un triangolo rettangolo dai cateti noti]]&lt;br /&gt;
&lt;br /&gt;
* [[Conversione Big-Endian/Little-Endian]]&lt;br /&gt;
&lt;br /&gt;
* [[Conversione da Base64]]&lt;br /&gt;
&lt;br /&gt;
* [[Conversione di un angolo da valori sessagesimali in decimali e viceversa]]&lt;br /&gt;
&lt;br /&gt;
* [[Conversione in Base64]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire in un tipo di dati numerico un valore letto in formato Stringa da un file]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da Decimale in Binario]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da rappresentazione binaria in decimale]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da rappresentazione Decimale a Carattere ASCII]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da rappresentazione Decimale a Esadecimale]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da rappresentazione Decimale a Ottale]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da rappresentazione Esadecimale a Decimale]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da rappresentazione esadecimale in binaria]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero da rappresentazione ottale in decimale]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un numero decimale in numerazione romana]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un valore di tipo Float in un Long con la funzione gst_util_gdouble_to_guint64() del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un valore di tipo Float in una stringa con la funzione PyOS_double_to_string() della libreria libpython3]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un valore di tipo Long in un Float con la funzione gst_util_guint64_to_gdouble() del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Convertire un valore numerico di tipo Float in una stringa di caratteri ASCII]]&lt;br /&gt;
&lt;br /&gt;
* [[Distinguere ogni byte della rappresentazione esadecimale di un valore decimale]]&lt;br /&gt;
&lt;br /&gt;
* [[Effettuare con le funzioni Glib-2.0 alcune operazioni sui bit di un valore di una variabile puntata da un Puntatore]]&lt;br /&gt;
&lt;br /&gt;
* [[Elevamento a potenza]]&lt;br /&gt;
&lt;br /&gt;
* [[Esempio di utilizzo delle funzioni esterne del API di GMP]]&lt;br /&gt;
&lt;br /&gt;
* [[Esponente di una potenza]]&lt;br /&gt;
&lt;br /&gt;
* [[Generare numeri casuali con le funzioni esterne del API di GLib]]&lt;br /&gt;
&lt;br /&gt;
* [[Generare numeri casuali con le funzioni esterne srand() e rand() di stdlib.h]]&lt;br /&gt;
&lt;br /&gt;
* [[Gestire numeri superiori al limite massimo supportato dal tipo Long]]&lt;br /&gt;
&lt;br /&gt;
* [[Invertire le cifre di un numero intero]]&lt;br /&gt;
&lt;br /&gt;
* [[Massimo Comun Divisore di due numeri con la funzione gst_util_greatest_common_divisor() di libgstreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Massimo Comun Divisore di due numeri con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Minimo Comune Multiplo di due numeri con le sole risorse di Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Notazione scientifica e notazione esponenziale in Gambas]]&lt;br /&gt;
&lt;br /&gt;
* [[Operazioni con precisione quadrupla a 128-bit con numeri in virgola mobile mediante la libreria quadmath.h]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere da un valore numerico i caratteri ASCII corrispondenti a ciascun byte componente il numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere dai suoi singoli dati-byte un valore numerico di tipo superiore al Byte]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere di un numero in virgola mobile la rappresentazione del separatore con il punto anziché con la virgola]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere i &amp;quot;reali&amp;quot; valori numerici da una lettura di tipo Stringa di un flusso di dati]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il ''nibble'' alto ed il ''nibble'' basso di un numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il numero più piccolo e quello più grande fra tre o più numeri mediante le funzioni esterne del API di libgsl]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il resto da due operandi di tipo Float di una divisione con le risorse del API di Libm.so.6]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere in Gambas il risultato di uno spostamento di bit scritto in linguaggio C]] &lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la parte intera e quella decimale di un numero in virgola mobile]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere la rappresentazione come stringa in memoria di un valore numerico]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere numeri casuali di ambito Byte dai file-device /dev/random e /dev/urandom]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un numero dalla sua memorizzazione in formato Big-Endian]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un numero dalla sua memorizzazione in formato Little-Endian]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere un valore numerico dalla rappresentazione in memoria come stringa]]&lt;br /&gt;
&lt;br /&gt;
* [[Porre a 0 oppure a 1 un bit di un numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Rappresentare un numero in alcune basi numeriche]]&lt;br /&gt;
&lt;br /&gt;
* [[Rendere la sola parte decimale di un numero in virgola mobile come un numero di tipo Intero]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere con le funzioni esterne del API di Glib quanti bit sono necessari per contenere un numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere il tipo di dato più piccolo in Gambas capace di contenere e rappresentare un numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere quanti bit posti ad 1 sono presenti in un numero]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se la cifra delle unità di un numero è zero]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un numero è pari o dispari]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un numero rientra in un ambito definito di due valori]]&lt;br /&gt;
&lt;br /&gt;
* [[Scambiare i rispettivi valori fra due variabili]]&lt;br /&gt;
&lt;br /&gt;
* [[Sostituire gli operatori logici di spostamento dei bit con semplici operazioni]]&lt;br /&gt;
&lt;br /&gt;
* [[Sottrazione con operatori bitwise]]&lt;br /&gt;
&lt;br /&gt;
* [[Trasformare un valore di tipo Float in una frazione con la funzione gst_util_double_to_fraction() della libreria libgstreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Trasformare una frazione in un valore di tipo Float con la funzione gst_util_fraction_to_double() della libreria libgstreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[Troncare alcune cifre decimali in un valore in virgola mobile]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare se un numero è una potenza di 2]]&lt;br /&gt;
&lt;br /&gt;
== ValueBox ==&lt;br /&gt;
&lt;br /&gt;
* [[Modificare l'allineamento del valore numerico in un ValueBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Rappresentare in un ValueBox un numero avente i punti delle migliaia e la virgola dei decimali]]&lt;br /&gt;
&lt;br /&gt;
* [[Scrivere testo in un ValueBox]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare in un ValueBox vari tipi di valori]]&lt;br /&gt;
&lt;br /&gt;
* [[Utilizzare l'evento _Change() in un ValueBox]]&lt;br /&gt;
&lt;br /&gt;
== Variabili in particolare ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere il nome di una variabile 'Pubblica']]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere in runtime il numero identificatore di un tipo di dato di una variabile presente nel codice]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere via codice la quantità di memoria occupata da una variabile]]&lt;br /&gt;
&lt;br /&gt;
* [[Contenere valori di diverso tipo]]&lt;br /&gt;
&lt;br /&gt;
* [[Rendere esplicitamente una variabile quale elemento di un vettore]]&lt;br /&gt;
&lt;br /&gt;
* [[Usare come identificatore di variabile il nome di una parola chiave o di una funzione ovvero un carattere non consentito]]&lt;br /&gt;
&lt;br /&gt;
* [[Verificare l'indirizzo di memoria di una variabile]]&lt;br /&gt;
&lt;br /&gt;
== Video ==&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere con 'proc...fdinfo' la quantità dei dati elaborati di un file video]]&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere quale file video un programma sta eseguendo]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire in streaming un video da youtube mediante l'oggetto WebView]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file Video con il codice HTML]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file Video con le funzioni esterne del API di Libmpv]]&lt;br /&gt;
&lt;br /&gt;
* [[Eseguire un file Video mediante il Metodo .Open() della Classe Desktop]]&lt;br /&gt;
&lt;br /&gt;
* [[Estrarre i dati video da un file PDF]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[La gestione dei dati video con la Classe MediaView del componente gb.media.form]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;B&amp;gt;[[La gestione del video e dei file video con il componente gb.media]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[La gestione del video e dei file video  con le funzioni esterne del API di GStreamer]]&lt;br /&gt;
&lt;br /&gt;
* [[La gestione del video e dei file video con le funzioni esterne del API di VLC]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni generali su flussi multimediali con le funzioni esterne del API di Quvi]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere informazioni generali sull'audio e sul video con le funzioni esterne del API di Libquicktime]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere con le funzioni esterne del API di Rhythmbox se un file contiene dati audio e/o video]]&lt;br /&gt;
&lt;br /&gt;
====i/o video====&lt;br /&gt;
&lt;br /&gt;
* [[Conoscere i driver video disponibili nel sistema mediante le funzioni esterne del API di SDL2]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere alcune informazioni sul dispositivo video di una webcam con le funzioni esterne del API di libv4l2]]&lt;br /&gt;
&lt;br /&gt;
== Watcher ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della classe Watcher]]&lt;br /&gt;
&lt;br /&gt;
== Web ==&lt;br /&gt;
&lt;br /&gt;
* [[Acquisire il codice HTML di una pagina web]]&lt;br /&gt;
&lt;br /&gt;
* [[Caricare una pagina web]]&lt;br /&gt;
&lt;br /&gt;
* [[Controllare i link contenuti da una pagina web]]&lt;br /&gt;
&lt;br /&gt;
* [[Decodificare con le risorse del API di Libidn i nomi di dominio internazionalizzati]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere il valore del colore di un pixel di una pagina web aperta con l'Oggetto WebView]]&lt;br /&gt;
&lt;br /&gt;
* [[Ottenere l'immagine di una pagina web]]&lt;br /&gt;
&lt;br /&gt;
* [[Sapere se un indirizzo web è valido]]&lt;br /&gt;
&lt;br /&gt;
== WorkSpace ==&lt;br /&gt;
&lt;br /&gt;
* [[Uso della Classe WorkSpace]]&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40627</id>
		<title>Compilare Gambas</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40627"/>
		<updated>2024-12-11T13:22:41Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== I Repository ==&lt;br /&gt;
&lt;br /&gt;
Per chi viene da altri sistemi operativi l’installazione di un programma in Linux può apparire poco chiara.&amp;lt;br&amp;gt;&lt;br /&gt;
Ormai, visto che tutti abbiamo uno smartphone, l’idea di uno ''Store'', cioè di un luogo virtuale da cui scaricare un’applicazione che ci serve, non è più una novità e infatti il sistema è stato copiato da Linux e dai suoi '''Repository'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Se in Linux serve un dato programma basta sceglierlo nel repository, fra le tante applicazioni del genere disponibili liberamente, installarlo e siamo subito operativi.&lt;br /&gt;
&lt;br /&gt;
Purtroppo date le tante distribuzioni che arricchiscono Linux, non sempre i programmi ivi presenti sono all’ultima versione, questo accade per i programmi più diffusi figurarsi per quelli di nicchia come ''Gambas''.&lt;br /&gt;
&lt;br /&gt;
Quindi se si vuole l’ultima versione di ''Gambas'', ''Stable'' oppure ''Master'' quella fresca di giornata con tutti gli ultimi ''fix'', non rimane altra scelta che compilare.&lt;br /&gt;
&lt;br /&gt;
Invero per chi usa Ubuntu o una sua derivata tipo Mint esistono dei repository speciali chiamati '''PPA''', quello di Gambas è curato direttamente da ''Benoit Minisini'' ideatore di ''Gambas''.&amp;lt;br&amp;gt;&lt;br /&gt;
Normalmente 24 ore dopo l’uscita, la nuova versione è disponibile.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo link troviamo i comandi per il terminale:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambaswiki.org/wiki/install/ubuntu#t1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cosa significa compilare ==&lt;br /&gt;
&lt;br /&gt;
Compilare è una &amp;lt;u&amp;gt;semplicissima operazione&amp;lt;/u&amp;gt; che permette di trasformare un file di codice sorgente in un file binario eseguibile dalla nostra distribuzione.&lt;br /&gt;
&lt;br /&gt;
L’operazione consiste nell’inviare al compilatore ''gcc'' attraverso il terminale alcuni comandi che eseguono degli ''script'' di shell e delle ''macro'' che automatizzano il tutto.&amp;lt;br&amp;gt;&lt;br /&gt;
Per prima cosa vengono eseguiti gli ''script'' che predispongono il codice per la nostra distribuzione quindi le funzioni (''macro'') che creano e installano l’eseguibile.&lt;br /&gt;
&lt;br /&gt;
Compilare un programma in GNU/Linux consiste in pratica nel dare tre comandi da terminale (''configure'' [script], ''make'' e ''make install'' [funzioni]), quale è dunque il motivo che spaventa i più?&lt;br /&gt;
&lt;br /&gt;
Credo che quello principale sia che ''Windows'' ci ha abituato a fare tutto attraverso le finestre e pertanto scrivere comandi in un terminale ci appare una cosa aliena, però se abbiamo velleità di programmazione la cosa risulta risibile, visto che programmare altro non è che scrivere comandi, i nostri comandi.&lt;br /&gt;
&lt;br /&gt;
''Gambas'', come tutte le applicazioni ''open source'' viene rilasciato sotto forma di codice sorgente &amp;lt;SUP&amp;gt;&amp;amp;#091;[[#Note|Nota 1]]&amp;amp;#093;&amp;lt;/sup&amp;gt; ed è attualmente presente su ''GitLab'' a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas&lt;br /&gt;
&lt;br /&gt;
''GitLab'' si apre sulla versione ''Master'' (quella in corso di sviluppo), ma agendo sul pulsante menu è possibile scegliere la versione stabile (''Stable'').&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi il suo codice può essere scaricato da li, anche graficamente, come file compresso: ''Tarball'' (con estensione .tar.gz, .tar.bz2 o .tar) oppure ''Zip'' (.zip).&lt;br /&gt;
&lt;br /&gt;
Dopo aver scaricato il file nella cartella desiderata, tipicamente la nostra ''home'', si può decomprimerlo usando il tasto destro del mouse e l’apposita voce di menu, ma visto che comunque per compilare dai sorgenti si dovrà fare uso del terminale e più avanti verrà descritta l’intera operazione di scaricamento da ''GitLab'', scaricare il file in questo modo appare inutile, a meno che si stia cercando una versione precedente l’attuale.&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi è comunque bene sapere che anche da ''GitLab'' sotto la voce ''Comit'' si può scaricare in forma compressa qualunque ''Gambas precedente'' sia stabile che di sviluppo.&lt;br /&gt;
&lt;br /&gt;
== Le librerie dinamiche ==&lt;br /&gt;
&lt;br /&gt;
Tutto troppo facile, vero?&amp;lt;br&amp;gt;&lt;br /&gt;
Uno potrebbe immaginare che vengano celate delle difficoltà !&amp;lt;br&amp;gt;&lt;br /&gt;
E infatti, la difficoltà del caso si chiama '''Libreria'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Un programma per funzionare ha bisogno che nel sistema siano installate determinate librerie, esattamente quelle della giusta versione.&amp;lt;br&amp;gt;&lt;br /&gt;
Pertanto installare un programma è semplice, trovare le librerie di cui si necessita per la distribuzione in nostro uso lo è un po’ meno e non perché sia difficile installarle ma perché è difficile capire come è stata nominata quella specifica libreria.&amp;lt;br&amp;gt;&lt;br /&gt;
''Gambas'' oltre che un programma è anche un linguaggio di programmazione e va da se che si basi su moltissime librerie.&lt;br /&gt;
&lt;br /&gt;
== Niente panico ==&lt;br /&gt;
&lt;br /&gt;
La stragrande maggioranza delle distribuzioni deriva da poche altre distribuzioni, per le più importanti le librerie utili a ''Gambas'' sono elencate nel file di configurazione YAML a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas/-/blob/master/.gitlab-ci.yml&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': il tipo di desktop in uso non è importante per la compilazione, quello che conta riguardo alle librerie da scaricare è la '''distribuzione''' che è il modo in uso a GNU/Linux di chiamare il sistema operativo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per compilare Gambas ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
  '''Nota''': la compilazione va fatta su una distribuzione pulita, vale a dire che ''Gambas'' non può essere già presente anche se scaricato dai repository.&amp;lt;br&amp;gt;Se è già presente, prima di poter compilare ''Gambas'' occorre &amp;lt;u&amp;gt;rimuoverlo completamente&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Qui come esempio useremo una distribuzione basata su ''Arch Linux'', tipo ''Manjaro'', ''Endeavour'' oltre che naturalmente a ''Arch'' stesso.&amp;lt;br&amp;gt;&lt;br /&gt;
Attualmente ''Benoit Minisini'' utilizza ''Manjaro'' con ''KDE''.&lt;br /&gt;
&lt;br /&gt;
''Quanto qui descritto si può adattare a qualunque altra distribuzione ed è indirizzato a programmatori dilettanti come lo scrivente, se siete dei professionisti il consiglio è di dare un’occhiata comunque''.&amp;lt;br&amp;gt;&lt;br /&gt;
Quello che segue servirà a preparare la giusta lista dei comandi che poi daremo da terminale usando il copia e incolla.&lt;br /&gt;
&lt;br /&gt;
* Copiamo il codice ''yaml'' su cui è basata la nostra distribuzione.&amp;lt;br&amp;gt;Ad esempio se noi utilizzassimo ''Mint 22'', dovremmo copiare il codice yaml di ''Ubuntu Noble'' sulla quale ''Mint 22'' è basata.&amp;lt;br&amp;gt;'''Attenzione''': le librerie in ''yaml''  sono scritte in modo differente in base alla distribuzione, alcune sono incolonnate come quelle di ''Arch'' altre scritte sequenzialmente in un unica lunga stringa vedi ''Ubuntu'', dobbiamo accertarci di copiare tutto.&lt;br /&gt;
* Incolliamo il codice yaml su un file di testo con l’aiuto di un editor e andiamo a cambiarlo così:&lt;br /&gt;
** eliminiamo le prime quattro righe&lt;br /&gt;
** anteponiamo '''sudo''' davanti al/ai comando che installa le librerie, nel caso di ''Arch'' si dovrà dare due comandi come scritto nel file, se nella nostra distribuzione non abbiamo sudo ci dobbiamo trasformare in utente ''root'' per poter installare le librerie.&amp;lt;br&amp;gt;Dopo averle incollate le librerie vanno cambiate in modo che siano separate fra di loro da uno spazio eliminando così eventuali tabulazioni e/o gli accapo.&lt;br /&gt;
** Ora dipende da quale Gambas desideriamo scaricare e installare,  questo nuovo comando dobbiamo inserirlo, in una nuova riga, nel file di testo subito dopo le librerie e serve a copiare in una nuova cartella all’interno della nostra ''home'' il progetto ''Gambas'' da compilare, per la versione stabile il comando è:&amp;lt;br&amp;gt;git clone --branch stable --depth=1 https://gitlab.com/gambas/gambas.git gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo chiamata ''Master'' il comando è:&amp;lt;br&amp;gt;git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel&lt;br /&gt;
** Dopo aver aggiunto il comando desiderato, occorre spostarsi all’interno della nuova cartella con uno di questi comandi, per la versione stabile il comando è:&amp;lt;br&amp;gt;cd gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo il comando è:&amp;lt;br&amp;gt;cd gambasdevel&lt;br /&gt;
** Gli altri comandi incollati rimangono invariati, tranne l'ultimo anch'esso preceduto da '''sudo''', vale a dire:&amp;lt;br&amp;gt;./reconf-all&amp;lt;br&amp;gt;GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl&amp;lt;br&amp;gt;make -j$(nproc)&amp;lt;br&amp;gt;sudo make install&lt;br /&gt;
&lt;br /&gt;
A questo punto, se avessimo scelto la versione di sviluppo (''Master''), il nostro file di testo dovrebbe assomigliare a questo, da notare che per facilitare la lettura, ho aggiunto degli spazi tra un comando e l’altro:&lt;br /&gt;
&lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm alure autoconf automake bzip2 zstd coreutils curl dbus gcc gdk-pixbuf2 git glew glib2 gmime3 gsl gst-plugins-base gstreamer gtk2 gtk3 imlib2 intltool libffi libgl libgnome-keyring mariadb-libs librsvg libsm libxcursor libxml2 libxslt libxtst mariadb make mesa ncurses pcre''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm pkg-config poppler poppler-glib postgresql postgresql-libs qt5-svg qt5-x11extras sdl2 sdl2_gfx sdl2_image sdl2_mixer sdl2_net sdl2_ttf sdl_mixer sdl_ttf smpeg sqlite unixodbc v4l-utils xdg-utils zlib gettext qt5-webengine webkit2gtk qt6-svg qt6-webengine mongo-c-driver''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
Non ci rimane che copiare e incollare, &amp;lt;u&amp;gt;un comando alla volta&amp;lt;/u&amp;gt;, nel terminale della nostra distribuzione che nel caso dell'esempio è ''Manjaro Linux''.&amp;lt;br&amp;gt;&lt;br /&gt;
Come detto se la nostra distribuzione non usa ''sudo'' occorre che al posto di sudo ci eleviamo a utente '''root''', senza mettere '''sudo''' nel comando.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per aggiornare ==&lt;br /&gt;
&lt;br /&gt;
Questo sistema è un po' drastico e se si ha padronanza di ''git'' possiamo anche saltarlo, occorre solo sapere che è l’unico sistema che garantisce l’aggiornamento sicuro di Gambas:&lt;br /&gt;
&lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make uninstall''&lt;br /&gt;
  &lt;br /&gt;
  ''cd''&lt;br /&gt;
  &lt;br /&gt;
  ''rm -rf gambasdevel/''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
'''Nota''': se usiamo la versione stabile dobbiamo sostituire ''gambasdevel'' con ''gambas-stable'' .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Note==&lt;br /&gt;
[1] È proprio il fatto di dover nascondere il codice per poterlo vendere che in Windows i programmi vengono distribuiti come binari (.exe).&amp;lt;br&amp;gt;&lt;br /&gt;
Sono decisamente facili da installare (meno che da repository) rispetto alla compilazione, ma dobbiamo ammettere che compilare è molto meno oneroso.&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40626</id>
		<title>Compilare Gambas</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40626"/>
		<updated>2024-12-11T13:19:15Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== I Repository ==&lt;br /&gt;
&lt;br /&gt;
Per chi viene da altri sistemi operativi l’installazione di un programma in Linux può apparire poco chiara.&amp;lt;br&amp;gt;&lt;br /&gt;
Ormai, visto che tutti abbiamo uno smartphone, l’idea di uno ''Store'', cioè di un luogo virtuale da cui scaricare un’applicazione che ci serve, non è più una novità e infatti il sistema è stato copiato da Linux e dai suoi '''Repository'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Se in Linux serve un dato programma basta sceglierlo nel repository, fra le tante applicazioni del genere disponibili liberamente, installarlo e siamo subito operativi.&lt;br /&gt;
&lt;br /&gt;
Purtroppo date le tante distribuzioni che arricchiscono Linux, non sempre i programmi ivi presenti sono all’ultima versione, questo accade per i programmi più diffusi figurarsi per quelli di nicchia come ''Gambas''.&lt;br /&gt;
&lt;br /&gt;
Quindi se si vuole l’ultima versione di ''Gambas'', ''Stable'' oppure ''Master'' quella fresca di giornata con tutti gli ultimi ''fix'', non rimane altra scelta che compilare.&lt;br /&gt;
&lt;br /&gt;
Invero per chi usa Ubuntu o una sua derivata tipo Mint esistono dei repository speciali chiamati '''PPA''', quello di Gambas è curato direttamente da ''Benoit Minisini'' ideatore di ''Gambas''.&amp;lt;br&amp;gt;&lt;br /&gt;
Normalmente 24 ore dopo l’uscita, la nuova versione è disponibile.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo link troviamo i comandi per il terminale:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambaswiki.org/wiki/install/ubuntu#t1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cosa significa compilare ==&lt;br /&gt;
&lt;br /&gt;
Compilare è una &amp;lt;u&amp;gt;semplicissima operazione&amp;lt;/u&amp;gt; che permette di trasformare un file di codice sorgente in un file binario eseguibile dalla nostra distribuzione.&lt;br /&gt;
&lt;br /&gt;
L’operazione consiste nell’inviare al compilatore ''gcc'' attraverso il terminale alcuni comandi che eseguono degli ''script'' di shell e delle ''macro'' che automatizzano il tutto.&amp;lt;br&amp;gt;&lt;br /&gt;
Per prima cosa vengono eseguiti gli ''script'' che predispongono il codice per la nostra distribuzione quindi le funzioni (''macro'') che creano e installano l’eseguibile.&lt;br /&gt;
&lt;br /&gt;
Compilare un programma in GNU/Linux consiste in pratica nel dare tre comandi da terminale (''configure'' [script], ''make'' e ''make install'' [funzioni]), quale è dunque il motivo che spaventa i più?&lt;br /&gt;
&lt;br /&gt;
Credo che quello principale sia che ''Windows'' ci ha abituato a fare tutto attraverso le finestre e pertanto scrivere comandi in un terminale ci appare una cosa aliena, però se abbiamo velleità di programmazione la cosa risulta risibile, visto che programmare altro non è che scrivere comandi, i nostri comandi.&lt;br /&gt;
&lt;br /&gt;
''Gambas'', come tutte le applicazioni ''open source'' viene rilasciato sotto forma di codice sorgente &amp;lt;SUP&amp;gt;&amp;amp;#091;[[#Note|Nota 1]]&amp;amp;#093;&amp;lt;/sup&amp;gt; ed è attualmente presente su ''GitLab'' a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas&lt;br /&gt;
&lt;br /&gt;
''GitLab'' si apre sulla versione ''Master'' (quella in corso di sviluppo), ma agendo sul pulsante menu è possibile scegliere la versione stabile (''Stable'').&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi il suo codice può essere scaricato da li, anche graficamente, come file compresso: ''Tarball'' (con estensione .tar.gz, .tar.bz2 o .tar) oppure ''Zip'' (.zip).&lt;br /&gt;
&lt;br /&gt;
Dopo aver scaricato il file nella cartella desiderata, tipicamente la nostra ''home'', si può decomprimerlo usando il tasto destro del mouse e l’apposita voce di menu, ma visto che comunque per compilare dai sorgenti si dovrà fare uso del terminale e più avanti verrà descritta l’intera operazione di scaricamento da ''GitLab'', scaricare il file in questo modo appare inutile, a meno che si stia cercando una versione precedente l’attuale.&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi è comunque bene sapere che anche da ''GitLab'' sotto la voce ''Comit'' si può scaricare in forma compressa qualunque ''Gambas precedente'' sia stabile che di sviluppo.&lt;br /&gt;
&lt;br /&gt;
== Le librerie dinamiche ==&lt;br /&gt;
&lt;br /&gt;
Tutto troppo facile, vero?&amp;lt;br&amp;gt;&lt;br /&gt;
Uno potrebbe immaginare che vengano celate delle difficoltà !&amp;lt;br&amp;gt;&lt;br /&gt;
E infatti, la difficoltà del caso si chiama '''Libreria'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Un programma per funzionare ha bisogno che nel sistema siano installate determinate librerie, esattamente quelle della giusta versione.&amp;lt;br&amp;gt;&lt;br /&gt;
Pertanto installare un programma è semplice, trovare le librerie di cui si necessita per la distribuzione in nostro uso lo è un po’ meno e non perché sia difficile installarle ma perché è difficile capire come è stata nominata quella specifica libreria.&amp;lt;br&amp;gt;&lt;br /&gt;
''Gambas'' oltre che un programma è anche un linguaggio di programmazione e va da se che si basi su moltissime librerie.&lt;br /&gt;
&lt;br /&gt;
== Niente panico ==&lt;br /&gt;
&lt;br /&gt;
La stragrande maggioranza delle distribuzioni deriva da poche altre distribuzioni, per le più importanti le librerie utili a ''Gambas'' sono elencate nel file di configurazione YAML a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas/-/blob/master/.gitlab-ci.yml&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': il tipo di desktop in uso non è importante per la compilazione, quello che conta riguardo alle librerie da scaricare è la '''distribuzione''' che è il modo in uso a GNU/Linux di chiamare il sistema operativo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per compilare Gambas ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
  '''Nota''': la compilazione va fatta su una distribuzione pulita, vale a dire che ''Gambas'' non può essere già presente anche se scaricato dai repository.&amp;lt;br&amp;gt;Se è già presente, prima di poter compilare ''Gambas'' occorre &amp;lt;u&amp;gt;rimuoverlo completamente&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Qui come esempio useremo una distribuzione basata su ''Arch Linux'', tipo ''Manjaro'', ''Endeavour'' oltre che naturalmente a ''Arch'' stesso.&amp;lt;br&amp;gt;&lt;br /&gt;
Attualmente ''Benoit Minisini'' utilizza ''Manjaro'' con ''KDE''.&lt;br /&gt;
&lt;br /&gt;
''Quanto qui descritto si può adattare a qualunque altra distribuzione ed è indirizzato a programmatori dilettanti come lo scrivente, se siete dei professionisti il consiglio è di dare un’occhiata comunque''.&amp;lt;br&amp;gt;&lt;br /&gt;
Quello che segue servirà a preparare la giusta lista dei comandi che poi daremo da terminale usando il copia e incolla.&lt;br /&gt;
&lt;br /&gt;
* Copiamo il codice ''yaml'' su cui è basata la nostra distribuzione.&amp;lt;br&amp;gt;Ad esempio se noi utilizzassimo ''Mint 22'', dovremmo copiare il codice yaml di ''Ubuntu Noble'' sulla quale ''Mint 22'' è basata.&amp;lt;br&amp;gt;'''Attenzione''': le librerie in ''yaml''  sono scritte in modo differente in base alla distribuzione, alcune sono incolonnate come quelle di ''Arch'' altre scritte sequenzialmente in un unica lunga stringa vedi ''Ubuntu'', dobbiamo accertarci di copiare tutto.&lt;br /&gt;
* Incolliamo il codice yaml su un file di testo con l’aiuto di un editor e andiamo a cambiarlo così:&lt;br /&gt;
** eliminiamo le prime quattro righe&lt;br /&gt;
** anteponiamo '''sudo''' davanti al/ai comando che installa le librerie, nel caso di ''Arch'' si dovrà dare due comandi come scritto nel file, se nella nostra distribuzione non abbiamo sudo ci dobbiamo trasformare in utente ''root'' per poter installare le librerie.&amp;lt;br&amp;gt;Dopo averle incollate le librerie vanno cambiate in modo che siano separate fra di loro da uno spazio eliminando così eventuali tabulazioni e/o gli accapo.&lt;br /&gt;
** Ora dipende da quale Gambas desideriamo scaricare e installare,  questo nuovo comando dobbiamo inserirlo, in una nuova riga, nel file di testo subito dopo le librerie e serve a copiare in una nuova cartella all’interno della nostra ''home'' il progetto ''Gambas'' da compilare, per la versione stabile il comando è:&amp;lt;br&amp;gt;git clone --branch stable --depth=1 https://gitlab.com/gambas/gambas.git gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo chiamata ''Master'' il comando è:&amp;lt;br&amp;gt;git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel&lt;br /&gt;
** Dopo aver aggiunto il comando desiderato, occorre spostarsi all’interno della nuova cartella con uno di questi comandi, per la versione stabile il comando è:&amp;lt;br&amp;gt;cd gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo il comando è:&amp;lt;br&amp;gt;cd gambasdevel&lt;br /&gt;
** Gli altri comandi incollati rimangono invariati, tranne l'ultimo anch'esso preceduto da '''sudo''', vale a dire:&amp;lt;br&amp;gt;./reconf-all&amp;lt;br&amp;gt;GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl&amp;lt;br&amp;gt;make -j$(nproc)&amp;lt;br&amp;gt;sudo make install&lt;br /&gt;
&lt;br /&gt;
A questo punto, se avessimo scelto la versione di sviluppo (''Master''), il nostro file di testo dovrebbe assomigliare a questo, da notare che per facilitare la lettura, ho aggiunto degli spazi tra un comando e l’altro:&lt;br /&gt;
&lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm alure autoconf automake bzip2 zstd coreutils curl dbus gcc gdk-pixbuf2 git glew glib2 gmime3 gsl gst-plugins-base gstreamer gtk2 gtk3 imlib2 intltool libffi libgl libgnome-keyring mariadb-libs librsvg libsm libxcursor libxml2 libxslt libxtst mariadb make mesa ncurses pcre''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm pkg-config poppler poppler-glib postgresql postgresql-libs qt5-svg qt5-x11extras sdl2 sdl2_gfx sdl2_image sdl2_mixer sdl2_net sdl2_ttf sdl_mixer sdl_ttf smpeg sqlite unixodbc v4l-utils xdg-utils zlib gettext qt5-webengine webkit2gtk qt6-svg qt6-webengine mongo-c-driver''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
Non ci rimane che copiare e incollare, &amp;lt;u&amp;gt;un comando alla volta&amp;lt;/u&amp;gt;, nel terminale della nostra distribuzione che nel caso dell'esempio è ''Manjaro Linux''.&amp;lt;br&amp;gt;&lt;br /&gt;
Come detto se la nostra distribuzione non usa ''sudo'' occorre che al posto di sudo ci eleviamo a utente '''root''', senza mettere '''sudo''' nel comando.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per aggiornare ==&lt;br /&gt;
&lt;br /&gt;
Questo sistema è un po' drastico e se si ha padronanza di ''git'' possiamo anche saltarlo, occorre solo sapere che è l’unico sistema che garantisce l’aggiornamento sicuro di Gambas:&lt;br /&gt;
&lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make uninstall''&lt;br /&gt;
  &lt;br /&gt;
  ''cd''&lt;br /&gt;
  &lt;br /&gt;
  ''rm -rf gambasdevel/''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
'''Nota''': se usiamo la versione stabile dobbiamo sostituire ''gambasdevel'' con ''gambas-stable'' .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Note=&lt;br /&gt;
[1] È proprio il fatto di dover nascondere il codice per poterlo vendere che in Windows i programmi vengono distribuiti come binari (.exe).&amp;lt;br&amp;gt;&lt;br /&gt;
Sono decisamente facili da installare (meno che da repository) rispetto alla compilazione, ma dobbiamo ammettere che compilare è molto meno oneroso.&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40625</id>
		<title>Compilare Gambas</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40625"/>
		<updated>2024-12-11T13:17:53Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== I Repository ==&lt;br /&gt;
&lt;br /&gt;
Per chi viene da altri sistemi operativi l’installazione di un programma in Linux può apparire poco chiara.&amp;lt;br&amp;gt;&lt;br /&gt;
Ormai, visto che tutti abbiamo uno smartphone, l’idea di uno ''Store'', cioè di un luogo virtuale da cui scaricare un’applicazione che ci serve, non è più una novità e infatti il sistema è stato copiato da Linux e dai suoi '''Repository'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Se in Linux serve un dato programma basta sceglierlo nel repository, fra le tante applicazioni del genere disponibili liberamente, installarlo e siamo subito operativi.&lt;br /&gt;
&lt;br /&gt;
Purtroppo date le tante distribuzioni che arricchiscono Linux, non sempre i programmi ivi presenti sono all’ultima versione, questo accade per i programmi più diffusi figurarsi per quelli di nicchia come ''Gambas''.&lt;br /&gt;
&lt;br /&gt;
Quindi se si vuole l’ultima versione di ''Gambas'', ''Stable'' oppure ''Master'' quella fresca di giornata con tutti gli ultimi ''fix'', non rimane altra scelta che compilare.&lt;br /&gt;
&lt;br /&gt;
Invero per chi usa Ubuntu o una sua derivata tipo Mint esistono dei repository speciali chiamati '''PPA''', quello di Gambas è curato direttamente da ''Benoit Minisini'' ideatore di ''Gambas''.&amp;lt;br&amp;gt;&lt;br /&gt;
Normalmente 24 ore dopo l’uscita, la nuova versione è disponibile.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo link troviamo i comandi per il terminale:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambaswiki.org/wiki/install/ubuntu#t1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cosa significa compilare ==&lt;br /&gt;
&lt;br /&gt;
Compilare è una &amp;lt;u&amp;gt;semplicissima operazione&amp;lt;/u&amp;gt; che permette di trasformare un file di codice sorgente in un file binario eseguibile dalla nostra distribuzione.&lt;br /&gt;
&lt;br /&gt;
L’operazione consiste nell’inviare al compilatore ''gcc'' attraverso il terminale alcuni comandi che eseguono degli ''script'' di shell e delle ''macro'' che automatizzano il tutto.&amp;lt;br&amp;gt;&lt;br /&gt;
Per prima cosa vengono eseguiti gli ''script'' che predispongono il codice per la nostra distribuzione quindi le funzioni (''macro'') che creano e installano l’eseguibile.&lt;br /&gt;
&lt;br /&gt;
Compilare un programma in GNU/Linux consiste in pratica nel dare tre comandi da terminale (''configure'' [script], ''make'' e ''make install'' [funzioni]), quale è dunque il motivo che spaventa i più?&lt;br /&gt;
&lt;br /&gt;
Credo che quello principale sia che ''Windows'' ci ha abituato a fare tutto attraverso le finestre e pertanto scrivere comandi in un terminale ci appare una cosa aliena, però se abbiamo velleità di programmazione la cosa risulta risibile, visto che programmare altro non è che scrivere comandi, i nostri comandi.&lt;br /&gt;
&lt;br /&gt;
''Gambas'', come tutte le applicazioni ''open source'' viene rilasciato sotto forma di codice sorgente &amp;lt;SUP&amp;gt;&amp;amp;#091;[[#Note|Nota 1]]&amp;amp;#093;&amp;lt;/sup&amp;gt; ed è attualmente presente su ''GitLab'' a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas&lt;br /&gt;
&lt;br /&gt;
''GitLab'' si apre sulla versione ''Master'' (quella in corso di sviluppo), ma agendo sul pulsante menu è possibile scegliere la versione stabile (''Stable'').&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi il suo codice può essere scaricato da li, anche graficamente, come file compresso: ''Tarball'' (con estensione .tar.gz, .tar.bz2 o .tar) oppure ''Zip'' (.zip).&lt;br /&gt;
&lt;br /&gt;
Dopo aver scaricato il file nella cartella desiderata, tipicamente la nostra ''home'', si può decomprimerlo usando il tasto destro del mouse e l’apposita voce di menu, ma visto che comunque per compilare dai sorgenti si dovrà fare uso del terminale e più avanti verrà descritta l’intera operazione di scaricamento da ''GitLab'', scaricare il file in questo modo appare inutile, a meno che si stia cercando una versione precedente l’attuale.&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi è comunque bene sapere che anche da ''GitLab'' sotto la voce ''Comit'' si può scaricare in forma compressa qualunque ''Gambas precedente'' sia stabile che di sviluppo.&lt;br /&gt;
&lt;br /&gt;
== Le librerie dinamiche ==&lt;br /&gt;
&lt;br /&gt;
Tutto troppo facile, vero?&amp;lt;br&amp;gt;&lt;br /&gt;
Uno potrebbe immaginare che vengano celate delle difficoltà !&amp;lt;br&amp;gt;&lt;br /&gt;
E infatti, la difficoltà del caso si chiama '''Libreria'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Un programma per funzionare ha bisogno che nel sistema siano installate determinate librerie, esattamente quelle della giusta versione.&amp;lt;br&amp;gt;&lt;br /&gt;
Pertanto installare un programma è semplice, trovare le librerie di cui si necessita per la distribuzione in nostro uso lo è un po’ meno e non perché sia difficile installarle ma perché è difficile capire come è stata nominata quella specifica libreria.&amp;lt;br&amp;gt;&lt;br /&gt;
''Gambas'' oltre che un programma è anche un linguaggio di programmazione e va da se che si basi su moltissime librerie.&lt;br /&gt;
&lt;br /&gt;
== Niente panico ==&lt;br /&gt;
&lt;br /&gt;
La stragrande maggioranza delle distribuzioni deriva da poche altre distribuzioni, per le più importanti le librerie utili a ''Gambas'' sono elencate nel file di configurazione YAML a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas/-/blob/master/.gitlab-ci.yml&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': il tipo di desktop in uso non è importante per la compilazione, quello che conta riguardo alle librerie da scaricare è la '''distribuzione''' che è il modo in uso a GNU/Linux di chiamare il sistema operativo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per compilare Gambas ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
  '''Nota''': la compilazione va fatta su una distribuzione pulita, vale a dire che ''Gambas'' non può essere già presente anche se scaricato dai repository.&amp;lt;br&amp;gt;Se è già presente, prima di poter compilare ''Gambas'' occorre &amp;lt;u&amp;gt;rimuoverlo completamente&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Qui come esempio useremo una distribuzione basata su ''Arch Linux'', tipo ''Manjaro'', ''Endeavour'' oltre che naturalmente a ''Arch'' stesso.&amp;lt;br&amp;gt;&lt;br /&gt;
Attualmente ''Benoit Minisini'' utilizza ''Manjaro'' con ''KDE''.&lt;br /&gt;
&lt;br /&gt;
''Quanto qui descritto si può adattare a qualunque altra distribuzione ed è indirizzato a programmatori dilettanti come lo scrivente, se siete dei professionisti il consiglio è di dare un’occhiata comunque''.&amp;lt;br&amp;gt;&lt;br /&gt;
Quello che segue servirà a preparare la giusta lista dei comandi che poi daremo da terminale usando il copia e incolla.&lt;br /&gt;
&lt;br /&gt;
* Copiamo il codice ''yaml'' su cui è basata la nostra distribuzione.&amp;lt;br&amp;gt;Ad esempio se noi utilizzassimo ''Mint 22'', dovremmo copiare il codice yaml di ''Ubuntu Noble'' sulla quale ''Mint 22'' è basata.&amp;lt;br&amp;gt;'''Attenzione''': le librerie in ''yaml''  sono scritte in modo differente in base alla distribuzione, alcune sono incolonnate come quelle di ''Arch'' altre scritte sequenzialmente in un unica lunga stringa vedi ''Ubuntu'', dobbiamo accertarci di copiare tutto.&lt;br /&gt;
* Incolliamo il codice yaml su un file di testo con l’aiuto di un editor e andiamo a cambiarlo così:&lt;br /&gt;
** eliminiamo le prime quattro righe&lt;br /&gt;
** anteponiamo '''sudo''' davanti al/ai comando che installa le librerie, nel caso di ''Arch'' si dovrà dare due comandi come scritto nel file, se nella nostra distribuzione non abbiamo sudo ci dobbiamo trasformare in utente ''root'' per poter installare le librerie.&amp;lt;br&amp;gt;Dopo averle incollate le librerie vanno cambiate in modo che siano separate fra di loro da uno spazio eliminando così eventuali tabulazioni e/o gli accapo.&lt;br /&gt;
** Ora dipende da quale Gambas desideriamo scaricare e installare,  questo nuovo comando dibbiamo inserirlo, in una nuova riga, nel file di testo subito dopo le librerie e serve a copiare in una nuova cartella all’interno della nostra ''home'' il progetto ''Gambas'' da compilare, per la versione stabile il comando è:&amp;lt;br&amp;gt;git clone --branch stable --depth=1 https://gitlab.com/gambas/gambas.git gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo chiamata ''Master'' il comando è:&amp;lt;br&amp;gt;git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel&lt;br /&gt;
** Dopo aver aggiunto il comando desiderato, occorre spostarsi all’interno della nuova cartella con uno di questi comandi, per la versione stabile il comando è:&amp;lt;br&amp;gt;cd gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo il comando è:&amp;lt;br&amp;gt;cd gambasdevel&lt;br /&gt;
** Gli altri comandi incollati rimangono invariati, tranne l'ultimo anch'esso preceduto da '''sudo''', vale a dire:&amp;lt;br&amp;gt;./reconf-all&amp;lt;br&amp;gt;GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl&amp;lt;br&amp;gt;make -j$(nproc)&amp;lt;br&amp;gt;sudo make install&lt;br /&gt;
&lt;br /&gt;
A questo punto, se avessimo scelto la versione di sviluppo (''Master''), il nostro file di testo dovrebbe assomigliare a questo, da notare che per facilitare la lettura, ho aggiunto degli spazi tra un comando e l’altro:&lt;br /&gt;
&lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm alure autoconf automake bzip2 zstd coreutils curl dbus gcc gdk-pixbuf2 git glew glib2 gmime3 gsl gst-plugins-base gstreamer gtk2 gtk3 imlib2 intltool libffi libgl libgnome-keyring mariadb-libs librsvg libsm libxcursor libxml2 libxslt libxtst mariadb make mesa ncurses pcre''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm pkg-config poppler poppler-glib postgresql postgresql-libs qt5-svg qt5-x11extras sdl2 sdl2_gfx sdl2_image sdl2_mixer sdl2_net sdl2_ttf sdl_mixer sdl_ttf smpeg sqlite unixodbc v4l-utils xdg-utils zlib gettext qt5-webengine webkit2gtk qt6-svg qt6-webengine mongo-c-driver''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
Non ci rimane che copiare e incollare, &amp;lt;u&amp;gt;un comando alla volta&amp;lt;/u&amp;gt;, nel terminale della nostra distribuzione che nel caso dell'esempio è ''Manjaro Linux''.&amp;lt;br&amp;gt;&lt;br /&gt;
Come detto se la nostra distribuzione non usa ''sudo'' occorre che al posto di sudo ci eleviamo a utente '''root''', senza mettere '''sudo''' nel comando.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per aggiornare ==&lt;br /&gt;
&lt;br /&gt;
Questo sistema è un po' drastico e se si ha padronanza di ''git'' possiamo anche saltarlo, occorre solo sapere che è l’unico sistema che garantisce l’aggiornamento sicuro di Gambas:&lt;br /&gt;
&lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make uninstall''&lt;br /&gt;
  &lt;br /&gt;
  ''cd''&lt;br /&gt;
  &lt;br /&gt;
  ''rm -rf gambasdevel/''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
'''Nota''': se usiamo la versione stabile dobbiamo sostituire ''gambasdevel'' con ''gambas-stable'' .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Note=&lt;br /&gt;
[1] È proprio il fatto di dover nascondere il codice per poterlo vendere che in Windows i programmi vengono distribuiti come binari (.exe).&amp;lt;br&amp;gt;&lt;br /&gt;
Sono decisamente facili da installare (meno che da repository) rispetto alla compilazione, ma dobbiamo ammettere che compilare è molto meno oneroso.&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40624</id>
		<title>Compilare Gambas</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40624"/>
		<updated>2024-12-11T13:08:55Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== I Repository ==&lt;br /&gt;
&lt;br /&gt;
Per chi viene da altri sistemi operativi l’installazione di un programma in Linux può apparire poco chiara.&amp;lt;br&amp;gt;&lt;br /&gt;
Ormai, visto che tutti abbiamo uno smartphone, l’idea di uno ''Store'', cioè di un luogo virtuale da cui scaricare un’applicazione che ci serve, non è più una novità e infatti il sistema è stato copiato da Linux e dai suoi '''Repository'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Se in Linux serve un dato programma basta sceglierlo nel repository, fra le tante applicazioni del genere disponibili liberamente, installarlo e siamo subito operativi.&lt;br /&gt;
&lt;br /&gt;
Purtroppo date le tante distribuzioni che arricchiscono Linux, non sempre i programmi ivi presenti sono all’ultima versione, questo accade per i programmi più diffusi figurarsi per quelli di nicchia come ''Gambas''.&lt;br /&gt;
&lt;br /&gt;
Quindi se si vuole l’ultima versione di ''Gambas'', ''Stable'' oppure ''Master'' quella fresca di giornata con tutti gli ultimi ''fix'', non rimane altra scelta che compilare.&lt;br /&gt;
&lt;br /&gt;
Invero per chi usa Ubuntu o una sua derivata tipo Mint esistono dei repository speciali chiamati '''PPA''', quello di Gambas è curato direttamente da ''Benoit Minisini'' ideatore di ''Gambas''.&amp;lt;br&amp;gt;&lt;br /&gt;
Normalmente 24 ore dopo l’uscita, la nuova versione è disponibile.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo link troviamo i comandi per il terminale:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambaswiki.org/wiki/install/ubuntu#t1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cosa significa compilare ==&lt;br /&gt;
&lt;br /&gt;
Compilare è una &amp;lt;u&amp;gt;semplicissima operazione&amp;lt;/u&amp;gt; che permette di trasformare un file di codice sorgente in un file binario eseguibile dalla nostra distribuzione.&lt;br /&gt;
&lt;br /&gt;
L’operazione consiste nell’inviare al compilatore ''gcc'' attraverso il terminale alcuni comandi che eseguono degli ''script'' di shell e delle ''macro'' che automatizzano il tutto.&amp;lt;br&amp;gt;&lt;br /&gt;
Per prima cosa vengono eseguiti gli ''script'' che predispongono il codice per la nostra distribuzione quindi le funzioni (''macro'') che creano e installano l’eseguibile.&lt;br /&gt;
&lt;br /&gt;
Compilare un programma in GNU/Linux consiste in pratica nel dare tre comandi da terminale (''configure'' [script], ''make'' e ''make install'' [funzioni]), quale è dunque il motivo che spaventa i più?&lt;br /&gt;
&lt;br /&gt;
Credo che quello principale sia che ''Windows'' ci ha abituato a fare tutto attraverso le finestre e pertanto scrivere comandi in un terminale ci appare una cosa aliena, però se abbiamo velleità di programmazione la cosa risulta risibile, visto che programmare altro non è che scrivere comandi, i nostri comandi.&lt;br /&gt;
&lt;br /&gt;
''Gambas'', come tutte le applicazioni ''open source'' viene rilasciato sotto forma di codice sorgente &amp;lt;SUP&amp;gt;&amp;amp;#091;[[#Note|Nota 1]]&amp;amp;#093;&amp;lt;/sup&amp;gt; ed è attualmente presente su ''GitLab'' a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas&lt;br /&gt;
&lt;br /&gt;
''GitLab'' si apre sulla versione ''Master'' (quella in corso di sviluppo), ma agendo sul pulsante menu è possibile scegliere la versione stabile (''Stable'').&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi il suo codice può essere scaricato da li, anche graficamente, come file compresso: ''Tarball'' (con estensione .tar.gz, .tar.bz2 o .tar) oppure ''Zip'' (.zip).&lt;br /&gt;
&lt;br /&gt;
Dopo aver scaricato il file nella cartella desiderata, tipicamente la nostra ''home'', si può decomprimerlo usando il tasto destro del mouse e l’apposita voce di menu, ma visto che comunque per compilare dai sorgenti si dovrà fare uso del terminale e più avanti verrà descritta l’intera operazione di scaricamento da ''GitLab'', scaricare il file in questo modo appare inutile, a meno che si stia cercando una versione precedente l’attuale.&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi è comunque bene sapere che anche da ''GitLab'' sotto la voce ''Comit'' si può scaricare in forma compressa qualunque ''Gambas precedente'' sia stabile che di sviluppo.&lt;br /&gt;
&lt;br /&gt;
== Le librerie dinamiche ==&lt;br /&gt;
&lt;br /&gt;
Tutto troppo facile, vero?&amp;lt;br&amp;gt;&lt;br /&gt;
Uno potrebbe immaginare che vengano celate delle difficoltà !&amp;lt;br&amp;gt;&lt;br /&gt;
E infatti, la difficoltà del caso si chiama '''Libreria'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Un programma per funzionare ha bisogno che nel sistema siano installate determinate librerie, esattamente quelle della giusta versione.&amp;lt;br&amp;gt;&lt;br /&gt;
Pertanto installare un programma è semplice, trovare le librerie di cui si necessita per la distribuzione in nostro uso lo è un po’ meno e non perché sia difficile installarle ma perché è difficile capire come è stata nominata quella specifica libreria.&amp;lt;br&amp;gt;&lt;br /&gt;
''Gambas'' oltre che un programma è anche un linguaggio di programmazione e va da se che si basi su moltissime librerie.&lt;br /&gt;
&lt;br /&gt;
== Niente panico ==&lt;br /&gt;
&lt;br /&gt;
La stragrande maggioranza delle distribuzioni deriva da poche altre distribuzioni, per le più importanti le librerie utili a ''Gambas'' sono elencate nel file di configurazione YAML a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas/-/blob/master/.gitlab-ci.yml&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': il tipo di desktop in uso non è importante per la compilazione, quello che conta riguardo alle librerie da scaricare è la '''distribuzione''' che è il modo in uso a GNU/Linux di chiamare il sistema operativo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per compilare Gambas ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
  '''Nota''': la compilazione va fatta su una distribuzione pulita, vale a dire che ''Gambas'' non può essere già presente anche se scaricato dai repository.&amp;lt;br&amp;gt;Se è già presente, prima di poter compilare ''Gambas'' occorre &amp;lt;u&amp;gt;rimuoverlo completamente&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Qui come esempio useremo una distribuzione basata su ''Arch Linux'', tipo ''Manjaro'', ''Endeavour'' oltre che naturalmente a ''Arch'' stesso.&amp;lt;br&amp;gt;&lt;br /&gt;
Attualmente ''Benoit Minisini'' utilizza ''Manjaro'' con ''KDE''.&lt;br /&gt;
&lt;br /&gt;
''Quanto qui descritto si può adattare a qualunque altra distribuzione ed è indirizzato a programmatori dilettanti come lo scrivente, se siete dei professionisti il consiglio è di dare un’occhiata comunque''.&amp;lt;br&amp;gt;&lt;br /&gt;
Quello che segue servirà a preparare la giusta lista dei comandi che poi daremo da terminale usando il copia e incolla.&lt;br /&gt;
&lt;br /&gt;
* Copiamo il codice ''yaml'' su cui è basata la nostra distribuzione.&amp;lt;br&amp;gt;Ad esempio se noi utilizzassimo ''Mint 22'', dovremmo copiare il codice yaml di ''Ubuntu Noble'' sulla quale ''Mint 22'' è basata.&amp;lt;br&amp;gt;'''Attenzione''': le librerie in ''yaml''  sono scritte in modo differente in base alla distribuzione, alcune sono incolonnate come quelle di ''Arch'' altre scritte sequenzialmente in un unica lunga stringa vedi ''Ubuntu'', dobbiamo accertarci di copiare tutto.&lt;br /&gt;
* Incolliamo il codice yaml su un file di testo con l’aiuto di un editor e andiamo a cambiarlo così:&lt;br /&gt;
** eliminiamo le prime quattro righe&lt;br /&gt;
** anteponiamo '''sudo''' davanti al/ai comando che installa le librerie, nel caso di ''Arch'' si dovrà dare due comandi come scritto nel file, se nella vostra distribuzione non abbiamo sudo ci dobbiamo trasformare in utente ''root'' per poter installare le librerie.&amp;lt;br&amp;gt;Dopo averle incollate le librerie vanno cambiate in modo che siano separate fra di loro da uno spazio eliminando così eventuali tabulazioni e/o gli accapo.&lt;br /&gt;
** Ora dipende da quale Gambas desideriamo scaricare e installare,  questo nuovo comando dibbiamo inserirlo, in una nuova riga, nel file di testo subito dopo le librerie e serve a copiare in una nuova cartella all’interno della nostra ''home'' il progetto ''Gambas'' da compilare, per la versione stabile il comando è:&amp;lt;br&amp;gt;git clone --branch stable --depth=1 https://gitlab.com/gambas/gambas.git gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo chiamata ''Master'' il comando è:&amp;lt;br&amp;gt;git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel&lt;br /&gt;
** Dopo aver aggiunto il comando desiderato, occorre spostarsi all’interno della nuova cartella con uno di questi comandi, per la versione stabile il comando è:&amp;lt;br&amp;gt;cd gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo il comando è:&amp;lt;br&amp;gt;cd gambasdevel&lt;br /&gt;
** Gli altri comandi incollati rimangono invariati, tranne l'ultimo anch'esso preceduto da '''sudo''', vale a dire:&amp;lt;br&amp;gt;./reconf-all&amp;lt;br&amp;gt;GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl&amp;lt;br&amp;gt;make -j$(nproc)&amp;lt;br&amp;gt;sudo make install&lt;br /&gt;
&lt;br /&gt;
A questo punto, se avessimo scelto la versione di sviluppo (''Master''), il nostro file di testo dovrebbe assomigliare a questo, da notare che per facilitare la lettura, ho aggiunto degli spazi tra un comando e l’altro:&lt;br /&gt;
&lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm alure autoconf automake bzip2 zstd coreutils curl dbus gcc gdk-pixbuf2 git glew glib2 gmime3 gsl gst-plugins-base gstreamer gtk2 gtk3 imlib2 intltool libffi libgl libgnome-keyring mariadb-libs librsvg libsm libxcursor libxml2 libxslt libxtst mariadb make mesa ncurses pcre''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm pkg-config poppler poppler-glib postgresql postgresql-libs qt5-svg qt5-x11extras sdl2 sdl2_gfx sdl2_image sdl2_mixer sdl2_net sdl2_ttf sdl_mixer sdl_ttf smpeg sqlite unixodbc v4l-utils xdg-utils zlib gettext qt5-webengine webkit2gtk qt6-svg qt6-webengine mongo-c-driver''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
Non ci rimane che copiare e incollare, &amp;lt;u&amp;gt;un comando alla volta&amp;lt;/u&amp;gt;, nel terminale della nostra distribuzione che nel caso dell'esempio è ''Manjaro Linux''.&amp;lt;br&amp;gt;&lt;br /&gt;
Come detto se la nostra distribuzione non usa ''sudo'' occorre che al posto di sudo ci eleviamo a utente '''root''', senza mettere '''sudo''' nel comando.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per aggiornare ==&lt;br /&gt;
&lt;br /&gt;
Questo sistema è un po' drastico e se si ha padronanza di ''git'' possiamo anche saltarlo, occorre solo sapere che è l’unico sistema che garantisce l’aggiornamento sicuro di Gambas:&lt;br /&gt;
&lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make uninstall''&lt;br /&gt;
  &lt;br /&gt;
  ''cd''&lt;br /&gt;
  &lt;br /&gt;
  ''rm -rf gambasdevel/''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
'''Nota''': se usiamo la versione stabile dobbiamo sostituire ''gambasdevel'' con ''gambas-stable'' .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Note=&lt;br /&gt;
[1] È proprio il fatto di dover nascondere il codice per poterlo vendere che in Windows i programmi vengono distribuiti come binari (.exe).&amp;lt;br&amp;gt;&lt;br /&gt;
Sono decisamente facili da installare (meno che da repository) rispetto alla compilazione, ma dobbiamo ammettere che compilare è molto meno oneroso.&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40623</id>
		<title>Compilare Gambas</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40623"/>
		<updated>2024-12-11T13:07:49Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== I Repository ==&lt;br /&gt;
&lt;br /&gt;
Per chi viene da altri sistemi operativi l’installazione di un programma in Linux può apparire poco chiara.&lt;br /&gt;
Ormai, visto che tutti abbiamo uno smartphone, l’idea di uno ''Store'', cioè di un luogo virtuale da cui scaricare un’applicazione che ci serve, non è più una novità e infatti il sistema è stato copiato da Linux e dai suoi '''Repository'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Se in Linux serve un dato programma basta sceglierlo nel repository, fra le tante applicazioni del genere disponibili liberamente, installarlo e siamo subito operativi.&lt;br /&gt;
&lt;br /&gt;
Purtroppo date le tante distribuzioni che arricchiscono Linux, non sempre i programmi ivi presenti sono all’ultima versione, questo accade per i programmi più diffusi figurarsi per quelli di nicchia come ''Gambas''.&lt;br /&gt;
&lt;br /&gt;
Quindi se si vuole l’ultima versione di ''Gambas'', ''Stable'' oppure ''Master'' quella fresca di giornata con tutti gli ultimi ''fix'', non rimane altra scelta che compilare.&lt;br /&gt;
&lt;br /&gt;
Invero per chi usa Ubuntu o una sua derivata tipo Mint esistono dei repository speciali chiamati '''PPA''', quello di Gambas è curato direttamente da ''Benoit Minisini'' ideatore di ''Gambas''.&amp;lt;br&amp;gt;&lt;br /&gt;
Normalmente 24 ore dopo l’uscita, la nuova versione è disponibile.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo link troviamo i comandi per il terminale:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambaswiki.org/wiki/install/ubuntu#t1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cosa significa compilare ==&lt;br /&gt;
&lt;br /&gt;
Compilare è una &amp;lt;u&amp;gt;semplicissima operazione&amp;lt;/u&amp;gt; che permette di trasformare un file di codice sorgente in un file binario eseguibile dalla nostra distribuzione.&lt;br /&gt;
&lt;br /&gt;
L’operazione consiste nell’inviare al compilatore ''gcc'' attraverso il terminale alcuni comandi che eseguono degli ''script'' di shell e delle ''macro'' che automatizzano il tutto.&amp;lt;br&amp;gt;&lt;br /&gt;
Per prima cosa vengono eseguiti gli ''script'' che predispongono il codice per la nostra distribuzione quindi le funzioni (''macro'') che creano e installano l’eseguibile.&lt;br /&gt;
&lt;br /&gt;
Compilare un programma in GNU/Linux consiste in pratica nel dare tre comandi da terminale (''configure'' [script], ''make'' e ''make install'' [funzioni]), quale è dunque il motivo che spaventa i più?&lt;br /&gt;
&lt;br /&gt;
Credo che quello principale sia che ''Windows'' ci ha abituato a fare tutto attraverso le finestre e pertanto scrivere comandi in un terminale ci appare una cosa aliena, però se abbiamo velleità di programmazione la cosa risulta risibile, visto che programmare altro non è che scrivere comandi, i nostri comandi.&lt;br /&gt;
&lt;br /&gt;
''Gambas'', come tutte le applicazioni ''open source'' viene rilasciato sotto forma di codice sorgente &amp;lt;SUP&amp;gt;&amp;amp;#091;[[#Note|Nota 1]]&amp;amp;#093;&amp;lt;/sup&amp;gt; ed è attualmente presente su ''GitLab'' a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas&lt;br /&gt;
&lt;br /&gt;
''GitLab'' si apre sulla versione ''Master'' (quella in corso di sviluppo), ma agendo sul pulsante menu è possibile scegliere la versione stabile (''Stable'').&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi il suo codice può essere scaricato da li, anche graficamente, come file compresso: ''Tarball'' (con estensione .tar.gz, .tar.bz2 o .tar) oppure ''Zip'' (.zip).&lt;br /&gt;
&lt;br /&gt;
Dopo aver scaricato il file nella cartella desiderata, tipicamente la nostra ''home'', si può decomprimerlo usando il tasto destro del mouse e l’apposita voce di menu, ma visto che comunque per compilare dai sorgenti si dovrà fare uso del terminale e più avanti verrà descritta l’intera operazione di scaricamento da ''GitLab'', scaricare il file in questo modo appare inutile, a meno che si stia cercando una versione precedente l’attuale.&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi è comunque bene sapere che anche da ''GitLab'' sotto la voce ''Comit'' si può scaricare in forma compressa qualunque ''Gambas precedente'' sia stabile che di sviluppo.&lt;br /&gt;
&lt;br /&gt;
== Le librerie dinamiche ==&lt;br /&gt;
&lt;br /&gt;
Tutto troppo facile, vero?&amp;lt;br&amp;gt;&lt;br /&gt;
Uno potrebbe immaginare che vengano celate delle difficoltà !&amp;lt;br&amp;gt;&lt;br /&gt;
E infatti, la difficoltà del caso si chiama '''Libreria'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Un programma per funzionare ha bisogno che nel sistema siano installate determinate librerie, esattamente quelle della giusta versione.&amp;lt;br&amp;gt;&lt;br /&gt;
Pertanto installare un programma è semplice, trovare le librerie di cui si necessita per la distribuzione in nostro uso lo è un po’ meno e non perché sia difficile installarle ma perché è difficile capire come è stata nominata quella specifica libreria.&amp;lt;br&amp;gt;&lt;br /&gt;
''Gambas'' oltre che un programma è anche un linguaggio di programmazione e va da se che si basi su moltissime librerie.&lt;br /&gt;
&lt;br /&gt;
== Niente panico ==&lt;br /&gt;
&lt;br /&gt;
La stragrande maggioranza delle distribuzioni deriva da poche altre distribuzioni, per le più importanti le librerie utili a ''Gambas'' sono elencate nel file di configurazione YAML a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas/-/blob/master/.gitlab-ci.yml&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': il tipo di desktop in uso non è importante per la compilazione, quello che conta riguardo alle librerie da scaricare è la '''distribuzione''' che è il modo in uso a GNU/Linux di chiamare il sistema operativo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per compilare Gambas ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
  '''Nota''': la compilazione va fatta su una distribuzione pulita, vale a dire che ''Gambas'' non può essere già presente anche se scaricato dai repository.&amp;lt;br&amp;gt;Se è già presente, prima di poter compilare ''Gambas'' occorre &amp;lt;u&amp;gt;rimuoverlo completamente&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Qui come esempio useremo una distribuzione basata su ''Arch Linux'', tipo ''Manjaro'', ''Endeavour'' oltre che naturalmente a ''Arch'' stesso.&amp;lt;br&amp;gt;&lt;br /&gt;
Attualmente ''Benoit Minisini'' utilizza ''Manjaro'' con ''KDE''.&lt;br /&gt;
&lt;br /&gt;
''Quanto qui descritto si può adattare a qualunque altra distribuzione ed è indirizzato a programmatori dilettanti come lo scrivente, se siete dei professionisti il consiglio è di dare un’occhiata comunque''.&amp;lt;br&amp;gt;&lt;br /&gt;
Quello che segue servirà a preparare la giusta lista dei comandi che poi daremo da terminale usando il copia e incolla.&lt;br /&gt;
&lt;br /&gt;
* Copiamo il codice ''yaml'' su cui è basata la nostra distribuzione.&amp;lt;br&amp;gt;Ad esempio se noi utilizzassimo ''Mint 22'', dovremmo copiare il codice yaml di ''Ubuntu Noble'' sulla quale ''Mint 22'' è basata.&amp;lt;br&amp;gt;'''Attenzione''': le librerie in ''yaml''  sono scritte in modo differente in base alla distribuzione, alcune sono incolonnate come quelle di ''Arch'' altre scritte sequenzialmente in un unica lunga stringa vedi ''Ubuntu'', dobbiamo accertarci di copiare tutto.&lt;br /&gt;
* Incolliamo il codice yaml su un file di testo con l’aiuto di un editor e andiamo a cambiarlo così:&lt;br /&gt;
** eliminiamo le prime quattro righe&lt;br /&gt;
** anteponiamo '''sudo''' davanti al/ai comando che installa le librerie, nel caso di ''Arch'' si dovrà dare due comandi come scritto nel file, se nella vostra distribuzione non abbiamo sudo ci dobbiamo trasformare in utente ''root'' per poter installare le librerie.&amp;lt;br&amp;gt;Dopo averle incollate le librerie vanno cambiate in modo che siano separate fra di loro da uno spazio eliminando così eventuali tabulazioni e/o gli accapo.&lt;br /&gt;
** Ora dipende da quale Gambas desideriamo scaricare e installare,  questo nuovo comando dibbiamo inserirlo, in una nuova riga, nel file di testo subito dopo le librerie e serve a copiare in una nuova cartella all’interno della nostra ''home'' il progetto ''Gambas'' da compilare, per la versione stabile il comando è:&amp;lt;br&amp;gt;git clone --branch stable --depth=1 https://gitlab.com/gambas/gambas.git gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo chiamata ''Master'' il comando è:&amp;lt;br&amp;gt;git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel&lt;br /&gt;
** Dopo aver aggiunto il comando desiderato, occorre spostarsi all’interno della nuova cartella con uno di questi comandi, per la versione stabile il comando è:&amp;lt;br&amp;gt;cd gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo il comando è:&amp;lt;br&amp;gt;cd gambasdevel&lt;br /&gt;
** Gli altri comandi incollati rimangono invariati, tranne l'ultimo anch'esso preceduto da '''sudo''', vale a dire:&amp;lt;br&amp;gt;./reconf-all&amp;lt;br&amp;gt;GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl&amp;lt;br&amp;gt;make -j$(nproc)&amp;lt;br&amp;gt;sudo make install&lt;br /&gt;
&lt;br /&gt;
A questo punto, se avessimo scelto la versione di sviluppo (''Master''), il nostro file di testo dovrebbe assomigliare a questo, da notare che per facilitare la lettura, ho aggiunto degli spazi tra un comando e l’altro:&lt;br /&gt;
&lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm alure autoconf automake bzip2 zstd coreutils curl dbus gcc gdk-pixbuf2 git glew glib2 gmime3 gsl gst-plugins-base gstreamer gtk2 gtk3 imlib2 intltool libffi libgl libgnome-keyring mariadb-libs librsvg libsm libxcursor libxml2 libxslt libxtst mariadb make mesa ncurses pcre''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm pkg-config poppler poppler-glib postgresql postgresql-libs qt5-svg qt5-x11extras sdl2 sdl2_gfx sdl2_image sdl2_mixer sdl2_net sdl2_ttf sdl_mixer sdl_ttf smpeg sqlite unixodbc v4l-utils xdg-utils zlib gettext qt5-webengine webkit2gtk qt6-svg qt6-webengine mongo-c-driver''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
Non ci rimane che copiare e incollare, &amp;lt;u&amp;gt;un comando alla volta&amp;lt;/u&amp;gt;, nel terminale della nostra distribuzione che nel caso dell'esempio è ''Manjaro Linux''.&amp;lt;br&amp;gt;&lt;br /&gt;
Come detto se la nostra distribuzione non usa ''sudo'' occorre che al posto di sudo ci eleviamo a utente '''root''', senza mettere '''sudo''' nel comando.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per aggiornare ==&lt;br /&gt;
&lt;br /&gt;
Questo sistema è un po' drastico e se si ha padronanza di ''git'' possiamo anche saltarlo, occorre solo sapere che è l’unico sistema che garantisce l’aggiornamento sicuro di Gambas:&lt;br /&gt;
&lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make uninstall''&lt;br /&gt;
  &lt;br /&gt;
  ''cd''&lt;br /&gt;
  &lt;br /&gt;
  ''rm -rf gambasdevel/''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
'''Nota''': se usiamo la versione stabile dobbiamo sostituire ''gambasdevel'' con ''gambas-stable'' .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Note=&lt;br /&gt;
[1] È proprio il fatto di dover nascondere il codice per poterlo vendere che in Windows i programmi vengono distribuiti come binari (.exe).&amp;lt;br&amp;gt;&lt;br /&gt;
Sono decisamente facili da installare (meno che da repository) rispetto alla compilazione, ma dobbiamo ammettere che compilare è molto meno oneroso.&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40622</id>
		<title>Compilare Gambas</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40622"/>
		<updated>2024-12-11T11:32:08Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== I Repository ==&lt;br /&gt;
&lt;br /&gt;
Per chi viene da altri sistemi operativi l’installazione di un programma in Linux può apparire poco chiara.&lt;br /&gt;
Ormai, visto che tutti abbiamo uno smartphone, l’idea di uno ''Store'', cioè di un luogo virtuale da cui scaricare un’applicazione che ci serve, non è più una novità e infatti il sistema è stato copiato da Linux e dai suoi '''Repository'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Se in Linux serve un dato programma basta sceglierlo nel repository, fra le tante applicazioni del genere disponibili liberamente, installarlo e siete subito operativi.&lt;br /&gt;
&lt;br /&gt;
Purtroppo date le tante distribuzioni che arricchiscono Linux, non sempre i programmi ivi presenti sono all’ultima versione, questo accade per i programmi più diffusi figurarsi per quelli di nicchia come ''Gambas''.&lt;br /&gt;
&lt;br /&gt;
Quindi se si vuole l’ultima versione di ''Gambas'', ''Stable'' oppure ''Master'' quella fresca di giornata con tutti gli ultimi ''fix'', non vi rimane altra scelta che compilare.&lt;br /&gt;
&lt;br /&gt;
Invero per chi usa Ubuntu o una sua derivata tipo Mint esistono dei repository speciali chiamati '''PPA''', quello di Gambas è curato direttamente da ''Benoit Minisini'' ideatore di ''Gambas''.&amp;lt;br&amp;gt;&lt;br /&gt;
Normalmente 24 ore dopo l’uscita, la nuova versione è disponibile.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo link trovate i comandi per il terminale:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambaswiki.org/wiki/install/ubuntu#t1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cosa significa compilare ==&lt;br /&gt;
&lt;br /&gt;
Compilare è una &amp;lt;u&amp;gt;semplicissima operazione&amp;lt;/u&amp;gt; che permette di trasformare un file di codice sorgente in un file binario eseguibile dalla nostra distribuzione.&lt;br /&gt;
&lt;br /&gt;
L’operazione consiste nell’inviare al compilatore ''gcc'' attraverso il terminale alcuni comandi che eseguono degli ''script'' di shell e delle ''macro'' che automatizzano il tutto.&amp;lt;br&amp;gt;&lt;br /&gt;
Per prima cosa vengono eseguiti gli ''script'' che predispongono il codice per la nostra distribuzione quindi le funzioni (''macro'') che creano e installano l’eseguibile.&lt;br /&gt;
&lt;br /&gt;
Compilare un programma in GNU/Linux consiste in pratica nel dare tre comandi da terminale (''configure'' [script], ''make'' e ''make install'' [funzioni]), quale è dunque il motivo che spaventa i più?&lt;br /&gt;
&lt;br /&gt;
Credo che quello principale sia che ''Windows'' ci ha abituato a fare tutto attraverso le finestre e pertanto scrivere comandi in un terminale ci appare una cosa aliena, però se abbiamo velleità di programmazione la cosa risulta risibile, visto che programmare altro non è che scrivere comandi, i nostri comandi.&lt;br /&gt;
&lt;br /&gt;
''Gambas'', come tutte le applicazioni ''open source'' viene rilasciato sotto forma di codice sorgente &amp;lt;SUP&amp;gt;&amp;amp;#091;[[#Note|Nota 1]]&amp;amp;#093;&amp;lt;/sup&amp;gt; ed è attualmente presente su ''GitLab'' a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas&lt;br /&gt;
&lt;br /&gt;
''GitLab'' si apre sulla versione ''Master'' (quella in corso di sviluppo), ma agendo sul pulsante menu è possibile scegliere la versione stabile (''Stable'').&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi il suo codice può essere scaricato da li, anche graficamente, come file compresso: ''Tarball'' (con estensione .tar.gz, .tar.bz2 o .tar) oppure ''Zip'' (.zip).&lt;br /&gt;
&lt;br /&gt;
Dopo aver scaricato il file nella cartella desiderata, tipicamente la nostra ''home'', si può decomprimerlo usando il tasto destro del mouse e l’apposita voce di menu, ma visto che comunque per compilare dai sorgenti si dovrà fare uso del terminale e più avanti verrà descritta l’intera operazione di scaricamento da ''GitLab'', scaricare il file in questo modo appare inutile, a meno che stiate cercando una versione precedente l’attuale.&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi è comunque bene sapere che anche da ''GitLab'' sotto la voce ''Comit'' si può scaricare in forma compressa qualunque ''Gambas precedente'' sia stabile che di sviluppo.&lt;br /&gt;
&lt;br /&gt;
== Le librerie dinamiche ==&lt;br /&gt;
&lt;br /&gt;
Tutto troppo facile, vero?&amp;lt;br&amp;gt;&lt;br /&gt;
Uno potrebbe immaginare che vengano celate delle difficoltà !&amp;lt;br&amp;gt;&lt;br /&gt;
E infatti, la difficoltà del caso si chiama Libreria.&amp;lt;br&amp;gt;&lt;br /&gt;
Un programma per funzionare ha bisogno che nel sistema siano installate determinate librerie, esattamente quelle nella giusta versione.&amp;lt;br&amp;gt;&lt;br /&gt;
Pertanto installare un programma è semplice, trovare le librerie di cui necessita per quella determinata distribuzione lo è un po’ meno e non perché sia difficile installarle ma perché è difficile capire come è stata nominata quella specifica libreria dalla distribuzione in nostro uso.&amp;lt;br&amp;gt;&lt;br /&gt;
Gambas oltre che un programma è anche un linguaggio di programmazione e va da se che si basi su moltissime librerie.&lt;br /&gt;
&lt;br /&gt;
== Niente panico ==&lt;br /&gt;
&lt;br /&gt;
La stragrande maggioranza delle distribuzioni deriva da poche altre distribuzioni, per le più importanti le librerie utili a Gambas sono elencate nel file di configurazione YAML a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas/-/blob/master/.gitlab-ci.yml&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': il tipo di desktop in uso non è importante per la compilazione, quello che conta riguardo alle librerie da scaricare è la '''distribuzione''' che è il modo in uso a GNU/Linux di chiamare il sistema operativo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per compilare Gambas ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': la compilazione va fatta su una distribuzione pulita, vale a dire che Gambas non può essere già presente anche se scaricato dai repository. Se è già presente, prima di poter compilare Gambas occorre rimuoverlo completamente.&lt;br /&gt;
&lt;br /&gt;
Qui come esempio useremo una distribuzione basata su ''Arch Linux'', tipo ''Manjaro'', ''Endeavour'' oltre che naturalmente a ''Arch'' stesso.&amp;lt;br&amp;gt;&lt;br /&gt;
Attualmente ''Benoit Minisini'' utilizza Manjaro con KDE.&lt;br /&gt;
&lt;br /&gt;
Quanto qui descritto si può adattare a qualunque altra distribuzione ed è indirizzato a programmatori dilettanti come lo scrivente, se siete dei professionisti il consiglio è di dare un’occhiata comunque.&amp;lt;br&amp;gt;&lt;br /&gt;
Quello che segue servirà a preparare la giusta lista dei comandi che poi daremo da terminale usando il copia e incolla.&lt;br /&gt;
&lt;br /&gt;
* Copiamo il codice ''yaml'' su cui è basata la nostra distribuzione.&amp;lt;br&amp;gt;Ad esempio se noi utilizzassimo Mint 22, dovremmo copiare il codice di ''Ubuntu Noble'' sulla quale ''Mint 22'' è basata.&amp;lt;br&amp;gt;'''Attenzione''': le librerie in ''yaml''  sono scritte in modo differente in base alla distribuzione, alcune sono incolonnate come quelle di ''Arch'' altre scritte sequenzialmente in un unica lunga stringa vedi ''Ubuntu'', siate certi di copiare tutto.&lt;br /&gt;
* Incolliamo il codice yaml su un file di testo con l’aiuto di un editor e andiamo a cambiarlo così:&lt;br /&gt;
** eliminiamo le prime quattro righe&lt;br /&gt;
** anteponiamo sudo davanti al/ai comando che installa le librerie, nel caso di Arch dovrete dare due comandi come scritto nel file, se nella vostra distribuzione non avete sudo vi dovrete trasformare in utente root per poter installare le librerie.&amp;lt;br&amp;gt;Dopo averle incollate le librerie vanno cambiate in modo che siano separate da uno spazio eliminando così eventuali tabulazioni e/o gli accapo.&lt;br /&gt;
** Ora dipende da quale Gambas desiderate scaricare e installare,  questo nuovo comando dovrete inserirlo, in una nuova riga, nel file di testo subito dopo le librerie e serve a copiare in una nuova cartella all’interno della vostra home il progetto Gambas da compilare, per la versione stabile il comando è:&amp;lt;br&amp;gt;git clone --branch stable --depth=1 https://gitlab.com/gambas/gambas.git gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo chiamata master il comando è:&amp;lt;br&amp;gt;git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel&lt;br /&gt;
** Dopo aver aggiunto il comando desiderato, occorre spostarsi all’interno della nuova cartella con uno di questi comandi, per la versione stabile il comando è:&amp;lt;br&amp;gt;cd gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo chiamata master il comando è:&amp;lt;br&amp;gt;cd gambasdevel&lt;br /&gt;
** Gli altri comandi incollati rimangono invariati, vale a dire:&amp;lt;br&amp;gt;./reconf-all&amp;lt;br&amp;gt;GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl&amp;lt;br&amp;gt;make -j$(nproc)&amp;lt;br&amp;gt;sudo make install&lt;br /&gt;
&lt;br /&gt;
A questo punto, se avete scelto la versione di sviluppo (''Master''), il vostro file di testo dovrebbe assomigliare a questo, da notare che ho aggiunto degli spazi tra un comando e l’altro:&lt;br /&gt;
&lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm alure autoconf automake bzip2 zstd coreutils curl dbus gcc gdk-pixbuf2 git glew glib2 gmime3 gsl gst-plugins-base gstreamer gtk2 gtk3 imlib2 intltool libffi libgl libgnome-keyring mariadb-libs librsvg libsm libxcursor libxml2 libxslt libxtst mariadb make mesa ncurses pcre''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm pkg-config poppler poppler-glib postgresql postgresql-libs qt5-svg qt5-x11extras sdl2 sdl2_gfx sdl2_image sdl2_mixer sdl2_net sdl2_ttf sdl_mixer sdl_ttf smpeg sqlite unixodbc v4l-utils xdg-utils zlib gettext qt5-webengine webkit2gtk qt6-svg qt6-webengine mongo-c-driver''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
Non ci rimane che copiare e incollare, un comando alla volta, nel terminale della nostra distribuzione che nel caso del nostro esempio è ''Manjaro Linux''.&amp;lt;br&amp;gt;&lt;br /&gt;
Come detto se la vostra distribuzione non usa sudo occorre che al posto di sudo vi eleviate a utente '''root''', senza mettere '''sudo''' nel comando.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ecco i passaggi per aggiornare ==&lt;br /&gt;
&lt;br /&gt;
Questo sistema è un po drastico e se avete padronanza di ''git'' potete anche saltarlo, sappiate solo che è l’unico sistema che garantisce l’aggiornamento sicuro di Gambas:&lt;br /&gt;
&lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make uninstall''&lt;br /&gt;
  &lt;br /&gt;
  ''cd''&lt;br /&gt;
  &lt;br /&gt;
  ''rm -rf gambasdevel/''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
'''Nota''': se usate la versione stabile dovete sostituire ''gambasdevel'' con ''gambas-stable'' .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Note=&lt;br /&gt;
[1] È proprio il fatto di dover nascondere il codice per poterlo vendere che in Windows i programmi vengono distribuiti come binari (.exe).&amp;lt;br&amp;gt;&lt;br /&gt;
Sono decisamente facili da installare (meno che da repository) rispetto alla compilazione, ma ammetterete che compilare è molto meno oneroso.&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40621</id>
		<title>Compilare Gambas</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40621"/>
		<updated>2024-12-11T11:10:28Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== I Repository ==&lt;br /&gt;
&lt;br /&gt;
Per chi viene da altri sistemi operativi l’installazione di un programma in Linux può apparire poco chiara.&lt;br /&gt;
Ormai, visto che tutti abbiamo uno smartphone, l’idea di uno ''Store'', cioè di un luogo virtuale da cui scaricare un’applicazione che ci serve, non è più una novità e infatti il sistema è stato copiato da Linux e dai suoi '''Repository'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Se in Linux serve un dato programma basta sceglierlo nel repository, fra le tante applicazioni del genere disponibili liberamente, installarlo e siete subito operativi.&lt;br /&gt;
&lt;br /&gt;
Purtroppo date le tante distribuzioni che arricchiscono Linux, non sempre i programmi ivi presenti sono all’ultima versione, questo accade per i programmi più diffusi figurarsi per quelli di nicchia come Gambas.&lt;br /&gt;
&lt;br /&gt;
Quindi se si vuole l’ultima versione di Gambas, Stable oppure Master quella fresca di giornata con tutti gli ultimi fix, non vi rimane altra scelta che compilare.&lt;br /&gt;
&lt;br /&gt;
Invero per chi usa Ubuntu o una sua derivata tipo Mint esistono dei repository speciali chiamati '''PPA''', quello di Gambas è curato direttamente da Benoit Minisini ideatore di Gambas.&amp;lt;br&amp;gt;&lt;br /&gt;
Normalmente 24 ore dopo l’uscita, la nuova versione è disponibile.&amp;lt;br&amp;gt;&lt;br /&gt;
A questo link trovate i comandi per il terminale:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gambaswiki.org/wiki/install/ubuntu#t1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cosa significa compilare ==&lt;br /&gt;
&lt;br /&gt;
Compilare è una &amp;lt;u&amp;gt;semplicissima operazione&amp;lt;/u&amp;gt; che permette di trasformare un file di codice sorgente in un file binario eseguibile dalla nostra distribuzione.&lt;br /&gt;
&lt;br /&gt;
L’operazione consiste nell’inviare al compilatore gcc attraverso il terminale alcuni comandi che eseguono degli script di shell e delle macro che automatizzano il tutto.&amp;lt;br&amp;gt;&lt;br /&gt;
Per prima cosa vengono eseguiti gli script che predispongono il codice per la nostra distribuzione quindi le funzioni (macro) che creano e installano l’eseguibile.&lt;br /&gt;
&lt;br /&gt;
Compilare un programma in Linux consiste in pratica nel dare tre comandi da terminale (configure [script], make e make install [funzioni]), quale è dunque il motivo che spaventa i più?&lt;br /&gt;
&lt;br /&gt;
Credo che quello principale sia che Windows ci ha abituato a fare tutto attraverso le finestre e pertanto scrivere comandi in un terminale ci appare una cosa aliena, però se abbiamo velleità di programmazione la cosa risulta risibile, visto che programmare altro non è che scrivere comandi, i nostri comandi.&lt;br /&gt;
&lt;br /&gt;
Gambas, come tutte le applicazioni open source viene rilasciato sotto forma di codice sorgente &amp;lt;SUP&amp;gt;&amp;amp;#091;[[#Note|Nota 1]]&amp;amp;#093;&amp;lt;/sup&amp;gt; ed è attualmente presente su GitLab a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas&lt;br /&gt;
&lt;br /&gt;
GitLab si apre sulla versione Master (in corso di sviluppo), ma agendo sul pulsante menu è possibile scegliere la versione stabile (Stable).&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi il suo codice può essere scaricato da li, anche graficamente, come file compresso: Tarball (con estensione .tar.gz, .tar.bz2 o .tar) oppure Zip (.zip).&lt;br /&gt;
&lt;br /&gt;
Dopo aver scaricato il file nella cartella desiderata, tipicamente la home, si può decomprimerlo usando il tasto destro del mouse e l’apposita voce di menu, ma visto che comunque per compilare dai sorgenti si dovrà fare uso del terminale e più avanti verrà descritta l’intera operazione di scaricamento da GitLab, scaricare il file in questo modo appare inutile, a meno che stiate cercando una versione precedente l’attuale.&amp;lt;br&amp;gt;&lt;br /&gt;
Quindi è comunque bene sapere che anche da GitLab sotto la voce Comit si può scaricare in forma compressa qualunque Gambas precedente sia stabile che di sviluppo.&lt;br /&gt;
&lt;br /&gt;
== Le librerie dinamiche ==&lt;br /&gt;
&lt;br /&gt;
Tutto troppo facile, vero?&amp;lt;br&amp;gt;&lt;br /&gt;
Uno potrebbe immaginare che vengano celate delle difficoltà !&amp;lt;br&amp;gt;&lt;br /&gt;
E infatti, la difficoltà del caso si chiama Libreria.&amp;lt;br&amp;gt;&lt;br /&gt;
Un programma per funzionare ha bisogno che nel sistema siano installate determinate librerie, esattamente quelle nella giusta versione.&amp;lt;br&amp;gt;&lt;br /&gt;
Pertanto installare un programma è semplice, trovare le librerie di cui necessita per quella determinata distribuzione lo è un po’ meno e non perché sia difficile installarle ma perché è difficile capire come è stata nominata quella specifica libreria dalla distribuzione in nostro uso.&amp;lt;br&amp;gt;&lt;br /&gt;
Gambas oltre che un programma è anche un linguaggio di programmazione e va da se che si basi su moltissime librerie.&lt;br /&gt;
&lt;br /&gt;
== Niente panico ==&lt;br /&gt;
&lt;br /&gt;
La stragrande maggioranza delle distribuzioni deriva da poche altre distribuzioni, per le più importanti le librerie utili a Gambas sono elencate nel file di configurazione YAML a questo indirizzo:&amp;lt;br&amp;gt;&lt;br /&gt;
https://gitlab.com/gambas/gambas/-/blob/master/.gitlab-ci.yml&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': il tipo di desktop in uso non è importante per la compilazione, quello che conta riguardo alle librerie da scaricare è la '''distribuzione''' che è il modo in uso a GNU/Linux di chiamare il sistema operativo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per compilare Gambas ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': la compilazione va fatta su una distribuzione pulita, vale a dire che Gambas non può essere già presente anche se scaricato dai repository. Se è già presente, prima di poter compilare Gambas occorre rimuoverlo completamente.&lt;br /&gt;
&lt;br /&gt;
Qui come esempio useremo una distribuzione basata su ''Arch Linux'', tipo ''Manjaro'', ''Endeavour'' oltre che naturalmente a ''Arch'' stesso.&amp;lt;br&amp;gt;&lt;br /&gt;
Attualmente ''Benoit Minisini'' utilizza Manjaro con KDE.&lt;br /&gt;
&lt;br /&gt;
Quanto qui descritto si può adattare a qualunque altra distribuzione ed è indirizzato a programmatori dilettanti come lo scrivente, se siete dei professionisti il consiglio è di dare un’occhiata comunque.&amp;lt;br&amp;gt;&lt;br /&gt;
Quello che segue servirà a preparare la giusta lista dei comandi che poi daremo da terminale usando il copia e incolla.&lt;br /&gt;
&lt;br /&gt;
* Copiamo il codice ''yaml'' su cui è basata la nostra distribuzione.&amp;lt;br&amp;gt;Ad esempio se noi utilizzassimo Mint 22, dovremmo copiare il codice di ''Ubuntu Noble'' sulla quale ''Mint 22'' è basata.&amp;lt;br&amp;gt;'''Attenzione''': le librerie in ''yaml''  sono scritte in modo differente in base alla distribuzione, alcune sono incolonnate come quelle di ''Arch'' altre scritte sequenzialmente in un unica lunga stringa vedi ''Ubuntu'', siate certi di copiare tutto.&lt;br /&gt;
* Incolliamo il codice yaml su un file di testo con l’aiuto di un editor e andiamo a cambiarlo così:&lt;br /&gt;
** eliminiamo le prime quattro righe&lt;br /&gt;
** anteponiamo sudo davanti al/ai comando che installa le librerie, nel caso di Arch dovrete dare due comandi come scritto nel file, se nella vostra distribuzione non avete sudo vi dovrete trasformare in utente root per poter installare le librerie.&amp;lt;br&amp;gt;Dopo averle incollate le librerie vanno cambiate in modo che siano separate da uno spazio eliminando così eventuali tabulazioni e/o gli accapo.&lt;br /&gt;
** Ora dipende da quale Gambas desiderate scaricare e installare,  questo nuovo comando dovrete inserirlo, in una nuova riga, nel file di testo subito dopo le librerie e serve a copiare in una nuova cartella all’interno della vostra home il progetto Gambas da compilare, per la versione stabile il comando è:&amp;lt;br&amp;gt;git clone --branch stable --depth=1 https://gitlab.com/gambas/gambas.git gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo chiamata master il comando è:&amp;lt;br&amp;gt;git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel&lt;br /&gt;
** Dopo aver aggiunto il comando desiderato, occorre spostarsi all’interno della nuova cartella con uno di questi comandi, per la versione stabile il comando è:&amp;lt;br&amp;gt;cd gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo chiamata master il comando è:&amp;lt;br&amp;gt;cd gambasdevel&lt;br /&gt;
** Gli altri comandi incollati rimangono invariati, vale a dire:&amp;lt;br&amp;gt;./reconf-all&amp;lt;br&amp;gt;GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl&amp;lt;br&amp;gt;make -j$(nproc)&amp;lt;br&amp;gt;sudo make install&lt;br /&gt;
&lt;br /&gt;
A questo punto, se avete scelto la versione di sviluppo (''Master''), il vostro file di testo dovrebbe assomigliare a questo, da notare che ho aggiunto degli spazi tra un comando e l’altro:&lt;br /&gt;
&lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm alure autoconf automake bzip2 zstd coreutils curl dbus gcc gdk-pixbuf2 git glew glib2 gmime3 gsl gst-plugins-base gstreamer gtk2 gtk3 imlib2 intltool libffi libgl libgnome-keyring mariadb-libs librsvg libsm libxcursor libxml2 libxslt libxtst mariadb make mesa ncurses pcre''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo pacman -Syu --needed --noconfirm pkg-config poppler poppler-glib postgresql postgresql-libs qt5-svg qt5-x11extras sdl2 sdl2_gfx sdl2_image sdl2_mixer sdl2_net sdl2_ttf sdl_mixer sdl_ttf smpeg sqlite unixodbc v4l-utils xdg-utils zlib gettext qt5-webengine webkit2gtk qt6-svg qt6-webengine mongo-c-driver''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
Non ci rimane che copiare e incollare, un comando alla volta, nel terminale della nostra distribuzione che nel caso del nostro esempio è ''Manjaro Linux''.&amp;lt;br&amp;gt;&lt;br /&gt;
Come detto se la vostra distribuzione non usa sudo occorre che al posto di sudo vi eleviate a utente '''root''', senza mettere '''sudo''' nel comando.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ecco i passaggi per aggiornare ==&lt;br /&gt;
&lt;br /&gt;
Questo sistema è un po drastico e se avete padronanza di ''git'' potete anche saltarlo, sappiate solo che è l’unico sistema che garantisce l’aggiornamento sicuro di Gambas:&lt;br /&gt;
&lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make uninstall''&lt;br /&gt;
  &lt;br /&gt;
  ''cd''&lt;br /&gt;
  &lt;br /&gt;
  ''rm -rf gambasdevel/''&lt;br /&gt;
  &lt;br /&gt;
  ''git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''cd gambasdevel''&lt;br /&gt;
  &lt;br /&gt;
  ''./reconf-all''&lt;br /&gt;
  &lt;br /&gt;
  ''GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl''&lt;br /&gt;
  &lt;br /&gt;
  ''make -j$(nproc)''&lt;br /&gt;
  &lt;br /&gt;
  ''sudo make install''&lt;br /&gt;
&lt;br /&gt;
'''Nota''': se usate la versione stabile dovete sostituire ''gambasdevel'' con ''gambas-stable'' .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Note=&lt;br /&gt;
[1] È proprio il fatto di dover nascondere il codice per poterlo vendere che in Windows i programmi vengono distribuiti come binari (.exe).&amp;lt;br&amp;gt;&lt;br /&gt;
Sono decisamente facili da installare (meno che da repository) rispetto alla compilazione, ma ammetterete che compilare è molto meno oneroso.&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40620</id>
		<title>Compilare Gambas</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40620"/>
		<updated>2024-12-10T22:21:58Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== I Repository ==&lt;br /&gt;
&lt;br /&gt;
Per chi viene da altri sistemi operativi l’installazione di un programma in Linux può apparire poco chiara.&lt;br /&gt;
Ormai, visto che tutti abbiamo uno smartphone, l’idea di uno Store, cioè di un luogo virtuale da cui scaricare un’applicazione che ci serve, non è più una novità e infatti il sistema è stato copiato da Linux e dai suoi Repository.&lt;br /&gt;
Se in Linux serve un dato programma basta sceglierlo nel repository, fra le tante applicazioni del genere disponibili liberamente, installarlo e siete subito operativi.&lt;br /&gt;
&lt;br /&gt;
Purtroppo date le tante distribuzioni che arricchiscono Linux, non sempre i programmi ivi presenti sono all’ultima versione, questo accade per i programmi più diffusi figurarsi per quelli di nicchia come Gambas.&lt;br /&gt;
&lt;br /&gt;
Quindi se si vuole l’ultima versione di Gambas, Stable oppure Master quella fresca di giornata con tutti gli ultimi fix, non vi rimane altra scelta che compilare.&lt;br /&gt;
&lt;br /&gt;
Invero per chi usa Ubuntu o una sua derivata tipo Mint esistono dei repository speciali chiamati PPA, quello di Gambas è curato direttamente da Benoit Minisini ideatore di Gambas.&lt;br /&gt;
Normalmente 24 ore dopo l’uscita, la nuova versione è disponibile.&lt;br /&gt;
A questo link trovate i comandi per il terminale:&lt;br /&gt;
https://gambaswiki.org/wiki/install/ubuntu#t1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cosa significa compilare ==&lt;br /&gt;
&lt;br /&gt;
Compilare è una semplicissima operazione che permette di trasformare un file di codice sorgente in un file binario eseguibile dalla nostra distribuzione.&lt;br /&gt;
&lt;br /&gt;
L’operazione consiste nell’inviare al compilatore gcc attraverso il terminale alcuni comandi che eseguono degli script di shell e delle macro che automatizzano il tutto.&lt;br /&gt;
Per prima cosa vengono eseguiti gli script che predispongono il codice per la nostra distribuzione quindi le funzioni (macro) che creano e installano l’eseguibile.&lt;br /&gt;
&lt;br /&gt;
Compilare un programma in Linux consiste in pratica nel dare tre comandi da terminale (configure [script], make e make install [funzioni]), quale è dunque il motivo che spaventa i più?&lt;br /&gt;
&lt;br /&gt;
Credo che quello principale sia che Windows ci ha abituato a fare tutto attraverso le finestre e pertanto scrivere comandi in un terminale ci appare una cosa aliena, però se abbiamo velleità di programmazione la cosa risulta risibile, visto che programmare altro non è che scrivere comandi, i nostri comandi.&lt;br /&gt;
&lt;br /&gt;
Gambas, come tutte le applicazioni open source viene rilasciato sotto forma di codice sorgente &amp;lt;SUP&amp;gt;&amp;amp;#091;[[#Note|Nota 1]]&amp;amp;#093;&amp;lt;/sup&amp;gt; ed è attualmente presente su GitLab a questo indirizzo:&lt;br /&gt;
https://gitlab.com/gambas/gambas&lt;br /&gt;
&lt;br /&gt;
GitLab si apre sulla versione Master (in corso di sviluppo), ma agendo sul pulsante menu è possibile scegliere la versione stabile (Stable).&lt;br /&gt;
Quindi il suo codice può essere scaricato da li, anche graficamente, come file compresso: Tarball (con estensione .tar.gz, .tar.bz2 o .tar) oppure Zip (.zip).&lt;br /&gt;
&lt;br /&gt;
Dopo aver scaricato il file nella cartella desiderata, tipicamente la home, si può decomprimerlo usando il tasto destro del mouse e l’apposita voce di menu, ma visto che comunque per compilare dai sorgenti si dovrà fare uso del terminale e più avanti verrà descritta l’intera operazione di scaricamento da GitLab, scaricare il file in questo modo appare inutile, a meno che stiate cercando una versione precedente l’attuale.&lt;br /&gt;
Quindi è comunque bene sapere che anche da GitLab sotto la voce Comit si può scaricare in forma compressa qualunque Gambas precedente sia stabile che di sviluppo.&lt;br /&gt;
&lt;br /&gt;
== Le librerie dinamiche ==&lt;br /&gt;
&lt;br /&gt;
Tutto troppo facile, vero?&lt;br /&gt;
Uno potrebbe immaginare che vengano celate delle difficoltà !&lt;br /&gt;
E infatti, la difficoltà del caso si chiama Libreria.&lt;br /&gt;
Un programma per funzionare ha bisogno che nel sistema siano installate determinate librerie, esattamente quelle nella giusta versione.&lt;br /&gt;
Pertanto installare un programma è semplice, trovare le librerie di cui necessita per quella determinata distribuzione lo è un po’ meno e non perché sia difficile installarle ma perché è difficile capire come è stata nominata quella specifica libreria dalla distribuzione in nostro uso.&lt;br /&gt;
Gambas oltre che un programma è anche un linguaggio di programmazione e va da se che si basi su moltissime librerie.&lt;br /&gt;
&lt;br /&gt;
== Niente panico ==&lt;br /&gt;
&lt;br /&gt;
La stragrande maggioranza delle distribuzioni deriva da poche altre distribuzioni, per le più importanti le librerie utili a Gambas sono elencate nel file di configurazione YAML a questo indirizzo:&lt;br /&gt;
https://gitlab.com/gambas/gambas/-/blob/master/.gitlab-ci.yml&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': il tipo di desktop in uso non è importante per compilare, quello che conta riguardo alle librerie da scaricare è la distribuzione che è il modo in uso a GNU/Linux di chiamare il sistema operativo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per compilare Gambas ==&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': la compilazione va fatta su una distribuzione pulita, vale a dire che Gambas non può essere già presente anche se scaricato dai repository. Se è già presente, prima di poter compilare Gambas occorre rimuoverlo completamente.&lt;br /&gt;
&lt;br /&gt;
Qui come esempio useremo una distribuzione basata su Arch Linux, tipo Manjaro, Endeavour oltre che naturalmente a Arch stesso.&lt;br /&gt;
Attualmente Benoit Minisini utilizza Manjaro con KDE.&lt;br /&gt;
&lt;br /&gt;
Quanto qui descritto si può adattare a qualunque altra distribuzione ed è indirizzato a programmatori dilettanti come lo scrivente, se siete dei professionisti il consiglio è di dare un’occhiata comunque.&lt;br /&gt;
Quello che segue servirà a preparare la giusta lista dei comandi che poi daremo da terminale usando il copia e incolla.&lt;br /&gt;
&lt;br /&gt;
# Copiamo il codice yaml su cui è basata la nostra distribuzione.&amp;lt;br&amp;gt;Ad esempio se noi utilizzassimo Mint 22, dovremmo copiare il codice di Ubuntu Noble sulla quale Mint 22 è basata.&amp;lt;br&amp;gt;'''Attenzione''': le librerie in yaml  sono scritte in modo differente in base alla distribuzione, alcune sono incolonnate come quelle di ''Arch'' altre scritte sequenzialmente in un unica lunga stringa vedi Ubuntu, siate certi di copiare tutto.&lt;br /&gt;
# Incolliamo il codice yaml su un file di testo con l’aiuto di un editor e andiamo a cambiarlo così:&lt;br /&gt;
## eliminiamo le prime quattro righe&lt;br /&gt;
## anteponiamo sudo davanti al/ai comando che installa le librerie, nel caso di Arch dovrete dare due comandi come scritto nel file, se nella vostra distribuzione non avete sudo vi dovrete trasformare in utente root per poter installare le librerie.&amp;lt;br&amp;gt;Dopo averle incollate le librerie vanno cambiate in modo che siano separate da uno spazio eliminando così eventuali tabulazioni e/o gli accapo.&lt;br /&gt;
## Ora dipende da quale Gambas desiderate scaricare e installare,  questo nuovo comando dovrete inserirlo, in una nuova riga, nel file di testo subito dopo le librerie e serve a copiare in una nuova cartella all’interno della vostra home il progetto Gambas da compilare, per la versione stabile il comando è:&amp;lt;br&amp;gt;git clone --branch stable --depth=1 https://gitlab.com/gambas/gambas.git gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo chiamata master il comando è:&amp;lt;br&amp;gt;git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel&lt;br /&gt;
## Dopo aver aggiunto il comando desiderato, occorre spostarsi all’interno della nuova cartella con uno di questi comandi, per la versione stabile il comando è:&amp;lt;br&amp;gt;cd gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo chiamata master il comando è:&amp;lt;br&amp;gt;cd gambasdevel&lt;br /&gt;
## Gli altri comandi incollati rimangono invariati, vale a dire:&amp;lt;br&amp;gt;./reconf-all&amp;lt;br&amp;gt;GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl&amp;lt;br&amp;gt;make -j$(nproc)&amp;lt;br&amp;gt;sudo make install&lt;br /&gt;
&lt;br /&gt;
A questo punto, se avete scelto la versione di sviluppo (''Master''), il vostro file di testo dovrebbe assomigliare a questo, da notare gli spazi aggiunti tra un comando e l’altro:&lt;br /&gt;
&lt;br /&gt;
  sudo pacman -Syu --needed --noconfirm alure autoconf automake bzip2 zstd coreutils curl dbus gcc gdk-pixbuf2 git glew glib2 gmime3 gsl gst-plugins-base gstreamer gtk2 gtk3 imlib2 intltool libffi libgl libgnome-keyring mariadb-libs librsvg libsm libxcursor libxml2 libxslt libxtst mariadb make mesa ncurses pcre&lt;br /&gt;
  &lt;br /&gt;
  sudo pacman -Syu --needed --noconfirm pkg-config poppler poppler-glib postgresql postgresql-libs qt5-svg qt5-x11extras sdl2 sdl2_gfx sdl2_image sdl2_mixer sdl2_net sdl2_ttf sdl_mixer sdl_ttf smpeg sqlite unixodbc v4l-utils xdg-utils zlib gettext qt5-webengine webkit2gtk qt6-svg qt6-webengine mongo-c-driver&lt;br /&gt;
  &lt;br /&gt;
  git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel&lt;br /&gt;
  &lt;br /&gt;
  cd gambasdevel&lt;br /&gt;
  &lt;br /&gt;
  ./reconf-all&lt;br /&gt;
  &lt;br /&gt;
  GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit –disable-gtkopengl&lt;br /&gt;
  &lt;br /&gt;
  make -j$(nproc)&lt;br /&gt;
  &lt;br /&gt;
  sudo make install&lt;br /&gt;
&lt;br /&gt;
Non ci rimane che copiare e incollare, un comando alla volta, nel terminale della nostra distribuzione che nel caso del nostro esempio è Manjaro Linux.&lt;br /&gt;
Come detto se la vostra distribuzione non usa sudo occorre che al posto di sudo vi eleviate a utente root, senza mettere sudo nel comando.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ecco i passaggi per aggiornare ==&lt;br /&gt;
&lt;br /&gt;
Questo sistema è un po drastico e se avete padronanza di git potete anche saltarlo, sappiate solo che è l’unico sistema che garantisce l’aggiornamento sicuro di Gambas:&lt;br /&gt;
&lt;br /&gt;
  cd gambasdevel&lt;br /&gt;
  &lt;br /&gt;
  sudo make uninstall&lt;br /&gt;
  &lt;br /&gt;
  cd&lt;br /&gt;
  &lt;br /&gt;
  rm -rf gambasdevel/&lt;br /&gt;
  &lt;br /&gt;
  git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel&lt;br /&gt;
  &lt;br /&gt;
  cd gambasdevel&lt;br /&gt;
  &lt;br /&gt;
  ./reconf-all&lt;br /&gt;
  &lt;br /&gt;
  GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit –disable-gtkopengl&lt;br /&gt;
  &lt;br /&gt;
  make -j$(nproc)&lt;br /&gt;
  &lt;br /&gt;
  sudo make install&lt;br /&gt;
&lt;br /&gt;
'''Nota''': se usate la versione stabile dovete sostituire gambasdevel con gambas-stable .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Note=&lt;br /&gt;
[1] È proprio il fatto di dover nascondere il codice per poterlo vendere che in Windows i programmi vengono distribuiti come binari (.exe).&lt;br /&gt;
Sono decisamente facili da installare (meno che da repository) rispetto alla compilazione, ma ammetterete che compilare è molto meno oneroso.&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40619</id>
		<title>Compilare Gambas</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40619"/>
		<updated>2024-12-10T22:17:43Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== I Repository ==&lt;br /&gt;
&lt;br /&gt;
Per chi viene da altri sistemi operativi l’installazione di un programma in Linux può apparire poco chiara.&lt;br /&gt;
Ormai, visto che tutti abbiamo uno smartphone, l’idea di uno Store, cioè di un luogo virtuale da cui scaricare un’applicazione che ci serve, non è più una novità e infatti il sistema è stato copiato da Linux e dai suoi Repository.&lt;br /&gt;
Se in Linux serve un dato programma basta sceglierlo nel repository, fra le tante applicazioni del genere disponibili liberamente, installarlo e siete subito operativi.&lt;br /&gt;
&lt;br /&gt;
Purtroppo date le tante distribuzioni che arricchiscono Linux, non sempre i programmi ivi presenti sono all’ultima versione, questo accade per i programmi più diffusi figurarsi per quelli di nicchia come Gambas.&lt;br /&gt;
&lt;br /&gt;
Quindi se si vuole l’ultima versione di Gambas, Stable oppure Master quella fresca di giornata con tutti gli ultimi fix, non vi rimane altra scelta che compilare.&lt;br /&gt;
&lt;br /&gt;
Invero per chi usa Ubuntu o una sua derivata tipo Mint esistono dei repository speciali chiamati PPA, quello di Gambas è curato direttamente da Benoit Minisini ideatore di Gambas.&lt;br /&gt;
Normalmente 24 ore dopo l’uscita, la nuova versione è disponibile.&lt;br /&gt;
A questo link trovate i comandi per il terminale:&lt;br /&gt;
https://gambaswiki.org/wiki/install/ubuntu#t1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cosa significa compilare ==&lt;br /&gt;
&lt;br /&gt;
Compilare è una semplicissima operazione che permette di trasformare un file di codice sorgente in un file binario eseguibile dalla nostra distribuzione.&lt;br /&gt;
&lt;br /&gt;
L’operazione consiste nell’inviare al compilatore gcc attraverso il terminale alcuni comandi che eseguono degli script di shell e delle macro che automatizzano il tutto.&lt;br /&gt;
Per prima cosa vengono eseguiti gli script che predispongono il codice per la nostra distribuzione quindi le funzioni (macro) che creano e installano l’eseguibile.&lt;br /&gt;
&lt;br /&gt;
Compilare un programma in Linux consiste in pratica nel dare tre comandi da terminale (configure [script], make e make install [funzioni]), quale è dunque il motivo che spaventa i più?&lt;br /&gt;
&lt;br /&gt;
Credo che quello principale sia che Windows ci ha abituato a fare tutto attraverso le finestre e pertanto scrivere comandi in un terminale ci appare una cosa aliena, però se abbiamo velleità di programmazione la cosa risulta risibile, visto che programmare altro non è che scrivere comandi, i nostri comandi.&lt;br /&gt;
&lt;br /&gt;
Gambas, come tutte le applicazioni open source viene rilasciato sotto forma di codice sorgente [[1]] ed è attualmente presente su GitLab a questo indirizzo:&lt;br /&gt;
https://gitlab.com/gambas/gambas&lt;br /&gt;
&lt;br /&gt;
GitLab si apre sulla versione Master (in corso di sviluppo), ma agendo sul pulsante menu è possibile scegliere la versione stabile (Stable).&lt;br /&gt;
Quindi il suo codice può essere scaricato da li, anche graficamente, come file compresso: Tarball (con estensione .tar.gz, .tar.bz2 o .tar) oppure Zip (.zip).&lt;br /&gt;
&lt;br /&gt;
Dopo aver scaricato il file nella cartella desiderata, tipicamente la home, si può decomprimerlo usando il tasto destro del mouse e l’apposita voce di menu, ma visto che comunque per compilare dai sorgenti si dovrà fare uso del terminale e più avanti verrà descritta l’intera operazione di scaricamento da GitLab, scaricare il file in questo modo appare inutile, a meno che stiate cercando una versione precedente l’attuale.&lt;br /&gt;
Quindi è comunque bene sapere che anche da GitLab sotto la voce Comit si può scaricare in forma compressa qualunque Gambas precedente sia stabile che di sviluppo.&lt;br /&gt;
&lt;br /&gt;
== Le librerie dinamiche ==&lt;br /&gt;
&lt;br /&gt;
Tutto troppo facile, vero?&lt;br /&gt;
Uno potrebbe immaginare che vengano celate delle difficoltà !&lt;br /&gt;
E infatti, la difficoltà del caso si chiama Libreria.&lt;br /&gt;
Un programma per funzionare ha bisogno che nel sistema siano installate determinate librerie, esattamente quelle nella giusta versione.&lt;br /&gt;
Pertanto installare un programma è semplice, trovare le librerie di cui necessita per quella determinata distribuzione lo è un po’ meno e non perché sia difficile installarle ma perché è difficile capire come è stata nominata quella specifica libreria dalla distribuzione in nostro uso.&lt;br /&gt;
Gambas oltre che un programma è anche un linguaggio di programmazione e va da se che si basi su moltissime librerie.&lt;br /&gt;
&lt;br /&gt;
== Niente panico ==&lt;br /&gt;
&lt;br /&gt;
La stragrande maggioranza delle distribuzioni deriva da poche altre distribuzioni, per le più importanti le librerie utili a Gambas sono elencate nel file di configurazione YAML a questo indirizzo:&lt;br /&gt;
https://gitlab.com/gambas/gambas/-/blob/master/.gitlab-ci.yml&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': il tipo di desktop in uso non è importante per compilare, quello che conta riguardo alle librerie da scaricare è la distribuzione che è il modo in uso a GNU/Linux di chiamare il sistema operativo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per compilare Gambas ==&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': la compilazione va fatta su una distribuzione pulita, vale a dire che Gambas non può essere già presente anche se scaricato dai repository. Se è già presente, prima di poter compilare Gambas occorre rimuoverlo completamente.&lt;br /&gt;
&lt;br /&gt;
Qui come esempio useremo una distribuzione basata su Arch Linux, tipo Manjaro, Endeavour oltre che naturalmente a Arch stesso.&lt;br /&gt;
Attualmente Benoit Minisini utilizza Manjaro con KDE.&lt;br /&gt;
&lt;br /&gt;
Quanto qui descritto si può adattare a qualunque altra distribuzione ed è indirizzato a programmatori dilettanti come lo scrivente, se siete dei professionisti il consiglio è di dare un’occhiata comunque.&lt;br /&gt;
Quello che segue servirà a preparare la giusta lista dei comandi che poi daremo da terminale usando il copia e incolla.&lt;br /&gt;
&lt;br /&gt;
# Copiamo il codice yaml su cui è basata la nostra distribuzione.&amp;lt;br&amp;gt;Ad esempio se noi utilizzassimo Mint 22, dovremmo copiare il codice di Ubuntu Noble sulla quale Mint 22 è basata.&amp;lt;br&amp;gt;'''Attenzione''': le librerie in yaml  sono scritte in modo differente in base alla distribuzione, alcune sono incolonnate come quelle di ''Arch'' altre scritte sequenzialmente in un unica lunga stringa vedi Ubuntu, siate certi di copiare tutto.&lt;br /&gt;
# Incolliamo il codice yaml su un file di testo con l’aiuto di un editor e andiamo a cambiarlo così:&lt;br /&gt;
## eliminiamo le prime quattro righe&lt;br /&gt;
## anteponiamo sudo davanti al/ai comando che installa le librerie, nel caso di Arch dovrete dare due comandi come scritto nel file, se nella vostra distribuzione non avete sudo vi dovrete trasformare in utente root per poter installare le librerie.&amp;lt;br&amp;gt;Dopo averle incollate le librerie vanno cambiate in modo che siano separate da uno spazio eliminando così eventuali tabulazioni e/o gli accapo.&lt;br /&gt;
## Ora dipende da quale Gambas desiderate scaricare e installare,  questo nuovo comando dovrete inserirlo, in una nuova riga, nel file di testo subito dopo le librerie e serve a copiare in una nuova cartella all’interno della vostra home il progetto Gambas da compilare, per la versione stabile il comando è:&amp;lt;br&amp;gt;git clone --branch stable --depth=1 https://gitlab.com/gambas/gambas.git gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo chiamata master il comando è:&amp;lt;br&amp;gt;git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel&lt;br /&gt;
## Dopo aver aggiunto il comando desiderato, occorre spostarsi all’interno della nuova cartella con uno di questi comandi, per la versione stabile il comando è:&amp;lt;br&amp;gt;cd gambas-stable&amp;lt;br&amp;gt;Per la versione sviluppo chiamata master il comando è:&amp;lt;br&amp;gt;cd gambasdevel&lt;br /&gt;
## Gli altri comandi incollati rimangono invariati, vale a dire:&lt;br /&gt;
./reconf-all&lt;br /&gt;
GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl&lt;br /&gt;
make -j$(nproc)&lt;br /&gt;
sudo make install&lt;br /&gt;
&lt;br /&gt;
A questo punto, se avete scelto la versione di sviluppo (Master), il vostro file di testo dovrebbe assomigliare a questo, da notare gli spazi aggiunti tra un comando e l’altro:&lt;br /&gt;
&lt;br /&gt;
  sudo pacman -Syu --needed --noconfirm alure autoconf automake bzip2 zstd coreutils curl dbus gcc gdk-pixbuf2 git glew glib2 gmime3 gsl gst-plugins-base gstreamer gtk2 gtk3 imlib2 intltool libffi libgl libgnome-keyring mariadb-libs librsvg libsm libxcursor libxml2 libxslt libxtst mariadb make mesa ncurses pcre&lt;br /&gt;
  &lt;br /&gt;
  sudo pacman -Syu --needed --noconfirm pkg-config poppler poppler-glib postgresql postgresql-libs qt5-svg qt5-x11extras sdl2 sdl2_gfx sdl2_image sdl2_mixer sdl2_net sdl2_ttf sdl_mixer sdl_ttf smpeg sqlite unixodbc v4l-utils xdg-utils zlib gettext qt5-webengine webkit2gtk qt6-svg qt6-webengine mongo-c-driver&lt;br /&gt;
  &lt;br /&gt;
  git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel&lt;br /&gt;
  &lt;br /&gt;
  cd gambasdevel&lt;br /&gt;
  &lt;br /&gt;
  ./reconf-all&lt;br /&gt;
  &lt;br /&gt;
  GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit –disable-gtkopengl&lt;br /&gt;
  &lt;br /&gt;
  make -j$(nproc)&lt;br /&gt;
  &lt;br /&gt;
  sudo make install&lt;br /&gt;
&lt;br /&gt;
Non ci rimane che copiare e incollare, un comando alla volta, nel terminale della nostra distribuzione che nel caso del nostro esempio è Manjaro Linux.&lt;br /&gt;
Come detto se la vostra distribuzione non usa sudo occorre che al posto di sudo vi eleviate a utente root, senza mettere sudo nel comando.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ecco i passaggi per aggiornare ==&lt;br /&gt;
&lt;br /&gt;
Questo sistema è un po drastico e se avete padronanza di git potete anche saltarlo, sappiate solo che è l’unico sistema che garantisce l’aggiornamento sicuro di Gambas:&lt;br /&gt;
&lt;br /&gt;
  cd gambasdevel&lt;br /&gt;
  &lt;br /&gt;
  sudo make uninstall&lt;br /&gt;
  &lt;br /&gt;
  cd&lt;br /&gt;
  &lt;br /&gt;
  rm -rf gambasdevel/&lt;br /&gt;
  &lt;br /&gt;
  git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel&lt;br /&gt;
  &lt;br /&gt;
  cd gambasdevel&lt;br /&gt;
  &lt;br /&gt;
  ./reconf-all&lt;br /&gt;
  &lt;br /&gt;
  GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit –disable-gtkopengl&lt;br /&gt;
  &lt;br /&gt;
  make -j$(nproc)&lt;br /&gt;
  &lt;br /&gt;
  sudo make install&lt;br /&gt;
&lt;br /&gt;
Nota: se usate la versione stabile dovete sostituire gambasdevel con gambas-stable .&lt;br /&gt;
&lt;br /&gt;
1 È proprio il fatto di dover nascondere il codice per poterlo vendere che in Windows i programmi vengono distribuiti come binari (.exe).&lt;br /&gt;
Sono decisamente facili da installare (meno che da repository) rispetto alla compilazione, ma ammetterete che compilare è molto meno oneroso.&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40618</id>
		<title>Compilare Gambas</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40618"/>
		<updated>2024-12-10T22:12:33Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== I Repository ==&lt;br /&gt;
&lt;br /&gt;
Per chi viene da altri sistemi operativi l’installazione di un programma in Linux può apparire poco chiara.&lt;br /&gt;
Ormai, visto che tutti abbiamo uno smartphone, l’idea di uno Store, cioè di un luogo virtuale da cui scaricare un’applicazione che ci serve, non è più una novità e infatti il sistema è stato copiato da Linux e dai suoi Repository.&lt;br /&gt;
Se in Linux serve un dato programma basta sceglierlo nel repository, fra le tante applicazioni del genere disponibili liberamente, installarlo e siete subito operativi.&lt;br /&gt;
&lt;br /&gt;
Purtroppo date le tante distribuzioni che arricchiscono Linux, non sempre i programmi ivi presenti sono all’ultima versione, questo accade per i programmi più diffusi figurarsi per quelli di nicchia come Gambas.&lt;br /&gt;
&lt;br /&gt;
Quindi se si vuole l’ultima versione di Gambas, Stable oppure Master quella fresca di giornata con tutti gli ultimi fix, non vi rimane altra scelta che compilare.&lt;br /&gt;
&lt;br /&gt;
Invero per chi usa Ubuntu o una sua derivata tipo Mint esistono dei repository speciali chiamati PPA, quello di Gambas è curato direttamente da Benoit Minisini ideatore di Gambas.&lt;br /&gt;
Normalmente 24 ore dopo l’uscita, la nuova versione è disponibile.&lt;br /&gt;
A questo link trovate i comandi per il terminale:&lt;br /&gt;
https://gambaswiki.org/wiki/install/ubuntu#t1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cosa significa compilare ==&lt;br /&gt;
&lt;br /&gt;
Compilare è una semplicissima operazione che permette di trasformare un file di codice sorgente in un file binario eseguibile dalla nostra distribuzione.&lt;br /&gt;
&lt;br /&gt;
L’operazione consiste nell’inviare al compilatore gcc attraverso il terminale alcuni comandi che eseguono degli script di shell e delle macro che automatizzano il tutto.&lt;br /&gt;
Per prima cosa vengono eseguiti gli script che predispongono il codice per la nostra distribuzione quindi le funzioni (macro) che creano e installano l’eseguibile.&lt;br /&gt;
&lt;br /&gt;
Compilare un programma in Linux consiste in pratica nel dare tre comandi da terminale (configure [script], make e make install [funzioni]), quale è dunque il motivo che spaventa i più?&lt;br /&gt;
&lt;br /&gt;
Credo che quello principale sia che Windows ci ha abituato a fare tutto attraverso le finestre e pertanto scrivere comandi in un terminale ci appare una cosa aliena, però se abbiamo velleità di programmazione la cosa risulta risibile, visto che programmare altro non è che scrivere comandi, i nostri comandi.&lt;br /&gt;
&lt;br /&gt;
Gambas, come tutte le applicazioni open source viene rilasciato sotto forma di codice sorgente [[1]] ed è attualmente presente su GitLab a questo indirizzo:&lt;br /&gt;
https://gitlab.com/gambas/gambas&lt;br /&gt;
&lt;br /&gt;
GitLab si apre sulla versione Master (in corso di sviluppo), ma agendo sul pulsante menu è possibile scegliere la versione stabile (Stable).&lt;br /&gt;
Quindi il suo codice può essere scaricato da li, anche graficamente, come file compresso: Tarball (con estensione .tar.gz, .tar.bz2 o .tar) oppure Zip (.zip).&lt;br /&gt;
&lt;br /&gt;
Dopo aver scaricato il file nella cartella desiderata, tipicamente la home, si può decomprimerlo usando il tasto destro del mouse e l’apposita voce di menu, ma visto che comunque per compilare dai sorgenti si dovrà fare uso del terminale e più avanti verrà descritta l’intera operazione di scaricamento da GitLab, scaricare il file in questo modo appare inutile, a meno che stiate cercando una versione precedente l’attuale.&lt;br /&gt;
Quindi è comunque bene sapere che anche da GitLab sotto la voce Comit si può scaricare in forma compressa qualunque Gambas precedente sia stabile che di sviluppo.&lt;br /&gt;
&lt;br /&gt;
== Le librerie dinamiche ==&lt;br /&gt;
&lt;br /&gt;
Tutto troppo facile, vero?&lt;br /&gt;
Uno potrebbe immaginare che vengano celate delle difficoltà !&lt;br /&gt;
E infatti, la difficoltà del caso si chiama Libreria.&lt;br /&gt;
Un programma per funzionare ha bisogno che nel sistema siano installate determinate librerie, esattamente quelle nella giusta versione.&lt;br /&gt;
Pertanto installare un programma è semplice, trovare le librerie di cui necessita per quella determinata distribuzione lo è un po’ meno e non perché sia difficile installarle ma perché è difficile capire come è stata nominata quella specifica libreria dalla distribuzione in nostro uso.&lt;br /&gt;
Gambas oltre che un programma è anche un linguaggio di programmazione e va da se che si basi su moltissime librerie.&lt;br /&gt;
&lt;br /&gt;
== Niente panico ==&lt;br /&gt;
&lt;br /&gt;
La stragrande maggioranza delle distribuzioni deriva da poche altre distribuzioni, per le più importanti le librerie utili a Gambas sono elencate nel file di configurazione YAML a questo indirizzo:&lt;br /&gt;
https://gitlab.com/gambas/gambas/-/blob/master/.gitlab-ci.yml&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': il tipo di desktop in uso non è importante per compilare, quello che conta riguardo alle librerie da scaricare è la distribuzione che è il modo in uso a GNU/Linux di chiamare il sistema operativo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per compilare Gambas ==&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': la compilazione va fatta su una distribuzione pulita, vale a dire che Gambas non può essere già presente anche se scaricato dai repository. Se è già presente, prima di poter compilare Gambas occorre rimuoverlo completamente.&lt;br /&gt;
&lt;br /&gt;
Qui come esempio useremo una distribuzione basata su Arch Linux, tipo Manjaro, Endeavour oltre che naturalmente a Arch stesso.&lt;br /&gt;
Attualmente Benoit Minisini utilizza Manjaro con KDE.&lt;br /&gt;
&lt;br /&gt;
Quanto qui descritto si può adattare a qualunque altra distribuzione ed è indirizzato a programmatori dilettanti come lo scrivente, se siete dei professionisti il consiglio è di dare un’occhiata comunque.&lt;br /&gt;
Quello che segue servirà a preparare la giusta lista dei comandi che poi daremo da terminale usando il copia e incolla.&lt;br /&gt;
&lt;br /&gt;
# Copiamo il codice yaml su cui è basata la nostra distribuzione.&lt;br /&gt;
Ad esempio se noi utilizzassimo Mint 22, dovremmo copiare il codice di Ubuntu Noble sulla quale Mint 22 è basata.&lt;br /&gt;
Attenzione: le librerie in yaml  sono scritte in modo differente in base alla distribuzione, alcune sono incolonnate come quelle di Arch altre scritte sequenzialmente in un unica lunga stringa vedi Ubuntu, siate certi di copiare tutto.&lt;br /&gt;
# Incolliamo il codice yaml su un file di testo con l’aiuto di un editor e andiamo a cambiarlo così:&lt;br /&gt;
## eliminiamo le prime quattro righe&lt;br /&gt;
## anteponiamo sudo davanti al/ai comando che installa le librerie, nel caso di Arch dovrete dare due comandi come scritto nel file, se nella vostra distribuzione non avete sudo vi dovrete trasformare in utente root per poter installare le librerie.&lt;br /&gt;
Dopo averle incollate le librerie vanno cambiate in modo che siano separate da uno spazio eliminando così eventuali tabulazioni e/o gli accapo.&lt;br /&gt;
## Ora dipende da quale Gambas desiderate scaricare e installare,  questo nuovo comando dovrete inserirlo, in una nuova riga, nel file di testo subito dopo le librerie e serve a copiare in una nuova cartella all’interno della vostra home il progetto Gambas da compilare, per la versione stabile il comando è:&lt;br /&gt;
git clone --branch stable --depth=1 https://gitlab.com/gambas/gambas.git gambas-stable&lt;br /&gt;
Per la versione sviluppo chiamata master il comando è:&lt;br /&gt;
git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel&lt;br /&gt;
## Dopo aver aggiunto il comando desiderato, occorre spostarsi all’interno della nuova cartella con uno di questi comandi, per la versione stabile il comando è:&lt;br /&gt;
cd gambas-stable&lt;br /&gt;
Per la versione sviluppo chiamata master il comando è:&lt;br /&gt;
cd gambasdevel&lt;br /&gt;
## Gli altri comandi incollati rimangono invariati, vale a dire:&lt;br /&gt;
./reconf-all&lt;br /&gt;
GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl&lt;br /&gt;
make -j$(nproc)&lt;br /&gt;
sudo make install&lt;br /&gt;
&lt;br /&gt;
A questo punto, se avete scelto la versione di sviluppo (Master), il vostro file di testo dovrebbe assomigliare a questo, da notare gli spazi aggiunti tra un comando e l’altro:&lt;br /&gt;
&lt;br /&gt;
  sudo pacman -Syu --needed --noconfirm alure autoconf automake bzip2 zstd coreutils curl dbus gcc gdk-pixbuf2 git glew glib2 gmime3 gsl gst-plugins-base gstreamer gtk2 gtk3 imlib2 intltool libffi libgl libgnome-keyring mariadb-libs librsvg libsm libxcursor libxml2 libxslt libxtst mariadb make mesa ncurses pcre&lt;br /&gt;
  &lt;br /&gt;
  sudo pacman -Syu --needed --noconfirm pkg-config poppler poppler-glib postgresql postgresql-libs qt5-svg qt5-x11extras sdl2 sdl2_gfx sdl2_image sdl2_mixer sdl2_net sdl2_ttf sdl_mixer sdl_ttf smpeg sqlite unixodbc v4l-utils xdg-utils zlib gettext qt5-webengine webkit2gtk qt6-svg qt6-webengine mongo-c-driver&lt;br /&gt;
  &lt;br /&gt;
  git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel&lt;br /&gt;
  &lt;br /&gt;
  cd gambasdevel&lt;br /&gt;
  &lt;br /&gt;
  ./reconf-all&lt;br /&gt;
  &lt;br /&gt;
  GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit –disable-gtkopengl&lt;br /&gt;
  &lt;br /&gt;
  make -j$(nproc)&lt;br /&gt;
  &lt;br /&gt;
  sudo make install&lt;br /&gt;
&lt;br /&gt;
Non ci rimane che copiare e incollare, un comando alla volta, nel terminale della nostra distribuzione che nel caso del nostro esempio è Manjaro Linux.&lt;br /&gt;
Come detto se la vostra distribuzione non usa sudo occorre che al posto di sudo vi eleviate a utente root, senza mettere sudo nel comando.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ecco i passaggi per aggiornare ==&lt;br /&gt;
&lt;br /&gt;
Questo sistema è un po drastico e se avete padronanza di git potete anche saltarlo, sappiate solo che è l’unico sistema che garantisce l’aggiornamento sicuro di Gambas:&lt;br /&gt;
&lt;br /&gt;
  cd gambasdevel&lt;br /&gt;
  &lt;br /&gt;
  sudo make uninstall&lt;br /&gt;
  &lt;br /&gt;
  cd&lt;br /&gt;
  &lt;br /&gt;
  rm -rf gambasdevel/&lt;br /&gt;
  &lt;br /&gt;
  git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel&lt;br /&gt;
  &lt;br /&gt;
  cd gambasdevel&lt;br /&gt;
  &lt;br /&gt;
  ./reconf-all&lt;br /&gt;
  &lt;br /&gt;
  GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit –disable-gtkopengl&lt;br /&gt;
  &lt;br /&gt;
  make -j$(nproc)&lt;br /&gt;
  &lt;br /&gt;
  sudo make install&lt;br /&gt;
&lt;br /&gt;
Nota: se usate la versione stabile dovete sostituire gambasdevel con gambas-stable .&lt;br /&gt;
&lt;br /&gt;
1 È proprio il fatto di dover nascondere il codice per poterlo vendere che in Windows i programmi vengono distribuiti come binari (.exe).&lt;br /&gt;
Sono decisamente facili da installare (meno che da repository) rispetto alla compilazione, ma ammetterete che compilare è molto meno oneroso.&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40617</id>
		<title>Compilare Gambas</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Compilare_Gambas&amp;diff=40617"/>
		<updated>2024-12-10T17:30:08Z</updated>

		<summary type="html">&lt;p&gt;Gianluigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== I Repository ==&lt;br /&gt;
&lt;br /&gt;
Per chi viene da altri sistemi operativi l’installazione di un programma in Linux può apparire poco chiara.&lt;br /&gt;
Ormai, visto che tutti abbiamo uno smartphone, l’idea di uno Store, cioè di un luogo virtuale da cui scaricare un’applicazione che ci serve, non è più una novità e infatti il sistema è stato copiato da Linux e dai suoi Repository.&lt;br /&gt;
Se in Linux serve un dato programma basta sceglierlo nel repository, fra le tante applicazioni del genere disponibili liberamente, installarlo e siete subito operativi.&lt;br /&gt;
&lt;br /&gt;
Purtroppo date le tante distribuzioni che arricchiscono Linux, non sempre i programmi ivi presenti sono all’ultima versione, questo accade per i programmi più diffusi figurarsi per quelli di nicchia come Gambas.&lt;br /&gt;
&lt;br /&gt;
Quindi se si vuole l’ultima versione di Gambas, Stable oppure Master quella fresca di giornata con tutti gli ultimi fix, non vi rimane altra scelta che compilare.&lt;br /&gt;
&lt;br /&gt;
Invero per chi usa Ubuntu o una sua derivata tipo Mint esistono dei repository speciali chiamati PPA, quello di Gambas è curato direttamente da Benoit Minisini ideatore di Gambas.&lt;br /&gt;
Normalmente 24 ore dopo l’uscita, la nuova versione è disponibile.&lt;br /&gt;
A questo link trovate i comandi per il terminale:&lt;br /&gt;
https://gambaswiki.org/wiki/install/ubuntu#t1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cosa significa compilare ==&lt;br /&gt;
&lt;br /&gt;
Compilare è una semplicissima operazione che permette di trasformare un file di codice sorgente in un file binario eseguibile dalla nostra distribuzione.&lt;br /&gt;
&lt;br /&gt;
L’operazione consiste nell’inviare al compilatore gcc attraverso il terminale alcuni comandi che eseguono degli script di shell e delle macro che automatizzano il tutto.&lt;br /&gt;
Per prima cosa vengono eseguiti gli script che predispongono il codice per la nostra distribuzione quindi le funzioni (macro) che creano e installano l’eseguibile.&lt;br /&gt;
&lt;br /&gt;
Compilare un programma in Linux consiste in pratica nel dare tre comandi da terminale (configure [script], make e make install [funzioni]), quale è dunque il motivo che spaventa i più?&lt;br /&gt;
&lt;br /&gt;
Credo che quello principale sia che Windows ci ha abituato a fare tutto attraverso le finestre e pertanto scrivere comandi in un terminale ci appare una cosa aliena, però se abbiamo velleità di programmazione la cosa risulta risibile, visto che programmare altro non è che scrivere comandi, i nostri comandi.&lt;br /&gt;
&lt;br /&gt;
Gambas, come tutte le applicazioni open source viene rilasciato sotto forma di codice sorgente [[1]] ed è attualmente presente su GitLab a questo indirizzo:&lt;br /&gt;
https://gitlab.com/gambas/gambas&lt;br /&gt;
&lt;br /&gt;
GitLab si apre sulla versione Master (in corso di sviluppo), ma agendo sul pulsante menu è possibile scegliere la versione stabile (Stable).&lt;br /&gt;
Quindi il suo codice può essere scaricato da li, anche graficamente, come file compresso: Tarball (con estensione .tar.gz, .tar.bz2 o .tar) oppure Zip (.zip).&lt;br /&gt;
&lt;br /&gt;
Dopo aver scaricato il file nella cartella desiderata, tipicamente la home, si può decomprimerlo usando il tasto destro del mouse e l’apposita voce di menu, ma visto che comunque per compilare dai sorgenti si dovrà fare uso del terminale e più avanti verrà descritta l’intera operazione di scaricamento da GitLab, scaricare il file in questo modo appare inutile, a meno che stiate cercando una versione precedente l’attuale.&lt;br /&gt;
Quindi è comunque bene sapere che anche da GitLab sotto la voce Comit si può scaricare in forma compressa qualunque Gambas precedente sia stabile che di sviluppo.&lt;br /&gt;
&lt;br /&gt;
== Le librerie dinamiche ==&lt;br /&gt;
&lt;br /&gt;
Tutto troppo facile, vero?&lt;br /&gt;
Uno potrebbe immaginare che vengano celate delle difficoltà !&lt;br /&gt;
E infatti, la difficoltà del caso si chiama Libreria.&lt;br /&gt;
Un programma per funzionare ha bisogno che nel sistema siano installate determinate librerie, esattamente quelle nella giusta versione.&lt;br /&gt;
Pertanto installare un programma è semplice, trovare le librerie di cui necessita per quella determinata distribuzione lo è un po’ meno e non perché sia difficile installarle ma perché è difficile capire come è stata nominata quella specifica libreria dalla distribuzione in nostro uso.&lt;br /&gt;
Gambas oltre che un programma è anche un linguaggio di programmazione e va da se che si basi su moltissime librerie.&lt;br /&gt;
&lt;br /&gt;
== Niente panico ==&lt;br /&gt;
&lt;br /&gt;
La stragrande maggioranza delle distribuzioni deriva da poche altre distribuzioni, per le più importanti le librerie utili a Gambas sono elencate nel file di configurazione YAML a questo indirizzo:&lt;br /&gt;
https://gitlab.com/gambas/gambas/-/blob/master/.gitlab-ci.yml&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': il tipo di desktop in uso non è importante per compilare, quello che conta riguardo alle librerie da scaricare è la distribuzione che è il modo in uso a GNU/Linux di chiamare il sistema operativo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I passaggi per compilare Gambas ==&lt;br /&gt;
&lt;br /&gt;
  '''Nota''': la compilazione va fatta su una distribuzione pulita, vale a dire che Gambas non può essere già presente anche se scaricato dai repository. Se è già presente, prima di poter compilare Gambas occorre rimuoverlo completamente.&lt;br /&gt;
&lt;br /&gt;
Qui come esempio useremo una distribuzione basata su Arch Linux, tipo Manjaro, Endeavour oltre che naturalmente a Arch stesso.&lt;br /&gt;
Attualmente Benoit Minisini utilizza Manjaro con KDE.&lt;br /&gt;
&lt;br /&gt;
Quanto qui descritto si può adattare a qualunque altra distribuzione ed è indirizzato a programmatori dilettanti come lo scrivente, se siete dei professionisti il consiglio è di dare un’occhiata comunque.&lt;br /&gt;
Quello che segue servirà a preparare la giusta lista dei comandi che poi daremo da terminale usando il copia e incolla.&lt;br /&gt;
&lt;br /&gt;
#1. Copiamo il codice yaml su cui è basata la nostra distribuzione. &lt;br /&gt;
Ad esempio se noi utilizzassimo Mint 22, dovremmo copiare il codice di Ubuntu Noble sulla quale Mint 22 è basata.&lt;br /&gt;
Attenzione: le librerie in yaml  sono scritte in modo differente in base alla distribuzione, alcune sono incolonnate come quelle di Arch altre scritte sequenzialmente in un unica lunga stringa vedi Ubuntu, siate certi di copiare tutto.&lt;br /&gt;
#2. Incolliamo il codice yaml su un file di testo con l’aiuto di un editor e andiamo a cambiarlo così:&lt;br /&gt;
##2.1. eliminiamo le prime quattro righe&lt;br /&gt;
##2.2. anteponiamo sudo davanti al/ai comando che installa le librerie, nel caso di Arch dovrete dare due comandi come scritto nel file, se nella vostra distribuzione non avete sudo vi dovrete trasformare in utente root per poter installare le librerie.&lt;br /&gt;
Dopo averle incollate le librerie vanno cambiate in modo che siano separate da uno spazio eliminando così eventuali tabulazioni e/o gli accapo.&lt;br /&gt;
##2.3. Ora dipende da quale Gambas desiderate scaricare e installare,  questo nuovo comando dovrete inserirlo, in una nuova riga, nel file di testo subito dopo le librerie e serve a copiare in una nuova cartella all’interno della vostra home il progetto Gambas da compilare:&lt;br /&gt;
Per la versione stabile il comando è:&lt;br /&gt;
git clone --branch stable --depth=1 https://gitlab.com/gambas/gambas.git gambas-stable&lt;br /&gt;
Per la versione sviluppo chiamata master il comando è:&lt;br /&gt;
git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel&lt;br /&gt;
##2.4. Dopo aver aggiunto il comando desiderato, occorre spostarsi all’interno della nuova cartella con uno di questi comandi:&lt;br /&gt;
Per la versione stabile il comando è:&lt;br /&gt;
cd gambas-stable&lt;br /&gt;
Per la versione sviluppo chiamata master il comando è:&lt;br /&gt;
cd gambasdevel&lt;br /&gt;
##2.5. Gli altri comandi incollati rimangono invariati, vale a dire:&lt;br /&gt;
./reconf-all&lt;br /&gt;
GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl&lt;br /&gt;
make -j$(nproc)&lt;br /&gt;
sudo make install&lt;br /&gt;
&lt;br /&gt;
A questo punto, se avete scelto la versione di sviluppo (Master), il vostro file di testo dovrebbe assomigliare a questo, da notare gli spazi aggiunti tra un comando e l’altro:&lt;br /&gt;
&lt;br /&gt;
  sudo pacman -Syu --needed --noconfirm alure autoconf automake bzip2 zstd coreutils curl dbus gcc gdk-pixbuf2 git glew glib2 gmime3 gsl gst-plugins-base gstreamer gtk2 gtk3 imlib2 intltool libffi libgl libgnome-keyring mariadb-libs librsvg libsm libxcursor libxml2 libxslt libxtst mariadb make mesa ncurses pcre&lt;br /&gt;
  &lt;br /&gt;
  sudo pacman -Syu --needed --noconfirm pkg-config poppler poppler-glib postgresql postgresql-libs qt5-svg qt5-x11extras sdl2 sdl2_gfx sdl2_image sdl2_mixer sdl2_net sdl2_ttf sdl_mixer sdl_ttf smpeg sqlite unixodbc v4l-utils xdg-utils zlib gettext qt5-webengine webkit2gtk qt6-svg qt6-webengine mongo-c-driver&lt;br /&gt;
  &lt;br /&gt;
  git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel&lt;br /&gt;
  &lt;br /&gt;
  cd gambasdevel&lt;br /&gt;
  &lt;br /&gt;
  ./reconf-all&lt;br /&gt;
  &lt;br /&gt;
  GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit –disable-gtkopengl&lt;br /&gt;
  &lt;br /&gt;
  make -j$(nproc)&lt;br /&gt;
  &lt;br /&gt;
  sudo make install&lt;br /&gt;
&lt;br /&gt;
Non ci rimane che copiare e incollare, un comando alla volta, nel terminale della nostra distribuzione che nel caso del nostro esempio è Manjaro Linux.&lt;br /&gt;
Come detto se la vostra distribuzione non usa sudo occorre che al posto di sudo vi eleviate a utente root, senza mettere sudo nel comando.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ecco i passaggi per aggiornare ==&lt;br /&gt;
&lt;br /&gt;
Questo sistema è un po drastico e se avete padronanza di git potete anche saltarlo, sappiate solo che è l’unico sistema che garantisce l’aggiornamento sicuro di Gambas:&lt;br /&gt;
&lt;br /&gt;
  cd gambasdevel&lt;br /&gt;
  &lt;br /&gt;
  sudo make uninstall&lt;br /&gt;
  &lt;br /&gt;
  cd&lt;br /&gt;
  &lt;br /&gt;
  rm -rf gambasdevel/&lt;br /&gt;
  &lt;br /&gt;
  git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel&lt;br /&gt;
  &lt;br /&gt;
  cd gambasdevel&lt;br /&gt;
  &lt;br /&gt;
  ./reconf-all&lt;br /&gt;
  &lt;br /&gt;
  GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit –disable-gtkopengl&lt;br /&gt;
  &lt;br /&gt;
  make -j$(nproc)&lt;br /&gt;
  &lt;br /&gt;
  sudo make install&lt;br /&gt;
&lt;br /&gt;
Nota: se usate la versione stabile dovete sostituire gambasdevel con gambas-stable .&lt;br /&gt;
&lt;br /&gt;
1 È proprio il fatto di dover nascondere il codice per poterlo vendere che in Windows i programmi vengono distribuiti come binari (.exe).&lt;br /&gt;
Sono decisamente facili da installare (meno che da repository) rispetto alla compilazione, ma ammetterete che compilare è molto meno oneroso.&lt;/div&gt;</summary>
		<author><name>Gianluigi</name></author>
	</entry>
</feed>