IBM Lotus Symphony
|
![]() |
طريقة تطوير Lotus® Symphony™ Spreadsheets باستخدام الوظائف الاضافية التي سيتم توضيحها فيما بعد أصبحت غير مستخدمة. مازالت واجهات التعامل مدعمة للتأكد من التوافق مع الوظائف الاضافية الموجودة حاليا، لكن بالنسبة لبرمجة الوظائف الاضافية Add-Ins الجديدة يجب أن تقوم باستخدام وظائف API الجديدة. |
يمكن تطوير Lotus Symphony Spreadsheets باستخدام الوظائف الاضافية، التي تعد وحدات برامج خارجية تقدم وظائف اضافية للتعامل مع الجداول الحسابية. سيتم عرضها في برنامج المعالجة للوظائف في تصنيف الوظائف الاضافية. اذا أردت برمجة الوظائف الاضافية بنفسك، فانه يمكنك التعرف على الوظائف التي يجب تصديرها باستخدام DLL الخارجية بحيث يمكن الحاق الوظائف الاضافية بنجاح.
يقوم Lotus Symphony بالبحث عن على DLL مناسب في حافظة الوظائف الاضافية التي تم تعريفها. ليتم التعرف عليها بواسطة Lotus Symphony، يجب أن يحتوي DLL على خصائص معينة، كما هو موضح في ما يلي. تسمح لك هذه المعلومات ببرمجة الوظائف الاضافية لبرنامج المعالجة للوظائف الخاص ببرنامج Lotus Symphony Spreadsheets.
تتيح كل مكتبة للوظائف الاضافية Add-In عدة وظائف. يتم استخدام بعض هذه الوظائف لأغراض ادارية. يمكنك تقريبا اختيار أي اسم للوظائف الخاصة بك. لكن، يجب أن تتبع أيضا قواعد معينة بصرف النظر عن امرار المعاملات. تختلف طرق التسمية والاستدعاء الفعلية باختلاف بيئات التشغيل.
يجب تواجد الوظائف الادارية GetFunctionCount و GetFunctionData على الأقل. من خلال استخدامها، يمكن تحديد الوظائف بالاضافة الى أنواع المعاملات والقيم الناتجة. كقيم ناتجة، سيتم دعم الأنواع Double و String. كمعاملات، سيتم دعم مساحات الخانة Double Array، String Array، Cell Array.
سيتم امرار المعاملات باستخدام المراجع. لذلك، تغيير هذه القيم أساسي. لكن، يكون هذا غير مدعم في Lotus Symphony Spreadsheets لعدم امكانية التعرف عليه في الجداول الحسابية.
يمكن اعادة تحميل المكتبات أثناء وقت التنفيذ ويمكن تحليل المحتويات الخاصة بها بواسطة الوظائف الاضافية. بالنسبة لكل وظيفة، تكون المعلومات الخاصة بعدد وأنواع المعاملات وأسماء الوظائف الداخلية والخارجية والرقم الاداري متاحة.
سيتم استدعاء الوظائف تزامنيا وارجاع النتائج الخاصة بها مباشرة. تكون وظائف الوقت الحقيقي (الوظائف المتزامنة) ممكنة أيضا؛ لكن، لن يتم شرحها بالتفصيل لتعقيدها.
الحد الأقصى لعدد المعاملات في الوظائف الاضافية التي تم الحاقها ببرنامج Lotus Symphony Spreadsheets هي 16: قيمة ناتجة واحدة وبحد أقصى 15 معامل لمدخلات الوظيفة.
أنواع البيانات التي سيتم تعريفها هي كما يلي:
نوع البيانات | التعريف |
---|---|
CALLTYPE | تحت Windows: FAR PASCAL (_far _pascal) أخرى: مفترض (الافتراض الخاص بنظام التشغيل) |
USHORT | 2 بايت لرقم صحيح غير مخصص |
DOUBLE | 8 بايت لنسق تابع لبيئة التشغيل |
Paramtype | تابع لبيئة التشغيل مثل int PTR_DOUBLE =0 تشير الى double PTR_STRING =1 تشير الى string منتهي بأصفار PTR_DOUBLE_ARR =2 يشير الى double array PTR_STRING_ARR =3 يشير الى string array PTR_CELL_ARR =4 يشير الى cell array NONE =5 |
ستجد وصف لهذه الوظائف لهذه الوظائف، التي تم استدعائها في DLL الخارجي.
بالنسبة لكل وظائف DLL، سيتم تطبيق ما يلي:
void CALLTYPE fn(out, in1, in2, ...)
Output: القيمة الناتجة
Input: أي عدد من الأنواع (double*، char*، double*، char**، Cell area)، حيث Cell area هو array بالأنواع double array، string array، cell array.
تقوم بارجاع عدد الوظائف بدون الوظائف الادارية لمعامل المرجع. يكون لكل وظيفة رقم متفرد بين 0 و nCount-1. سيتم استخدام هذا الرقم لوظائف GetFunctionData و GetParameterDescription فيما بعد.
الصيغة
void CALLTYPE GetFunctionCount(USHORT& nCount)
المعامل
USHORT &nCount:
Output: هو مرجع للمتغير حيث يفترض أنه يحتوي على عدد وظائف Add-In. على سبيل المثال: اذا كانت الوظائف الاضافية تتيح 5 وظائف لبرنامج Lotus Symphony Spreadsheets، سيكون nCount=5.
يحدد كل المعلومات الهامة الخاصة بالوظيفة الاضافية Add-In.
الصيغة
void CALLTYPE GetFunctionData(USHORT& nNo, char* pFuncName, USHORT& nParamCount, Paramtype* peType, char* pInternalName)
المعامل
USHORT& nNo:
Input: رقم للوظيفة بين 0 و nCount-1، ضمنيا.
char* pFuncName:
المخرجات: اسم الوظيفة كما يتم عرضه للمبرمج، كما تم تسميته في DLL. لا يقوم هذا الاسم بتحديد الاسم المستخدم في برنامج المعالجة للوظائف.
USHORT& nParamCount:
Output: عدد المعاملات في وظائف AddIn. يجب أن يكون هذا الرقم أكبر من 0، لوجود قيمة ناتجة دائما؛ الحد الأقصى للقيمة هو 16.
Paramtype* peType:
Output: يشير الى array مكون من 16 متغير من النوع Paramtype. سيتم ملء ادخالات nParamCount الأولى بنوع للمعامل ملائم.
char* pInternalName:
المخرجات: اسم الوظيفة كما تم عرضه للمستخدم، وكما يتم عرضه في برنامج المعالجة للوظائف. قد يحتوي على حروف لنطق الحرف.
المعاملات pFuncName و pInternalName هي مصفوفات حرفية، يتم تطبيقها بالحجم 256 في Lotus Symphony Spreadsheets.
تتيح شرح مختصر لوظائف Add-In والمعاملات الخاصة بها. كاختيار، يمكن استخدام هذه الوظيفة لعرض الوظيفة ووصف المعامل في برنامج المعالجة للوظائف.
الصيغة
void CALLTYPE GetParameterDescription(USHORT& nNo, USHORT& nParam, char* pName, char* pDesc)
المعامل
USHORT& nNo:
Input: عدد الوظائف في المكتبة؛ بين 0 و nCount-1.
USHORT& nParam:
Input: يشير الى المعامل الذي تم اتاحته بالوصف؛ تبدأ المعاملات بالقيمة 1. اذا كان nParam هو 0، يفترض أن يكون الوصف نفسه في pDesc؛ في هذه الحالية، لا يكون هناك أي معنى الى pName.
char* pName:
المخرجات: يأخذ اسم أو نوع المعامل، على سبيل المثال، الكلمة "Number" أو "String" أو "Date"، وهكذا. وسيتم تطبيقه في Lotus Symphony Spreadsheets على أنه char[256].
char* pDesc:
المخرجات: يأخذ وصف المعامل، على سبيل المثال، "Value، التي سيتم احتساب النظام عنده. وسيتم تطبيقه في Lotus Symphony Spreadsheets على أنه char[256].
pName و pDesc هي مصفوفات حرفية؛ سيتم تطبيقها في Lotus Symphony Spreadsheets بالحجم 256. برجاء ملاحظة أن المساحة المتاحة في برنامج المعالجة للوظائف محدودة ولا يمكن استخدام 256 حرف بالكامل.
تحتوي الجداول التالي على معلومات خاصة بهياكل البيانات التي يجب اتاحتها بواسطة وحدة برامج خارجية لكي يتم امرار مساحات الخانة. يقوم برنامج Lotus Symphony Spreadsheets بالتمييز بين الثلاثة مصفوفات المختلفة، بناءا على نوع البيانات.
كمعامل، يمكن امرار نطاق للخانة ذو قيم من النوع Number/Double. تم تعريف المصفوفة المزدوجة في Lotus Symphony Spreadsheets كما يلي:
مقدار الازاحة | الاسم | الوصف |
---|---|---|
0 | Col1 | رقم العمود الموجود بالركن العلوي الأيمن من مساحة الخانة؛ يبدأ الترقيم عند 0. |
2 | Row1 | رقم الصف الموجود بالركن العلوي الأيمن لمساحة الخانة؛ يبدأ الترقيم عند 0. |
4 | Tab1 | رقم الجدول الموجود بالركن العلوي الأيمن من مساحة الخانة؛ يبدأ الترقيم عند 0. |
6 | Col2 | رقم العمود الموجود بالركن السفلي الأيسر لمساحة الخانة؛ يبدأ الترقيم عند 0. |
8 | Row2 | رقم الصف الموجود بالركن السفلي الأيسر لمساحة الخانة؛ يبدأ الترقيم عند 0. |
10 | Tab2 | رقم الجدول الموجود بالركن السفلي الأيسر لمساحة الخانة؛ يبدأ الترقيم عند 0. |
12 | عدد | عدد العناصر التالية. لن يتم عد أو امرار الخانات الفارغة. |
14 | عمود | رقم العمود للعنصر؛ يبدأ الترقيم عند 0. |
16 | صف | رقم صف العنصر؛ يبدأ الترقيم عند 0. |
18 | Tab | رقم جدول العنصر؛ يبدأ الترقيم عند 0. |
20 | خطأ | رقم الخطأ، حيث تم تعريف القيمة 0 على أنه "لا يوجد خطأ". اذا كانت العنصر من خانة معادلة، فانه سيتم تحديد قيمة الخطأ بواسطة المعادلة. |
22 | القيمة | 8 بايت لمتغير IEEE من النوع double/floating point |
30 | ... | العنصر التالي |
نطاق الخانة، الذي يحتوي على قيم من نوع البيانات Text ويتم امرارها على أنها string array. تم تعريف مصفوفة مجموعة الحروف التي توجد في Lotus Symphony Lotus Symphony Spreadsheets كما يلي:
مقدار الازاحة | الاسم | الوصف |
---|---|---|
0 | Col1 | رقم العمود الموجود بالركن العلوي الأيمن من مساحة الخانة؛ يبدأ الترقيم عند 0. |
2 | Row1 | رقم الصف الموجود بالركن العلوي الأيمن لمساحة الخانة؛ يبدأ الترقيم عند 0. |
4 | Tab1 | رقم الجدول الموجود بالركن العلوي الأيمن من مساحة الخانة؛ يبدأ الترقيم عند 0. |
6 | Col2 | رقم العمود الموجود بالركن السفلي الأيسر لمساحة الخانة؛ يبدأ الترقيم عند 0. |
8 | Row2 | رقم الصف الموجود بالركن السفلي الأيسر لمساحة الخانة؛ يبدأ الترقيم عند 0. |
10 | Tab2 | رقم الجدول الموجود بالركن السفلي الأيسر لمساحة الخانة؛ يبدأ الترقيم عند 0. |
12 | عدد | عدد العناصر التالية. لن يتم عد أو امرار الخانات الفارغة. |
14 | عمود | رقم العمود للعنصر؛ يبدأ الترقيم عند 0. |
16 | صف | رقم صف العنصر؛ يبدأ الترقيم عند 0. |
18 | Tab | رقم جدول العنصر؛ يبدأ الترقيم عند 0. |
20 | خطأ | رقم الخطأ، حيث تم تعريف القيمة 0 على أنه "لا يوجد خطأ". اذا كانت العنصر من خانة معادلة، فانه سيتم تحديد قيمة الخطأ بواسطة المعادلة. |
22 | Len | طول العبارة التالية، متضمنا zero byte الاقفال. اذا كان طول zero byte الاقفال يساوي قيمة فردية، سيتم اضافة zero byte الثاني الى العبارة بحيث يتم الحصول على قيمة زوجية. لذلك، سيتم احتساب Len باستخدام ((StrLen+2)&~1). |
24 | مجموعة حروف | مجموعة حروف باقفال بدون بايت |
24+Len | ... | العنصر التالي |
يتم استخدام Cell arrays لاستدعاء نطاقات الخانة التي تحتوي على نص بالاضافة الى أرقام. تم تعريف متجه خانات في Lotus Symphony Spreadsheets كما يلي:
مقدار الازاحة | الاسم | الوصف |
---|---|---|
0 | Col1 | رقم العمود الموجود بالركن العلوي الأيمن من مساحة الخانة؛ يبدأ الترقيم عند 0. |
2 | Row1 | رقم الصف الموجود بالركن العلوي الأيمن لمساحة الخانة؛ يبدأ الترقيم عند 0. |
4 | Tab1 | رقم الجدول الموجود بالركن العلوي الأيمن من مساحة الخانة؛ يبدأ الترقيم عند 0. |
6 | Col2 | رقم العمود الموجود بالركن السفلي الأيسر لمساحة الخانة؛ يبدأ الترقيم عند 0. |
8 | Row2 | رقم الصف الموجود بالركن السفلي الأيسر لمساحة الخانة؛ يبدأ الترقيم عند 0. |
10 | Tab2 | رقم الجدول الموجود بالركن السفلي الأيسر لمساحة الخانة؛ يبدأ الترقيم عند 0. |
12 | عدد | عدد العناصر التالية. لن يتم عد أو امرار الخانات الفارغة. |
14 | عمود | رقم عمود العنصر. يبدأ الترقيم عند 0. |
16 | صف | رقم صف العنصر؛ يبدأ الترقيم عند 0. |
18 | Tab | رقم جدول العنصر؛ يبدأ الترقيم عند 0. |
20 | خطأ | رقم الخطأ، حيث تم تعريف القيمة 0 على أنه "لا يوجد خطأ". اذا كانت العنصر من خانة معادلة، فانه سيتم تحديد قيمة الخطأ بواسطة المعادلة. |
22 | النوع | نوع محتويات الخانة، 0 == Double، 1 == String |
24 | Value أو Len | اذا كان type == 0: 8 بايت لمتغير IEEE من النوع double/floating point اذا كان type == 1: طول العبارة التالية، متضمنا zero byte الاقفال. اذا كان طول zero byte الاقفال يساوي قيمة فردية، سيتم اضافة zero byte الثاني الى العبارة بحيث يتم الحصول على قيمة زوجية. لذلك، سيتم احتساب Len باستخدام ((StrLen+2)&~1). |
26 اذا كان type==1 | مجموعة حروف | اذا كان type == 1: String ذو zero byte الاقفال |
32 أو 26+Len | ... | العنصر التالي |