PDA

View Full Version : سوال: تغيير رنگ فونت در زمان چاپ



nazanin_90
شنبه 28 مرداد 1391, 10:12 صبح
سلام
من براي نمايش اعداد منفي در داخل پرانتز و با رنگ قرمز در قسمت خصوصيت format تكست باكس عبارتblack];(#,##.)[red].##.# را وارد مي كنم . اما ميخواهم صرفاً در حالت نمايش گزارش اين حالت وجود داشته باشد و در چاپ اعداد بر روي كاغذ اعداد منفي داخل پرانتز به رنگ مشكي باشد نه قرمز ، چون چاپ با رنگ قرمز كم رنگ ميشود.
با تشكر

Abbas Amiri
شنبه 28 مرداد 1391, 19:44 عصر
چنانچه Default View گزارش Report View باشد اگر فیلدموردبحث در قسمت Detail گزارش قراردارد در رویداد Detail_Format بنویسید:


Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
If Me.CurrentView = 5 Then
field1.Format = "YourPrintFormatString"
ElseIf Me.CurrentView = 6 Then
field1.Format = "YourViewFormatString"
End If
End Sub


واگر Print Preview باشد میتوانید یک متغیر عمومی در یک ماژول تعریف کنید(Public blnPrintMyReport As Boolean)
قبل از فرمان چاپ مقدار آنرا True کرده وپس آن ، آنرا False کنید ودر کدهای فوق بجای شرط If Me.CurrentView ، شرط If blnPrintMyReport = True را جایگزین کنید

nazanin_90
شنبه 28 مرداد 1391, 21:49 عصر
چنانچه Default View گزارش Report View باشد اگر فیلدموردبحث در قسمت Detail گزارش قراردارد در رویداد Detail_Format بنویسید:


Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
If Me.CurrentView = 5 Then
field1.Format = "YourPrintFormatString"
ElseIf Me.CurrentView = 6 Then
field1.Format = "YourViewFormatString"
End If
End Sub


واگر Print Preview باشد میتوانید یک متغیر عمومی در یک ماژول تعریف کنید(Public blnPriintMyReport As Boolean)
قبل از فرمان چاپ مقدار آنرا True کرده وپس آن ، آنرا False کنید ودر کدهای فوق بجای شرط If Me.CurrentView ، شرط If blnPriintMyReport = True را جایگزین کنید
با سلام خدمت جناب امیری بزرگوار!
راستش در خصوص راه حل اول بنده نتوانستم Default View در خصوصیات گزارش پیدا کنم که ببینم در حالت Report View است یا در حالت Print Preview
اماباید عرض کنم که بنده گزارش هایم را ابتدا از طریق یک فرم و در حالت Print Preview باز می کنم و با این وجودفکر می کنم راهکار دوم جنابعالی در این مورد بهتر جوابگوباشد . و چون الآن چاپگر در دسترسم نیست باید منتظر بمانم انشاءالله بعد از تعطیلات در محل کار آن را امتحان کنم ، هرچند الآن هم مطمئنم که این راهکار جنابعالی حتماً جوابگو هست.
پیشاپیش عید سعیدفطر را به شماو همه دوستان تبریک عرض می نمایم انشاءالله طاعات و عبادات همگی مورد قبول درگاه خداوندمتعال قرار گرفته باشد .

Abbas Amiri
شنبه 28 مرداد 1391, 22:13 عصر
کافیست درروال بازشده گزارش کدهارا بنویسید


Private Sub Report_Open(Cancel As Integer)
If blnPrintMyReport Then
field1.Format = "YourPrintFormatString"
Else
field1.Format = "YourViewFormatString"
End If
End Sub

abas1388
دوشنبه 30 مرداد 1391, 15:16 عصر
کافیست درروال بازشده گزارش کدهارا بنویسید


Private Sub Report_Open(Cancel As Integer)
If blnPrintMyReport Then
field1.Format = "YourPrintFormatString"
Else
field1.Format = "YourViewFormatString"
End If
End Sub

سلام
با توجه به اینکه این مورد برای من هم مهم است یک سوال ازجناب امیری داشتم و آن اینکه شما فرموده اید که کافیست درروال بازشده گزارش کدهارا بنویسید
یعنی درواقع اجرای کد باتوجه به شرط true یا false بودن فقط در زمان اجرای گزارش(باز شدن گزارش) انجام شود . حال وقتی گزارش اجرا شده و در حالت باز است و شما در حالت باز بودن گزارش میخواهید باتوجه به شرط true یا false بودن چگونه با کلیک بر روی دکمه پرینت این کد فوق اجرا میشود ؟ (با تاکید بر اینکه ما نمیخواهیم در زمان پرینت ، گزارش بسته شود و دوباره باز شود)
باتشکر

Abbas Amiri
دوشنبه 30 مرداد 1391, 23:35 عصر
چگونه با کلیک بر روی دکمه پرینت این کد فوق اجرا میشود ؟91571
به نکته خوبی اشاره کردید. شخصا گزارشات را در نمای Report view بازمیکنم چون میتوان بروی آن باتن قرارداد واز روالهای رویدادآنها استفاده کرد (مانند شکل فوق). در این حالت میتوان اگر بروی گزارش ، باتن جهت چاپ گزارش باشد به صورت زیر عمل کرد:


Private Sub cmdPrint_Click()
blnPrintMyReport = True
DoCmd.Close
DoCmd.OpenReport "Invoice", acViewPreview
DoCmd.PrintOut acPrintAll
'DoCmd.PrintOut acPrintAll, , , , Form_frmInvoice.txtCopies
blnPrintMyReport = False
End Sub

Private Sub Report_Load()
If Me.CurrentView = 5 Then
Me.ReportHeader.Visible = False
Else
Me.ReportHeader.Visible = True
End If

End Sub


Private Sub Report_Open(Cancel As Integer)
If Not blnPrintMyReport Then
Text24.Format = "#,###[Red];(#,###)[Blue];0"
Else
Text24.Format = "Standard"
End If
End Sub