Transcript ppt

‫تطوير البرامج العربية باستخدام‬
‫فيجوال بيسك ‪6‬‬
‫الحوسبة العربية (تعريب الحاسبات( –‪17‬‬
‫حسني املحتسب‬
‫‪1‬‬
‫حسني المحتسب‬
‫بسم هللا الرحمن الرحيم‬
‫الحوسبة العربية (تعريب الحاسبات( –‪17‬‬
‫تطوير البرامج العربية باستخدام‬
‫فيجوال بيسك ‪6‬‬
‫حسني املحتسب‬
‫‪2‬‬
‫حسني المحتسب‬
‫المسار‬
‫•‬
‫تطوير البرامج العربية باستخدام فيجوال بيسك ‪6‬‬
‫•‬
‫مرجع مفيد‬
‫•‬
‫•‬
‫•‬
‫‪http://www.microsoft.com/middleeast/msdn/VB_aApplic.aspx‬‬
‫تذكير‪ :‬المحاضرات المقترحة‬
‫مشروع المادة‬
‫‪3‬‬
‫حسني المحتسب‬
‫بعض المفاهيم والمصطلحات‬
‫•‬
‫االتجاه ‪Direction‬‬
‫•‬
‫•‬
‫•‬
‫•‬
‫الرمزية ‪Symbology‬‬
‫•‬
‫•‬
‫•‬
‫العربية تقرأ سطرا سطرا من اليمين إلى اليسار ومن أعلى ألسفل‬
‫األرقام والكلمات األجنبية من اليسار إلى اليمين‬
‫لغة ثنائية االتجاه ‪ BIDI‬أو ‪Bidirectional language‬‬
‫الحرف له عدة أشكال حسب موقعه‬
‫الحركات للتشكيل‬
‫االستخدام ‪Usage‬‬
‫•‬
‫‪4‬‬
‫اإلمالء ‪ -‬الترقيم ‪ -‬طول النص مختلف من لغة ألخرى‬
‫حسني المحتسب‬
‫الشفرة العالمية الموحدة‬
‫•‬
‫•‬
‫•‬
‫حل لمشكلة االنتقال من شفرة إلى شفرة في البرامج التي تستخدم‬
‫أكثر من لغة‬
‫تلقى قبوال من مصممي نظم التشغيل ومطوري البرامج‬
‫يستخدم في ما يكروسوفت ويندوز ‪ 2000‬و‪ Xp‬وما بعدهما‬
‫‪5‬‬
‫حسني المحتسب‬
‫هل تدعم الفيجوال بيسك العربية؟‬
‫•‬
‫•‬
‫•‬
‫•‬
‫نعم‬
‫لغة فيجوال بيسك تعتمد على عناصر التحكم ‪controls‬‬
‫العديد من عناصر التحكم لها خصائص ثنائية االتجاه ‪BiDi‬‬
‫بعض الخصائص العربية تحتاج تثبيت حزمة الخدمات الثالثة ‪service‬‬
‫‪)SP3( pack‬‬
‫•‬
‫•‬
‫•‬
‫أحدث حزمة خدمات لفيجوال ستوديو هي ‪SP6‬‬
‫‪http://msdn2.microsoft.com/en-us/vstudio/Aa718364.aspx /‬‬
‫يمكن أيضا استخدام ‪ VB6‬مع ‪ SQL Server 7.0‬أو آكسس ‪ACCESS‬‬
‫لبناء برامج عربية‬
‫‪6‬‬
‫حسني المحتسب‬
‫ثنائية االتجاه ‪Bidirectional‬‬
‫•‬
‫•‬
‫•‬
‫•‬
‫مصطلح لوصف البرمجيات التي تدعم اللغات التي تكتب من‬
‫اليمين إلى اليسار‬
‫وتدعم أيضا الكتابة من اليسار إلى اليمين‬
‫‪ RTL‬من اليمين إلى اليسار ‪Right To Left‬‬
‫‪ LTR‬من اليسار إلى اليمين ‪Left To Right‬‬
‫‪7‬‬
‫حسني المحتسب‬
‫الخصائص ثنائية االتجاه في ‪VB6‬‬
‫•‬
‫•‬
‫•‬
‫•‬
‫تعمل هذه الخصائص إذا كانت معدة تحت نظام تشغيل يدعم‬
‫الخصائص ثنائية االتجاه ويعتمد على ‪-32‬خانة‪.‬‬
‫تم إضافة خاصية (‪ Right-To-Left )property‬لمجموعة من‬
‫عناصر التحكم ‪ controls‬والنماذج ‪forms‬‬
‫يمكن استخدام نص ثنائي اللغة (عربي وإنجليزي معا)‬
‫دعم قواعد البيانات العربية من حيث الترتيب ‪Sort‬‬
‫‪8‬‬
‫حسني المحتسب‬
‫‪Right-To-Left Property‬‬
‫•‬
‫التركيب‪:‬‬
‫‪object.RightToLeft‬‬
‫•‬
‫•‬
‫•‬
‫‪9‬‬
‫•‬
‫قيمته إما ‪ true‬أو ‪False‬‬
‫‪ : True‬يعدل العنصر سلوكه مثل وضع شريط التمرير إلى يسار‬
‫مربع النص أو محاذاة نص إلى يمين المربع‪.‬‬
‫‪ : False‬يعدل عنصر التحكم سلوكه كأنه في بيئة غير ثنائية االتجاه‬
‫حسني المحتسب‬
Right-To-Left Property
‫حسني المحتسب‬
10
‫‪Right‬‬‫‪To-Left‬‬
‫‪Property‬‬
‫الحظ أن عنصري‬
‫التحكم للمجلدات‬
‫والملفات ليس لهما‬
‫خاصية‬
‫‪RightToLeft‬‬
‫‪11‬‬
‫حسني المحتسب‬
‫‪Right‬‬‫‪To-Left‬‬
‫‪Property‬‬
‫يمكن تحويل‬
‫ذلك باستخدام‬
‫خاصية المرآة‬
‫في نظام‬
‫التشغيل‬
‫(‪)Mirroring‬‬
‫‪12‬‬
‫حسني المحتسب‬
‫بعض عناصر التحكم‬
http://download.microsoft.com/download/a/a/0/aa0901ff-5209-4e61-9c30-47e2289581ff/VSDemo-Arabic.zip
‫حسني المحتسب‬
13
‫بعض عناصر التحكم‬
‫‪14‬‬
‫حسني المحتسب‬
‫بعض عناصر التحكم‬
‫‪15‬‬
‫حسني المحتسب‬
‫واجهة برمجة التطبيقات ‪Windows API‬‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫‪Windows API Function (Application Programming‬‬
‫)‪Interface‬‬
‫البرامج والدوال التي تتكون منها ويندوز ذاتها‬
‫تشمل آالف الدوال والتعريفات والبرامج الفرعية والثوابت والتي يمكن‬
‫تعريفها واستخدامها في بناء التطبيقات المختلفة‬
‫مكتوبة بلغة سي‬
‫يجب تعريفها قبل استخدامها في فيجوال بيسك‬
‫أسهل طريقة للوصول اليها باستخدام التعريفات المرفقة مع فيجوال بيسك‬
‫يحوي ملف ‪ Win32api.txt‬تحت مجلد ‪ \Winapi‬يضم تعريفات للعديد‬
‫من دوال الـ ‪APIs‬‬
‫يمكن أيضا عرض التعريفات بواسطة عارض خاص مرفق لهذا الغرض‬
‫‪16‬‬
‫حسني المحتسب‬
‫•‬
)Mirroring( ‫خاصية المرآة في نظام التشغيل‬
General Declaration ‫ التالية ضمن التصريحات العامة‬API ‫أضف وظائف‬
Form ‫الخاصة بالنموذج‬
Private Declare Function GetWindowLong Lib "user32" Alias
"GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As
Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias
"SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As
Long, ByVal dwNewLong As Long) As Long
Private Const WS_EX_LAYOUTRTL = &H400000
Private Const GWL_EXSTYLE = (-20)
‫حسني المحتسب‬
17
•
)Mirroring( ‫خاصية المرآة في نظام التشغيل‬
‫ وأضف األتي‬Form_Load ‫أنتقل إلى‬
Dim OldLong As Long
•
OldLong = GetWindowLong(Me.hwnd,
GWL_EXSTYLE)
SetWindowLong Me.hwnd, GWL_EXSTYLE,
OldLong Or WS_EX_LAYOUTRTL
‫حسني المحتسب‬
18
)Mirroring( ‫خاصية المرآة في نظام التشغيل‬
‫ أضف األتي إلى‬Component ‫لعكس أي عنصر‬
‫ عبارة عن اسم العنصر‬XXXX ‫ حيث‬,Form_Load
OldLong = GetWindowLong(XXXX.hwnd,
GWL_EXSTYLE)
SetWindowLong XXXX.hwnd, GWL_EXSTYLE,
OldLong Or WS_EX_LAYOUTRTL
‫حسني المحتسب‬
19
•
‫خاصية المرآة في المثال السابق‬
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal
hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal
hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const WS_EX_LAYOUTRTL = &H400000
Private Const GWL_EXSTYLE = (-20(
Private Sub Form_Load)(
Dim OldLong As Long
OldLong = GetWindowLong(Me.hwnd, GWL_EXSTYLE)
SetWindowLong Me.hwnd, GWL_EXSTYLE, OldLong Or WS_EX_LAYOUTRTL
OldLong = GetWindowLong(Me.File1.hwnd, GWL_EXSTYLE)
SetWindowLong Me.File1.hwnd, GWL_EXSTYLE, OldLong Or WS_EX_LAYOUTRTL
OldLong = GetWindowLong(Me.Dir1.hwnd, GWL_EXSTYLE)
SetWindowLong Me.Dir1.hwnd, GWL_EXSTYLE, OldLong Or WS_EX_LAYOUTRTL
End Sub
‫حسني المحتسب‬
20
Control Name
RTL Reading
RTL
Order
Alignment
Form (MDI, SDI)


Printer


Label


Text Box


Command Button


Dialog box Control


Frame Control


Check Box


Radio Button Control


List Box / Combo Box


Rich Edit Control


Menu Control


Microsoft Chart


‫حسني المحتسب‬
Comments
Operating System Dependent
Depend on saved file layout
21
Control Name
RTL Reading Order
RTL Alignment
Microsoft DAO


Microsoft ADO (OLEDB)


Microsoft Grid Control


Microsoft Data Bound List Controls


Microsoft Flex Grid


Microsoft Data Report


Microsoft Data List


Microsoft Data Repeater


(List Box / Combo Box)
‫حسني المحتسب‬
22
‫الخصائص ثنائية االتجاه في مصمم التقارير‬
‫•‬
‫•‬
‫تكون التقارير ‪ RTL‬أو ‪ LTR‬اعتمادا على قيمة‬
‫خاصية ‪RightToLeft‬‬
‫إذا كانت ‪True‬‬
‫•‬
‫•‬
‫‪23‬‬
‫اتجاه القراءة للتسمية التوضيحية (‪ )caption‬للتقرير تكون من‬
‫اليمين إلى اليسار (‪ )RTL‬والمحاذاة في شريط العناوين يمينا‬
‫اتجاه القراءة في النص المطبوع من اليمين إلى اليسار (‪)RTL‬‬
‫ومحاذاة النص يمينا إذا لم تحدد المحاذاة بخالف ذلك‬
‫حسني المحتسب‬
‫مالحظة‬
‫ لكل من‬DIR ‫ ال ُمصدّر سمة‬HTML ‫يتضمن ملف‬
RptLabel
RptTextBox
RptFunction controls
•
•
•
‫ قيمتها‬RightToLeft ‫ إذا كانت خاصية‬RTL ‫وتكون قيمتها‬
True
Dir=RTL
‫حسني المحتسب‬
•
24
•
‫خاصية ‪ RightToLeft‬في ‪RptLabel‬‬
‫•‬
‫عند إضافة عنصر تحكم تسمية ‪ label‬في تقرير ما فإن خاصية‬
‫‪ RightToLeft‬تكون قيمتها ابتداء مساوية لقيمة الخاصية في‬
‫التقرير األصل‬
‫•‬
‫إذا كانت قيمة الخاصية ‪ RightToLeft‬هي ‪True‬‬
‫•‬
‫•‬
‫‪25‬‬
‫اتجاه قراءة نص التسمية التوضيحية من اليمين إلى اليسار‬
‫محاذاة النص يمينا‬
‫حسني المحتسب‬
‫خاصية ‪ RightToLeft‬في ‪RptTextBox‬‬
‫•‬
‫عند إضافة عنصر تحكم مربع نص ‪ textbox‬في تقرير ما فإن‬
‫خاصية ‪ RightToLeft‬تكون قيمتها ابتداء مساوية لقيمة‬
‫الخاصية في التقرير األصل‬
‫•‬
‫إذا كانت قيمة الخاصية ‪ RightToLeft‬هي ‪True‬‬
‫•‬
‫•‬
‫‪26‬‬
‫اتجاه قراءة النص من اليمين إلى اليسار‬
‫محاذاة النص يمينا‬
‫حسني المحتسب‬
‫خاصية ‪ RightToLeft‬في ‪RptFunction‬‬
‫•‬
‫إذا كانت قيمة الخاصية ‪ RightToLeft‬هي ‪True‬‬
‫•‬
‫‪27‬‬
‫تظهر األرقام باإلنجليزية‬
‫حسني المحتسب‬
‫”اللغة“ ‪Locale‬‬
‫•‬
‫جغرافيّا‬
‫•‬
‫•‬
‫المكان‬
‫في مصطلح البرمجيات‬
‫•‬
‫مجموعة بيانات مرتبطة بمكان معين وتتضمن‬
‫•‬
‫•‬
‫•‬
‫‪28‬‬
‫عرف اللغة‬
‫اسم و ُم ّ‬
‫الترميز المستخدم لكتابة اللغة‬
‫االعتبارات الثقافية‬
‫حسني المحتسب‬
‫”اللغة“ (‪)Locale‬‬
‫•‬
‫•‬
‫خواص البيئة المستخدمة المعتمدة لغة المنطقة أو البلد‬
‫واالعتبارات الثقافية‬
‫تحدد االعتبارات ومنها‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫‪29‬‬
‫ترتيب الفرز‬
‫مخطط لوحة المفاتيح‬
‫التاريخ والوقت‬
‫األرقام‬
‫العملة‬
‫حسني المحتسب‬
‫”اللغة“ ‪Locale‬‬
‫•‬
‫األمور القياسية المرتبطة باللغة‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫مخطط لوحة المفاتيح‬
‫حجم الورق وحجم المغلفات االفتراضي‬
‫الطابعات الشائعة‬
‫الشائع في دقة الشاشات‬
‫الشفرة المستخدمة في الترميز‬
‫اتجاه النص‬
‫•‬
‫•‬
‫•‬
‫‪30‬‬
‫أفقي أو عمودي‬
‫من اليمين إلى اليسار أو من اليسار إلى اليمين‬
‫أسلوب اإلدخال‬
‫حسني المحتسب‬
‫”اللغات“ العربية المدعومة في ويندوز‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫المغرب‬
‫عمان‬
‫قطر‬
‫السعودية‬
‫سوريا‬
‫تونس‬
‫اإلمارات‬
‫اليمن‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫‪31‬‬
‫حسني المحتسب‬
‫الجزائر‬
‫البحرين‬
‫مصر‬
‫العراق‬
‫األردن‬
‫الكويت‬
‫لبنان‬
‫ليبيا‬
‫دعم التقويم الهجري‬
‫•‬
‫•‬
‫التقويم الميالدي هو االفتراضي في البيانات والدوال المتعلقة‬
‫بالتاريخ‬
‫لتغيير التقويم لدوال ‪ VBA‬المتعلقة بالتاريخ نستخدم خاصية‬
‫‪ Calendar‬المصاحبة للـ ‪ VBA‬وصيغتها‬
‫‪0‬‬
‫‪1‬‬
‫‪32‬‬
‫]‪[VBA.] Calendar [=value‬‬
‫‪• Value‬‬
‫‪• VbCalGreg‬‬
‫‪• VbCalHijri‬‬
‫حسني المحتسب‬
‫التقويم‬
‫•‬
‫عند اختيار التقويم الميالدي‬
‫•‬
‫•‬
‫يحدد تبويب التاريخ في اإلعدادات اإلقليمية تحت لوحة التحكم لغة‬
‫أسماء األشهر الميالدية‬
‫عند اختيار التقويم الهجري‬
‫•‬
‫•‬
‫‪33‬‬
‫لغة األشهر العربية دائما عربي‬
‫أسماء األشهر العربية دائما تظهر بالنسق الكامل دون اختصارات‬
‫حسني المحتسب‬
‫التقويم‬
)‫ (التقويم‬calendar ‫الدوال التي تتأثر بخاصية‬






Cdate
DateAdd
DatePart
DateValue
Format
Weekday
Date
DateDiff
DateSerial
Day
Month
Year
‫حسني المحتسب‬
34
‫إنشاء ملفات تعليمات ثنائية اللغة‬
‫•‬
‫•‬
‫يمكن إنشاء ملفات التعليمات بطرق منها‬
‫صيغة )‪Windows Help (Win Help‬‬
‫•‬
‫•‬
‫•‬
‫إنشاء ملفات بصيغة ‪ .rtf‬ثنائية اللغة مع التنسيق الالزم من اليمين إلى‬
‫اليسار‪.‬‬
‫استخدام مجمع التعليمات ‪ Help compiler‬لتجهيز كل ملف‬
‫صيغة ‪HTML‬‬
‫‪35‬‬
‫حسني المحتسب‬
‫تذكير‪ :‬المحاضرات المقترحة‬
‫•‬
‫‪ 15‬درجة – تحتاج إلى استعداد‬
‫•‬
‫اختيار المراجع بعناية‬
‫فهم الموضوع‬
‫تلخيص الموضوع بلغتك الخاصة وترتيبه‬
‫إعداد الملخص في ملف وورد‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫والمتطلبات األخرى الحقا‬
‫إعداد العرض في ملف بوربوينت‬
‫إضافة المراجع في نهاية العرض‬
‫‪36‬‬
‫حسني المحتسب‬
‫مشروع المادة‬
‫للمناقشة‬
‫‪37‬‬
‫حسني المحتسب‬
‫وشكرا‬
‫سبحانك اللهم وبحمدك أشهد أن ال إله‬
‫إال أنت أستغفرك وأتوب إليك‬
‫‪38‬‬
‫حسني المحتسب‬