Cosmin,

Very helpful, thanks so much for your efforts to assist.

The items being printed are actually a list of fields from a dataset that
can be selected by the user to export data out of the system.  Therefore the
items we allow the user to export seemed to be growing all the time.

Thanks again,

Mike

----- Original Message ----- 
From: "Cosmin Prund" <[EMAIL PROTECTED]>
To: "'Delphi-Talk Discussion List'" <[email protected]>
Sent: Tuesday, December 13, 2005 4:48 AM
Subject: RE: Printing Items in a TCheckListBox


> As long as you're "printing" the Delphi way, you'll be using a TCanvas
> rather you're printing on a real printer OR onto a bitmap; As a matter of
> fact, there's NO difference betwen drawing on a bitmap or printing to a
> printer.
>
> On a form put 2 buttons and a CheckListBox; Button1 will be labeld "Print
on
> bitmap" while Button2 will be called "Print on printer"; You'll also need
to
> add a "DoPrint" procedure that takes one TCanvas parameter; This routine
> will be used to "print" the CheckListBox on the printer OR on the bitmap!
> You may use this routine and experiment a bit
>
> P.S: Are you sure a CheckListBox with 100 items is a good option?
>
> <code>
> procedure TForm1.FormCreate(Sender: TObject);
> var i:Integer;
> begin
>   Randomize;
>   for i:=1 to 30 do
>   begin
>     CheckListBox1.Items.Add('Line no #' + IntToStr(i));
>     CheckListBox1.Checked[i-1] := (Random(5) mod 2) = 0;
>   end;
> end;
>
> procedure TForm1.Button1Click(Sender: TObject);
> var B:TBitmap;
> begin
>   B := TBitmap.Create;
>   try
>     B.Height := 100;
>     B.Width := 100;
>     DoPrint(B.Canvas);
>     B.SaveToFile('C:\Temp\Test.bmp');
>   finally B.Free;
>   end;
> end;
>
> procedure TForm1.DoPrint(C: TCanvas);
> var i:Integer;
>     s:string;
>     c_top:integer;
>     text_h:Integer;
> begin
>   c_top := 0;
>
>   // Basic font options
>   C.Font.Name := 'Arial';
>   C.Font.Size := 10;
>
>   // Pen options (for checkboxes)
>   C.Pen.Width := 1;
>   C.Pen.Color := clBlack;
>   C.Pen.Style := psSolid;
>
>   for i:=0 to CheckListBox1.Items.Count-1 do
>   begin
>     if CheckListBox1.Checked[i] then
>       begin
>         // Prepare printing for a "checked" item
>         C.Font.Style := [fsBold];
>         C.Font.Color := clRed;
>       end
>     else
>       begin
>         // Prepare printing for a "unchecked" item
>         C.Font.Style := [];
>         C.Font.Color := clNavy;
>       end;
>     // Calculate the height for our next line of text
>     text_h := C.TextHeight(s);
>     // Draw a "checkbox"
>     C.Rectangle(2, c_top, text_h-4, c_top + text_h-4);
>     if CheckListBox1.Checked[i] then
>     begin
>       C.MoveTo(4, c_top+4);
>       C.LineTo(text_h-8, c_top + text_h-8);
>       C.MoveTo(text_h-8, c_top+4);
>       C.LineTo(4, c_top + text_h -8);
>     end;
>     // Draw the text
>     s := CheckListBox1.Items[i];
>     C.TextOut(text_h, c_top, s);
>     c_top := c_top + text_h; // Advance to next line
>   end;
> end;
>
> procedure TForm1.Button2Click(Sender: TObject);
> begin
>   Printer.BeginDoc;
>   try
>     DoPrint(Printer.Canvas);
>   finally Printer.EndDoc;
>   end;
> end;
> </code>
>
> > -----Original Message-----
> > From: [EMAIL PROTECTED] [mailto:delphi-talk-
> > [EMAIL PROTECTED] On Behalf Of M Tuttle
> > Sent: Tuesday, December 13, 2005 8:12 AM
> > To: Delphi-Talk Discussion List
> > Subject: Re: Printing Items in a TCheckListBox
> >
> > Hi Stephen,
> >
> > The CheckListBox may contain several hundred items.  Therefore printing
a
> > canvas is not what I want to do.  I would much rather iterate thought
the
> > list and print a small bitmap representing a checked or unchecked check
> > box
> > followed by the text of the TCheckListBox item.  Any examples of how I
> > could
> > to do that?
> >
> > Mike
> >
> > ----- Original Message -----
> > From: "Stephen Posey" <[EMAIL PROTECTED]>
> > To: "Delphi-Talk Discussion List" <[email protected]>
> > Sent: Monday, December 12, 2005 3:28 PM
> > Subject: Re: Printing Items in a TCheckListBox
> >
> >
> > > M Tuttle (KS) wrote:
> > >
> > > > Greetings All,
> > > >
> > > > Doe anyone have any code snippet they could share that would allow
me
> > to
> > > > print all items in a TCheckListBox and maybe show a difference
between
> > the
> > > > items that are checked in the list versus those that are not
checked.
> > Maybe
> > > > bold type for selected?  Any ideas at all would be appreciated.
> > >
> > > Probably the simplest thing to do is copy the TCheckListBox's
> > > canvas to the printer canvas or a bitmap's canvas as part of
> > > setting up your printout.
> > >
> > > E.g.:
> > >
> > >    Printer.Canvas.CopyRect( Rect(0, 0, 1500, 1500),
> > >      CheckListBox1.Canvas,
> > >      Rect( 0, 0, CheckListBox1.Width, CheckListbox1.Height ));
> > >
> > > If you need to have the text match up with other text in the
> > > printout, you'll need to iterate the CheckListbox and build your
> > > text based on its contents before adding it to the printout using
> > > DrawText or whatever.
> > >
> > > If you can give a little more background on how you're setting up
> > > the printing, I can probably be more precise.
> > >
> > > HTH
> > >
> > > Stephen Posey
> > > [EMAIL PROTECTED]
> > >
> > > __________________________________________________
> > > Delphi-Talk mailing list -> [email protected]
> > > http://www.elists.org/mailman/listinfo/delphi-talk
> > >
> >
> >
> > __________________________________________________
> > Delphi-Talk mailing list -> [email protected]
> > http://www.elists.org/mailman/listinfo/delphi-talk
>
> __________________________________________________
> Delphi-Talk mailing list -> [email protected]
> http://www.elists.org/mailman/listinfo/delphi-talk
>


__________________________________________________
Delphi-Talk mailing list -> [email protected]
http://www.elists.org/mailman/listinfo/delphi-talk

Reply via email to