Saya aga kesulitan membuat judul yang tepat. Semoga uraian yang saya berikan tidak terlalu jauh meleset dari judul tersebut.
Bermula dari keinginan saya mencetak dokumen dalam bentuk buku atau booklet (bolak balik). Sebenarnya fasilitas pencetakan buku ini sudah ada pada beberapa produk printer. Akan tetapi, karena tidak semua printer bisa mencetak langsung dalam bentuk buku (contohnya Booklet Printing miliknya Cannon), maka saya berinisiatif membuat aplikasi yang bisa menghitung atau menentukan halaman ke-berapa yang di cetak. Nah dengan aplikasi ini diharapkan kita bisa mencetak bentuk buku dengan mudah.
Ide dasarnya sederhana. Sebagai contoh, kita buat saja buku yang berukuran setengah kertas A4. Sebagai percobaan, ambil saja dua lembar dulu. Nanti dari sini kan kita dapet 8 halaman. Nah, kita beri nomor halaman saja dari 1 sampai dengan 8. Sekarang coba kita ambil lembaran-lembaran kertas tersebut. Nanti di peroleh pasangan halaman pada sisi yang sama yaitu : 8, 1, 6, 3 dan pada sisi yang lain adalah halaman 2, 7, 4, 5.
Sekarang, ternyata listing-nya. Langsung saja ya?
procedure TForm1.Button1Click(Sender: TObject);
var
page,
hal11,
hal12,
hal21,
hal22,
i,
add,
start : integer;
str1,
str2,
str3 : string;
begin
str1 := emptyStr;
str2 := emptyStr;
page := 0;
start := SpinEdit1.Value;
try
page := StrToInt(Edit1.Text);
except
on EConvertError do
ShowMessage('Anda salah memasukkan jumlah halaman. Harus bilangan bulat!!');
end;
if page=0 then
ActiveControl := Edit1
else begin
add := 0;
str3 := emptyStr;
if page mod 4 <> 0 then repeat
add := add + 1;
page := page + 1;
Str3 := Str3 + IntToStr(page+Start-1) + ', ';
until page mod 4 = 0;
hal11 := page;
hal21 := 2;
hal12 := 1;
hal22 := page - 1;
hal11 := hal11 + Start - 1;
hal21 := hal21 + Start - 1;
hal12 := hal12 + Start - 1;
hal22 := hal22 + Start - 1;
for i := 1 to (page div 4) do begin
Str1 := Str1 + IntToStr(hal11);
Str1 := Str1 + ', '+IntToStr(hal12) + ', ';
hal11 := hal11 - 2;
hal12 := hal12 + 2;
Str2 := Str2 + IntToStr(hal21);
Str2 := Str2 + ', '+IntToStr(hal22) + ', ';
hal21 := hal21 + 2;
hal22 := hal22 - 2;
end;
Edit2.Text := Copy(Str1,1,length(Str1)-2);
Edit3.Text := Copy(Str2,1,length(Str2)-2);
Label5.Caption := IntToStr(add)+' halaman';
Edit4.Text := Copy(Str3,1,length(Str3)-2);
ActiveControl := Edit1;
end;
end;
Untuk screenshoot-nya seperti ini:
Semoga bermanfaat






wah bagaimana cara make-nya nih, pak?