This file contains information about: PRINT : Label Printing ******** THD201.DBF ******** Msg#: 128889 Date: 06-Aug-91 Fm: Glenn Hart 76703,4226 To: Bruce Allen 70473,2156 I worked with Avery in developing that larger top margin, which greatly improves the labels' ability to feed automatically. You should have seen their original designs; jammed up constantly. There are a couple of approaches to dealing with the large top margin. Note that you can set the top margin in the printer setup dialog. This was enabled exactly for this purpose; try setting it to 5 lines. Depending on the layout, you may have to juggle page length around, but it basically works fine. Another approach is to use the Start Doc snippet in the User Procedures dialog, writing three or four lines of code to send the printer HP PCL code to adjust the top margin. For example, create a program called HPLABMAR.PRG and specify it there. The program can look like the following, which works perfectly for me: PARAMETERS ctrs ctrs = ctrs+CHR(27)+'E'+CHR(27)+'&l6D'+CHR(27)+'&l6E'+CHR(27)+'&l56F' RETURN ctrs Hope this helps. Glenn Msg#: 130443 Date: 08-Aug-91 Fm: Dan Hartung 71620,1433 To: Calvin Roche 75170,1112 (X) Calvin, I've done a lot of labels (so has Lisa, maybe she'll answer ). It's bad form to do a lot of HP page positioning commands when running reports or labels, which keep track of what page & line they're on *internally*. All I use the escape commands for is choosing fonts and resetting. So, staring over with a "clean" label form, are you sure: 1) that your label definition is correct? 2) that your page layout is correct? If these are, then the normal form feed that is sent should reset the page properly every time. If you're sending it yourself you need to have one of Lisa's Patented (No Wires!) Report UDFs to keep track *yourself* of where you are and reset Fox's _p... variables accordingly. This is ONLY if you're desperate though -- Fox should be able to do this in the straightforward way. If things aren't quite matching up you need to *simplify* rather than the other direction! Dan ******** THD202.DBF ******** Msg#: 154266 Date: 27-Sep-91 Fm: Lisa Slater 72077,2417 To: Bob Duncan 76517,1733 (X) A sneaky way to do this, I think it should work for you: make sure you have aliased all your label expressions, and the file is open. Now select another workarea and USE a file that has at least as many records as you want return address labels. It shouldn't be related to the other file or anything. Now LABEL FORM NEXT ExpN. For each record in the currently selected workarea, a label gets printed, right? But they're all for the current record in the non-selected workarea... Tony Stewart, this is my kludge of the night . >L< Msg#: 149045 Date: 16-Sep-91 Fm: Nelson Ramos 76376,3356 To: All I'm having problems with a lable printout with an HP III. When I make the changes to P_codes database in field p_6lpi from 7.27 to 8 I now get the proper 10 labels per page, but now the next page gets a single label then formfeeds, the third page continues printing 10 more labels. When I switch back to 7.27 I get all 11 lables on one page of 3x10 labels. Is there any way to set the lines per page or lables per page such as with the report writer? Thanks in advance.... Msg#: 149184 Date: 16-Sep-91 Fm: Glenn Hart 76703,4226 To: Nelson Ramos 76376,3356 (X) Try setting the _PLENGTH variable to a different number of lines and changing _PADVANCE to "LINFEEDS" instead of "FORMFEED." GLenn Msg#: 168473 Date: 28-Oct-91 Fm: Cathy Selhorst [Fox] 76177,3002 To: Ed Hochman 70363,1300 (X) Ed, When using the 60 lpp printer, you also need to set _plength to 60. This tells FoxPro how many lines are to be printed before sending a form feed. Since labels do not have a form length, the _plength variable is sent to the printer drivers when printing labels. After giving this a try let me know if you have any further problems. Cathy ******** THD203.DBF ******** Msg#: 180910 Date: 21-Nov-91 Fm: Gerhard Paulus 100012,2300 To: Chris Jefferies 70534,1375 (X) Chris, I think the first line feed fights a losing battle . You can suppress it using a modified printer driver program. The following code does *not* rely on any printer driver setup or printer escape sequences. Gerhard _PDSETUP="" _PDRIVER="gotcha.prg" && _PLENGTH=67 SCAN m.is_firstline= .T. m.line_counter=1 LABEL FORM adressen TO PRINTER NEXT (2*7) EJECT ENDSCAN **************************************** * gotcha.prg -> Printer Driver Program **************************************** PROCEDURE PDadvprt PARAMETER m.fromhere, m.wheretogo RETURN SPACE(m.wheretogo-m.fromhere) *--------------------------------------- PROCEDURE PDobject PARAMETERS m.textline, m.attribs RETURN m.textline *--------------------------------------- PROCEDURE PDlineend IF m.is_firstline m.is_firstline= .F. RETURN "" ELSE m.line_counter= m.line_counter +1 IF m.line_counter < _PLENGTH RETURN CHR(13)+CHR(10) ELSE RETURN "" ENDIF ENDIF Msg#: 181419 Date: 22-Nov-91 Fm: Gerhard Paulus 100012,2300 To: Chris Jefferies 70534,1375 Chris, an addendum: you can have neatly aligned labels and proportional type fonts. This is feasible with PROCEDURE pdadvprt and positioning the laser cursor under program control. JIC when your toner smells like victory again . Gerhard Msg#: 174345 Date: 07-Nov-91 Fm: DI COOK 100033,1414 To: Lisa Slater, 72077,2417 Lisa, Set up for 3-1/2" labels, 2 across by 7 down (14 on page LASER LABELS) 12cpi Have worked it out. Make a new printer spec. in GENPD. Open P_CODES.DBF copy record for HP 60LPP - I called my new copy HP 14 up labels. Overtype two values in new record (HP 14 up labels). Under heading P_flen overtype the curly brackets and change 66 to 63, ie. instead of [&l{66}F change to [&l63F (ESC & lowercase l 63 F) Also change the top margin to zero, overtype last field in record (P_topmarg) to [&l0E, close P_CODES and then REGENERATE GENPD. Set up label format with following [Top two lines of label blank] iif(empty(contact),"",company) iif(empty(contact),company,contact) address1 iif(empty(address2),suburb+" "+ state+" "+postcode,address2) iif(empty(address2),"",suburb+" "+ state+" "+postcode) Height = 7, Lines Between =2, Number Across =2, Margin =3, Width=43, Spaces between =4. Next use the File popup, click on Printer Setup, Click on Printer Driver Setup, then use NEW to set up additional driver. The new record you added to P_CODES will be down the bottom of file, move cursor to it, check 12 cpi, 6lpi, make top margin zero, save new printer set up name as HP14UPLAB. If using the Interface, make sure the label environment has the printer driver you want, otherwise it wont work. Then my little programme: _plength=63 _pdsetup="hp14uplab" label format filename.lbx to printer _plength=66 It's easiest to cancel all top and bottom margins and to position first line of printing by moving the label up or down a couple of lines in the label editor. FOR OTHER SIZED LASER LABELS, calculate page length (and text length because top & bot margins are zero) by counting the number of lines for each label (1"=6 lines) then multiply the number of lines by the number of labels down. This example is 9 lines x 7 labels down, hence the page length of 63. Follow the procedure above but substitite new values. ******** THD204.DBF ******** Msg#: 184839 Date: 01-Dec-91 Fm: DI COOK 100033,1414 To: Greg Dunn 73007,1224 (X) Greg, You probably realise that there has been a lot of correspondence concerning printing labels and HP laserjets. I've experimented quite a lot with them and have come to the conclustion that you should avoid setting a top margin. The easiest way to fix the problem is to create a printer driver setup (called for instance HPLAB) using the HP 60LPP Printer driver (you then get the standard 6 lines per inch printing format),and set the top margin to 0 when creating the printer driver set. As another CIS user mentioned you get a border on laser printers and this together with leaving the top lines of label blank should give you clearance. You then have to use the Report Label generator to insert fields, etc. I found the easiest way was to NOT use the "Lines between" option and place the label printing lines at the lowest point on the label (that way you get over the problem of no top margin). For instance, if label depth is 8 lines, leave the three lines at top of label blank and use the five lines at the bottom of the label to print address. You then have to calculate how many lines the labels require on the A4 page, i.e. if labels are 8 lines deep and there are 7 of them (8x7=56) you issue a _plength=56 before printing. In Australia we have laser labels 9 lines deep by 7 (9x7=63 - our page length would be 63 lines - 11-2/3" PAPER). Within a programme I would issue the following for your labels: _PLENGTH=56 _PDSETUP="HPLAB" LABEL FORMAT [FILENAME] TO PRINTER _PLENGTH=66 && set back to standard page length _PDSETUP="HPREPORT" && NORMAL REPORT PRINTER DRIVER THAT && USES NON STANDARD LINE HEIGHT. It works for me, hope it helps. Di Msg#: 184799 Date: 01-Dec-91 Fm: C.J. Shroll 72621,2261 To: Greg Dunn 73007,1224 (X) What we have here is a case where the solution to one problem is causing another problem. Laser printers cannot print in the top or bottom one-half inch, therefore on a standard 11 piece of paper they effectively only have 60 lines of printable area at 6 lines per inch. The common definition for reports and other printed documents calls for 66 lines per page (6 lines per inch x 11 inch paper = 66 lines). Well it seems that to help us adhere to the standard 66 lines per page, FOX entered a setting in the HP laser driver setup that would allow 66 lines to be printed in the 10 usable inches. They did this by entering a command in the 6 line per inch field in the P_Codes database that makes the laser printer space the lines slightly closer than 6 lines per inch. This works just fine for normal reports and some other printing applications. It does not work well in situations where specific spacing requirements must be met. This is the case when printing labels. Standard labels used for addresses are one inch or 6 lines with a true setting of 6 lines per inch. Obviously if the printer is instructed to use a different spacing the printing on the labels will not match as the printing moves down the page. The solution to this problem is to either modify the existing printer setup or to create and additional printer setup. To modify the existing printer setup the value in the field P_6lpi must be changed from &l7.27C to &l8C. Check you laser manual for explanations. Adding a record to the P_Codes database is also possible, but you will need to regenerate the GENPD.APP by opening the GENPD project and rebuilding the APP. It seems that by now FOX would have offered a more elegant solution to this situation. Hopefully this will help with your next project. Msg#: 184886 Date: 01-Dec-91 Fm: Steven Black 76200,2110 To: C.J. Shroll 72621,2261 (X) Sorry to jump in here, guys. C.J., the explanation you gave to Greg Dunn about HP lines, and lines per inch, is very good. However my HP Laserjet II can use everything except 1/4 inch all around, and not 1/2 inch as you state for top and bottom limits. Does this affect the numbering changes you suggest for the P_6lpi Ec codes slightly, or do your suggested modifications work fine regardless. **--** Steve Msg#: 185407 Date: 02-Dec-91 Fm: C.J. Shroll 72621,2261 To: Steven Black 76200,2110 (X) The suggested changes should work to give the proper line spacing regardless of where the count starts ( 1/2 or 1/4 inch). The unprintable zone is the reason that sheets of label specifically for laser printers usually have a half label not intended to be be used at both the top and bottom of the sheet. After the original question I did some more checking around and found that the Driver.EXE update file available here in section 5 contains a new P_Codes database that includes an additional laser printer selection called Laser II 60lpi that gives true 6 lines per inch spacing. The directions to update with the Driver.exe update is included in the READ.ME file also in section 5. ******** THD205.DBF ******** Msg#: 207526 Date: 22-Jan-92 Fm: Roger Bischoff [Fox] 76004,1651 To: Chris Jefferies 70534,1375 -Chris: I can understand your frustration with the label writer. Let's start simple. Assume that there are no printer drivers with FoxPro 2.0. With the label writer, all you can do is print labels in the standard printer font. There is no such thing as a Page Size because all labels are uniform on a continuous form (the perforations are for convenience ). In your case, I am not sure what type of labels you are printing on. All of the label sheets for the copier I have seen have no margins at the top or bottom. Do yours really have a 3 line margin on the Top and Bottom? Give me confirming information and I will try to help. Now, we introduce printer drivers. After you set up the printer driver for your printer, for the label all you need to worry about is choosing the correct printer, and not the page size and so forth. This gives the label writer the ability to print in a different type style (bold, italics, etc). When in the label, you can select Style from the Label menu. This will allow you to change to style for the _first_ line of the label only. If you want to change the style for the entire label, then you need to select a style when selecting the printer in the driver setup. I am sure we can work through this. There are many installations out there using the printer drivers without error. In no time, I am sure we can have you printing beautiful labels with FoxPro. Roger [Fox] Msg#: 211535 Date: 30-Jan-92 Fm: Don Vawter 73237,530 To: Joe Liuzzo 72611,2235 The SYSTEM MENU has a bar LABEL... This is not operative in an exe. Having a pad appear when you MODI LABEL is different than activating LABEL... which brings up the dialog allowing you to choose whether to print samples, etc. This is the dialog box which I can't access from an EXE. I need the pause function because, among other things: 1. The phone rings and I can't hear the other party. 2. The ribbon is wearing thin and I need to change it. 3. It's late and I want to go home. 4. etc. I print large quantities of labels (up to 500,000) at a time so being able to stop in the middle is important to me. Since your only recourse using the ESC key is to IGNORE which terminates the printing or RETRY which reprints all labels I needed an alternative. I suppose the need to pause isn't very important if you only print a couple of thousand labels, but with print jobs that can take 24 hours it's crucial. Msg#: 211708 Date: 31-Jan-92 Fm: Lisa Slater 72077,2417 To: Don Vawter 73237,530 (X) Don, At first blush I would think you could do it something like this. Let me know what you think, because frankly I haven't thought about this problem before, but this *seems* as though it would work: PUSH KEY CLEAR ON KEY LABEL F2 DO my_pause SET ORDER TO whatever GO TOP mrec = RECNO() DO WHILE ! EOF() mpause = .F. LABEL FORM something REST IF mpause GO mrec ENDIF ENDDO POP KEY PROC my_pause mpause = .T. mrec = RECNO() GO BOTTOM RETURN >L< Msg#: 211736 Date: 31-Jan-92 Fm: Don Vawter 73237,530 To: Lisa Slater 72077,2417 This is nearly the same as my initial approach. The problem is that OKL's are executed *between* program statements and are never *seen* until AFTER the LABEL FORM .... statement is finished, i.e. the labels are all printed. I modified your program with: LABEL FORM SOMETHING NEXT n to prin noco where n is a multiple of the number of labels accross the page (so you don't get gaps) and that will work. I don't know what it does to the speed since you would be reopening, I presume, the LBX file after every n labels. The other concern is that n must be a multiple of the number of labels accross the page or else you might get XXXXXXXXXX XXXXXXXXXX XXXXXXXXXXX XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX XXXXXXXXXXX XXXXXXXXXX XXXXXXXXX XXXXXXXXXXX XXXXXXXXXX .... This means you still have to look at the LBX file. I *do* like the idea of just *looking* rather than modifying it. If there is no speed degradation this may be the way to go. It certainly would be easier if the alert generated by FP when you hit ESC had a suspend option but... at least we can work around it. ******** THD206.DBF ******** Msg#: 213055 Date: 03-Feb-92 Fm: Martin Schiff [CONSULT] 76702,1355 To: Lisa Slater 72077,2417 Lisa, Well, after much head scratching, wasted paper, phone calls to Avery, etc., here's my generic solution (i.e. it works on LJII and III and compatibles) for the Avery 5160 (and 5660, etc. with the same spacing). Using NO printer driver (it probably would work either way since this string sets everything), send this string where Esc = chr(27) before printing labels. Esc+"E"+Esc+"&l66p12d7e6d60F"+Esc+"&a-1R" Esc E resets the printer Esc &l66... is Avery's suggested setup string for the 5160 label (it works good for 4 line labels, but the fifth line prints on the bottom edge of the label sometimes cutting off part of the text) Esc &a-1R moves the print cursor up one line (this is the key to getting 5 lines to print with a nice border on top and bottom). It could probably be shortened, but it works so I'm not going to mess with it anymore [grin]. The label generator setup is: left margin = 2 width = 40 (for condensed print - 16.67 pitch) 3 across 5 high 6 between horiz 1 between vert Use width = 25 and 2 between horiz for standard print (10 pitch) -- MartinMsg#: 213320 Date: 04-Feb-92 Fm: Mitchell Weinstein 75770,230 To: Martin Schiff[CONSULT] 76702,1355 Martin, I have tried your LJIII Avery5160 instructions and am coming up empty. The labels are not printing in condensed format. I am probably doing something wrong but for the life of me I cannot figure it out. I tried both an HPLJIIIP and an LJIIIP. I am not using a Printer Driver as per your instructions. The only way I can get condensed print is to use the HPII Printer Setup provided with FP2. I am sending the following string through the Command Window before I run the labels from an SQL query... CHR(27)+"E"+CHR(27)+"&l66p12d7e6d60F"+CHR(27)+"&a-1R" My printer is set as a default to PC-8 (if that figures in to it?). Any help would be most appreciated. Thank you, Mitch Msg#: 213538 Date: 04-Feb-92 Fm: Martin Schiff [CONSULT] 76702,1355 To: Mitchell Weinstein 75770,230 (X) Mitchell, I'm sorry that my message did not make it clear that it was just a setup string for the margins and cursor positioning. It assumed that you had already set the printer for condensed print. The string to send (either before or after the one I posted in the message, or as a part of it) is: Esc+"(s16H" Which sets the printer to condensed (16 pitch) print using the DP font. My program assigns the strings to variables, and before printing labels, I do a: ??? &pcond ??? &plabel The reason for the macro substitution is that I store the values in a setup database in exactly the format you see above (quotes and all) and assign a value to Esc in the program. Sorry for the confusion. Using your example, the string to send before your query would be: chr(27)+"E"+chr(27)+"&l66p12d7e6d60F"+chr(27)+"&a-1R"+chr(27)+"(s16H" Good luck, and let me know how it works for you. -- Martin Msg#: 213754 Date: 05-Feb-92 Fm: Mitchell Weinstein 75770,230 To: Martin Schiff [CONSULT] 76702,1355 (X) Martin, Thanks for your reply. I tried your example but I still could not get condensed print using only the string provided. The only way I can get condensed print (so far) is by using the HPII setup using the 16.67 option. Perhaps it is the manner in which I am doing things. My program is as follows. ? CHR(27) + "(s16H" ? CHR(27) + "E" + CHR(27) + "&l66p12d7e6d60F" + CHR(27) + "&a-1R" do label.qpr ! In the above query I am using your Layout specs and ! I am not using a Printer Setup. ? CHR(27) + "E" This program , you will be pleased to know is named Martin.prg! I have also been in touch with Avery and they faxed me what they have for dBase III+. They don't have anything for FP2. I feel I'm real close but... FYI When I use the HPII setup with condensed print I get the first and second labels just fine, then it starts creeping down and doesn't get corrected until the last label. MitchMsg#: 214059 Date: 05-Feb-92 Fm: Martin Schiff [CONSULT] 76702,1355 To: Mitchell Weinstein 75770,230 (X) The problem with what you are doing is that you are setting the printer up for condensed print, and then you are sending a reset in your next command (Esc "E"). Send the condensed print line AFTER the other string and it will work. If you use the exact string I had in my message all in one print command it will work fine. BTW, you should use ??? instead of ? to send commands to the printer. -- Martin Msg#: 214276 Date: 06-Feb-92 Fm: Mitchell Weinstein 75770,230 To: Lisa Slater 72077,2417 Lisa, After a few changes (on my part) I can faithfully say that Martin's solution to printing Avery 5160 labels on an HPIII or IIIP works like a charm. The necessary string is as follows... chr(27)+"E"+chr(27)+"&l66p12d7e6d60F"+chr(27)+"&a-1R"+chr(27)+"(s16H" Also, Martin points out that it is important that NO Printer Setup be utilized. This string takes care of everything. Also the above string is for CONDENSED print (thats the "(s16H" portion). Speak to you, Mitch Msg#: 215001 Date: 07-Feb-92 Fm: Matt Gainsborough 70521,707 To: Charles Fleming 72431,1725 Charles, I don't know if this is the exact same problem you are having, but we've been having problems with the label system for a very long time. It seems that it simply sends an extra line-feed at the beginning before it actually starts printing the labels. We have been talking to fox about it for ages; even to the point of them acknowledging the piece of code that causes the problem. They however have insisted that it is a BUG in dBASE and they are EMULATING the BUG for the sake of dBASE compatibility. When asked about the posibility of tying bug emulation to the SET COMPATIBLE command, we were told NO since people may have already written work arounds that might get thrown off by the change. It seems that our only real choice is to write the entire label run to a file and then chop off the line-feed and print the file, or modify the print driver to be smart and learn to eat the line-feed itself. Anyway, it may not be the same problem. It seemed from the beginning of the message it was tied to the print codes being sent. But your reference at the end of the message made it sound like a similar problem. I just wanted to let you know that you may be in for a bit of an up-hill battle if it is. Matt.Msg#: 218584 Date: 14-Feb-92 Fm: Charles Fleming 72431,1725 To: Lisa Slater 72077,2417 >L<, I agree that I could write a user proc to review the reset/setup codes. This would be better than Matt's idea of writing to file and editing the file before sending it to the printer, because it doesn't involve creating temporary files, opening and closing and copying and deleting () them. However, the problem with your solution (which I may implement on another project) is that it would increase the calls and processing in GENPD, which is slow already on the current client's system (diskless-286 network). The solution I am using is: a) define the labels as 8 lines, with 0 lines between (lying to the printer driver), and b) a FOR loop when I need more than 1 label of the same contents (IOW, I never do a LABEL FORM x NEXT (y > 1) ). This kludge does the trick with no apparent performance penalty even on the spineless machines involved. But thanks for offering a third solution. I'll keep it in mind (and my archives, which are probably safer ). Charles ******** THD07.DBF ******** Msg#: 262365 Date: 19-May-92 Fm: Martin Schiff [CONSULT] 76702,1355 To: David E Fritsche 72110,1372 (X) David, There's no such thing as printer independent when it comes to printing labels since laser printers are MUCH different at printing labels than dot matrix printers. The label layouts are not even similar. One reason the printer driver doesn't work is that it changes the line spacing to 7 lpi (or thereabouts) in order to print 66 lines per page on a laser printer. That plays havoc with the line spacing for laser labels (read it doesn't work). However, it does allow you to print reports on both printers without changing your report form. You could create a separate laser label printer driver if you want it to be a bit more independent, but you are still going to have to send a printer init string (could be in the printer driver) to print certain styles of labels on a laser printer. There is just no way around it. It really has nothing to do with and deficiency in the printer drivers, it's a problem with laser printers not being able to print starting right at the top of the page due to the gripper edge. -- Martin Msg#: 271045 Date: 08-Jun-92 Fm: david hunter 70740,3560 To: Jack Williamson 75030,1224 (X) I managed to get them to work - create a new pdsetup, select HP (60 lpp), set the top margin to 3. Make sure "PDSETUP" is in the LABEL statement. Also make sure your configuration uses the resourec file that includes the new pdsetup. The main thing is to use HP (60 lpp) - the other printer driver for HPs (I forget what it's called) actually prints at 7 lpi, instead of 6 lpi. I believe the 7 lpi setting is to fix some form feed quirk in the quick report writer. If you need more help, give me a holler. -hunt Msg#: 231633 Date: 12-Mar-92 Fm: Roger Bischoff [Fox] 76004,1651 To: John Fenton 75126,3640 (X) -John: The blank line is added to the beginning of the label form for compatibility reasons with other xBASE packages. We are looking to enhance this feature in future releases of the product. In the meantime, you can send the label to a text file and then use the Low Level File Functions to remove the c/r. The sample generator prints a sample of _one_ complete label record. This includes adding the c/r at the beginning of the job. Roger [Fox] Msg#: 231816 Date: 12-Mar-92 Fm: John Fenton 75126,3640 To: Roger Bischoff [Fox] 76004,1651 (X) I hope you do add a NOBLANK or whatever option, that would be greatly appreciated. It would also handle the problem with continuous runs not aligning. I concur that the blank at the beginning of the runs has always been there (It's why I posted to All instead of Sysop, I wanted extra feedback on that part). The alignment between runs problem I described is new to FoxPro. It wasn't a problem in FoxBase or that I can Recall in dBaseIII+. The difference here is the CR at the end of the run not the one at the beginning. With a CR at the start there should be no CR at the end. And with no CR at the beginning there should be one at the end. That way the number of lines is divisible by the length of the label. Currently there is one extra CR. Actually the extra blank line between samples only occurs when lines between is set to 0, any other value prints correctly. For example a 1 line label with 1 line between prints the extra line at the beginning and then each sample prints two lines as it should. However a 1 line label with 0 lines between prints the extra line at the beginning and then each sample prints two lines but the label is only 1 in height! Foxbase didn't do this only FoxPro. Thanks for the LowLevel IO idea I agree its the easiest handle, although it will add two blanks to the start of the first line I might be able to make that work. John Msg#: 258041 Date: 08-May-92 Fm: Roger Aylstock 70353,2203 To: Vince Kimball 71507,1177 Vince, What specific problems are you having with the margins? I am using the 5161 (1" x 4" x 2up) in my HP LJIIIp and the are working ok but I had to select as my printer driver to get the line count for the labels correct. If you have the FoxPro Threads database, there is much good discussion in it. You might try deselecting the printer driver. Rog Msg#: 272721 Date: 11-Jun-92 Fm: Mitchell Weinstein 75770,230 To: Richard Grossman @TK3 75300,1556 (X) Richard, Here's a way... In a program.... set talk off set status off set pdsetup to set print on *then send out printer codes ???chr(27)+"E"+CHR(27)+"&l66p12d7e6d60F"+CHR(27)+"&a-1R"+CHR(27)+"(s16 H" *then label form stickers noconsole to print ???chr(27) + "E" set print off close all In your label design make sure to set the parameters for the 5160's... Margin = 2 Width = 40 (you have room to play with this one) Number across = 3 Height = 5 Spaces between = 6 Lines between = 1 Good Luck! Mitch Msg#: 240232 Date: 30-Mar-92 Fm: Chris Pudlicki [Fox] 76702,1237 To: stan shaw 73747,3536 (X) -Stan The PREVIEW clause of the LABEL FORM command needs a FoxPro label file to work with. The DBase IV label is a program that FP compiles to a .L4X file that is run as a program. A program cannot be previewed. --Chris Msg#: 240206 Date: 30-Mar-92 Fm: Paul Marrero 75465,1600 To: Lisa Slater 72077,2417 (X) Thanks again for your help. As usual, you're correct. I am using a LaserJet II driver for our IIISi. What I did was created a LBX and printing it from within a program. I saved the printer driver with the label. Where I messed up was with the page length. I made the aadjustments and it worked fine. Since I had to hard code the commands to pull the labels from the lower tray, I took the printer driver off the labels and entered the commands into my procedure. The labels I am using are Dennison 8.5 X 11-inch, 3-across no. A5-37-521. Again. Thanks. Paul