Barcode Labels
Hi
Is there a way to print a specified number of the same barcode. I have created a column report which prints barcoded labels. The user must be able to specify how
many copies of the same label they require and Fastreport must print them as required. Is this possible with Fastreport.
Thanks
Is there a way to print a specified number of the same barcode. I have created a column report which prints barcoded labels. The user must be able to specify how
many copies of the same label they require and Fastreport must print them as required. Is this possible with Fastreport.
Thanks
Comments
go to the files section of the fastreport group on Yahoo and download the flexlabel.zip demo it shows what you want.
regards
Thanks for the flexlabel example. I have two questions. If I have a label
report linked to a query and the user selects one record to print a number of times, your example does not work. It has to have more than one record to print in the report. How do I get around this?
Your code interests me. You have a procedure then before you have var or begin
there is another procedure. Why do you do it this way?
by nesting the procedure inside i can disconnect it easily and i don't have to dig out the band name.
I handle single selections differently when dblclick in grid
modify frdbdataset range props to rbcurrent and i set open and close dataset to false,
i use a modified version of the 2 reports
added skip :=variable to dictionary and set mdband to virtual 1 record
pass values into variables when report is loaded and set dataset to sum of skip and copies then in obp event of mdband add code
mdband.visible := [Line#] > skip;
this should give you some ideas.
regards
ill upload another demo to fr yahoo group later tonight
printlabelfromgrid.zip
regards
Thanks very much for the example. Sorry to hassel you like this. I would like to know if it is possible to adapt the first example to print either one record or many records. I would like my users to be able to select a start and end record from a stock database. I will then extract the records using a query. There will be the instance where the user will make the start and end record the same, selecting only one record. Is this possible?
If you look at the printfrom grid example you will notice there is no frdbdataset
on the form and if you look at the reports you will notice that only 1 variable was added to the dictionary and the mdbands dataset was set to virtual 1 record, they are just renamed versions of the flexlabel reports, and what we are doing is hiding the memos rather than the band.
ill upload another demo later to day to show how to do it.
using the flexlabel demo and the reports from the printgrid
you have to add an if statement in the obpevent of the mdband in the reports
to see if intskip is >0 and code in the unit to switch datasources and set the onbeginband event of the report component to nil when printing single records
and add a check box then mod code of buttonclick event after loading which report.
regards;)
Got your latest file thanks. One more question. With the text fields you put
in "Visible := Showmemos". I have a barcode field, how do I control whether it is visible or not. When I use the skip labels, the barcode is still visible.
reupload the file i replaced it this morning had uploaded wrong one
you'll see some changes in the code and in the reports
regards
Sorry to bug you like this. I am a newbie to fastreport. I downloaded the latest version of Flexlabelb. There is still two problems.
1. I cannot preview the report at design time it gives an error "Invalid argument".
2. When skipping labels. The barcode field still shows. The text fields are not visible. I noticed that in your very first example the barcode field did not show which was correct.
Thanks
if you run single the code in the report obp must have bar1.visible := True/false in appropriate places,
When in the ide if you put a report into design mode by dblclck rep component
and it is dependant on outside delphi code it will not run properly.
regards
I have tried various ways of trying to make to barcode invisible on
skipped labels but I cannot get it right. Why do the memos not show on skipped labels but the barcode still shows. I cannot find the code which makes the memos invisible when printing only one record. Please help where should I put Bar1.Visible := False.
Thanks
I cannot find the code which makes the memos invisible when printing only one record. Please help where should I put Bar1.Visible := False.
using the flexlabel2bdemo
it goes in the onbeforeprint event of the band
begin
if srec = True then
begin
if [Line#] > [intskip] then
begin
memo1.visible := true;
memo2.visible := true;
memo3.visible := true;
memo4.visible := true;
memo5.visible := true;
memo6.visible := true;
memo7.visible := true;
Line1.visible := true;
//addbarcode here
end
else
begin
memo1.visible := false;
memo2.visible := false;
memo3.visible := false;
memo4.visible := false;
memo5.visible := false;
memo6.visible := false;
memo7.visible := false;
Line1.visible := false;
//and here
end;
end;
end
regards
look at the band column report it already has the barcode on it
i just didn't put it on the page column report.
Got it Thanks. Just one more thing. When printing more than one label for multiple records the last label only prints once. Can you give me some pointers to sort this out.
get flrxlabel2c.zip from the group
i changed quite a few things
regards
I am having difficulty accessing the objects on the report.
Thanks
On the lastest version flrxlabel2c.zip. I tested it with your data and it works fine. I then replaced your table comp with a simple Dbisam query comp. I then recompiled it and changed all the references from table1 to query1.
Now when I print a report of all the labels, it gives me the correct number of labels, but they are all the same, the first record in the database. I noticed on the dbgrid when I tested with your data, the software scanned the table before the report was generated, after changing the dataset it did not do this. Is there a reference to the table in the report that I could have missed.
Thanks
the movement is controled through the onuser function in delphi
code....
begin
if not table1.Eof then table1.Next; // move next if not at eof
val:= true; // return vakue to var moved in report
end
else
val:= false;
end;
......morecode
regards
procedure TForm1.Button5Click(Sender: TObject);
var
B:tfrview;
bcv: tfrBarCodeView;
begin
frreport4.Clear;
frreport4.LoadFromFile(wpath+'bctest.frf');
b:= frReport4.FindObject('Bar1');
b.Prop:= '[Table1."Species No"]';
// above way to access most props
// below way to access params of barcode
//*** add frbarcod to uses unit of interface section
// if you take a look at the unit you will find all
// available barcode types and the types of the other params
bcv := TfrBarcodeView(frReport4.FindObject('Bar1'));
if bcv <> nil then
begin
bcv.Param.cBarType := bcCode128A;
bcv.Param.cRatio:= 2.0; // zoom
end;
frreport4.ShowReport;
end;
regards
The moment I change the dataset from your table to a query. The onuser function does not seem to activate. Why.
Thanks
add a query
add fields with field editor
change all refrences to table in implementation section to query1.
and don't forget to change the memos in the report. from table1."fieldname" to
query1.fieldname.
regards
I did exactly as you did except I am using a DBISAM Query. I tested the onuser function. None of it is being executed. Could it be something to do with Dbisam type of query?
Thanks
regards
What is a user function? When using a DBISAM dataset I just cannot get the
user function to activate. Is there any way around this. I have tried everything I can using the limited knowledge of FR I have.
Thanks
you will find a bit of code in one of the memos scripts, (the last one placed in the band)
moved := ufmoverec([lprinted]);
moved is a variable it will contain the result sent back from delphi of the value passed out through the userfunction ufmoverec(p1,p2,p3);
when ever fast report finds an unknownname() folloed by brackets it triggers the on user function event of the report component itself.
in this case we pass out the value of [lprinted] to delphi then in delphi
procedure TForm1.frReport1UserFunction(const Name: String; p1, p2,
p3: Variant; var Val: Variant);
var
s:integer;
begin
if AnsiCompareText(Name, 'ufmoverec') = 0 then
begin
s:= frparser.calc(p1); // gets valu of lprinted passed in p1
if s = spinedit2.Value then // if vals match
begin
if not Query1.Eof then Query1.Next; //and not at end of file move next record
val:= true;//return to fr's moved variable
end
else
val:= false;// or return to fr's moved variable
end;
// could add more user functions here
end;
// when using Ansi compare text(NAME,'string') be careful it is case sensitive
// the name used in 'string' must be exactly as it was in fr
// ie 'Ufmoverec' and 'ufmoverec' would be two different functions
and that might be your problem.
regards
Thanks for your help. I got my problem. When I changed the dataset, I did not need all the memos on your report so I deleted the last three and without realizing I deleted the code on the last memo.
regards
Many Thanks
Dunk
__________________
WoW Gold| D3 Gold| RS Gold| Swtor Credits
not quite clear about this but you may find the answer though google