الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تغيير قياسات التقرير برمجيا

مغلق
بدأه biskra في 22 أبريل 2004 · 3 رد · 1,921 مشاهدة · في قسم أرشيف التقارير والتقارير الفرعية
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

وجدت هذا الكود و الذي فهمته أنه باٍمكانه برمجة قياسات التقرير برمجيا, حاولت اٍستغلاله و فهمه لكن لم أتوصل الى نتيجة, و نظرا لاعتقادي أنه يحتوي على أكواد و معلومات مهمة أضعه في المنتدى ربما يدلنا أحدكم على كيفية الاٍستفادة منه.

Change report size programmatically.

Here is a list of the possible values you could pass it and what they represent:

1 Letter (8.5 x 11 in.)
2 Letter Small (8.5 x 11 in.)
3 Tabloid (11 x 17 in.)
4 Ledger (17 x 11 in.)
5 Legal (8.5 x 14 in.)
6 Statement (5.5 x 8.5 in.)
7 Executive (7.25 x 10.5 in.)
8 A3 (297 x 420 mm)
9 A4 (210 x 297 mm)
10 A4 Small (210 x 297 mm)
11 A5 (148 x 210 mm)
12 B4 (250 x 354)
13 B5 (182 x 257 mm)
14 Folio (8.5 x 13 in.)
15 Quarto (215 x 275 mm)
16 11 x 17 in.
18 Note (8.5 x 11 in.)
19 Envelope #9 (3.875 x 8.875 in.)
20 Envelope #10 (4.125 x 9.5 in.)
21 Envelope #11 (4.5 x 10.375 in.)
22 Envelope #12 (4.25 x 11 in.)
23 Envelope #14 (5 x 11.5 in.)
24 C size sheet
25 D size sheet
26 E size sheet
27 Envelope DL (110 x 220 mm)
28 Envelope C5 (162 x 229 mm)
29 Envelope C3 (324 x 458 mm)
30 Envelope C4 (229 x 324 mm)
31 Envelope C6 (114 x 162 mm)
32 Envelope C65 (114 x 229 mm)
33 Envelope B4 (250 x 353 mm)
34 Envelope B5 (176 x 250 mm)
35 Envelope B6 (176 x 125 mm)
36 Envelope (110 x 230 mm)
37 Envelope Monarch (3.875 x 7.5 in.)
38 6-3/4 Envelope (3.625 x 6.5 in.)
39 US Std Fanfold (14.875 x 11 in.)
40 German Std Fanfold (8.5 x 12 in.)
41 German Legal Fanfold (8.5 x 13 in.)
256 User-defined


Option Explicit

Const glrcDeviceNameLen = 32
Const glrcFormNameLen = 32
' This is an arbitrary value. Based on experience,
' it ought to be large enough.
Const glrcExtraSize = 1024
' Structure for prtDevMode
Type glr_tagDevMode
   strDeviceName(1 To glrcDeviceNameLen) As Byte
   intSpecVersion As Integer
   intDriverVersion As Integer
   intSize As Integer
   intDriverExtra As Integer
   lngFields As Long
   intOrientation As Integer
   intPaperSize As Integer
   intPaperLength As Integer
   intPaperWidth As Integer
   intScale As Integer
   intCopies As Integer
   intDefaultSource As Integer
   intPrintQuality As Integer
   intColor As Integer
   intDuplex As Integer
   intYResolution As Integer
   intTTOption As Integer
   intCollate As Integer
   strFormName(1 To glrcFormNameLen) As Byte
   intLogPixels As Integer
   lngBitsPerPixel As Long
   lngPelsWidth As Long
   lngPelsHeight As Long
   lngDisplayFlags As Long
   lngDisplayFrequency As Long
   lngICMMethod As Long
   lngICMIntent As Long
   lngMediaType As Long
   lngDitherType As Long
   lngICCManufacturer As Long
   lngICCModel As Long
   bytDriverExtra(1 To glrcExtraSize) As Byte
End Type
' Structure for prtDevNames
Type glr_tagDevNames
   intDriverPos As Integer
   intDevicePos As Integer
   intOutputPos As Integer
   intDefault As Integer
End Type
' Structure for prtMip
Type glr_tagMarginInfo
   lngLeft As Long
   lngTop As Long
   lngRight As Long
   lngBottom As Long
   lngDataOnly As Long
   lngWidth As Long
   lngHeight As Long
   lngDefaultSize As Long
   lngItemsAcross As Long
   lngColumnSpacing As Long
   lngRowSpacing As Long
   lngItemLayout As Long
   lngFastPrinting As Long
   lngDataSheet As Long
End Type

Public Sub SetReportSize(ByRef ReportToEdit As Report, ByVal NewWidth As Integer, ByVal NewLength As Integer)

   Dim dm As glr_tagDevMode
   Dim dmStr As glr_tagDevModeStr
   dmStr.strDevMode = ReportToEdit.PrtDevMode
   LSet dm = dmStr
   dm.intPaperSize = 256 'could also be 0
   dm.intPaperLength = NewLength
   dm.intPaperWidth = NewWidth
   dm.lngFields = dm.lngFields Or glrcDMPaperSize Or glrcDMPaperLength Or glrcDMPaperWidth
   LSet dmStr = dm
   ReportToEdit.PrtDevMode = dmStr.strDevMode
   Set ReportToEdit = Nothing
End Sub
#2

هناك مشكلة في أحد مكتبات الربط DLL لدي .

والكود عموما أتوقع أنه يحتاج اليه الكثير خصوصا من يعاني مشكلة اوفيس 2000 واكس بي .

لقد وضعت الكود في مودول . وقمت بتمرير اسم التقرير والابعاد المطلوبة . وهو لايعمل إلا اذا كان التقرير مفتوحا . وهي ميزة رائعة لضمان الطباعة الصحيحة .

أتمنى أن تكتب الموقع لهذا الكود كي أعرف المزيد . وشكرا لك .

#3

أخي فانكشن الكود يظهر أنه في غاية الأهمية خاصة أنه يتضمن جميع القياسات العالمية المعروفة و ما فهمته يكفي أنك تختار القياس حسب الجدول المذكور في بداية الكود لتتخلص نهائيا من تنسيقات التقرير و ما يترتب عنها من مشاكل الطباعة, لذا أدعو الاٍخوة محاولة دراسته و لنتعاون على الآستغلاله.

بالنسبة للموقع فلا يوجد أي تعليق على هذا الكود فهو موجود كما هو .

http://www.cybersouk.com/article14.html

#4

thanks alot

هذا الموضوع مغلق.

مواضيع مشابهة