Zie ook Lazarus op Linux, Lazarus gebruik en Lazarus’ nuttig voorbeeld, Lazarus installeren
Ik zag een voorbeeld over barcodes maken, meer bepaald Quick Response (QR) Codes:
http://lazplanet.gitlab.io/2021/12/generate-qr-codes.html .
Dat lijkt me nuttig als het gekoppeld kan worden aan een database. (Voordien heb ik het voorbeeld van een knop op een Form gemaakt, en .. nog geen andere).
Dit is tevens een voorbeeld van het gebruiken van een (externe) library in Lazarus; hier LazBarcodes.
– waarvan je de code moet afhalen van sourceforge in de vorm van een .zip bestand.
– ze uitpakken en gebruiken in Lazarus.
Dat kan op twee manieren:
– (systemwide) opnemen als een component in de Lazarus toolbar (+Lazarus terug compileren).
– in je project directory opnemen (deze manier had ik eerst geprobeerd, maar leverde me wat probleempjes op – in Lazarus 2.2.6)
1. Opnemen in Lazarus
Deze manier heb ik dat op een andere computer geprobeerd met een recenter systeem (OpenSUSE Tumbleweed) met Lazarus 4.6, met meer succes.
Hiervoor heb ik de uitleg op die site niet gevolg, maar gewoon op gevoel (*) gewerkt: Ik heb bij het menu “Package” gekozen voor “Online Package Manager”. Die gaat open en haalt online een lijst met 217 packages af die beschikbaar zijn. Daartussen (te vinden door een paar letters in de zoekfunctie bovenaan te geven) staat toevallig ook hetgeen ik nodig heb: lazbarcodes (+_runtimeonly) in versie 2.0.4.0.
Aangevinkt, bevestigd met knop “Install”, en beide paketten werden afgehaald en geïnstalleerd (waarbij ook met afhankelijkeheden gecompileerd), waarna aangeboden wordt Lazarus te hercompileren om het er in op te nemen.
Do you want to rebuild Lazarus with profile: Normal IDE?
Er flitsen een paar honderd lijnen output voorbij en Lazarus herstart, en er is een tabblad bijgekomen “Laz Barcodes” met de barcode-toolbuttons.
*) gevoel ook opgebouwd door het geknoei met de andere methode, en met wat ik daarvoor al rondgelezen en geprobeerd had.
Dan kan je de barcode uit de toolbar kiezen en op de form zetten, en de rest van de code toevoegen, “Run” en inderdaad, er wordt een QR code gemaakt op basis van iets wat je in het tekstvak typt.
2. in project opnemen
* maak een nieuw project, bewaar het in een nieuwe directory (bewaar ook de Unit?)
* in die nieuwe directory (staat nu unit1.pas/frm, GenerateQR.lps/lpr/lpi/ico en een backup directory, maak een “libs” directory bij.
Daarin pak je de download uit (wordt bv “lazarus-cc-svn-r10029-components-lazbarcodes”), en je geeft die een eenvoudigere naam, bv lazbarcodes.
Dan zo je nu dus een README.txt file moeten kunnen vinden in iets als /home/myuser/dev/LazarusFps/GenerateQR/libs/README.txt.
In je project:
– Project, Project Options (interessant scherm met o.a. het icoon van het project)
– verder: Compiler options, Paths, Other Unit Files.
Vul daar in (of kies): libs/lazbarcodes/src en “ok”.
Het project, de code
Dan in code view onder “uses”, zet ubarcodes.
Onder var een variabele toevoegen voor de TBarcodeQR component-object:
var
…
QR: TBarcodeQR;
En in de form komt iets als:
procedure TForm1.FormCreate(Sender: TObject);
begin
try
QR := TBarcodeQR.Create(nil);
with QR do begin
Parent := Form1;
Top := 0;
Left := 0;
SetBounds(0, 40, 300, 300);
Text := Memo1.Text;
Show;
end;
finally
end;
end;
Via dubbelklik op form en
Events – OnDestroy in de object inspector:
procedure TForm1.FormDestroy(Sender: TObject);
begin
if QR <> nil then QR.Free;
end;
Maak een TMemo op deform en zet tekst in de eigenschap Lines “Type anything here to generate a QR Code…“ en dubbelklik om de code toe te voegen:
procedure TForm1.Edit1Change(Sender: TObject);
begin
QR.Text := Memo1.Text;
end;
En dan komt het moment (*) van de beloning;
– “Run”, en een venster met QR code op het scherm.
– * of niet. Op een ander toestel met een oudere versie 2.2.6
komt er een foutmelding in een tabblad “ubarcodes” op uses …, zint, udrawers;
ubarcodes.pas(9,3)Fatal:Cannot find zint used by ubarcodes
Zie ook Lazarus op Linux, Lazarus gebruik en Lazarus’ nuttig voorbeeld
Pogingen om het (op deze manier) op te lossen zijn voorlopig niet gelukt. Ik richt me dus op de recentere versie.
(meer…)