programmazione
 sviluppo desktop Lo sviluppo desktop con Lazarus consiste nella creazione di applicazioni grafiche multipiattaforma usando il linguaggio Object Pascal. Lazarus è un ambiente di sviluppo integrato (IDE) basato sul compilatore Free Pascal, che permette di progettare interfacce grafiche tramite un editor visuale drag-and-drop e di scrivere codice dietro ai controlli. Le applicazioni sviluppate possono essere compilate per Windows, Linux e macOS senza modifiche sostanziali al codice, rendendolo uno strumento potente per chi cerca un approccio rapido e produttivo allo sviluppo desktop. 
   
 
home page
 

Introduzione allo sviluppo Desktop e alcuni esempi con l'ambiente di sviluppo Lazarus/FreePascal.

Pubblicato il: 1-9-2025

Ultima Modifica: 8-9-2025

Menù

Introduzione allo sviluppo desktop
Linguaggi e toolkit per lo sviluppo desktop
Primo esempio pratico: Hello World con Lazarus/FreePascal
Creare una calcolatrice desktop con Lazarus/FreePascal
Salvataggio della cronologia dei calcoli

Articolo 1 – Introduzione allo sviluppo desktop 🖥️💻

Lo sviluppo di applicazioni desktop rimane fondamentale nell’informatica. Programmi gestionali, strumenti di produttività, software scientifici e applicazioni multimediali trovano la loro naturale collocazione come app desktop.

Ma quale ambiente scegliere? Windows e Linux hanno approcci diversi, con vantaggi e svantaggi. 🔹


1. Architettura dei due sistemi ⚙️

  • Windows: usa principalmente le API Win32 e .NET. La retrocompatibilità è uno dei punti di forza: un’app scritta vent’anni fa può funzionare ancora oggi.

  • Linux: non ha un’API unica, ma diverse librerie e toolkit (GTK, Qt, ecc.). La varietà offre flessibilità, ma richiede attenzione alla compatibilità tra distribuzioni.


2. Strumenti di sviluppo 🔧

  • Windows: Visual Studio, con editor, debugger e designer GUI integrati.

  • Linux: ampia scelta: Eclipse, NetBeans, Lazarus, KDevelop, Geany. L’open source domina e ogni sviluppatore può personalizzare l’ambiente.


3. Linguaggi di programmazione 💻

  • Windows: C#, VB.NET, C++.

  • Linux: C, C++, Python, Lazarus/FreePascal, Java.

  • Filosofia: Windows → linguaggi integrati nell’ecosistema, Linux → libertà di scelta.


4. Interfacce grafiche (GUI) 🎨

  • Windows: WinForms, WPF, MAUI (moderno e multipiattaforma).

  • Linux: GTK, Qt, FLTK.

  • Differenza pratica: Qt o GTK permettono app multipiattaforma, WinForms funziona solo su Windows.


5. Distribuzione delle applicazioni 📦

  • Windows: installer .exe o .msi.

  • Linux: pacchetti specifici (.deb, .rpm) o universali (AppImage, Flatpak, Snap).


6. Cross-platform 🌍

Framework come Java, Python (PyQt, Tkinter), Lazarus, .NET MAUI, Avalonia permettono di scrivere una sola volta il codice e distribuirlo su più sistemi.


Conclusione ✅

Windows → standardizzazione, retrocompatibilità, strumenti integrati.
Linux → libertà, flessibilità, open source.

Conoscere le differenze aiuta a scegliere l’ambiente più adatto o a sviluppare software multipiattaforma.

torna su Torna sù



Articolo 2 – Linguaggi e toolkit per lo sviluppo desktop 🖥️💻

Dopo aver visto le differenze tra Windows e Linux nello sviluppo desktop, è importante capire quali linguaggi e strumenti possiamo usare per creare applicazioni.

La scelta dipende dal sistema operativo, dalla complessità dell’applicazione e dal tipo di interfaccia grafica desiderata. 🔹


1. Linguaggi più diffusi su Windows 💻

  • C#: principale del framework .NET, integrato in Visual Studio.

  • Visual Basic .NET: semplice e rapido per piccoli tool e software gestionali.

  • C++: per applicazioni ad alte prestazioni; può usare Win32 o Qt.

  • Python: con librerie GUI come Tkinter, PyQt o wxPython.


2. Linguaggi più diffusi su Linux 🐧

  • C e C++: usati per applicazioni native ad alte prestazioni.

  • Python: molto popolare, semplice e multipiattaforma.

  • Pascal (Lazarus/FreePascal): sviluppo RAD multipiattaforma.

  • Java: Swing o JavaFX permettono app che funzionano su Linux, Windows e macOS.


3. Toolkit grafici (GUI) 🎨

Windows:

  • WinForms → semplice e tradizionale.

  • WPF → moderno, interfacce complesse.

  • MAUI / Avalonia → multipiattaforma .NET.

Linux:

  • GTK → GNOME.

  • Qt → KDE, multipiattaforma.

  • FLTK → leggero e semplice.

  • Tkinter (Python) → rapido e immediato.


4. Linguaggi e toolkit multipiattaforma 🌍

  • Qt (C++ o Python) → Linux, Windows, macOS.

  • Lazarus/FreePascal → sviluppo RAD per tutte le piattaforme.

  • Java (Swing, JavaFX) → scrivi una volta, esegui ovunque.

  • Electron (JavaScript/Node.js) → applicazioni desktop basate su web.


5. Conclusioni ✅

  • Windows → linguaggi integrati e GUI consolidate.

  • Linux → libertà di scelta e toolkit diversi.

  • Multipiattaforma → Qt, Lazarus e Java permettono di scrivere una sola volta e distribuire ovunque.

  • torna su Torna sù



Articolo 3 – Primo esempio pratico: Hello World con Lazarus/FreePascal 🖥️💻

Lazarus è un ambiente RAD (Rapid Application Development) basato su FreePascal, che permette di creare applicazioni desktop con GUI sia su Windows che su Linux.

In questo articolo vedremo come creare una finestra con un bottone che mostra un messaggio “Hello World”. 🌍


1. Creazione del progetto ⚡

  1. Apri Lazarus.

  2. Dal menu scegli: File → New → Project → Application.

  3. Lazarus creerà automaticamente una finestra vuota (Form1) e il file principale project1.lpr.


2. Aggiungere un bottone 🔘

  1. Dal pannello “Component Palette”, trascina un Button sulla Form1.

  2. Nel pannello “Object Inspector”, cambia il testo del bottone in:

Cliccami

												

3. Scrivere il codice 💻

  1. Fai doppio clic sul bottone per aprire l’editor eventi.

  2. Inserisci il seguente codice nella procedura generata:

  3. procedure TForm1.Button1Click(Sender: TObject);
    begin
    ShowMessage('Hello World! 🌍');
    end;
  • TForm1 è il nome della finestra.

  • Button1Click è l’evento che si attiva quando clicchi sul bottone.

  • ShowMessage mostra una finestra con il testo desiderato.


4. Eseguire l’applicazione 🖥️

  1. Premi F9 o clicca su Run → Run.

  2. Comparirà la finestra con il bottone “Cliccami”.

  3. Cliccando il bottone, vedrai il messaggio Hello World! 🎉


5. Conclusione ✅

  • Hai creato la tua prima applicazione desktop multipiattaforma.

  • Funziona su Windows e Linux senza modifiche.

  • Lazarus semplifica lo sviluppo grazie al drag & drop dei componenti e al supporto RAD.

Suggerimento 💡

Prova a cambiare il messaggio del bottone o a inserire un secondo bottone con una funzione diversa, così inizi a capire come gestire più eventi nella stessa finestra.

torna su Torna sù



Articolo 4 – Creare una calcolatrice desktop con Lazarus/FreePascal 🖥️💻

In questo articolo realizzeremo una calcolatrice semplice con le operazioni di base: somma, sottrazione, moltiplicazione e divisione.


1. Creazione del progetto ⚡

  1. Apri Lazarus.

  2. File → New → Project → Application.

  3. Lazarus genera automaticamente una finestra vuota (Form1).


2. Aggiungere componenti GUI 🔘

Dal Component Palette, trascina sulla finestra:

  • TEdit → per mostrare il risultato (parte superiore).

  • TButton → per ogni numero (0–9) e per le operazioni +, -, *, /, =.

Proprietà consigliate:

  • TEdit: Name = Display, ReadOnly = True, Alignment = taRightJustify

  • Bottoni numerici: Name = Btn0, Btn1…, Caption = "0", "1", …

  • Bottoni operazioni: Name = BtnAdd, BtnSub…, Caption = "+", "-", "*", "/"

  • Bottone uguale: Name = BtnEqual, Caption = "="


3. Dichiarare variabili globali 💻

Nel file principale (unit1.pas), aggiungi sotto TForm1 = class(TForm):

private CurrentValue: Double;
Operator: Char;
  • CurrentValue memorizza il numero inserito.

  • Operator memorizza l’operazione selezionata.


4. Gestire i numeri 🔢

Crea una procedura per inserire i numeri nel display:

procedure TForm1.NumberClick(Sender: TObject);
begin
Display.Text := Display.Text + (Sender as TButton).Caption;
end;
  • Collega tutti i bottoni numerici all’evento NumberClick.


5. Gestire le operazioni ➕➖✖️➗

Procedura per memorizzare l’operatore e salvare il valore corrente:

procedure TForm1.OperatorClick(Sender: TObject);
begin
CurrentValue := StrToFloat(Display.Text);
Operator := (Sender as TButton).Caption[1];
Display.Text := '';
end;
  • Collega tutti i bottoni +, -, *, / a OperatorClick.


6. Gestire il bottone “uguale” ✅

procedure TForm1.BtnEqualClick(Sender: TObject);
var ResultValue: Double;
begin
case Operator of
'+':
ResultValue := CurrentValue + StrToFloat(Display.Text); '-':
ResultValue := CurrentValue - StrToFloat(Display.Text); '*':
ResultValue := CurrentValue * StrToFloat(Display.Text); '/':
if StrToFloat(Display.Text) <> 0 then
ResultValue := CurrentValue / StrToFloat(Display.Text)
else
ShowMessage('Errore: divisione per zero ⚠️');
end;
Display.Text := FloatToStr(ResultValue);
end;

												

7. Testare l’applicazione 🖥️

  1. Premi F9 o Run → Run.

  2. Comparirà la finestra con i numeri e le operazioni.

  3. Prova a fare calcoli come 7 + 3 = → risultato corretto: 10.


8. Conclusione ✅

  • Hai creato una calcolatrice desktop multipiattaforma.

  • Funziona su Windows e Linux senza modifiche.

  • Puoi ampliare il progetto aggiungendo:

    • tasto C per cancellare

    • tasto . per decimali

    • gestione dei numeri negativi

    • memoria dei calcoli

torna su Torna sù

Articolo 5 – Salvataggio della cronologia dei calcoli 🖥️💾

In questo articolo vedremo come salvare ogni operazione della calcolatrice su un file di testo, così da poterla rileggere in seguito.


1. Creare il file di log ⚡

  1. Aggiungi una variabile globale:

  2. private LogFileName: string;
  1. In FormCreate imposta il percorso del file:

  2. procedure TForm1.FormCreate(Sender: TObject);
    begin
    LogFileName := 'cronologia.txt';
    // il file verrà creato nella cartella dell'applicazione
    end;

2. Salvare un calcolo 💻

Modifica il bottone = (BtnEqualClick) per aggiungere la scrittura su file:

procedure TForm1.BtnEqualClick(Sender: TObject);
var
ResultValue: Double;
Line: string;


begin

case Operator of
'+': ResultValue := CurrentValue + StrToFloat(Display.Text);
'-': ResultValue := CurrentValue - StrToFloat(Display.Text);
'*': ResultValue := CurrentValue * StrToFloat(Display.Text);
'/': if StrToFloat(Display.Text) <> 0 then ResultValue := CurrentValue / StrToFloat(Display.Text)
else
begin ShowMessage('Errore: divisione per zero ⚠️'); Exit;
 end;
end;
Display.Text := FloatToStr(ResultValue);
// scrivere la riga sul file
Line := FloatToStr(CurrentValue) + ' ' + Operator + ' ' + Display.Text + ' = ' + FloatToStr(ResultValue);

AssignFile(F, LogFileName);
if FileExists(LogFileName) then
Append(F)

else Rewrite(F);
try
Writeln(F, Line);

finally
CloseFile(F);

end;
end;

					
  • Append(F)/code> → aggiunge righe al file esistente.

  • Rewrite(F) → crea un nuovo file se non esiste.

  • Ogni calcolo viene salvato come stringa: es. 7 + 3 = 10.


33. Visualizzare la cronologia 📄

Aggiungi un nuovo bottone “Cronologia”, e scrivi:

procedure TForm1.BtnHistoryClick(Sender: TObject);
var F: TextFile;
Line: string;
begin
if FileExists(LogFileName) then
begin AssignFile(F, LogFileName);
Reset(F);
try
while not Eof(F) do
begin ReadLn(F, Line);
ShowMessage(Line);
// mostra ogni riga end;
finally CloseFile(F);
end;
end else ShowMessage('Nessuna cronologia disponibile 📄');
end;

					
  • Mostra tutte le operazioni salvate nel file./p>

  • Puoi migliorare l’interfaccia usando un Memo al posto dei ShowMessage.


4. Conclusione ✅

  • Ora la tua calcolatrice salva la cronologia dei calcoli su file. 💾

  • Puoi rileggere e analizzare le operazioni eseguite in qualsiasi momento.

  • Questo è un esempio base di gestione dati persistente su desktop multipiattaforma.

    torna su Torna sù