Pagine: 1 ... 9 10 [11] 12 13 14
Vediamo un po' di capire come sono strutturati i file e come si riescono a gestire in Lazarus....

Read More

Share on Twitter! Digg this story! Del.icio.us Share on Facebook! Technorati Reddit StumbleUpon

30 Nov 2011 - UIB: Unified Interbase

UIB (acronimo di Unified Interbase) è una suit di componenti gratuiti ed opensource per l'accesso a basi di dati Firebird, Interbase e Yaffil.
Questi componenti sono "Thread-Safe" con qualsiasi versione di Firebird, Interbase e Yaffil  e girano sotto Delphi, BCB, Kylix, Lazarus e FPC (Win32, Linux, FreeBsd).

Read More

Share on Twitter! Digg this story! Del.icio.us Share on Facebook! Technorati Reddit StumbleUpon

28 Nov 2011 - System Tray con Lazarus

A volte si ha la necessità di iconizzare i programmi nella System Tray.
Il system tray è quella porzione di schermo che si trova a destra della barra delle applicazioni e a sinistra dell’orologio di sistema.
Fare ciò in Lazarus è davvero semplice con l'oggetto TTrayIcon. Creiamo un programma di esempio...

Read More

Share on Twitter! Digg this story! Del.icio.us Share on Facebook! Technorati Reddit StumbleUpon
A volte può capitare di dover intercettare tasti premuti in altri programmi, per esempio per creare un generatore di numeri pseudo-casuali basandosi su quello che si è scritto negli ultimi 5000 tasti premuti. Bene per fare questo usiamo una funzione (purtroppo non multipiattaforma, gira solo su windows) che si chiama GetAsyncKeyState. Vediamo un piccolo esempio che logga in una TMemo i tasti premuti sulla tastiera.

Codice: [Seleziona]

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
  StdCtrls,
  Windows;

type

  { TForm1 }

  TForm1 = class(TForm)
    Memo1: TMemo;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Timer1Timer(Sender: TObject);
var
  Tasto, i: integer;
  Esci: boolean;
begin
     i:=0;
     Esci:=FALSE;
     while ((i<=255)AND(Esci=FALSE)) do
     begin
          if (GetAsyncKeyState(i)=-32767) then
          begin
               Memo1.Text:=Memo1.Text + Chr(i);
               Esci:=TRUE;
          end;
          Inc(i);
     end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
     memo1.Clear;
     Timer1.Interval:=10;
end;

end.



Bene, come potete vedere il programma è molto semplice, prima di tutto si necessita di dichiara la unit di nome Windows poi all'avvio del programma scatta un timer che ogni 10 millesimi di secondo verifica se è stato schiacciato un tasto che è compreso tra il valore numerico 0 e il valore numerico 255. Se così fosse lo trasforma in un carattere (tramite funzione Chr()) e lo stampa sull'oggetto TMemo. Potete trovare questo esempio al seguente indirizzo:

www.lazaruspascal.it/esempi/keylog.zip

E' ovvio che queste cose possono essere usate anche per fare un keylogger (cosa che io ho fatto per strutturare un esempio, ma è un keylogger davvero banale e del tutto inoffensivo) ma lo scopo di tale articolo è quello di fare formazione non quello di dare spunti per creare software illegali. Quindi si declina ogni responsabilità per usi illeciti che si possono fare dall'uso di queste informazioni.
Share on Twitter! Digg this story! Del.icio.us Share on Facebook! Technorati Reddit StumbleUpon
Spesso in un applicazione si necessita di generare dei report, ed eventualmente stampare su PDF tali report. Per poter lavorare con i report in Lazarus ci viene in aiuto l'ottimo LazReport che è già presente nella vostra installazione di Lazarus, bisogna vedere solo se è installato oppure no.Diamo per assodato che  si sa come installare un nuovo pacchetto .lpk in Lazarus. Allora per prima cosa scarichiamo l'esempio che andremo a vedere all'indirizzo: www.lazaruspascal.it/esempi/SimpleAlbum.zip
Scompattiamo, apriamo il progetto con Lazarus e compiliamo.

Bene il progetto si appoggia ad un database di nome SimpleAlbum.s3db che serve per passare al report tutti i dati che voglio, le configurazioni sono passate attraverso un file ini mentre i dati sono passati tramite un file txt. Se volete provare l'esempio dopo aver compilato basta che lanciate da una Console/Terminale il seguente comando

project1.exe Dati.Txt Config.ini

Se invece volete lanciare l'eseguibile che è già presente nel file compresso allora la sintassi è:

SimpleAlbum.exe Dati.Txt Config.ini

Giocate con il file di configurazione per capire come si comporta il progetto. Solo una premessa, perchè tutto vada a buon fine aprite il file dati.txt (compreso nell esempio) e sostituite la scritta PATH con il percorso dove è sitata la cartella appena compressa, se per esempio abbiamo scompattato l'esempio in c:\ allora sostituiamo PATH con c:\

Spero che l'esempio possa essere utile a qualcuno per capire come lavorare con i report, con le immagini jpg (per esempio all'interno c'è l'esempio di come ridurre le immagini JPG per ottimizzare tempi e spazio del risultato finale) e come esportare in PDF i propri report creati con LazReport.

Una nota va fatta, ExportPDF (che è un estensione di LazReport ha un piccolo bug corretto da Lazarus 0.9.31 in poi ovvero che non mantiene le proporzioni delle immagini sul PDF esportato) per ovviare a questo problema basta sostituire la cartella ExportPDF con una nuova.









Share on Twitter! Digg this story! Del.icio.us Share on Facebook! Technorati Reddit StumbleUpon
Pagine: 1 ... 9 10 [11] 12 13 14