Ruang Komputer, Rumah Sakit Pengobatan Tradisional Tiongkok Wuxi, Provinsi Jiangsu
Yuan Bo
---- Sistem manajemen informasi rumah sakit kami menggunakan pemrograman Delphi karena persyaratan setiap mata pelajaran berbeda dan bentuk laporannya juga beragam, sehingga memusingkan untuk menulis. Delphi berjalan di bawah platform WINDOWS, dan pencetakannya benar-benar berbeda dari DOS. Quick Report sulit dikendalikan dan memakan sumber daya untuk laporan yang sedikit rumit dengan persyaratan khusus, Quick Report tidak dapat direalisasikan. Berikut adalah beberapa metode implementasi untuk laporan umum yang ditemui dalam pemrograman.
---- 1. Departemen keuangan di unit mana pun memiliki beberapa buku besar yang tebal. Departemen keuangan rumah sakit kami mengusulkan untuk mencetak buku besar gudang obat untuk menghilangkan buku besar manual Kantor.Permintaan itu wajar, dekan Dikatakan juga seharusnya demikian. Melihat kartu kecil berwarna merah dan hijau yang disediakan oleh Departemen Keuangan, dicetak seragam, dan dengan jarak baris 3 mm, mau tak mau saya memikirkan manfaat berhemat dari masyarakat Tiongkok. Mengingat setiap obat harus dicetak minimal satu kali, dan tidak ada satu baris pun tabel yang hilang. Selain itu, terdapat lebih dari 2.000 jenis obat di rumah sakit pengobatan tradisional Tiongkok, sehingga laporan ini harus dicetak dengan printer laser (sebagai). untuk bagaimana agar dekan menyetujui pembelian printer laser, lalu lain lagi bagaimana caranya agar otomatisasi kantor dapat dilakukan tanpa biaya?) Ide penerapan program ini pada dasarnya adalah menggunakan kertas cetak sebagai kanvas untuk menggambar persegi panjang kecil di atasnya, yang secara khusus diimplementasikan melalui proses berikut: (Biarlah Formulir diberi nama Ttzview).
Pertama tentukan dua kelas dalam program:
titlerecord=catatan
Sekarang: Benar;
Judul:string;
akhir;
catatan detail=catatan
Tepat: Benar;
penyelarasan: Kata;
akhir;
---- Tetapkan empat proses berikut;
---- RectDraw(Acanvas:Tcanvas;s:string;R:Trect;frame:boolean;position:word);
---- Proses ini digunakan untuk menggambar persegi panjang, dan bingkai menentukan apakah akan menggambar garis (tentu saja harus digambar di sini!);
----PRintinit(firsttop,firstleft:integer);
---- Proses ini digunakan untuk inisialisasi, yaitu menentukan posisi setiap persegi panjang kecil di atas kertas;
---- printtitle(acanvas:Tcanvas);
----Proses ini untuk mencetak header, karena karakter pada header selalu lebih besar;
---- printdetail(acanvas:Tcanvas;Qtz:Tdataset;acount:integer;firstpage:integer);
---- Proses ini untuk mencetak konten tertentu. Satu halaman mencetak 40 baris. Jika tidak cukup, ganti halaman. Singkatnya, satu halaman hanya bisa menjadi satu obat;
---- printhj(acanvas:Tcanvas);
---- Sekilas Anda dapat mengetahui bahwa proses ini adalah mencetak total!
---- Cukup buat Botton dan panggil empat proses printinitit, printtitle, printdetail, dan printhj secara berurutan.
---- (Format panggilan: printtitle(printer.canvas);)
---- Omong-omong, Qtz adalah data buku besar yang ditanyakan. Cara menghasilkannya tidak akan dibahas di sini.
---- Prosedur spesifiknya adalah sebagai berikut
---- Program ini berjalan di bawah platform delphi1, delphi3 versi WIN3.2, WIN95, WIN97, dan WIN98, ini menyediakan struktur perpustakaan dari database buku besar.
---- 2. Laporan yang sangat rumit dan tidak dapat dipahami
---- Departemen Onkologi rumah sakit kita perlu mencetak rekam medis pasien. Ini bagian dari modernisasi spesialisasi. Biro Kesehatan akan datang untuk memeriksa, jadi tugas itu harus diselesaikan. Setiap rekam medis memiliki lebih dari 100 item. Jika menggunakan Qreport, jika perlu menambah atau mengurangi item di tengah (hal ini sering terjadi), penyesuaian dan penataan puluhan item akan membuat orang pingsan. Saya membuat lebih dari 100 variabel sementara sekaligus dan menggambar di kanvas virtual. Itu berjalan lancar di mesin PII233 saya dengan memori 64M, tetapi ketika saya beralih ke mesin departemen onkologi dengan memori 486,8M (Jangan tertawa, semuanya), the system stack akan langsung overflow, jadi saya harus menggunakan metode pointer (level pemrograman saya sepertinya sudah membaik lagi, diam-diam senang), caranya adalah sebagai berikut:
Pertama buat kelas titleprint:
titleprint=^Catatan Judul;
titlerecord=catatan
Sekarang: Benar;
Judul:string[50];
akhir;
Kemudian buat proses printnow (nama Formnya adalah
zlk, printdot adalah titik-titik pada printer, umumnya 180);
prosedur Tzlk.printnow(acanvas:Tcanvas);
var i,x,y,pc_count:integer;
myprint:array[0..200] dari titleprint;
mulai
firsttop:=bulat(int(0.5/2.54*printdot));
kiri pertama:=bulat(int(0.1/2.54*printdot));
tinggi baris:=bulat(int(0.7/2.54*printdot));
x:=0+kiri pertama;y:=bulat(int
(1.3/2.54*printdot))+firsttop;
jumlah_pc:=0;
inc(jumlah_pc); baru(cetakan saya[jumlah_pc]);
myprint[pc_count]^.currect:=rect
(x+bulat(int(0.1/2.54*printdot))+kiri pertama,y,
x+bulat(int(3.0/2.54*printdot))+kiri pertama,
y+puncak pertama+putaran(int(0,5/2,54*titik cetak)));
myprint[pc_count]^.atitle:=Lname.
keterangan+nama DB.teks;
ACanvas.MoveTo(myprint[pc_count]^.
sekarang.kiri,
myprint[pc_count]^.currect.top-round
(tinggi baris/5));
{Empat baris berikut akan diulang lebih dari 100 kali, yang pada dasarnya sama.
Saya tidak menulis semuanya untuk mendapatkan royalti}
inc(jumlah_pc); baru(cetakan saya[jumlah_pc]);
myprint[pc_count]^.currect:=scalerect(
myprint[pc_count-1]^.saat ini,bulat(int
(2,5/2,54*titik cetak)),0);
myprint[pc_count]^.atitle:=Lxb.caption+Cxb.text;
ACanvas.LineTo(myprint[i]^.currect.right,
myprint[i]^.currect.top-round(tinggi baris/5));
.......
{Mencetak}
judul cetak(kanvas);
{Fungsi ini tidak akan disediakan, tidak masalah jika Anda tidak memerlukan headernya}
untuk i:=1 hingga pc_count lakukan
mulai
RectDraw(Acanvas,myprint[i]^.atitle,
myprint[i]^.saat ini,salah,
dt_left atau dt_singleline atau dt_vcenter);
akhir;
buang(cetakanku[pc_count]);
{Jangan lupa melepaskan memori yang ditempati oleh pointer}
akhir;
---- Terakhir, buat Botton, tambahkan penilaian apakah itu benar-benar dicetak, lalu panggil fungsi-fungsi ini.
---- (Format panggilan: printtitle(printer.canvas);)
---- Setelah membaca dua contoh di atas, menurut Anda apakah mencetak di bawah WINDOWS sebenarnya sangat sederhana, seperti menggambar tabel dengan tangan, dan posisi isi tabel di tengah, kiri, atau kanan tergantung sepenuhnya pada Penjajaran konten cetakan. Format pencetakan ditentukan oleh Format Tampilan konten. Anda tidak perlu menghitungnya sendiri, dan ini sangat memudahkan.