User Tools

Site Tools


Sidebar


Introduction


Basic Tutorials


Advance Tutorials


Useful Techniques


Examples

  • Simple Pipe Weight Calculator
  • Unit Convertor

Sidebar

tutorial:printdatausinglazreport

This is an old revision of the document!


LazReport

เป็น Package ที่ใช้สำหรับดึงข้อมูลจาก ตัวแปร หรือจาก Database แล้วนำมาแสดงเป็นรูปแบบ Report ที่นำไป Print ได้ทันที

นอกจากนี้ ตัวเอกสารที่ได้นั้น สามารถจัดย่อหน้า จัดรูปแบบ ขนาดตัวอักษรได้ตามต้องการ จึงถือได้ว่ามีความสำคัญในการนำข้อมูลของโปรแกรมมานำเสนอเป็นเอกสาร


เริ่มต้นใช้งาน

ในหัวข้อนี้ จะแสดงตัวอย่างการใช้งาน LazReport เพื่อดึงข้อมูลทั้งที่เป็นตัวแปรเดี่ยว และแบบ Array

1. ก่อนใช้งาน ต้องทำการ Download ไฟล์ Package ของ LazReport มาติดตั้งเสียก่อน

2. สร้างโปรเจคที่เป็น Form-Based Application จากนั้นให้นำ Control 5 ตัวมาวางบน Form1 ดังนี้
2.1 Standrad Control ให้นำ Button1 Button2 มาวางบน Form1
2.2 LazReport Control ให้นำ frReport1, frUserDataset1 และ frDesigner1 มาวางบน Form1

3. สำหรับ Control แต่ละตัวนั้น ให้สร้าง procedure ดังนี้

Control Procedure Description
Form1 FormCreat() สร้าง Event ที่ทำงานเมื่อ Form1 ถูกสร้าง
Button1 Button1Click() สร้าง Event ที่ทำงานเมื่อ Button1 ถูก Click
Button2 Button2Click() สร้าง Event ที่ทำงานเมื่อ Button2 ถูก Click
frReport1 frReport1GetValue() สร้าง Event ที่ทำงานเพื่อรับข้อมูลไปแสดงใน Report
frUserDataset1 frUserDataset1CheckEOF() สร้าง Event ระบุเงื่อนใขในการหยุดการแสดงข้อมูลที่เป็น DataSet (ในที่นี้คือ ArrData[])
frUserDataset1First() สร้าง Event ที่ทำงานเมื่อ DataSet ถูกอ่านครั้งแรก
frUserDataset1Next() สร้าง Event ที่ทำงานเมื่อ DataSet ถูกอ่านครั้งถัดไป

    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);    
    procedure frReport1GetValue(const ParName: String; var ParValue: Variant);
    procedure frUserDataset1CheckEOF(Sender: TObject; var Eof: Boolean);
    procedure frUserDataset1First(Sender: TObject);
    procedure frUserDataset1Next(Sender: TObject);

หมายเหตุ - จะสังเกตว่าไม่มี Procedure เกี่ยวกับ frDesigner1 แต่ถึงกระนั้น frDesigner1 ก็ยังสำคัญเพราะหากเราไม่ใส่ Control ตัวนี้มาที่ Form1 เราจะไม่สามารถเรียกใช้งาน Procedure ที่ชื่อ frReport1.DesignReport() ซึ่มีไว้เปิด Report ในโหมด Design

4. สร้างตัวแปรดังนี้ - ตัวนับ index ของ Array ชื่อ “nc” ซึ่งเป็นตัวแปร integer - Array ขนาด 2 x 20 ชื่อว่า “ArrData[]” - ตัวปร integer ชื่อ “nc” สำหรับใช้ระบุ index ของ ArrData[]

var
  Form1: TForm1;
  MyHeader:string = 'INFORMATION';
  MyName:string = 'Lazarus-IDE';
  MyLanguage:string = 'Object Pascal';
  MyNumber:integer = 120;
  ArrData:array[1..2,1..7] of string;
  nc:integer = 1; 

5. ให้ click เลือก Control ชื่อ frReport1 จากนั้นกด Right-Click จะมีเมนูให้เลือก ให้กดเลือกคำว่า Design Report จากนั้นจะเกิดหน้าต่างแสดงหน้ากระดาษเปล่าขึ้นมา ซึ่งหน้ากระดาษดังกล่าว คือ Report ในโหมด Design นั่นเอง เราสามารถปรับแก้ สร้าง Template ได้โดยง่ายบนหน้าต่างนี้

จากนั้นให้ทำการ Save As .. ไฟล์ ชื่อ report1.lpr โดยไฟล์ดังกล่าวจะต้องอยู่ที่เดียวกันกับไฟล์ Project

ภาพประกอบข้อ 5

ภาพประกอบข้อ 5

6. พิมพ์คำสั่งเข้าไปใน Event ชื่อ FormCreate ดังนี้

procedure TForm1.FormCreate(Sender: TObject);
begin
  Button1.Caption:='Print Preview';
  Button2.Caption:='Edit Design Report';

  ArrData[1,1]:='TButton';
  ArrData[1,2]:='TStringgrid';
  ArrData[1,3]:='TToolBar';
  ArrData[1,4]:='TSaveDialog';
  ArrData[1,5]:='TSQLQuery';
  ArrData[1,6]:='TSpinEdit';
  ArrData[1,7]:='TfrReport';

  ArrData[2,1]:='Standard';
  ArrData[2,2]:='Additional';
  ArrData[2,3]:='Common Controls';
  ArrData[2,4]:='Dialogs';
  ArrData[2,5]:='SQLdb';
  ArrData[2,6]:='Misc';
  ArrData[2,7]:='LazReport';
end;

  1. สองบรรทัดแรก เป็นการเปลี่ยน Caption ของ Button1, Button2
  2. Button1 เราจะกำหนดให้ Button1Click แล้วเรียกหน้าต่าง PrintPreview ของไฟล์ report1.lrf ขึ้นมาโดยใช้คำสั่งดังนี้

procedure TForm1.Button1Click(Sender: TObject);
begin
  frReport1.LoadFromFile('report1.lrf');
  frReport1.ShowReport;
end; 

  1. Button2 เราจะกำหนดให้ Button2Click แล้วเรียกหน้าต่าง DesignReport ขึ้นมาเพื่อทำการแก้ใขไฟล์ report1.lrf โดยใช้คำสั่งดังนี้

procedure TForm1.Button2Click(Sender: TObject);
begin
  frReport1.LoadFromFile('report1.lrf');
  frReport1.DesignReport;
end;   

tutorial/printdatausinglazreport.1577632509.txt.gz · Last modified: 2019/12/29 22:15 by admin