SMF - Just Installed!
16 Nov 2011 - Lazarus e la crittografiaChi necessita di lavorare con la crittografia troverà in Lazarus un valido alleato perchè esiste un componente chiamato DCPCrypt (http://wiki.lazarus.freepascal.org/DCPcrypt) che permette di lavorare con i più diffusi algoritmi di crittografia.
Vediamo ora un esempio per capire come si usa. Codice: [Seleziona]
Potete trovare l'esempio appena visto all'indirizzo: www.lazaruspascal.it/esempi/Cifratore.zip 14 Nov 2011 - Ampliare LazarusA volte si necessita di estendere le funzionalità di Lazarus, perchè gli strumenti necessari non sono completi. Facciamo l'esempio di una installazione pulita di Lazarus, in tale installazione non è (di norma) presente il LazReport anche se il pacchetto per installarlo lo avete già tra le cose a vostra disposizione. Quindi per prima cosa vediamo dove trovare i pacchetti di cui già disponiamo e che vogliamo installare, di norma su windows li troviamo in c:\lazarus\components\ mentre di norma su linux (ubuntu) troviamo tali paccehtti in \usr\lib\lazarus\components Bene per proseguire con l'esempio che stavamo vedendo apriamo Bene ora vedrete tra le linguette di Lazarus una nuova chiamata lazreport. Questo procedimento è di norma la prassi per installare un nuovo componente su Lazarus, come abbiamo visto una serie di questi componenti li abbiamo già sul nostro pc, altri li dobbiamo scaricare da internet. Qui trovate un resoconto di ciò che potete installare:
http://wiki.lazarus.freepascal.org/Components_and_Code_examples
10 Nov 2011 - Generare controlli RUN-TIMEA volte si presenta la necessità di generare dei controlli sulle
maschera in quantità variabile. In tal caso ci vengono in aiuto i controlli a Run-Time. Ovvero li creo tramite codice. Ora allego un semplice esempio, che basta compilare e provare ad eseguire per capire di cosa parlo. Codice: [Seleziona]
L'esempio appena visto è possibile scaricarlo nella sua interezza qui: www.lazaruspascal.it/esempi/Controlli_RunTime.zip 07 Nov 2011 - TTreeview e MenuNon vi è mai capitato di dover usare dei menù nei vostri programmi? Se la risposta è si allora sappiate che è possibile tabellare i menù (con le dovute premure) e visualizzare tali menù in una TTreeview in maniere tale da rendere il programma pulito ed efficente.
Per prima cosa vediamo il codice d'esempio che potete trovare in versione integrale all'indirizzo: www.lazaruspascal.it/esempi/MenuTabellato.zip unit Unit1;
Come potete notare la funzione ricorsiva InserisciNodiFigli crea il menù popolato con i dati tabellati, e nell'esempio che abbiamo appena visto i dati sono così espressi
Quello che bisogna capire è che il NodoPadre deve essere zero per tutte le righe che devono comparire come voci primarie del menù, mentre il campo Posizione identifica l'ordine assoluto con il quale vengono inseriti nel menù, quindi non ci devono essere voci duplicate e i valori devono essere incrementali da 1 a N.
Per capire meglio vi consiglio di scaricare l'esempio e analizzarlo, è più facile da farlo che dirlo. Buona programmazione. 02 Nov 2011 - TTreeView
A volte può nascere l'esigenza di creare dei menù laterali, e il modo più semplice per crearli è attraverso l'oggetto TTreeView che contiene una struttura ad albero, segue un esempio e al fondo trovate il link all'esempio da scaricarvi per analizzarlo e giocarci.
unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; TreeView1: TTreeView; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure FormCreate(Sender: TObject); Procedure DeleteNode(Node:TTreeNode); private { private declarations } public { public declarations } end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.FormCreate(Sender: TObject); begin TreeView1.Items.Add(nil,'Primo'); TreeView1.Items.AddChild(TreeView1.Items.GetLastNode,'1'); TreeView1.Items.AddChild(TreeView1.Items.GetLastNode,'2'); TreeView1.Items.AddChild(TreeView1.Items.GetLastNode,'3'); TreeView1.Items.Add(nil,'Secondo'); TreeView1.Items.AddChild(TreeView1.Items.GetLastNode,'4'); TreeView1.Items.AddChild(TreeView1.Items.GetLastNode,'5'); TreeView1.Items.AddChild(TreeView1.Items.GetLastNode,'6'); TreeView1.Items.Add(nil,'Terzo'); TreeView1.Items.AddChild(TreeView1.Items.GetLastNode,'fine'); end; procedure TForm1.Button1Click(Sender: TObject); var i: integer; s: string; begin // if there is no nodes, create a root node with a parent of Nil if TreeView1.Items.Count = 0 then begin Treeview1.Items.Add (nil,'Root Node'); exit; end; // Set up a simple text for each new node - Node1 , Node2 etc i := treeview1.Items.Count; s := 'Node ' + inttostr(i); //Add a new node to the currently selected node if TreeView1.Selected <> nil then Treeview1.Items.AddChild(Treeview1.Selected ,s); end; procedure TForm1.Button2Click(Sender: TObject); begin if TreeView1.Selected = nil then exit; //If selected node has child nodes, first ask for confirmation If treeview1.Selected.HasChildren then if messagedlg('Delete node and all children ?',mtConfirmation, [mbYes,mbNo],0) <> mrYes then exit; DeleteNode(TreeView1.Selected); end; procedure TForm1.Button3Click(Sender: TObject); begin ShowMessage(TreeView1.Selected.GetTextPath); end; procedure TForm1.Button4Click(Sender: TObject); begin ShowMessage(TreeView1.Selected.Text); end; procedure TForm1.Button5Click(Sender: TObject); begin ShowMessage('Indice assoluto: ' + IntToStr(TreeView1.Selected.AbsoluteIndex)); end; //A procedure to recursively delete nodes Procedure TForm1.DeleteNode(Node:TTreeNode); begin while Node.HasChildren do DeleteNode(node.GetLastChild); TreeView1.Items.Delete(Node) ; end; end. Link: www.lazaruspascal.it/esempi/TTreeView.zip |