Lazarus’ nuttig voorbeeld [in bewerking]
Zie ook Lazarus op Linux, Lazarus gebruik en Lazarus’ nuttig voorbeeld
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)
1. Opnemen in Lazarus
Deze manier heb ik dan op een andere computer geprobeerd met een recenter systeem, met meer succes.
Hiervoor heb ik de uitleg op die site niet gevolg, maar gewoon op gevoel (*) gewerkt (in Lazarus v. 4.6 op openSUSE ??): 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.
* 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”.
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 QR code op het scherm.
* of niet. Bij mij 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 te lossen zijn voorlopig niet gelukt….
Lazarus, menu Packages, Open Package File
ga naar de lazbarcodes\packages\lazbarcodes
kies lazbarcodes_runtimeonly.lpk
kies “Compileren”
Onderaan: Compile package lazbarcodes_runtimeonly 2.0.4: Succes!
Ok, nu lazbarcodes terug compileren:
Packages, Open Package File (.lpk)
Open lazbarcodes.
Kies “Compileren”
Onderaan: Compile package lazbarcodes 2.0.4: Succes!
Daarna het project terug “Run”:
ubarcodes.pas(8,61)Fatal:Cannot find zint used by ubarcodes, incompatible ppu=/home/myuser/dev/LazarusFP/ProjectTest/libs/lazbarcodes/packages/lib/zint/x86_64-linux/zint.ppu, package lazbarcodes_runtimeonly
Volledig herbouwen:
Run, Build : zelfde Zint probleem
Package, Install/Uninstall Packages, dan “Recompile Clean” gedaan?
Lazbarcode die klaar staat toevoegen en omgeving opnieuw opbouwen …
Gaf een hele lijst warnings en voor een aantal packages succes! maar lijkt not niet gedaan te zijn (run is niet terug vrijgekomen – de run is grijs, en de stop is rood)…. of moet ik de programmeeromgeving nu herstarten?
Ik klik op de stop knop en herstart Lazarus, maar probleem blijft.
Dan in de online package manager de lazbarcodes gekozen, install, en rebuild Lazarus bevestigd…
Dat eindigt nu wel in spontaan herstarten van Lazarus.












