اهلا بعودتك اخي الحبيب احمد منصور
جئت اهلا و حللت سهلا
حماك الله و حباك
اهلا بك اخي الحبيب حامد
بالنسبة لسؤالك حول كيفية فتح درج الكاش
كما تفضل اخي احمد جزاه الله الجنة و والديه و من احبه بسؤالك عن كيفية ربط الطابعة
و هذا يعني ان هناك اوامر سيتم ارسالها مباشرة من خلال البرنامج الى تلك المنافذ .
استخدمت في برنامجي المحاسبي طريقة تمت تجربتها و هي تعمل بشكل جيد
سأضع لك الكود في الاسفل باذن الله بعد ان اشرح لك الطريقة
و عتبي على الاخوة الذين يقرأون الاسئلة و لديهم الحلول ولا يتفضلوا بالاجابة يؤسفني ذلك ،
على كل حال
ينبغي ان يكون في شاشة البيع قائمة منسدلة لقراءة اسماء الطابعات المتصلة
حتى تتمكن من تعيين احداها كـ طابعة افتراضية ، بحيث يتم استقبال الامر المكتوب في الاسفل
و هذا الكود كما تراه ، يمكنك تجربته و ان بدا لك خطب ما ابلغنا عنه ، بالتوفيق
يضاف هذا الكود في قسم التصريحات
PHP كود :
Option Explicit
Private Type DOCINFO
pDocName As String
pOutputFile As String
pDatatype As String
End Type
Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Private Declare Function EndDocPrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Private Declare Function EndPagePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, ByVal pDefault As Long) As Long
Private Declare Function StartDocPrinter Lib "winspool.drv" Alias "StartDocPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, pDocInfo As DOCINFO) As Long
Private Declare Function StartPagePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Private Declare Function WritePrinter Lib "winspool.drv" (ByVal hPrinter As Long, pBuf As Any, ByVal cdBuf As Long, pcWritten As Long) As Long
هذا كود زر الامر فتح درج الكاش
PHP كود :
Private Sub Open_cash_Click()
On Error Resume Next: Err.Clear
Dim myStr As String
myStr = Chr$(27) & "p" & Chr$(0) & Chr$(250) & Chr$(250)
Call sendToPrn(myStr)
End Sub
Private Sub sendToPrn(outString As String)
Dim lhPrinter As Long
Dim lReturn As Long
Dim lpcWritten As Long
Dim lDoc As Long
Dim sWrittenData As String
Dim printdata As String
Dim MyDocInfo As DOCINFO
Dim x As Printer
For Each x In Printers
If Left(x.DeviceName, 5) = Combo3.Text Then
Set Printer = x
Exit For
End If
Next
' Combo3.Text اسم الطابعة التي تم تعيينها كـ طابعة افتراضية
printdata = outString
lReturn = OpenPrinter(Printer.DeviceName, lhPrinter, 0)
If lReturn = 0 Then
MsgBox "The Printer Name not recognized."
Exit Sub
End If
MyDocInfo.pDocName = "SAMPLE"
MyDocInfo.pOutputFile = vbNullString
MyDocInfo.pDatatype = vbNullString
lDoc = StartDocPrinter(lhPrinter, 1, MyDocInfo)
Call StartPagePrinter(lhPrinter)
lReturn = WritePrinter(lhPrinter, ByVal printdata, Len(printdata), lpcWritten)
lReturn = EndPagePrinter(lhPrinter)
lReturn = EndDocPrinter(lhPrinter)
lReturn = ClosePrinter(lhPrinter)
End Sub