صفحه 1 از 2 12 آخرآخر
نمایش نتایج 1 تا 40 از 71

نام تاپیک: چاپ ابعاد غیرمعمول

  1. #1
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305

    چاپ ابعاد غیرمعمول

    با توجه به راهنماییهای دوستان بالاخص آقا کیا به این نتیجه رسیدیم که وقتی قراره ابعاد دلخواهی رو در کاغذ گزارش پیاده کنیم باید به این نکته توجه داشته باشیم که چاپگری که نصب شده آیا توانایی ساپورت آن ابعاد را داره یا خیر؟
    مثلا با hp 1200 که فقط a4 لیزری می زنه نمی شه کاغذ a3 پرینت گرفت. پس نمی شه در گزارش ابعاد کاغذ و بیشتر از a4 تعریف کرد.
    این تا اینجا نتیجه بحث هایی که اینجا شد.
    حالا یه چاپگری مثل lq300 نصب کردم تا برنامه بتونه چیزی مثل قبض تلفن چاپ کنه اما مشکل اینه که وقتی چاپ تموم می شه کل رول را می خواد اجکت کنه و چون به آخر کاغذ نمی رسه تا اخر رول رو می گرده.
    از پارامتر noeject و حتی nopageeject هم استفاده کردم اما نشد می خوام وقتی قبض چاپ شد و قبض و بریدیم دیگه بره سر جای اولش .
    راهنماییم کنید با تشکر

  2. #2

    با سلام خدمت استاد خودم

    تا اونجایی که من توی داس کار میکردم ، با کدهای پرینتر (کد اسکیپ) ، پرینتر رو تنظیم می کردم

    که کاغذ رو چقدر اجکت بده ، یعنی به اندازه طول کاغذ ، حالا نمیدونم توی ویندوز هم باید از

    کدهای اسکیپ استفاده کرد یا اینکه راه حل دیگه ای داره !

  3. #3
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305
    سلام عبدالرضا جان
    ممنون از جوابت ولی فکر کنم راه دیگه ای هم داشته باشه
    منتظر جواب دوستان هستم

  4. #4

  5. #5
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305
    مرسی رضا جان
    متاسفانه لینک بالا باز نشد . اگر اطلاعاتی در این زمینه داری اگه میشه همینجا توضیح بده که بقیه بچه ها هم استفاده کنند.
    در ضمن این مسئله خیلی برام حیاتیه از بچه های دیگه هم کمکی از دستشون بر میاد کوتاهی نکنند
    در هفته دوبار خوردن ماهی برای سلامتی مفیده .

  6. #6
    کاربر دائمی آواتار pooyeshpajooh
    تاریخ عضویت
    دی 1384
    محل زندگی
    iran kashuuuuuuun
    پست
    119
    در چاپگر LQ 300 باید کلید LOAD EJECT (درست یادم نیست شایدم کلید LF) را نگه داری وچاپگر را روشن کنی
    دستگاه شروع به چاپ SETUP چاپگر می کند حال با جواب دادن به سوالات چاپگر با استفاده از کلیدها وتنظیم چراغها سایز کاغذ را با توجه به جدول چاپ شده انتخاب کنید

  7. #7
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305
    ممنون . حالا برم تست کنم ببینم چی می شه

  8. #8
    اینو برای یه دوست پاکستانی توضیح داده بودم

    1 - بعد از طراحی گزارش باید یه تغییراتی در اون بدید. به شکل زیر :


    USE MyReport.frx
    BROWSE

    برای اولین رکورد باید مقدار tag و tag2 خالی شود

    REPLACE tag WITH "", tag2 WITH ""


    در همان رکورد اول مقادیر فیلد EXPR را مانند زیر تغییر دهید:
    در واقع با این کار شما درایور معرفی شده را حذف میکنید تا بر روی چاپگر های مختلف مشکلی نداشته باشید :

    DRIVER=
    DEVICE=
    OUTPUT=
    ORIENTATION=0
    PAPERSIZE=256
    PAPERLENGTH=1380
    PAPERWIDTH=2200
    DEFAULTSOURCE=8
    PRINTQUALITY=180
    COLOR=2
    YRESOLUTION=180
    TTOPTION=1


    PAPERLENGTH و PAPERWIDTH در واقع همان طول و عرض گزارش شما یا قبض شما هست که به میلیمتر باید باشد
    PRINTQUALITY=180 و YRESOLUTION=180 هم رزولوشن چاپ است که این بهترین مقدار است. یعنی سرعت مناسب و کیفیت معمولی. اگر 360 انتخاب کنید کیفیت عالی و سرعت افتضاح را خواهید داشت.
    PAPERSIZE=256 یعنی کاغذ با اندازه تعریف شده (Custom)
    DEFAULTSOURCE=8 یعنی کاغذ شما رول است


    حالا گزارش را با دستور use ببندید


    حالا باید کاغذ مورد نظر را در قسمت تعریف چاپگر هم معرفی کنیم
    در ویندوز XP:
    به قسمت Printers& Faxes بروید و از منوی File گزینه server properties را انتخاب کنید. در تب Forms روی دکمه CREATE A NEW FORM کلیک کنید . در مقابل Form Name عبارت User Defined Paper را بنویسید و سپس طول و عرض کاغذ یا قبض خود را وارد کنید و دکمه SAVE FORM را بزنید.
    یاور استاد شد!

    برای ویندوز 98
    به کنترل پنل رفته ، پرینتر را انتخاب کنید، روی پرینتر مورد نظر کلیک راست کنیدو گزینه properties را انتخاب کنید. در تب Paper روی گزینه Custom ( آخرین گزینه یا نوع کاغذ ) کلیک کنید. در پنجره باز شده اندازه کاغذ را باز هم به میلیمتر وارد کرده و تایید کنید.
    در پنجره کنونی برای گزینه Paper Source ، TRACTOR را انتخاب کنیدو تایید کنید.
    اینهم تمام

    تازه دردسر اصلی شروع میشود و آنهم تنظیم چاپگر.
    پرینتر را خاموش کنید. دکمه فونت را گرفته و پرینتر را روشن کنید. پرینتر شروع به چاپ تنظیمات خود میکند. یکی از این تنظیمات Auto Tear Off است که در حالت معمولی مقدار آن OFF است و شما باید آنرا ON کنید. با دنبال کردن منوها ی چاپ شده این کار قابل انجام است. این همان چیزی است که باعث میشود کاغذ بعد از چاپ یک قبض به عقب برگردد و قبض بعدی را چاپ کند.

    این آموزش حاصل چندین ماه وبگردی ، سئوال از خارجیهایی که اصلا از اینکه من ( یا بهتر بگویم کاربران من ) با چاپگر سوزنی کار میکنم میخندیدند و در نهایت استفاده از یک سایت چینی و هندی بود.
    امیدوارم مفید واقع شود.
    در آخر یک فرم که برای انجام سریعتر تنظیمات فوق الذکر بر روی گزارشات تهیه کرده ام را تقدیم میکنم.
    فایل های ضمیمه فایل های ضمیمه

  9. #9

    Wink

    نقل قول نوشته شده توسط mehran_337 مشاهده تاپیک
    حالا یه چاپگری مثل lq300 نصب کردم تا برنامه بتونه چیزی مثل قبض تلفن چاپ کنه اما مشکل اینه که وقتی چاپ تموم می شه کل رول را می خواد اجکت کنه و چون به آخر کاغذ نمی رسه تا اخر رول رو می گرده.
    از پارامتر noeject و حتی nopageeject هم استفاده کردم اما نشد می خوام وقتی قبض چاپ شد و قبض و بریدیم دیگه بره سر جای اولش .
    راهنماییم کنید با تشکر
    سال 1376 یک برنامه فروش برای کتاب فروشی های آستان قدس نوشتم و البته الان source‌ دم دستم نیست ولی فکر کنم برای اینکار از دستورات زیر استفاده کردم شما امتحان کنید اگر مشکل حل نشد source را نگاه میکنم چاپگر آنها هم lq300 بود

    prow(),0 say chr(27)+"J" @
    یا

    chr(27)+"J" ???

    هر chr(27)+"J" ??? یک خط برمیگردد هر چقدر میخواهی دستور را وارد کن و کاغذ بیشتر برمیگردد

    for i = 1 to 10
    chr(27)+"J"???
    endfor

    البته برای اطمینان از دستور و عدم گمراه کردن شما به user Manual epson هم نگاهی انداختم ظاهرا دستور درست است .
    البته من lq300 ندارم تست کنم
    موفق باشی

  10. #10
    http://www.atariarchives.org/epson/appendix_b.php
    برای اطمینان به این سایت هم سری بزنید
    البته برای dos که مشکلی نیست ولی برای ویندوز هم در ابتدای گزارش میتونی یک label انتخاب و دستورات بالا را وارد کنی فکر نمی کنم مشکل داشته باشد .

  11. #11
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305
    من واقعا از همه بچه ها متشکرم .
    رضا میم خیلی مطالب جالبی فرستادند که برای من تازگی داشت . باید تست کنم و حتما جواب می دم.
    اما وقتی با آقای حیدری کیا صحبت می کردم ایشان فرمودند که تا حالا چندین مورد این برنامه ها ساختند و جز تعریف ابعاد جدید در کنترل پنل کار دیگری نکردند و ویندوز موقع چاپ خودش ابن کار ها را اتومات انجام می دهد . به همین خاطر این موارد برایم عجیب بود.

    تازه دردسر اصلی شروع میشود و آنهم تنظیم چاپگر.
    پرینتر را خاموش کنید. دکمه فونت را گرفته و پرینتر را روشن کنید. پرینتر شروع به چاپ تنظیمات خود میکند. یکی از این تنظیمات Auto Tear Off است که در حالت معمولی مقدار آن OFF است و شما باید آنرا ON کنید. این همان چیزی است که باعث میشود کاغذ بعد از چاپ یک قبض به عقب برگردد و قبض بعدی را چاپ کند.
    یعنی هرباری که پرینتر را می خواهیم استفاده کنیم باید اینکار را بکنیم ؟؟؟؟؟
    شما در نظر بگیر من این برنامه را پکیج می کنم و می فرستم برای شهر دیگر . آیا باید به اینصورت پرینتر را روشن کنند .؟؟ این قسمت را بیشتر توضیح دهید
    سال 1376 یک برنامه فروش برای کتاب فروشی های آستان قدس نوشتم و البته الان source‌ دم دستم نیست ولی فکر کنم برای اینکار از دستورات زیر استفاده کردم شما امتحان کنید اگر مشکل حل نشد source را نگاه میکنم چاپگر آنها هم lq300 بود
    فکر کنم این دستورات در محیط داس جوابگو باشد . نظر شما چیه؟؟!

  12. #12
    نقل قول نوشته شده توسط mehran_337 مشاهده تاپیک
    یعنی هرباری که پرینتر را می خواهیم استفاده کنیم باید اینکار را بکنیم ؟؟؟؟؟
    شما در نظر بگیر من این برنامه را پکیج می کنم و می فرستم برای شهر دیگر . آیا باید به اینصورت پرینتر را روشن کنند .؟؟ این قسمت را بیشتر توضیح دهید
    وقتی شما کسی را شهر دیگر پیدا کردید که تنظیمات درون کنترل پنل را انجام دهد، تنظیم پرینتر را هم انجام میدهد!
    ولی این کار ( تنظیم پرینتر ) فقط یکبار انجام میشود. ولی اگر چاپگر به تعمیرگاه برود و آنها دوباره آنرا به تنظیمات اولیه برگردانند ، متاسفانه باز اینکار باید انجام شود.
    من اینکار را برای نرم افزار صدور قبض باسکول و نرم افزار تخلیه بار انجام داده ام و بسیار عالی جواب میدهد. اگر دوستان راه ساده تری میدانند ، ما را هم بی نصیب نگذارند ، علی الخصوص جناب کیا

    یه فرم هم به پست قبلی اضافه کردم. دوست داشتید استفاده کنید

  13. #13
    سلام
    شاید این موضوع بی مورد باشد ولی گفتم شاید بدرد دوستان بخورد ادرس ذیل مربوط به نرم افزاریست که مدعی است که با استفاده از آن در مصرف استفاده از جوهر پرینتر صرفه جویی 75 درصدی می شود
    http://www.p30world.com/archives/006238.php#more
    عذر میخوام اگر بی دلیل بود

  14. #14
    شما در ویندوز میتونید کاغذ تعریف کنید . در این صورت دیگه مشگلی نیست بعد از هر چاپ مثل اینکه کاغد A4 رو میده بیرون اون رو میده بیرون . نیازی هم به تغییر در پرینتر و اینها نیست . توی داس هم که اصلا مشکلی نیست مخصوصا اگر کاغذ رول باشه من در 3 ثانیه حلش میکنم اگر خواستی بگو برات بفرستم من با این تا حالا دفترچه قسط - رمز کارت سیباب برای بانکها روی کاغذ رول (همون کارت 2 لایه ) و .... درست کردم

  15. #15
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305
    سلام
    از عنایت همه دوستان ممنونم.
    اما واقعیتش Tear Off نمی دونم چطوری باید عوض بشه . قاعدتا باید با دکمه Font روی پرینتر تبدیل به ON بشه ام متاسفانه هر کاری که می کنم با زدن دکمه فونت تغییری در چراغهای سبز داده نمی شه با توجه به اینکه چاپگر تازه از جعبه باز شده ممکنه خرابیه؟؟؟
    یادمه در 2170 با دکمه فونت خیلی از حالات را تغییر می دادیم
    به هر حال مشکل من ابعاد نیست مشکل من اینه که وقتی ابعاد می دم بعد از چاپ باید بایسته تا من کاغذ رول را ببرم اما تا انتهای رول اجکت می شه.
    اگر خواستی بگو برات بفرستم
    با اینکه نمی دونم چیو می خوای بفرستی اما اگه کدی هست که در ویندوز باعث جلوگیری از اجکت می شه برام بفرست ممنون می شم . mehran_337@yahoo.com

  16. #16
    وقتی که چاپگر خاموش است دکمه فونت را میگیرید و بعد پرینتر را روشن میکنید، البته قبلا کاغذ رول را درون چاپگر بگذارید. فکر کنم حدود دو متر مصرف میشود. وقتی پرینتر روشن شد شروع میکند به چاپ تنظیمات . اول از همه جدول انتخاب زبان است. که لازم نیست آنرا تغییر دهید و بعد با انتخاب یک دکمه ( یادم نیست دقیقا شاید LF/FF ) به منوی بعد میروید که کلیه تنظیمات را نوشته است و خواهید دید که مقابل TEAR OFF نوشته است OFF . بعد گزینه ای را انتخاب میکنید که نوشته شده برای تغییر تنظیمات. و طبق نوشته ها دکمه ها را فشار میدهید تا چراغها همان شود که برای ON شدن لازم است.

    دوستان دیگر هم اگر راه حل راحتتری دارند هینجا عنوان کنند تا همه استفاده کنند.

  17. #17
    نقل قول نوشته شده توسط عفت بزرگه مشاهده تاپیک
    شما در ویندوز میتونید کاغذ تعریف کنید . در این صورت دیگه مشگلی نیست بعد از هر چاپ مثل اینکه کاغد A4 رو میده بیرون اون رو میده بیرون .
    مشکل اینه که اونو نده بیرون !
    نقل قول نوشته شده توسط عفت بزرگه مشاهده تاپیک
    نیازی هم به تغییر در پرینتر و اینها نیست . توی داس هم که اصلا مشکلی نیست مخصوصا اگر کاغذ رول باشه من در 3 ثانیه حلش میکنم اگر خواستی بگو برات بفرستم من با این تا حالا دفترچه قسط - رمز کارت سیباب برای بانکها روی کاغذ رول (همون کارت 2 لایه ) و .... درست کردم
    آیا نرم افزار چاپ دفترچه قسط و رمز کارت سیبا تحت ویندوز است؟ اگر بله لطف کنید و نحوه کار را به ما هم آموزش دهید
    با تشکر

  18. #18
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305
    با تشکر از همه .
    اما باید با کمال شرمندگی عرض کنم مشکل از بی تجربیگیه من بود.
    من کاغذ رو از بالا تغذیه می کردم . بعد از راه رول ، کاغذ رو گذاشتم دیدم بدون هیچ تغییر دادنی خودش بعد از پرینت کاغذ دیگه اجکت نمی کنه
    فقط اینکه آیا برای تعیین ابعاد حتما باید در کنترل پنل فرم جدید تعریف کنیم یا همون روشی که آقای رضامیم گفتند که گزارش رو باز کنیم و ابعاد custom بدیم کفایت می کنه؟؟

  19. #19
    مدیر بخش آواتار binyaz2003
    تاریخ عضویت
    آبان 1382
    محل زندگی
    کرمان
    سن
    39
    پست
    2,107

    Thumbs up How to add/delete custom printer forms under Windows NT/2K/XP Programatically

    با این کد میتونید از طریق برنامه نویسی این کار رو انجام بدید.البته من هنوز تست نکردم.دوستان زحمتشو بکشن.

    Frequently Asked Questions
    FAQ ID: 21202

    This code is based on the working code posted by Jim Livermore on UT and work of George Tasker and late Ed Rauh.

    * All sizes in inches
    ooo = NEWOBJECT("AddPrinterForm", "AddPrinterFormClass.fxp")
    IF NOT ooo.AddForm("MyCustomForm1", 5,7, "EPSON Stylus C82 Series")
    ? ooo.cErrorMessage
    ? ooo.cApiErrorMessage
    * Error
    ENDIF
    ooo = Null
    *RETURN
    * All sizes in cm
    ooo = NEWOBJECT("AddPrinterForm", "AddPrinterFormClass.fxp", "", "Metric")
    IF NOT ooo.AddForm("MyCustomForm2", 15,17, "EPSON Stylus C82 Series")
    * Error
    ENDIF
    ooo = Null


    ooo = NEWOBJECT("AddPrinterForm", "AddPrinterFormClass.fxp")
    IF NOT ooo.DeleteForm("MyCustomForm1", "EPSON Stylus C82 Series")
    ? ooo.cErrorMessage
    ? ooo.cApiErrorMessage
    * Error
    ENDIF
    *AddPrinterFormClass.prg
    * 10/26/2004 -- Added function Sys2600() so code can be run in VFP6 and earlier
    DEFINE CLASS AddPrinterForm AS Custom

    HIDDEN cUnit, cPrinterName, nFormHeight, nFormWidth, nLeftMargin, ;
    nTopMargin, nRightMargin, nBottomMargin, ;
    nInch2mm, nCm2mm, nCoefficient, hHeap

    cUnit = "English" && inches or Metric - cm's
    cPrinterName = ""
    nFormHeight = 0
    nFormWidth = 0
    nLeftMargin = 0
    nTopMargin = 0
    nRightMargin = 0
    nBottomMargin = 0

    nApiErrorCode = 0
    cApiErrorMessage = ""
    cErrorMessage = ""

    nInch2mm = 25.4
    nCm2mm = 10
    nCoefficient = 0

    hHeap = 0

    PROCEDURE Init(tcUnit)
    IF PCOUNT() = 1 AND INLIST(tcUnit, "English", "Metric")
    This.cUnit = PROPER(tcUnit)
    ENDIF
    This.LoadApiDlls()
    This.hHeap = HeapCreate(0, 4096, 0)
    * Use Windows default printer
    This.cPrinterName = SET("Printer",2)
    This.nCoefficient = IIF(PROPER(This.cUnit) = "English", ;
    This.nInch2mm, This.nCm2mm) * 1000
    ENDPROC

    PROCEDURE Destroy
    IF This.hHeap <> 0
    HeapDestroy(This.hHeap)
    ENDIF

    ENDPROC

    PROCEDURE SetFormMargins(tnLeft, tnTop, tnRight, tnBottom)
    WITH This
    .nLeftMargin = tnLeft * .nCoefficient
    .nTopMargin = tnTop * .nCoefficient
    .nRightMargin = tnRight * .nCoefficient
    .nBottomMargin = tnBottom * .nCoefficient
    ENDWITH
    ENDPROC

    PROCEDURE AddForm(tcFormName, tnWidth, tnHeight, tcPrinterName)
    LOCAL lhPrinter, llSuccess, lcForm

    This.nFormWidth = tnWidth * This.nCoefficient
    This.nFormHeight = tnHeight * This.nCoefficient
    IF PCOUNT() > 3
    This.cPrinterName = tcPrinterName
    ENDIF

    This.ClearErrors()
    lhPrinter = 0
    IF OpenPrinter(This.cPrinterName, @lhPrinter, 0) = 0
    This.cErrorMessage = "Unable to get printer handle for '" ;
    + This.cPrinterName + "."
    This.nApiErrorCode = GetLastError()
    This.cApiErrorMessage = This.ApiErrorText(This.nApiErrorCode)
    RETURN .F.
    ENDIF

    lnFormName = HeapAlloc(This.hHeap, 0, LEN(tcFormName) + 1)
    * VFP7 and later
    = SYS(2600, lnFormName, LEN(tcFormName) + 1, tcFormName + CHR(0))
    * VFP6 and earlier
    *= Sys2600(lnFormName, LEN(tcFormName) + 1, tcFormName + CHR(0))

    * Build FORM_INFO_1 structure
    WITH This
    lcForm = This.Num2LOng(0) + ; && Flags
    This.Num2LOng(lnFormName) + ;
    This.Num2LOng(.nFormWidth) + ;
    This.Num2LOng(.nFormHeight) + ;
    This.Num2LOng(.nLeftMargin) + ;
    This.Num2LOng(.nTopMargin) + ;
    This.Num2LOng(.nFormWidth - .nRightMargin) + ;
    This.Num2LOng(.nFormHeight - .nBottomMargin)
    ENDWITH

    * Finally, call the API
    IF AddForm(lhPrinter, 1, @lcForm) = 0
    This.cErrorMessage = "Unable to Add Form '" + tcFormName + "'."
    This.nApiErrorCode = GetLastError()
    This.cApiErrorMessage = This.ApiErrorText(This.nApiErrorCode)
    llSuccess = .F.
    ELSE
    llSuccess = .T.
    ENDIF
    = HeapFree(This.hHeap, 0, lnFormName)
    = ClosePrinter(lhPrinter)

    RETURN llSuccess

    PROCEDURE ClearErrors
    This.cErrorMessage = ""
    This.nApiErrorCode = 0
    This.cApiErrorMessage = ""
    ENDPROC

    PROCEDURE DeleteForm(tcFormName, tcPrinterName)
    LOCAL lhPrinter, llSuccess

    IF PCOUNT() > 1
    This.cPrinterName = tcPrinterName
    ENDIF

    This.ClearErrors()
    lhPrinter = 0
    IF OpenPrinter(This.cPrinterName, @lhPrinter, 0) = 0
    This.cErrorMessage = "Unable to get printer handle for '" + This.cPrinterName + "."
    This.nApiErrorCode = GetLastError()
    This.cApiErrorMessage = This.ApiErrorText(This.nApiErrorCode)
    RETURN .F.
    ENDIF

    * Finally, call the API
    IF DeleteForm(lhPrinter, tcFormName) = 0
    This.cErrorMessage = "Unable to delete Form '" + tcFormName + "'."
    This.nApiErrorCode = GetLastError()
    This.cApiErrorMessage = This.ApiErrorText(This.nApiErrorCode)
    llSuccess = .F.
    ELSE
    llSuccess = .T.
    ENDIF
    = ClosePrinter(lhPrinter)
    RETURN llSuccess

    FUNCTION Num2LOng(tnNum)
    DECLARE RtlMoveMemory IN WIN32API AS RtlCopyLong ;
    STRING @Dest, Long @Source, Long Length
    LOCAL lcString
    lcString = SPACE(4)
    =RtlCopyLong(@lcString, BITOR(tnNum,0), 4)
    RETURN lcString
    ENDFUNC

    FUNCTION Long2Num(tcLong)
    DECLARE RtlMoveMemory IN WIN32API AS RtlCopyNum ;
    Long @Dest, String @Source, Long Length
    LOCAL lnNum
    lnNum = 0
    = RtlCopyNum(@lnNum, tcLong, 4)
    RETURN lnNum
    ENDFUNC

    HIDDEN PROCEDURE ApiErrorText
    LPARAMETERS tnErrorCode
    Local lcErrBuffer
    lcErrBuffer = REPL(CHR(0),1024)
    = FormatMessage(0x1000 ,.NULL., tnErrorCode, 0, @lcErrBuffer, 1024,0)
    RETURN STRTRAN(LEFT(lcErrBuffer, AT(CHR(0),lcErrBuffer)- 1 ), ;
    "file", "form", -1, -1, 3)

    ENDPROC

    HIDDEN PROCEDURE LoadApiDlls
    DECLARE INTEGER OpenPrinter IN winspool.drv;
    STRING pPrinterName,;
    INTEGER @phPrinter,;
    INTEGER pDefault
    DECLARE INTEGER ClosePrinter IN winspool.drv;
    INTEGER hPrinter
    DECLARE INTEGER AddForm IN winspool.drv;
    INTEGER hPrinter,;
    INTEGER LEVEL,;
    STRING @pForm
    DECLARE INTEGER DeleteForm IN winspool.drv;
    INTEGER hPrinter,;
    STRING pFormName
    DECLARE INTEGER HeapCreate IN Win32API;
    INTEGER dwOptions, INTEGER dwInitialSize,;
    INTEGER dwMaxSize
    DECLARE INTEGER HeapAlloc IN Win32API;
    INTEGER hHeap, INTEGER dwFlags, INTEGER dwBytes
    DECLARE lstrcpy IN Win32API;
    STRING @lpstring1, INTEGER lpstring2
    DECLARE INTEGER HeapFree IN Win32API;
    INTEGER hHeap, INTEGER dwFlags, INTEGER lpMem
    DECLARE HeapDestroy IN Win32API;
    INTEGER hHeap
    DECLARE INTEGER GetLastError IN kernel32
    Declare Integer FormatMessage In kernel32.dll ;
    Integer dwFlags, String @lpSource, ;
    Integer dwMessageId, Integer dwLanguageId, ;
    String @lpBuffer, Integer nSize, Integer Arguments

    ENDPROC

    ENDDEFINE
    *-------------------------------------------------------

    FUNCTION Sys2600(tnAddress, tnLength, tcNewString)

    IF PCOUNT() = 3
    DECLARE RtlMoveMemory IN WIN32API AS RtlCopy ;
    INTEGER nDestBuffer, STRING pVoidSource, INTEGER nLength
    lcRetVal = LEFT(tcNewString, MIN(tnLength, LEN(tcNewString)))
    =RtlCopy(tnAddress, lcRetVal, LEN(lcRetVal))
    ELSE
    DECLARE RtlMoveMemory IN WIN32API AS RtlCopy ;
    STRING @DestBuffer, INTEGER pVoidSource, INTEGER nLength
    lcRetVal = REPL(CHR(0),tnLength)
    =RtlCopy(@lcRetVal, tnAddress, tnLength)
    ENDIF
    RETURN lcRetVal
    وب سایت شخصی
    وبلاگ آموزش ویژوال فاکس پرو - به دلیل تعطیل شدن میهن بلاگ نوشته های وبلاگ به وب سایت شخصی منتقل شدند.

  20. #20
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305
    ممنون آقای علی جان ! تست می کنم اینجا جوابشو می زارم

    یه مشکل وقتی قبض رولی مورد نظر چاپ شد و قبض رو بریدم باید با دکمه فونت کاغذ رو به عقب بر گردونم.
    متاسفانه به جای اینکه لبه کاغذ را به ابتدای چاپگر بیاره کمی بالاتر میاره یعنی بجای لبه کاغذ کمی وسط تر نگهمیداره . در صورتیکه وقتی کاغذ را برای اولین بار می کشه درست همون لبه کاغذ نگهمیداره
    1 - چکار کنم رو لبه نگهداره ؟
    2- آیا می شه کاری کرد که با کد خود کاغذ برگرده جای اولش؟
    با تشکر

  21. #21
    نقل قول نوشته شده توسط mehran_337 مشاهده تاپیک
    یه مشکل وقتی قبض رولی مورد نظر چاپ شد و قبض رو بریدم باید با دکمه فونت کاغذ رو به عقب بر گردونم.
    متاسفانه به جای اینکه لبه کاغذ را به ابتدای چاپگر بیاره کمی بالاتر میاره یعنی بجای لبه کاغذ کمی وسط تر نگهمیداره . در صورتیکه وقتی کاغذ را برای اولین بار می کشه درست همون لبه کاغذ نگهمیداره
    1 - چکار کنم رو لبه نگهداره ؟
    با تشکر
    این همون خاصیت TEAR OFF هست که شما فرمودید بی خاصیت هست !

  22. #22
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305
    وقتی که کاغذ را از بالا دادم بی خاصیت بود اما وقتی کاغذ را از پایین دادم و کاغذ رول آماده چاپ شد این دکمه کار کرد . حالا وقتی از این دکمه استفاده می کنم وقتی کاغذ را به عقب می برد به لبه نمی برد کمی بالاتر نگه می دارد.
    می خوام وقتی چاپ شد به لبه برگرده . در ضمن می خواستم بدونم آیا با کد هم می شه این کارو کرد؟
    ممنون

  23. #23
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305
    نقل قول نوشته شده توسط عفت بزرگه مشاهده تاپیک
    من در 3 ثانیه حلش میکنم اگر خواستی بگو برات بفرستم من با این تا حالا دفترچه قسط - رمز کارت سیباب برای بانکها روی کاغذ رول (همون کارت 2 لایه ) و .... درست کردم
    اگه می شه برام بفرستین ممنون می شم.
    mehran_337@yahoo.com

  24. #24
    اگه فرستادند به ما هم خبر بدید

  25. #25
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305
    نه رضا جان علی کلاهدوزان هم مارو سر کار گذاشته.
    امروز داشتم تاپیکهای قدیمی رو نگاه می کردم دیدم خیلی هاشون مثل سریالی می مونن که وقتی به جای حساس می رسه طرف می زاره می ره اصلا به تاپیکش هم نگاه هم نمی کنه.
    یا جایی هم آقای معمار داد زد یافتم یافتم بعد دیگه هر چی بهش گفتن خب حالا راهش چی بود ، پیداش نشد ...

  26. #26
    نقل قول نوشته شده توسط mehran_337 مشاهده تاپیک
    نه رضا جان علی کلاهدوزان هم مارو سر کار گذاشته.
    امروز داشتم تاپیکهای قدیمی رو نگاه می کردم دیدم خیلی هاشون مثل سریالی می مونن که وقتی به جای حساس می رسه طرف می زاره می ره اصلا به تاپیکش هم نگاه هم نمی کنه.
    یا جایی هم آقای معمار داد زد یافتم یافتم بعد دیگه هر چی بهش گفتن خب حالا راهش چی بود ، پیداش نشد ...
    والا اگه منظورت از رضا ، RezaMim هست که معمار هم خودمم!
    جایی هم داد نزدم یافتم یافتم ، بلکه اگه دقت بفرمایید آقای کیا مثال زده بودند ( البته من از حمام نپریدم بیرون )
    اگه به همون پست مربوط به یافتم یافتم مراجعه کنید میبینید که مال دو سال قبله و همون موقع چون من هم شدیدا گرفتار بودم ، بعد از اینکه راهشو تقریبا پیدا کردم ، چند روزی رو به سایت سر نزدم و بعد دیدم بعضی از دوستان چه تیکه هایی انداختن . خب بعضی وقتها ما عادت کردیم که بشینیم موقعی که یکنفر دنبال چیزی میگرده ، کمک که نمیکنیم هیچ حرفهای بیخود هم میزنیم . بعد که طرف پیدا کرد زود میگیم آره اینجا بنویس تا همه ببینن. ( نه حتی من ببینم ) . باور کن همون زمان هم به بعضی از دوستان از طریق آفلاین آموزش رو دادم ولی اصلا دلم نمیخواست اونو روی سایت بزارم.
    من انگلیسیم خیلی خوب نیست و در حد I am a window! هست ولی با این همه همیشه و تا جایی که مشکلاتم مربوط به زبان فارسی نباشه از سایت خارجیه ( تبلیغ ممنوع ! ) استفاده میکنم و برام بسیار جالبه که در اونجا افرادی که برای من خدای برنامه نویسی هستند چطور با تواضع و حوصله به من راهنمایی میدن و هیچوقت هم نه مسخره میکنند و نه با توضیحات بیخود مثل من اینو دارم و میتونم انجام بدم ، اگه خواستی بگو ! آدمو معطل میکنند. باور کن که تا حالا بارها شده که برام سورس نوشتن و حتی قسمت مربوط به خواندن اطلاعات از باسکول رو یه آمریکایی برام ساخت و فرستاد.
    ولی آخرین بار که شما سئوال کرده بودید دیدید که همه مراحل رو بطور کامل توضیح دادم و با اینکار من الان دو تا از برنامه هام ( صدور قبض باسکول و تخلیه بار ) به همین روش کار میکنن و مشکلی هم ندارن.
    باز هم دیدید که همونجا من گفتم اگه کس دیگه ای روش بهتر یا کامل تری داره بگه تا من هم استفاده کنم .
    ولی باز چی دیدیم

  27. #27
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305
    با سلام خدمت دوست گلم آقا رضا !
    از شوخی من ناراحت نشو . ما مخلص شما و همه بچه های سایت هستیم.
    اما به قول تو واقعا خیلی دیدم "من بلدم خواستی بگو" و از این جمله کفری می شم.
    هر کس عقیده ای داره و نمی شه به کسی زور کرد اینطور باش. شما هم برای دانسته هاتون زحمت کشیدین و حق شماست که هر طور که صلاح می دونید استفاده کنید.
    من با سایتهای خارجی زیاد ارتباط نداشتم اما الحق والانصاف اینجا هم بچه ها خیلی زحمت کشیدند و من مدیون همه هستم.
    شما توضیح دادید و من هم مطالعه کردم اما ایراد (البته از انتظارات کاربر منه نه از شما ):
    تنظیماتی که گفتید باید در کنترل پنل انجام بشه و یا با دکمه های پرینتر و این چیزیست که من بعنوان استاندارد (فقط نظر شخصی بنده هست) قبول ندارم . و چون دیدم که برنامه های دیگر اینطوری نیست دنبال روشش هستم.

  28. #28
    سلام
    روش استفاده مستقیم از پرینتر هست با کدهای ESC
    یعنی اینکه نباید اصلا با گزارش سازها گزارشتونو طراحی کنید
    با دستور printer.print یا پرینت در فایل lpt1
    با کدهای Esc میشه کاغذ رو هر چقدر خواست جلو و عقب داد
    یعنی پس از هر مقدار چاپ که خواستید کاغذ رو جلو بدید تا کاربر اونو جدا کنه، سپس برش گردونین عقب سر جاش
    همش با کد نویسی
    اگر من و شما هر كدوم يك چيز ياد داشته باشيم و به هم ياد بديم، حالا هر كدوم دو تا چيز ياد داريم ! http://www.ArminaCo.com

  29. #29
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305
    با تشکر از شما که پاسخ دادین!
    البته گزارشات امروزی رو دیگه حوصله نمی شه با کدنویسی طراحی کرد. چون کار با ریپورت دیزاین ها یه جورایی عادت شده.
    اما اگه با ریپورت طراحی بشه و در هنگام چاپ و یا قبل از چاپ کدها ارسال بشه باز هم جواب نمی ده؟؟؟
    اگه می شه کدهاش هم اینجا قرار بدین
    ممنون

  30. #30
    سلام
    این بستگی به برنامه گزارشگر داره
    اگر گزارشگر شما بعد از چاپ صفحه کد صفحه بعد رو به چاپگر بفرسته دیگه کاریش نمیشه کرد، هر چند شما همچنان کد برگشت به عقب رو می تونید بدید که اگر مشکل شما فقط همین میشه شاید بشه یه کارایی کرد
    اگر من و شما هر كدوم يك چيز ياد داشته باشيم و به هم ياد بديم، حالا هر كدوم دو تا چيز ياد داريم ! http://www.ArminaCo.com

  31. #31
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305
    این شاید بشه کاری کرد یعنی چه؟
    من مشکلم همینه

  32. #32
    یعنی اینکه فکر می کنم در هر حال با استفاده از کدهای ESC شما می تونید کاغذ رو به مقدار دلخواه عقب برگردونید
    اگر من و شما هر كدوم يك چيز ياد داشته باشيم و به هم ياد بديم، حالا هر كدوم دو تا چيز ياد داريم ! http://www.ArminaCo.com

  33. #33
    دقیقا همینطوره . یعنی گزارشگر کد خروج کاغذ از چاپگر رو هم میفرسته. البته در سایتهای دیگه ای کدهایی دیدم که مثلا این کد خروج کاغذ رو میخوردند! ولی من که تست میکردم جواب نمیداد.

  34. #34
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305
    من هم در ویندوز نتونستم از کد های esc نتیجه ای بگیرم

  35. #35

    همدرد

    من هم با این مشکل دست و پنجه نرم می کنم واقعیت این است که ویندوز در چاپ از تنظیمات خود استفاده کرده و در کاغذ پیوسته به اندازه فرم انتخاب شده صفحه را بعد از هر چاپ بیرون می برد .
    البته می توان در محل تعریف چاپگرها با استفاده از منوی فایل و سرور پروپرتیز یک فرم جدید به اندازه مورد نظر تعریف کرد پس از تعریف در رجستری ویندوز این تعریف اعمال می شود ولی مشکل اینجاست که فقط در مورد چاپگرهایی که خود ویندوز تعریف کرده و Digitally Signed علامت خورده اعمال می شود مثلا اگر چاپگر LQ300 باشد مشکلی نیست ولی برای +LQ300
    که خودمان نصب می کنیم اعمال نمی شود . متاسفانه کاربر برنامه بنده هم این چاپگر را خریده و من را بیچاره کرده !

  36. #36
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305

    نقل قول: چاپ ابعاد غیرمعمول

    شاید برای دوستان پیش بیاید که بخواهندی کاغذی در ابعاد دلخواه در کنترل پنل / چاپگر تعریف کنند که این عمل از سوی کاربر ملالات بار است و نیاز به ایجاد آن در خود برنامه دارند.
    با توجه به کدی که جناب حسین زاده در تاپیکهای گذشته مطرح کردند بده فرم تکمیلی را برای این موضوع ساخته و همراه سورس در اختیار علاقمندان قرار می دهم.
    چنانچه نکاتی باشدر در خدمتم
    فایل های ضمیمه فایل های ضمیمه

  37. #37

    نقل قول: چاپ ابعاد غیرمعمول

    سلام محسن جان:
    آخرشي .
    مرسي

  38. #38
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305

    نقل قول: چاپ ابعاد غیرمعمول

    خواهش می کنم . راستش هیچوقت یادم نمیره سر همین مسئله 6 ماه بالا پائین کرده بودم و چقدر با طرف قرار دادم بحث کردم که من می گفتم شما خودتون باید ابعاد و تعریف کنید و ایشون می گفت برنامه ات باید این قابلیت و داشته باشه.
    خلاصه به لطف دوستان مخصوصا جناب حسین زاده (کاربر بی نیاز) کدی در سایت قرار گرفت که قرار شد تست کنیم.
    امید وارم دوستانی که درآینده به این مسئله نیاز دارند بتوانند به راحتی استفاده کنند

  39. #39

    نقل قول: چاپ ابعاد غیرمعمول

    سلام دوستان من گزارشی دارم که 50 تا صفحه داره میخوام کاری کنم که کاربر بتونه تعیین کنه چه شماره صفحه ای رو چاپ کنه مثلا صفحه شماره 31 رو بتونه در textbox تایپ کنه وهمان صفحه در صفحه نمایش ظاهر شود وچاپ شود آیا چنین چیزی میشه انجام داد

  40. #40

    نقل قول: چاپ ابعاد غیرمعمول

    REPORT FORM repname RANGE startpage,endpage

صفحه 1 از 2 12 آخرآخر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •