ช่วงนี้มีช่วยน้องแก้ไข Report ที่ทำด้วย DevExpress ครับ แล้วที่นี้มันเจอปัญหากับภาษาไทย ในเคสที่ว่าถ้ามีข้อความยาวๆ มันตัดได้ไม่ถูกต้องครับ มันจะแหว่งๆ แทน ตามตัวอย่างด้านล่าง เวลาเจอประโยคยาวๆ ที่ไม่มี Space เว้นวรรค มันจะตัดคำแปลกๆ ถ้าใครที่ทำพวกเอกสารคงหงุดหงิด ใน MS Word มันมี Thai Distributed ทำไมไม่ทำ อะไรประมาณนี้
- Forward Contract คือสัญญาที่ลูกค้าและธนาคารตกลงซื้อเงินตราต่างประเทศสกุลหนึ่ง และขายเงินตราต่างประเทศอีกสกุลหนึ่ง โดยกำหนดจำนวนเงิน สกุลเงิน อัตราแลกเปลี่ยน และวันที่ทำการส่งมอบล่วงหน้าที่แน่นอน ซึ่งอัตราแลกเปลี่ยนล่วงหน้าที่กำหนดนั้น ไม่ใช่อัตราตลาดในอนาคต โดยในวันที่ทำการส่งมอบ อัตราแลกเปลี่ยนล่วงหน้าอาจสูงหรือต่ำกว่าอัตราแลกเปลี่ยนในตลาด ณ วันที่ส่งมอบก็ได้ - ตามระเบียบของ<<ตัวแปร>> ผู้ซื้อหรือผู้ขายเงินตราต่างประเทศล่วงหน้าต้องมีธุรกรรมรองรับการซื้อขาย (Underlying) และแสดงเอกสารต่อหน้าธนาคาร ณ วันที่ทำสัญญา
Runtime ที่เกี่ยวข้อง
- DevExpress 22.1.7
- .NET6
Try & Error
ทว่าปัญหานี้ ลูกค้าจะไม่ปิด UAT ครับ เลยต้องมีระดมสมอง มาแก้ไข แล้วที่นี้หลังจากลองแก้ไขปัญหาหลายๆวิธี
- กำหนด wordwrap - ทำอยู่แล้ว แต่ไม่รอดด
- เปลี่ยนให้ XRLabel ใช้ MarkupText (HTML) มันไม่ Work !!!
- ลง Lib System.Drawing.Common ของ .NET6 ไม่ Work !!!
- เอาข้อ 2 + 3 ไม่ Work !!!
- ลองดูหน่อยว่าจาก DevExpress 22.1.7 มาถึงเวอร์ชันล่าสุด ยังไม่มีแก้ครับ
Final Workaround Solution
หลังจากลอง Research พบคำเตือนที่ต้องระวังครับ
- เจ้า Engine ที่ใช้ Render ตอน Preview / PDF คนละตัวกันครับ ทำให้มีปัญหาแสดงผลได้ครับ
- พบว่ามีคนเจอเหมือนกันนะ แต่เป็นภาษาอังกฤษแทน โดยเค้าจะให้วิธีจัดคำจาก Space ครับ แต่นี่ภาษาไทยครับ
ดังนั้นการแก้ปัญหาจะเป็น Logic ดังนี้ครับ
- เตรียม Dictionary คำไทย
- จากนั้นเขียน Logic ตัดคำ และตัดอักษรให้พอดีกับพื้นที่ของ XRLabel ที่กำหนด wordwrap ถ้าเกินให้ตัดขึ้นบรรทัดใหม่ครับ
Reference
- XRLabel - How to implement custom word wrap logic | DevExpress Support
- Plain text and markup text word wrap location is inconsistent (XRLabel, etc.) | DevExpress Support
- Export to PDF creates differently formatted PDF on deployment machine for same report generated by WPF app. (Version 17.2.5) | DevExpress Support
- XRControl.WordWrap Property | Reporting | DevExpress Documentation
- XRRichText Class | Reporting | DevExpress Documentation
Discover more from naiwaen@DebuggingSoft
Subscribe to get the latest posts sent to your email.