لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 01/22/24 في كل الموقع
-
مرحباً جميعاً اشكر جميع القائمين على هذه الدورة القيمة فعلاً لاكن لدي سؤال على الكتب الموجودة عامة و كتاب HTML 5 خاصة أنا حاليا مقدم على خطوة جديدة في عالم البرمجة و هي تطوير واجهة الويب ان شاء الله و على حسب علمي ان لغة ان صح اللفظ HTML هي اللغة المستخدمة في التطوير بجانب للغتي CSS ,JS سؤالي هو ما مدى صعوبة الموضوع بالنسبة للمبتدئ نوعاً ما المدة المطلوبة مني كي انجزها مع مراعاة اختلاف الجهود طبعاً لأن سمعت انها سهله جداً !! و هل مثلا الكتاب الموجود في الدورة مهم فهمه اول قبل التطبيق ام انها يمكن التغاضي عناها و البدء بالعملي فوراً ؟ و اخيراً بالنسبة للدورة تطوير واجهة المستخدم الموجودة على الاكادمية تكفي حقاً لان تكون مطور مبدأي في عالم الويب و شكراً...2 نقاط
-
الحاشية هي عبارة عن ملاحظة توضع في الهامش السفلي للصفحة تُستخدم لأغراض مثل الاستشهاد، الإشارة إلى المراجع، التعليق/التعقيب على جزء معيّن من النص، أو غيره. وغالبًا ما تُستخدم من قبل الكتّاب عند تأليف الكتب. سنتعلم في هذا الدرس كيفية إضافة الحواشي السفلية، كيفية تنسيقها وتغيير ترقيمها، بالإضافة إلى كيفية تحويلها إلى تعليقات ختامية. إضافة حاشية طريقة إضافة الحاشية بسيطة ولا تتعدى خطوتين. نضع مؤشّر الكتابة بعد الكلمة التي نريد إضافة تعقيب/ملاحظة عليها، ثم نذهب إلى تبويب مراجع References> إدراج حاشية سفلية Insert Footnote: إذا كانت هذه أول حاشية نضيفها، سيتم وضع رقم 1 صغير فوق الكلمة، بالإضافة إلى إدراج خط أفقي قصير وتفعيل منطقة الحاشية. نقوم بإدخال النص المرغوب: يمكننا أن نقرأ محتوى الحاشية بمجرد تمرير مؤشر الفأرة فوق رقم الحاشية فوق الكلمة: تنسيق الحاشية وترقيمها نستطيع التحكم في تنسيق نص الحاشية كاللون، الحجم، السمك، وغيرها، باستخدام أوامر التنسيق في تبويب الصفحة الرئيسية Home. لكن بهذه الطريقة سيكون التغيير على نص الحاشية المحدد فقط، وسنضطّر لنسخ التنسيق ولصقه على بقية الحواشي في المستند. كما أنّه لا يمكننا تغيير تنسيق رقم الحاشية فوق الكلمة. لذا من الأفضل تعديل تنسيق نص ورقم الحاشية عن طريق تعديل النمط Style حيث يوجد تنسيق معيّن لكل عنصر من عناصر الصفحة. ننقر على السهم في زاوية مجموعة الأنماط Styles من تبويب الصفحة الرئيسية Home لفتح جزء الأنماط: ننقر على زر Manage Styles: لتغيير تنسيق رقم الحاشية فوق الكلمة، نحدد الخيار Footnote Reference ثم ننقر على زر Modify (يمكن ترتيب قائمة الخيارات أبجديًا Alphabetical لتسهيل العثور على الخيار المطلوب): سنقوم مثلًا بتغيير لون الخط إلى أحمر، ثم ننقر على OK> OK: النتيجة: وبنفس الطريقة يمكننا تغيير تنسيق نص الحاشية، لكن هذه المرّة نحدد الخيار Footnote Text ثم ننقر على Modify: سنقوم مثلًا بتغيير اللون ونوع الخط ثم ننقر على OK> OK: والنتيجة: بإمكاننا أيضًا أن نغيّر طريقة الترقيم، على سبيل المثال يمكن الترقيم بالحروف (أ، ب، ت...)، الرموز (*، #...)، أو الأرقام اللاتينية (i، ii، iii...) بدلًا من الأرقام (1، 2، 3...). ننقر على منطقة الحاشية بزر الفأرة الأيمن ونختار Note Options: نختار تنسيق الترقيم المرغوب ثم ننقر على زر Apply: تحويل الحواشي إلى تعليقات ختامية Endnotes لا تختلف الحاشية عن التعليق الختامي من ناحية الوظيفة، فكلاهما يُستخدمان لإضافة تعقيب أو تعليق على نص ضمن متن الصفحة. الفرق هو أنّ الحواشي تظهر في الهامش السفلي لكل صفحة، أمّا التعليق الختامي فيظهر في نهاية المستند. على سبيل المثال، المستند أدناه مكوّن من صفحتين، وتحتوي الصفحة الأولى على تعليقي حاشية. نلاحظ أنّ الحواشي تظهر في الهامش السفلي للصفحة الأولى، لكن إذا قمنا بتحويل الحاشية إلى تعليق ختامي، سيتم نقلها تحت آخر فقرة في المستند. لتحويل أحد تعليقات الحاشية إلى تعليق ختامي، ننقر عليه بزر الفأرة الأيمن ونختار Convert to Endnote: أمّا إذا رغبنا في تحويل جميع التعليقات في منطقة الحاشية إلى تعليقات ختامية، ننقر على منطقة الحاشية بزر الفأرة الأيمن ونختار Note Options: من مربع الحوار Footnote and Endnote، ننقر على زر Convert ثم OK: ملاحظة: يمكن إضافة التعليقات الختامية بصورة مباشرة من تبويب Reference> Insert Endnote:1 نقطة
-
السلام عليكم هو من الطبيعه انا الواحد يحب اكثر من مجال يعني انا بحب البرمجه جدا والكمبيوتر وكده فا اوقت كده بميل لمجال تاني غير الا انا اصل بتعلمه فا يعني اي حل الموضوع ده وهل من المشكله الي بتوجه الناس البتبدا فيه تعلم البرمجه ان كل ما يسمع عن مجال بيقي عاوز يتعلم المجال ده1 نقطة
-
السلام عليكم أرجو تصحيح هذا الكود حيث أريد إدراج عمود من DataFrame إلى أداة Treeview for index, row in self.A.iterrows(): self.tree.insert('', 'end', text=(row[0],))1 نقطة
-
تلك مشكلة طبيعية، وكل ما عليك هو البدء فقط وستجد نفسك تحدد ما تريده بعد فترة، لكن كثرة التفكير لن تصل بك إلى أي مكان، تستطيع البدء بأساسيات علوم الحاسب وأساسيات البرمجة من خلال لغة سهلة مثل بايثون أو جافاسكريبت. وإن لم تستطيع تحديد المجال تعلم مجال الويب وستستفيد بما تعلمته في المجالات الأخرى وستجد تفصيل أكثر هنا:1 نقطة
-
1 نقطة
-
كود الواجهة التى تعرض فيها البيانات . import tkinter as tk from tkinter import ttk class YourApp(tk.Tk): def __init__(self): super().__init__() self.popup = tk.Menu(self, tearoff=0) self.popup.add_command(label="Copy", command=lambda: self.copy_item()) self.popup.add_command(label="Paste", command=lambda: self.paste_item()) self.tree = ttk.Treeview(self) self.tree.bind("<Button-3>", self.show_popup) def copy_item(self): item = self.tree.selection()[0] self.clipboard_clear() self.clipboard_append(self.tree.item(item, option="values")) def paste_item(self): self.text = self.clipboard_get() self.tree.insert("", "end", values=(self.text,)) def show_popup(self, event): row = self.tree.identify_row(event.y) if row: self.tree.selection_set(row) self.popup.post(event.x_root, event.y_root) # Instantiate and run the application if __name__ == "__main__": app = YourApp() app.mainloop() جرب هذا الكود1 نقطة
-
السلام عليكم ماد لو اريد مطور تطبيقات علي منصات ابل هل يجب انا امتلك جهاز ماك لتطوير تطبيقات علي منصات ابل وهل افضل اتعلم لغة سوفت ام اتعلم فلاتر1 نقطة
-
1 نقطة
-
يجب أن يكون M1 ولا يمكن أقل للأسف، ولكن يمكنه أن يكون ٨ رام ولكنك فى المستقبل ستحتاج إلى حاجة أعلى على حسب مستوى شغلك1 نقطة
-
ايوه بس الماك الجديد غالي اوي هنا فيه مصر واقل حاجه M1 يعني مش هينفع اقل من كده والا من 16 جيجا يعني 8 مش هينفع برد1 نقطة
-
انت فى حاجة جهاز يكون على الأقل M1 ورمات ١٦ جيجا وطبعا نظام التشغيل هو واحد على كل أجهزة ماك وهو Mac os. بالنسبة لأسعار الأجهزة فهى متفاوتة جدا من يوم الى التانى وتختلف باختلاف حالة الجهاز . وانا لا أرجح شرائك جهاز مستعمل ، و لكنه سيؤدى الغرض وتستطيع التعلم والعمل عليه ، لكن الافضل اكيد إن تشترى جهاز جديد .1 نقطة
-
انا ممكن اشتري جهاز ماك مستعمل فا اقل حاجه تكون اي يعني النظام التشغل والرمات وكده يعني عشان اشتغل كا مطور واعتقد هيكون كده افضل يعني هو اقل جهاز مستعمل فيه حدود كام كده1 نقطة
-
عليكم السلام يمكنك تجربة هذا الكود ، وسيعمل معك إن شاء الله :()for index, row in self.A.iterrows self.tree.insert('', 'end', values=tuple(row))1 نقطة
-
def func(): var1 = 'Hola' var2 = 'Hola2' return dict(var1=var1, var2=var2) print(func()) من المثال السابق لو أردت أن أستخدم قيمة من هذه القائمة هل أقوم باستدعائها هكذا A = dict(var1)1 نقطة
-
الموضوع بسيط جدًا، فالوظيفة تعود بقاموس dict بالفعل، فكل ما عليك هو تعريف متغير (كائن) يستقبل القاموس الراجع من هذه الوظيفة، ثم التعامل مع هذا الكائن، عن طريق طلب أي مفتاح key منه. def func(): var1 = 'Hola' var2 = 'Hola2' return dict(var1=var1, var2=var2) # المتغير التالي نوعه قاموس[نص، نص] # dict[str, str] result = func() # يمكنك معرفة أي قيمة عن طريق المفتاح الخاص بها print(result["var1"])1 نقطة
-
نعم هو عبارة عن نظام تشغيل ثانوى يمكنك اضافته على الجهاز لديك بجانب وجود نظام الويندوز او أيا كان النظام الذى تستخدمه وبذلك يكون لديك نظامين تشغيل على الجهاز تستخدم أيا منهما كيفما تشاء ، و تحميله سهل.1 نقطة
-
طيب انا ازي يعني احمل virtual machine وهل ده نظام تشغل يعني وكده وتحميل صعب ام سهل1 نقطة
-
قم أولا بتخزين عائد الدالة في متغير، وليكن re: def func(): var1 = 'Hola' var2 = 'Hola2' return dict(var1=var1, var2=var2) re = func() ثم لقراءة المتغير var1 من القائمة re قم بذلك على النحو التالي: result = dict(re)['var1'] print(result) // Hola1 نقطة
-
السلام عليكم لدي هذه الشفرة def File_dialog(self): self.filename = filedialog.askopenfilename(initialdir="C:\\Users\\Cakow\\PycharmProjects\\Main", title="Open file okay?", filetypes=(("text files", "*.xlsx"),("all files", "*.*"))) return self.filename حيث أن مسار الرابط يحفظ في self.filename def PRINT_FILENAME(self): print(self.filename) قمت بوضع الشفرة الأولى في زر والشفرة الثانية في زر أخر سؤالي الأن ////// عند الضغط على الزر الثاني سوف يحدث خطأ أكيد لأن لم يتم تخزين قيمة في self.filename هل من طريقة أو تصحيح للتأكيد على اختيار الملف أولا حتى لا يحدث خطأ1 نقطة
-
إليك المثال: def func(): var1 = 'Hola' var2 = 'Hola2' return dict(var1=var1, var2=var2) print(func())1 نقطة
-
هل من الممكن أن تقوم الدالة باسترجاع قيمة أكثر من متغير واحد ( return )1 نقطة
-
تستطيع استخدام iOS Simulator، ولكن من الأفضل شراء أيفون مستعمل من أجل إختبار التطبيق عليه، ويمكنك شراء iPhone 6s بتكلفة زهيدة، وإن لم تستطع يمكنك استخدام المحاكيات لإختبار التطبيق لكن العديد من المزايا غير متوفرة بها وتتوفر فقط في الأيفون. بالإضافة إلى أنّ بعض المشاكل تظهر وتحدث فقط في الأجهزة الحقيقية عند إختبار التطبيق. ولكن لا تدع ذلك يثبطك، تعلم واستخدم ما لديك حاليًا وادخر مبلغ لشراء أيفون بتكلفة منخفضة نسبيًا. أما في حال إمتلاكك MacBook تستطيع الاستغناء عن الأيفون وستتمكن من تطوير تطبيقك من خلال محرر Xcode الخاص بآبل. وبالطبع ستحتاج إلى تعلم لغة Swift لكونها اللغة الخاصة بنظام iOS. وبالنسبة لـ Flutter فيوجد طلب عليه حاليًا وكلا المجالين مطلوبان، لكن تعلم Flutter أسهل ومتطلبات دخول المجال أسهل من iOS لذا من الأفضل تعلم ذلك الإطار وستتمكن من تطوير تطبيقات لنظامي الأندرويد وiOS معًا.1 نقطة
-
1 نقطة
-
تلك الأيقونة توفرها اضافة وميزة في VS code تسمى Source Control Checkout وهي طريقة لتمكين المستخدمين من إنشاء فروع branches والتحقق منها checkout مباشرة من داخل vs code باستخدام واجهة رسومية. قم بالضغط على تلك الأيقونة وسيظهر لك مربع الحوار التالي: يمكنك بذلك إنشاء فرع جديد أو تحقق فرع لا غير. أما بالنسبة لعمليات الإدراج add والإيداع commit والدفع push فهي عمليات يجب عليك القيام بها من خلال موجه الأوامر أو من خلال GIT GUI فقط.1 نقطة
-
قم فقط بالتحقق من وجود قيمة في self.filename قبل طباعتها أو استخدامها. أي قبل قبل استدعاء الدالة PRINT_FILENAME. أو قم بتجاوز الدالة في نفسها لتسع هذا الاستخدام: def PRINT_FILENAME(self): if hasattr(self, 'filename') and self.filename: print(self.filename) else: print("لم يتم اختيار أي ملف بعد")1 نقطة
-
يمكنك تحميل virtual machine للجهاز لديك وتقدر من خلاله برمجة تطبيقات ال iOS من الأفضل أن تتعلم swift لأنها اللغة ال native لبرمجة ال iOS ويمكنك بعدها تعلم فلاتر بسهولة جدا.1 نقطة
-
السلام عليكم هو افضل خورزميه هي التكون وقت تنفيذها ثابت وهل ده ممكن يحصل فيه كل سطر من الكود بمعني ان يكون البرنامج كلو كده1 نقطة
-
1 نقطة
-
تقاس كفاءة الخورازمية ب ال time complexity وده يمكن حسابه عن طريق حساب كل جزء فى الكود و من ثم أخذ القيمة الأكبر بينهم وتكون وحدة القياس هى (n)O على سبيل المثال. أما على هل يمكن أن يحصل ده فى كل سطر من الكود فهو نعم يمكن ، فأنت عندما يحتوى الكود الخاص بك على عمليات بسيطة مثل الجمع والطرح وغيرها ، عندها يكون وقت تنفيذ الكود لديك ثابت1 نقطة
-
في البداية لن تحتاج للوراثة غير من التصنيف tk.Tk فقط، هذه الشيفرة كاملة بعد وضعها داخل تصنيف class يسمى app import tkinter as tk from tkinter import ttk class app(tk.Tk): def __init__(self) -> None: super().__init__() // لاحظ أن الكائن التالي يحتاج مكتبة // ttk self.tree = ttk.Treeview(self) self.tree.pack() self.tree.insert("", "end", text="Item 1") self.tree.insert("", "end", text="Item 2") self.tree.insert("", "end", text="Item 3") self.popup = tk.Menu(self.tree, tearoff=0) self.popup.add_command(label="Copy", command=lambda: self.copy_item()) self.popup.add_command(label="Paste", command=lambda: self.paste_item()) self.tree.bind("<Button-3>", self.show_popup) def copy_item(self): item = self.tree.selection()[0] self.clipboard_clear() self.clipboard_append(self.tree.item(item, option="text")) def paste_item(self): text = self.clipboard_get() self.tree.insert("", "end", text=text) def show_popup(self, event): row = self.tree.identify_row(event.y) if row: self.tree.selection_set(row) self.popup.post(event.x_root, event.y_root) form = app() form.mainloop()1 نقطة
-
لماذا يضهر نص #!/usr/bin/php في اعلى الصفحة عند رفع تطبيق laravel على shared host مثل namecheap وكيف يمكنني ازالتهة حاولت البحث في جميع ملفات التطبيق ولم اجد هذا النص1 نقطة
-
أنت أنشات تصنيفًا class وتريد وضع الشيفرات بداخله؟ هل التصنيف يرث من أي تصنيف آخر؟ يرجى مشاركة الأجزاء الأولى من الشيفرات الخاصة بك، بحيث يظهر إنشاء التصنيف والباني __init__1 نقطة
-
السلام عليكم ورحمة الله وبركاته ماهي الدوال المستخدمه لقراءة الملفات بإستخدام numpy؟ وماهي وظيفه كل منها؟1 نقطة
-
@Adnane Kadri هل تقديم المشاريع و التمارين ليس إلا لإثبات أنني قمت بالمشاهدة الكورس و التطبيق العملي مع المدربين؟ كيف سوف أقدم التلخيصات التي لدي و التمارين؟ أريد أن أعرف ذلك من أجل أن أقوم بتنظيم و تجهيز المشاريع بالشكل المناسب لتقديمها و شكرا1 نقطة
-
المقصود هو عملية إجراء تعديلات صغيرة وعشوائية على موقع الوجه أو الإضاءة بهدف زيادة دقة استخراج الميزات، ونقوم بتحديد عدد التشويش باستخدام المعامل num_jitters، مما يعني أن الدالة ستقوم بتطبيق التعديلات العشوائية على موقع الوجه لعدة مرات، حسب القيمة التي يتم تحديدها لهذا المعامل.1 نقطة
-
طالما أنك بحاجة إلى مطور لكتابة كود أو صيانته فستجد ما تريده على منصات العمل الحر مثل مستقل وخمسات.1 نقطة
-
طيب أنا لا أريد تطبيق يكون فيها مثل بزنس مثل توصيل طلبات أو من هذا القبيل ، أنا أريد تطبيق ترفيهي يعني مايحتاج كل شوي صيانة وتطوير بشكل كبير مثل ألعاب، ممكن بس تطوير وصيانة بسيطة ، المشكلة من وين أجيب حق الصيانة للتطبيق ، هل من نفس المواقع الي ذكرتها؟ وشكرًا1 نقطة
-
شكراا لكم الان اتضحت لي الامور ،لدي فقط بعض الاستفسارات : 1: هل تنصحون بدورة cs50 ؟هل يمكنني ترك اساسيات البرمجة الى ما بعد الدورة او دراستها تزامنا مع الدورة؟ 2:وبالنسبة للمدة التي ذكرتها (>>ايجاد فرصة عمل في المانيا مع نهاية هده الدورة وفي نهاية هده السنة<<)، هل ترون انها كافية؟1 نقطة
-
ربما تحتاج استبدال هذه الأسطر self.popup_menu.add_command(label="Cut", command=lambda: self.entry1.event_generate("<<Cut>>")) self.popup_menu.add_command(label="Copy", command=lambda : self.entry1.event_generate("<<Copy>>")) self.popup_menu.add_command(label="Paste", command=lambda: self.entry1.event_generate("<<Paste>>")) بهذه self.popup_menu.add_command(label="Cut", command=lambda: self.cut_item()) self.popup_menu.add_command(label="Copy", command=lambda: self.copy_item()) self.popup_menu.add_command(label="Paste", command=lambda: self.paste_item()) def cut_item(): item = tree.selection()[0] root.clipboard_clear() root.clipboard_append(tree.item(item, option="text")) tree.delete(item) def copy_item(): item = tree.selection()[0] root.clipboard_clear() root.clipboard_append(tree.item(item, option="text")) def paste_item(): text = root.clipboard_get() tree.insert("", "end", text=text) بالتأكيد يمكننا تحسين الكود عن طريق دمج الوظيفتين copy_item و cut_item ووضع معامل لتحديد المطلوب هل هو قص أو نسخ، ولكن فضلت كتابتها بهذا الشكل لتكون الصورة واضحة. مع استخدام def show_popup_menu(self,event): self.popup_menu.post(event.x_root, event.y_root)1 نقطة
-
هو يعني اي التشويش وشكراا جدااا1 نقطة
-
تستطيع البحث عن مبرمجي تطبيقات الهواتف من خلال منصات العمل الحر مثل مستقل وخمسات. وبخصوص فكرة التطبيق أو المشروع، يجب تحديدها قبل البحث عن مبرمج لتنفيذها، وذلك بناءًا على احتياجات السوق الذي تريد توجيه التطبيق إليه، وفكر في التالي: فكر في مشاكلك ومشاكل الآخرين. ما هي الأشياء التي تجدها مزعجة أو صعبة؟ هل هناك شيء يمكن للتكنولوجيا مساعدتك فيه؟ ابحث عن الاتجاهات الحالية، ما هي المجالات التي تنمو بسرعة؟ ما هي الأشياء التي يهتم بها الناس؟ قم بإجراء بحث للسوق وانظر إلى التطبيقات الموجودة بالفعل في السوق وما هي التطبيقات الناجحة؟ ما هي التطبيقات التي لا تعمل بشكل جيد؟ وبإمكانك العثور على الأفكار بعدة طرق، ولكن من المهم أن تكون لديك فكرة واضحة عما تريده من تطبيقك قبل أن تبدأ في البحث عن مطور. وبالطبع يجب إختبار الفكرة ومدى فاعليتها وتقبل السوق لها قبل الشروع في تطوير التطبيق، وتوجد طرق مختلفة لذلك.1 نقطة
-
نعم الوردبريس منصة سهلة الاستخدام مقارنة باستخدام لغات البرمجة لتطوير المواقع, و لكن تكون درجة المرونة المتاحة محدودة نسبيًا، وتكون الإمكانيات المقدمة للتخصيص محدودة بعض الشيء.و قد يكون هناك بطئ في الأداء و سرعة التحميل مقارنة بالمواقع المنشأة باستخدام لغات البرمجة. ففي بعض المشاريع يكون لديك تفضيلات و تخصيصات معقدة لاتستطيع عملها في الوردبريس, فهنا عليك أن تطور الموقع من الصفر باستخدام إحدى أطر العمل المتوفرة, و التي تعطيك المرونة الكاملة لعمل ماتريد.1 نقطة
-
وعليكم السلام ورحمة الله وبركاته. في البداية يجب أن نعرف معلومة هامة جدًا، أن لغات التنصيص مثل HTML, CSS, JavaScript هي اللغات الأساسية التي تعتمد عليها جميع المكتبات مثل البوتستراب Bootstrap، وجميع أدوات صناعة المحتوى CMS Content Management System مثل الووردبريس، وأيضًا مكتبات الصفحة الواحدة مثل React, Vue وذلك لأن المتصفح لا يفهم إلا هذه اللغات. إذن فلماذا تم تطوير هذه المكتبات وأُطر العمل وأدوات صناعة المحتوى؟ - أولاً: لتسهيل إنشاء صفحات الويب - ثانيًا: هذه المكتبات تم اختبارها جيدًا وبالتالي فهي تضمن الكثير من الخصائص مثل توافقها مع معظم المتصفحات، ومعالجة المشاكل الأمنية، والتعامل مع الواجهات البرمجية بسهولة api - ثالثًا: أدوات إدارة المحتوى تمكن الغير مبرمجين من إنشاء محتواهم بأنفهسم مثل المواقع الشخصية، أو المدونات، أو موقع تجاري بسيط - رابعًا: إضافة خصائص التجاوب مع جميع أحجام الشاشات مثل البوتسترات Bootstrap - خامسًا: مكتبات مثل ريأكت React وفيو Vue إضافة إلى إطار العمل أنجولار Angular التي تعمل بنظام الصفحة الواحدة SPA أو Single Page Application لا تحتاج الذهاب للخادم لعرض المحتوى، وإنما تقوم بتحميله مرة واحدة ثم تظهر المحتوى المطلوب مما تم تحميله، وبالتالي سرعة ملحوظة جدًا في الأداء باختصار، لغات التنصيص هي الأدوات الأساسية التي يفهمها المتصفح، أما المكتبات وأدوات صناعة المحتوى لتسهيل المهمة سواء للمبرمجين أو لغير المبرمجين.1 نقطة
-
وعليكم السلام ورحمة الله، المطلوب هو جمع عمودين في DataFrame ولكن مع شرط معين، بمعنى آخر نريد اختبار شرط معين على كل صف والحصول على قيمة بناء على نتيجة هذا الشرط، لذلك نقوم أولًا بإنشاء الوظيفة التي سنطبقها على كل صف، ثم نستخدم الوظيفة apply ونعطيها الوظيفة التي أنشأناها import pandas as pd df = pd.DataFrame({'A': [10, 20, 50, 60, None, 80], 'B': [5, 10, 15, 20, 25, 30]}) # إنشاء وظيفة الاختبار المطلوب تطبيقه على كل صف # يجب ملاحظة أن هذه الوظيفة سيتم استدعاؤها مع كل صف def sum_with_condition(row): # نختبر إذا كانت قيمة الخانة الأولى تحتوي على بيانات وأيضًا قيمتها أكبر من 50 if pd.notnull(row['A']) and row['A'] >= 50: # إذا تحقق الشرط نقوم بجمع الخانة بالعمود الأول مع الخانة بالعمود الثاني return row['A'] + row['B'] else: return 0 # إنشاء عمود جديد وتكون قيمته هو الناتج العائد من الوظيفة # sum_with_condition # التي يتم تطبيقها على كل صف df['C'] = df.apply(sum_with_condition, axis=1) print(df)1 نقطة
-
وعليكم السلام، الاحتفاظ بالملفات والمشاريع مطلوب في المسارات التطبيقية وليس في المسارات النظرية أو تلك التي يغلب عليها الشرح النظري وطرح الأمثلة. ولذلك لا تقلق، لا يزال بإمكانك اجتياز الامتحان. قم بتقديم ما لخصته من دروس على أنها نتاج الشروحات النظرية وسيكون ذلك كافيا. أيضا لا يزال أمامك بعض المسارات الأخرى: الخورازميات وبنى المعطيات أنماط التصميم أساسيات هندسة البرمجيات قم بالاحتفاظ بما ينتج عنها من مشاريع عملية وقم بتقديمها هي الأخرى حين التقدم للامتحان. وفي حال ما طلبت منك التمارين الأخرى، قم بشرح وضعيتك لفريق الامتحان وسيكونون متفهمين لذلك.1 نقطة
-
تُعَد صناعة واجهات الإدخال من أقوى المزايا في إكسل التي تجعلنا قادرين على إدخال بياناتنا من خلال عناصر وأدوات إدخال وقوائم منسدلة، وتنقلها مباشرةً إلى صفحات الإكسل، أي كأننا نُحول الإكسل لبرنامج قواعد بيانات متكامل. تصميم واجهة تفاعلية مع المستخدم User Form يمكننا تصميم واجهة تفاعلية عن طريق محرر الفيجوال بيسك في الإكسل، حيث يمكننا تصميم واجهة إدخال واستعراض بياناتنا من خلاله، وذلك بأن نفتح محرر الشيفرات، ومن القائمة Insert نختار الأمر UserForm، فتظهر لنا النافذة التالية: نلاحظ وجود مجموعة من الأدوات ضمن صندوق الأدوات ToolBox تحتوي على الأزرار وعناصر الإدخال والتحكم التي يمكننا إضافتها إلى مساحة العمل الفارغة بجانبه، والتي يمكننا التحكم بأبعادها من حيث الطول والعرض، وذلك بالسحب من الأطراف. حيث يكون لدينا في الطرف الأيسر للقائمة Properties نافذة الخصائص التي نستطيع من خلالها تعيين كل خصائص الواجهة أو خصائص عناصر الإدخال فيها، وهي قائمة بغاية الأهمية لأننا من خلالها سنُعيّن جميع خيارات العناصر. بعض الأدوات في صندوق ToolBox توجد العديد من الأدوات التي يمكننا التعامل معها لصناعة الواجهات، وتختلف هذه الأدوات بين إصدارات مايكروسوفت أوفيس اختلافًا بسيطًا، ومن أهم هذه الأدوات وأكثرها استخدامًا الأدوات التالية: CheckBox: يتيح هذا العنصر للمستخدم تحديد خيار أو أكثر. ComboBox: يتيح هذا العنصر للمستخدم تحديد عنصر من القائمة المنسدلة. CommandButton: يسمح عنصر التحكم هذا للمستخدم بتنفيذ إجراء معين، حيث يُشغِّل إجراءً فرعيًا منفصلًا. Label: يتيح هذا العنصر عرض النص للمستخدم، ويُستخدم عادةً لعرض نص وصفي بجانب العناصر. ListBox: يسمح عنصر التحكم هذا للمستخدم بالاختيار من قائمة الخيارات الممكنة. +OptionButton: يسمح عنصر التحكم هذا للمستخدم بالاختيار من قائمة الخيارات الممكنة اختيارًا واحدًا فقط. Ref Edi: يسمح عنصر التحكم هذا للمستخدم بتحديد نطاق من الخلايا. TextBox: يتيح هذا العنصر إمكانية عرض النص والسماح للمستخدم بإدخال المعلومات. Frame: يتيح هذا العنصر تجميع العناصر الأخرى معًا. Calendar: يتيح هذا العنصر تضمين تقويم دائم في ورقة عمل. Image: يتيح هذا العنصر إمكانية إضافة رسم أو صورة إلى واجهة المستخدم. SpinButton: يتيح هذا العنصر للمستخدم تحديد قيمة بالنقر فوق زرين، إما لزيادة القيمة أو تقليلها. مثال نريد تصميم واجهة إدخال تحتوي على البيانات الخاصة بموظفي إحدى المنشآت، ونريد مثلًا البيانات التالية: الاسم. الجنس. الوضع الوظيفي. رقم الهاتف. تقييم العمل. الراتب. نرسم عناصر الإدخال ضمن مساحة العمل المخصصة، ويلزمنا في البداية عنصر من النوع TextBox لإدخال الاسم، وعنصر من النوع Label، ونحدد أبعاد كل منهما، حيث يمكننا التحكم بأبعادهما من طول وعرض حسب ما نراه مناسبًا. يمكن تحرير النص الخاص بـ Label عن طريق النقر عليه مرةً واحدةً لتحريره، ثم نحدد النص ونستبدله بما نريد، أو عن طريق القائمة Properties عن طريق الخاصية Caption التي تُعبر عن الاسم الظاهر للمستخدم، ونُغيّر الاسم الذي تحتويه. الآن نرسم العنصر الخاص بالجنس، وبما أن الإجابة تكون أحد اختيارين، فنختار الأداة OptionButton، ونضع لها العنوان بجانبها. ثم نرسم العنصر الخاص بالوضع الوظيفي هنا، ويمكن أن تكون العديد من الخيارات، والإجابة هي أحد هذه الخيارات، لذا الأداة المناسبة هي ComboBox. العنصران رقم الهاتف والراتب عبارة عن TextBox، والعنصر تقييم العمل عبارة عن ComboBox، لذا ننسخ العناصر السابقة مع تغيير عناوينها Label. نُعدل من ترتيب العناصر قليلًا، ونضع كل 3 عناصر في عمود، ونلاحظ أن الأبعاد بالنسبة للعناصر غير متساوية بالكامل، لذا يجب تعديلها لتظهر بنفس الأبعاد وبمظهر أفضل، ولإجراء ذلك نحدد العناصر ذات الشكل المتقارب TextBox وComboBox، ومن القائمة Format الخاصة بتنسيق العناصر نختار الأمر Make Same Size، ومن هنا نجد الخيارات التالية: Width: لجعل العناصر بنفس العرض. Height: لجعل العناصر بنفس الطول. Both: لجعل العناصر بنفس العرض والطول. نختار منها الأمر Both. ثم نُنسق العناصر من خلال محاذاة العناصر في العمود الواحد والسطر الواحد، وذلك من القائمة نفسها Format، حيث نختار الأمر Align، فنحدد العناصر في العمود الواحد ونجعل المحاذاة في المنتصف من الأمر Center، ونحدد عناصر كل صف ونجعل المحاذاة سفليةً من الأمر Bottom، ثم نساوي بين تباعد العناصر، وذلك بتحديد عناصر العمود الواحد، ومن نفس القائمة نختار الأمر vertical Spacing الذي يأخذ القيم التالية: Make Equal: لجعل كل المسافات الأفقية والعمودية بين العناصر بنفس الحجم. Increase: لزيادة المسافة بين العناصر درجةً واحدةً من كل الجوانب. Decrease: لتقليل المسافة بين العناصر درجةً واحدةً من كل الجوانب. Remove: لإزالة المسافة بين العناصر. نختار منها الأمر Make Equal. نُسمي الآن العناصر بأسماء برمجية لاستدعائها عند كتابة الإجراءات واستخدامها فيها، ولإجراء ذلك نحدد العنصر، ومن القائمة Properties عند الخاصية المسماة Name نضع اسمًا مُعبرًا عن العنصر (الاسم اختياري، ولكن يجب ألا يحتوي على فراغات). نسمي العناصر بالأسماء التالية: الاسم = txtName. ذكر = OptMale. أنثى = OptFemale . الوضع الوظيفي = JopStatus. رقم الهاتف = PhoneNumber. تقييم العمل = Rate. الراتب = Salary. إلى الآن لا تحتوي قوائمنا المنسدلة على أية قيم، لذا نحتاج إلى تخصيص قيم مناسبة لها، وذلك باستيراد مجال من الخلايا من صفحة إكسل في ملف العمل، حيث ننشئ ورقة عمل جديدةً، ونضع فيها القيم المحتملة لجميع القوائم التي نعمل عليها ونستوردها لواجهة الإدخال عن طريق الخاصية RowSource في القائمة Properties، ونضع فيها المجال بذكر اسم الصفحة بعده إشارة تعجب (!) بعدها المجال الخاص بهذه القائمة المنسدلة. الآن أصبحت قوائمنا جاهزة، ولكن عند تشغيل الواجهة هنا نلاحظ أنه يمكننا تعبئة عنصر القائمة المنسدلة يدويًا، وذلك الأمر خاطئ، لذا يجب أن نقيد واجهة الإدخال بالمجال الذي استوردناه فقط، وذلك عن طريق الخاصية MatchRequired من القائمة Properties، حيث إن القيمة الافتراضية لها False التي تُمكن المستخدم من إدخال بيانات غير موجودة في القائمة، لذا نضع القيمة True بدلًا منها، وذلك لتقييد إدخالات المستخدم بمحتويات القائمة فقط. نجد في الصورة السابقة أننا نستطيع إدخال قيم من خارج القائمة المنسدلة ضمن العنصر الخاص بالوضع الوظيفي، لأن الإدخال غير مقيد، ولكن لم نستطع إدخال قيمة من خارجها في عنصر التقييم، لأن الإدخالات فيها مقيدة، وأظهر لنا المحرر رسالة خطأ تُفيد بأن القيمة المُدخلة غير مقبولة. لنُصمم الآن عنصر زر يعمل على ترحيل البيانات الموجودة في الوجهة إلى صفحة إكسل والإضافة تراكميًا، أي كلما أضفنا بيانات جديدة وضغطنا زر الإدخال تُرحل البيانات إلى السطر الفارغ أسفل البيانات، ونضع اسمًا برمجيًا له BtnExport. الآن نغير من الاسم البرمجي للواجهة تغييرًا كاملًا، ونضع لها الاسم UserForm، ونغير من الظاهر للمستخدم عن طريق الخاصية Caption. أصبحت واجهة الإدخال جاهزةً للبرمجة وربطها مع خلايا الصفحة التي سنُرحل إليها البيانات، وهو ما سنتعلمه لاحقًا. الخصائص العامة للعناصر في القائمة Properties تحتوي القائمة Properties على خصائص معينة لكل عنصر، حيث تُستخدم لتعيين الميزات أو تحريرها وفقًا لاحتياجات ومتطلبات المستخدم، وللتعديل نضغط على الخاصية ونُعدلها في العمود الأيمن، ومن أهم هذه الخصائص: Name: الاسم البرمجي للعنصر الذي تتعرف عليه الإجراءات عند كتابة الشيفرات البرمجية، ويتكون من 40 حرفًا بحد أقصى. Caption: تُستخدم هذه الخاصية لتحديد الاسم الظاهري للعنصر الذي يظهر في تصميم الواجهة. Height, Width: تُستخدم هذه الخاصية لتعيين ارتفاع وعرض نموذج المستخدم والعناصر الخاصة به، ويمكنك تخصيص الحجم عن طريق إدخاله يدويًا في خاصية الارتفاع والعرض في نافذة الخصائص، وتعيين القيم بالنقاط، ولا يمكن أن تُقبَل القيم السالبة. Value: يكثر استخدام هذه الخاصية مع العنصرين CheckBox وOptionButton، حيث تجعل العنصر مُفعلًا تلقائيًا، أي أنه يكون قيمةً افتراضيةً ويأخذ القيمة 1 أو القيمة True، بمعنى أن العنصر مُفعل افتراضيًا، والقيمة 0 أو القيمة False التي تعني أنه غير مفعل؛ أما في العنصرين TextBox وComboBox، فيمكننا وضع قيمة نصية أو رقمية افتراضية، ولكن يجب الانتباه أن تكون القيمة ضمن خيارات القائمة المنسدلة ومطابقةً للقيمة في صفحة الإكسل تمامًا. AutoSize: تستخدم هذه الخاصية لتحديد ما إذا كان حجم العنصر الذي يعرض المحتوى بالكامل تلقائيًا أم لا، وإذا عُيِّنت هذه الخاصية على القيمة TRUE فسيعمل تلقائيًا على تغيير حجم عنصر التحكم المحدد وفقًا لحجم المحتوى؛ أما بالنسبة للقيمة FALSE (الخيار الافتراضي)، فسيحتفظ بحجم عنصر التحكم كما هو أثناء التصميم. BackColor: تُستخدم هذه الخاصية لتعيين لون الخلفية للعناصر، ولتنفيذ خاصية BackColor يجب التأكد من ضبط نمط الخلفية لخاصية BackStyle على خلفية معتمة. BorderColor: تُستخدم هذه الخاصية لتعيين لون الحدود لـ UserForm والعناصر الخاصة به، ولتطبيق خاصية لون الحدود يجب تعيين الخاصية BorderStyle إلى قيمة غير صفرية. ControlTipText: تُستخدم هذه الخاصية لعرض النص عندما يشير المستخدم ويمرر الماوس فوق العنصر، وهذه الخاصية مفيدة في تثقيف المستخدمين من خلال تقديم نصائح أو تفسيرات حول استخدام العنصر. Font: تحدد هذه الخاصية نوع الخط المستخدم في نموذج المستخدم أو في العناصر، ويمكنك التلاعب بالخط بسهولة عن طريق تحديد اسم الخط الخاص به ونمطه وحجمه. MousePointer: تُستخدم لتحديد الطريقة التي يُعرَض مؤشر الماوس فيها عندما يتحرك فوق العنصر، حيث توجد العديد من الأشكال التي يمكن اختيارها. Visible: تحدد هذه الخاصية إمكانية الرؤية للتحكم في النموذج، فإذا عُيِّن على القيمة المنطقية TRUE (القيمة الافتراضية)، فسيكون العنصر مرئيًا آخر، وإلا بالنسبة للقيمة False فسيختفي العنصر، ويمكن استخدام هذه الخاصية لعرض عنصر مخفي فقط في حالة استيفاء أي شرط، وإلا سيظل العنصر مخفيًا. خاتمة من خلال ما طرحناه نكون استوفينا أهم آليات تصميم الواجهات التي تُعَد من الطرق التي تجعل التعامل مع عمليات إدخال البيانات أكثر متعةً ودقةً وأقل تشتيتًا للمستخدم، حيث سيكون كل تركيزه فقط في بعض الخانات التي يتعامل معها من خلال هذه الواجهة، ولا يتشتت نظره في الكم الهائل من البيانات كما في طريقة الإدخال التقليدية. اقرأ أيضًا المقال السابق: صناعة الدوال الخاصة والتعامل مع الأحداث في مايكروسوفت إكسل VBA استخدام الشيفرات لتنفيذ العمليات الأساسية في مايكروسوفت إكسل VBA استخدام أدوات مايكروسوفت إكسل لتنسيق الخلايا عن طريق الشيفرات VBA الحلقات التكرارية في مايكروسوفت إكسل باستخدام VBA العمليات الشرطية في مايكروسوفت إكسل باستخدام VBA مدخل إلى البرمجة باستخدام VBA في مايكروسوفت إكسل1 نقطة
-
تُستخدم النماذج لعمل الاستطلاعات، الإحصائيات، تجميع البيانات أو غيرها من الأغراض. ومن السهل إنشاء النماذج القابلة للتعبئة باستخدام الأدوات التي يوفّرها ميكروسوفت وورد، سواء كنت تريد توزيع نسخ إلكترونية منها أو طباعتها. سنستعرض في هذا الدرس كيفية إنشاء النماذج من مستند فارغ وتخصيصها، بالإضافة إلى كيفية استخدام القوالب الجاهزة. إنشاء نموذج جديد من مستند فارغ يتكون النموذج من مجموعة عناصر نائبة (أو ماسكات مكان Placeholders) لأنّواع مختلفة من المعلومات، وتسمّى في ميكروسوفت وورد "حقول التحكّم بالمحتوى" Content Control Fields والتي تتضّمن مربعات النصوص text box، مربعات الخيار checkbox، القوائم المنسدلة drop-down list، وغيرها. يمكن الوصول إلى أدوات إنشاء النموذج من تبويب المطور Developer. وبما أنّ هذا التبويب غير مفعّل بشكل افتراضي، يجب اولًا أن نقوم بتفعيله بالذهاب إلى ملف File> خيارات Options: من قسم Customize Ribbon، بالتحديد من مجموعة Customize the Ribbon، نؤشر الخيار Developer ثم ننقر على OK: ستتم إضافته مع مجموعة التبويبات القياسية، ويمكننا أن نبدأ الآن بتصميم النموذج. كمثال بسيط، سنقوم بإنشاء نموذج استطلاع لآراء العملاء حول منتج ما، والعناصر التي سيحتويها موضّحة في الصورة أدناه: سنقوم أولًا بإنشاء جدول لاحتواء عناصر النموذج بشكل منظم، ثم ندخل عناوين حقول التحكّم بالمحتوى التي نريد إضافتها (الاسم، اللقب، العمر...): لإدراج أي عنصر تحكّم بالمحتوى، نضع مؤشر الكتابة في المكان المرغوب، ثم نختار العنصر المناسب من مجموعة Controls في تبويب Developer: في هذا المثال سنقوم بإدراج مربّع نص أمام حقل الاسم، لذا سنضع المؤشر في الحقل الفارغ أمامه ثم نختار أحد خياري مربعات النصوص: Rich Text: نص قابل للتنسيق. Plain Text: نص اعتيادي غير قابل للتنسيق. سنختار Plain Text لأنّنا لا نريد من المستخدمين الذين سيملؤون النموذج بتنسيق النص. بشكل افتراضي، سيحتوي مربّع النص على نص إرشادي لكي يعرف المستخدم ما الذي يجب إدخاله في الحقل: لتحرير النص الإرشادي وتخصيصه، ننقر على زر وضع التصميم Design Mode من مجموعة Controls: بعد ذلك نحذف النص الافتراضي وندخل النص المرغوب وننسّقه من أدوات التنسيق في تبويب الصفحة الرئيسية Home: يمكننا أيضًا أن نتحكّم بخصائص مربّع النص، أو أي حقل آخر للتحكّم بالمحتوى، عن طريق مربّع الحوار Content Control Properties. للقيام بذلك، نحدد مربّع النص ثم ننقر على زر Properties من مجموعة Controls: تختلف الخصائص باختلاف الحقل الذي قمنا بتحديده، فلمربع النص مثلا، يمكننا إضافة عنوان Title يظهر عند النقر على المربع عليه من قبل المستخدم، اختيار مظهر المربع من قائمة Show As، تغيير لون حدود المربع من قائمة Color، أو تقييد تحرير/حذف مربع النص من قسم Locking. سنقوم بتغيير لون إطار المربع إلى الأزرق ونؤشر الخيار Content control cannot be deleted لمنع المستخدمين من حذف هذا الحقل: وللمحافظة على الاتساق في التنسيق والخصائص، سنقوم بنسخ مربع النص ولصقه أمام عناصر النموذج المتبقية التي تحتاج إلى مربع نص ("اللقب"، "المدينة"، "الدولة"، و"اذكر السبب")، مع مراعاة تخصيص النص الإرشادي لكل عنصر: الخطوة التالية هي إنشاء مربعات الخيار لعنصر "الجنس". نضع مؤشر الكتابة أمام حقل "الجنس" ثم ننقر على زر مربع الخيار Check Box من مجموعة Controls: بعد ذلك نكتب نص مربّع الخيار، وهنا يجب ملاحظة أنّه لا يمكن كتابة النص داخل حدود حقل التحكم بالمحتوى، بل يجب أن نضع مؤشر الكتابة خارجًا ثم ندخل النص: نحدّد مربع الخيار ثم ننقر على Properties لتعديل خصائصه. تتوفر لمربعات الخيار نفس خصائص مربعات النص آنفة الذكر، بالإضافة إلى خصائص أخرى مثل رمز المربع المؤشر Checked Symbol ورمز المربع غير المؤشر Unchecked Symbol. سننقر على زر Change لتغيير رمز المربع المؤشر إلى علامة صح بدلا من الرمز الافتراضي علامة ×، ونغيّر لون حدود مربع الخيار ثم ننقر على OK: ننسخ مربع الخيار الذي قمنا بإنشائه ونلصقه أمام حقل "هل توصي الآخرين بشرائه؟" مع مراعات تخصيص نص المربع: الخطوة التالية هي إنشاء القوائم المنسدلة لحقلي "العمر" و"تقييم المنتج". نضع مؤشر الكتابة أمام حقل "العمر" ثم ننقر على زر Drop-Down List من مجموعة Controls: بعد ذلك نحدد حقل التحكم بالمحتوى للقائمة المنسدلة وننقر على Properties لتعديل خصائصه وإضافة عناصر القائمة: سنقوم أولا بتعديل العنصر الأول الافتراضي بتحديده والنقر على زر Modify: بعد ذلك ندخل النص المرغوب في حقل Display name: ثم ننقر على زر Add لإضافة عنصر جديد للقائمة: وندخل اسم العنصر في Display name: نكرر الخطوتين السابقتين حتى ننتهي من إضافة جميع عناصر القائمة المنسدلة، ثم ننقر على OK لإنشاء القائمة المنسدلة: نكرر نفس خطوات إنشاء القائمة المنسدلة لحقل "تقييم المنتج" مع إضافة العناصر المناسبة إلى القائمة. بقي لنا حقل "تاريخ المنتج"، والخيار المناسب له هو إضافة تقويم لمساعدة مستخدم النموذج على اختيار التاريخ. نضع مؤشر الكتابة أمام حقل "تاريخ المنتج" ثم ننقر على زر Date Picker من مجموعة Controls: نفعّل وضع التصميم Design Mode لتغيير النص الإرشادي، ثم ننقر على زر Properties لتعديل خصائص التقويم: يتوفر لحقل التاريخ نفس خصائص الحقول التي ذكرناها سابقًا (العنوان، اللون، المظهر...)، بالإضافة إلى خصائص أخرى كتنسيق التاريخ، نوع التقويم، أو غيرها. نجري التعديلات المرغوبة ثم ننقر على OK لتطبيقها: أصبح نموذجنا الآن جاهزًا للحفظ والإرسال: حماية النموذج يعمل أمر الحماية على منع المستخدمين من إجراء أي تعديل على المستند الذي يحتوي النموذج، ويسمح لهم فقط بإدخال المحتويات في حقول النموذج. لحماية النموذج، ننقر على زر Restrict Editing من تبويب Developer: سيُفتح جزء Restrict Editing، ومنه نؤشر الخيارAllow only this type of editing in the document ، نختار Filling in Forms من القائمة المنسدلة، ثم ننقر على Yes, Start Enforcing Protection: وأخيرًا نقو بإدخال كلمة المرور للحماية مرتين، ثم ننقر على OK. بتطبيق هذه الخطوة ستصبح كل محتويات المستند محمية وغير قابلة للتعديل ما عدا حقول التحكم بالمحتوى للنموذج: لمعرفة المزيد حول حماية المستندات راجع هذا الدرس. استخدام قوالب النماذج الجاهزة إذا لم تكن ترغب في إنشاء النموذج من مستند فارغ، يمكنك استخدام أحد القوالب الجاهزة والتعديل عليها. لاستعراض قوالب النماذج المتوفرة، نذهب إلى File> New، ثم ندخل الكلمة المفتاحية "form" في حقل البحث ونضغط Enter: نتصفح نتائج البحث وننقر على القوالب لمعاينتها، وعند العثور على القالب المناسب ننقر على زر Create: سيتم إنشاء القالب في مستند جديد، ومنه يمكننا أن نبدأ بتعديل حقول التحكّم بالمحتوى الموجودة، أو إضافة حقول جديدة: خاتمة يوفّر وورد خيارات متنوّعة لإنشاء النماذج الإلكترونية القابلة للتعبئة، فبالإضافة إلى حقول التحكم بالمحتوى التي استخدمناها لإنشاء النموذج في المثال المذكور، تتوفر خيارات أخرى كأشرطة التمرير Scroll Bar، أزرار الخيار Option Button، عناصر نائبة للصور، وغيرها. ويمكنك أن تستكشف هذه الخيارات وخصائصها من مجموعة Controls في تبويب Developer.1 نقطة
-
يُستخدم برنامج وورد لتحرير أنواع كثيرة من النصوص وحفظها بشكل مستندات. وفي بعض الأحيان تكون هذه المستندات سريّة أو تحتوي على معلومات حساسة من ناحية الخصوصية ونرغب في حمايتها بطريقة أو بأخرى. ولهذا الغرض يوفّر وورد عدد من مستويات الحماية للمستندات مثل الحماية بكلمة مرور، تقييد عملية التحرير والتنسيق، أو غيرها. في هذا الدرس سنغطي كيفية حماية المستندات بجعلها للقراءة فقط، تقييد عمليات التحرير والتنسيق من قبل الآخرين، تشفير المستند بكلمة مرور، وحذف البيانات الوصفية metadata في المستند. كيفية جعل المستند للقراءة فقط Read Only يمكنك استخدام هذا الخيار إذا كنت ترغب في مشاركة المستند مع الآخرين وتريد تنبيههم إلى أنّ النسخة الحالية هي للقراءة فقط ولا تريد منهم تعديلها. لتحويل المستند إلى النسخة نهائية، أي نسخة القراءة فقط، اذهب إلى ملف File> معلومات Info> حماية المستند Protect Document> وضع علامة كنهائي Mark as Final: انقر على موافق OK> OK في مربعي الحوار التاليين: سيتم تعليم المستند كـ "نهائي"، أي أنّ تحرير وتنقيح المستند مكتمل وأنّ هذه هي النسخة النهائية منه. عند فتح المستند في المرّة القادمة، سواء من قبلك أو من قبل المستخدمين الآخرين، ستظهر أيقونة في شريط الحالة بالإضافة إلى شريط أصفر الجزء العلوي من الصفحة يشيران إلى أنّ المستند بنسخته النهائية: بالرغم من أنّك قمت بتحويل المستند إلى نسخة القراءة فقط، إلّا أنّ المستخدمين الآخرين يمكنهم تحرير المستند وتنسيقه عند تجاهلهم للرسالة في الشريط العلوي والنقر على زر تحرير على أيّة حال Edit Anyway. فإذا رغبت في تقييد المستخدمين أكثر استخدم الخيار التالي. تقييد التنسيق والتحرير يتيح لك هذا الخيار إمكانية التحكم في نوع التغييرات التي تسمح بإجرائها على المستند من قبل المستخدمين الذي ستشاركه معهم. وهذه الطريقة أكثر تقييدًا من الطريقة السابقة. لتخصيص خيارات تقييد التنسيق والتحرير اذهب إلى ملف File> معلومات Info> حماية المستند Protect Document> تقييد التحرير Restrict Editing: سيُفتح جزء Restrict Editing الذي يحتوي على خيارات تقييد التنسيق وتقييد التحرير كل منهما بشكل منفصل. لمنع المستخدمين الآخرين من إجراء التعديلات على تنسيق النص، قم بتأشير الخيار Limit formatting to a selection of styles ثم انقر على Settings: من مربّع الحوار Formatting Restrictions، أبقِ على الخيار Limit formatting to a selection of styles مؤشرًا ثم انتقل إلى قسم Checked styles are currently allowed. من هذا القسم يمكنك إلغاء تأشير الأنماط التي لا تريد السماح باستخدامها في المستند، وبذلك تحدّ من قدرة المستخدمين الآخرين على تعديل الأنماط أو تعديل تنسيقات النصوص بشكل مباشر بواسطة خيارات التنسيق في تبويب الصفحة الرئيسية Home: إذا كنت تريد تقييد التنسيق فقط اكتف بهذه الخطوة ثم انقر على زر Yes, Start Enforcing Protection. أمّا إذا رغبت في تقييد التحرير أيضًا فقم بتأشير الخيار Allow only this type of editing in the document: من القائمة المنسدلة حدّد نوع الترخيص الذي تريد منحه للمستخدمين: Tracked Changes: للسماح بالتغييرات بشرط تعقّبها. Comments: لمنع التغييرات لكن السماح بإضافة تعليقات على المستند. Filling in forms: للسماح بتعبئة النماذج التي تم إنشاؤها في المستند لكن منع أيّة تعديلات أخرى. No Changes (Read Only): لجعل المستند للقراءة فقط ومنع إجراء أي تعديل عليه. بإمكانك استثناء بعض المستخدمين من التقييد والسماح لهم بتحرير المستند بحرية وذلك بالنقر على More Users: بإمكانك استثناء مستخدم آخر على الجهاز الحالي أو على جهاز ثانٍ تابع لنفس النطاق domain، أو أي مستخدم آخر (بإدخال عنوان بريده الإلكتروني) مع الفصل بين أسماء المستخدمين بفاصلة منقوطة: ستتم إضافة عناوين المستخدمين التي قمت بإدخالها في قسم Individuals، قم بتأشير المستخدم الذي تريد استثناءه، أو تجاهل هذه الخطوة وانتقل إلى الخطوة التالية إذا كنت ترغب في تعميم التقييد. الخطوة الأخيرة هي تطبيق الإعدادات والبدء بفرض الحماية بالنقر على زر Yes, Start Enforcing Protection: سيظهر لك مربّع حوار جديد يمكنك من خلال إدخال كلمة مرور لتفعيل الحماية (أو استخدامها لاحقًا إذا رغبت في إلغاء الحماية). أدخل كلمة المرور مرّتين ثم انقر على OK: سيتم تطبيق التقييد على المستخدمين حسب الإعدادات التي اخترتها. ويمكنك دائمًا إلغاء تقييد التنسيق والتحرير للمستند بالذهاب إلى File> Info> Protect Document> Restrict Editing> Stop Protection: ثم قم بإدخال كلمة المرور نفسها التي أدخلتها عند تفعيل الحماية. تشفير المستند (حمايته بكلمة مرور) التشفير هو أقصى مستويات الأمان التي يمكنك تطبيقها على المستند. ويتم بوضع كلمة مرور للمستند بحيث لا يمكن فتحه وقراءته دون إدخالها. ويمكنك استخدام هذا الخيار إذا كان المستند مهم جدًا أو سرّي ولا تريد من المستخدمين الآخرين فتحه وقراءته. لتشفير المستند اذهب إلى ملف File> معلومات Info> حماية المستند Protect Document> التشفير باستخدام كلمة مرور Encrypt with Password: قم بإدخال كلمة المرور مرّتين، وانتبه إلى أنّه لا يمكن استعادتها مجددًا في حال نسيانها، لذا يُفضّل تدوينها في مكان آمن: في المرّة القادمة التي يحاول فيها أحدهم فتح المستند سيُطلب منه إدخال كلمة المرور أولًا لكي يتمكّن من قراءته: حذف البيانات الوصفية Metadata حذف البيانات الوصفية هو أيضًا من الخيارات المفيدة لحماية معلوماتك الخاصّة عند مشاركة المستندات مع الآخرين. وتشتمل هذه البيانات على المعلومات المخفية في المستند أو معلوماتك الشخصية التي يمكن أن تكون مخزونة في المستند نفسه مثل التعليقات والملفات المضمّنة أو في خصائص المستند مثل اسم الكاتب، اسم آخر مستخدم قام بتعديل المستند، أو غيرها. لحذف هذا النوع من البيانات اذهب إلى ملف File> معلومات Info> البحث عن مشاكل Check for Issues> فحص المستند Inspect Document: بعد ذلك قم بتأشير نوع البيانات التي تريد البحث عنها وانقر على زر Inspect: بعد انتهاء الفحص ستظهر أيقونة علامة تعجّب حمراء أمام البيانات التي تم العثور عليها، ويمكنك إزالة البيانات التي لا تريد الكشف عنها عند مشاركة المستند بالنقر على زر Remove All: خاتمة استعرضنا في هذا الدرس طرق حماية مستندات وورد بعدّة مستويات. ويمكنك اختيار الطريقة المناسبة لمستنداتك التي تريد مشاركتها حسب درجة خصوصية أو سرّية المعلومات التي تحتويها. إذا كان لديك أي سؤال حول حماية مستندات وورد تفضّل بطرحه في التعليقات، وسنكون سعداء بمساعدتك1 نقطة
-
يُوفر ميكروسوفت وورد مجموعة متقدمة من الخصائص التي تسهّل عملك على المستندات الكبيرة وتساعدك في توفير الكثير من الوقت. سنشرح في هذا الدرس كيفية استخدام ثلاث من هذه الخصائص، وهي الإشارات المرجعية Bookmarks، التسميات التوضيحية Captions والإسناد الترافقي Cross-reference. الإشارات المرجعية Bookmarks تُستخدم الإشارات المرجعية لتحديد موقع نقطة، فقرة نصيّة، أو عنصر آخر في المستند. ومن ثُم تُستخدم الإشارة المرجعية التي تم إنشاؤها للوصول إلى ذلك الموقع دون الحاجة إلى التمرير عبر كامل المستند للعثور عليه. وهذه الخاصية مفيدة جدا في المستندات الكبيرة وتوفّر الكثير من الوقت عند استخدامها. مثلا، لدينا المستند الموضّح في الصورة أدناه، والذي يحتوي على 23 صفحة: في مثل هذه المستندات الكبيرة (أو أكبر)، وعندما نرغب مثلا في مراجعة فقرة معينة، سيكون من المضيعة للوقت التمرير عبر كل الصفحات للعثور على الفقرة. لكن باستخدام الإشارات المرجعية يمكننا الوصول إلى موقع الفقرة بسهولة جدا. يحتوي مستندنا الموضّح على العديد من الأقسام والأقسام الفرعية، وما نريده هنا هو إنشاء إشارة مرجعية عند كل من هذه الأقسام. نضع المؤشر عند بداية عنوان القسم الرئيسي الأول، نذهب إلى تبويب إدراج Insert ثم ننقر على إشارة مرجعية Bookmark ضمن مجموعة ارتباطات Links: نقوم بإدخال اسم للإشارة المرجعية، ويفضّل أن يكون اسما مختصرا ودلاليا، ثم ننقر على إضافة Add: لن نلاحظ أي تغيير في المستند بعد إضافة الإشارة المرجعية، وهذا طبيعي جدا. ننتقل إلى عنوان القسم (الرئيسي أو الفرعي) التالي، نضع المؤشر أمام العنوان ثم نقوم بإضافة إشارة مرجعية أخرى: نكرر هذه الخطوات على بقية الأقسام. ويجب أن نأخذ في الاعتبار أنّ اسم الإشارة المرجعية يجب أن يكون كلمة واحدة لا تفصلها مسافة. وإذا رغبنا في إدخال اسم يحتوي على كلمتين نستخدم الشارحة التحتية underscore (_) للفصل بينها كما موضّح في الصورة أدناه: يمكننا إضافة العدد الذي نريده من الإشارات المرجعية، علما أنّ إنشاءها لا يقتصر على العناوين فقط، وإنّما يمكن إنشاء إشارات مرجعية لأي كلمة، سطر، أو فقرة. يجب أن ننتبه فقط إلى موضع المؤشر قبل إضافة الإشارة المرجعية. بعد إضافة جميع الإشارات المرجعية، أصبح بإمكاننا الانتقال إلى مواقعها عند الحاجة. هناك عدة طرق للانتقال إلى الإشارات المرجعية. الطريقة الأولى هي بالنقر على عدد صفحات المستند في شريط الحالة لفتح جزء التصفّح: ثم النقر على السهم بجانب حقل البحث واختيار الذهاب إلى Go To: بعد فتح مربع الحوار Find & Replace نحدد إشارة مرجعية Bookmark من تبويب الذهاب إلى Go to، ثم نختار اسم الإشارة المرجعية التي نريد الانتقال إليها من القائمة المنسدلة، وننقر على Go to: الطريقة الثانية، وهي مختصرة جدا، بالضغط على مفتاحي CTRL+G، ليُفتح نفس مربع الحوار Find & Replace، ثم نتبع نفس الخطوات في الطريقة السابقة. والطريقة الأخرى هي بالذهاب إلى تبويب: إدراج Insert > إشارة مرجعية Bookmark من مربع الحوار Bookmark نحدد الإشارة المرجعية التي نريد الانتقال إليها ثم ننقر على Go To: التسميات التوضيحية Captions إذا احتوى المستند الذي تعمل عليه على العديد من الصور، الجداول، الأشكال، إلخ، يمكنك الاستفادة من خاصية التسميات التوضيحية. تتيح هذه الخاصية إضافة اسم توضيحي (رقم +عنوان) للعناصر المذكورة، ويتم تحديث أرقام هذه العناصر تلقائيا كلما قمت بتحديث المستند بإضافة عنصر جديد أو حذفه. بالطبع يمكنك إضافة تسميات توضيحية يدويا باستخدام مربعات النصوص Text Box، لكن استخدام أمر التسميات التوضيحية يمكن أن يوفّر وقتك ويجعلك تستفيد من خاصية الإحالة المرجعية Cross-reference والتي سنأتي إلى شرحها لاحقا في هذا الدرس. كما هو واضح في الصورة الأولى في هذا الدرس، يحتوي المستند الذي نعمل عليه على عدد من المخططات، الصور، والجداول. ولتسمية جميع هذه العناصر سنستخدم أمر التسمية التوضيحية. يجب أولا أن نحدد العنصر الذي نريد إضافة تسمية توضيحية إليه، ثم نذهب إلى تبويب: مراجع References > إدراج تسمية توضيحية Insert Caption في مربع الحوار Caption لدينا عدة خيارات لإنشاء التسمية التوضيحية: في الحقل Caption نقوم بإدخال التسمية التي نريد إدراجها للعنصر. من قائمة التسمية Labels نحدد نوع العنصر، سواء كان صورة، شكل، مخطط، إلخ. من قائمة الموضع Position نحدد موضع إدراج التسمية، فيما أذا كان في أعلى العنصر أو أسفله. نؤشر الخيار Exclude label from caption إذا كنا نرغب في إدراج رقم العنصر فقط بدون نوعه (أي (1) بدلا من صورة (1)). يمكننا تغيير تنسيق الأرقام بالنقر على زر Numbering. بعد تحديد جميع الخيارات المرغوبة ننقر على موافق OK وسيتم إدراج التسمية التوضيحية: يمكننا تخصيص التسمية التوضيحية بتغيير لون النص أو حجمه من تبويب الصفحة الرئيسية Home أو تغيير تعبئة الشكل، نمط النص، وغيرها من التنسيقات من تبويب تنسيق Format السياقي. نقوم بإضافة تسمية توضيحية للعنصر التالي في المستند. لكن هذا العنصر ليس بشكل (Figure) وإنّما صورة (Image): لا يوجد خيار "Image" ضمن قائمة التسمية Label لذلك سننقر على زر تسمية جديدة New Label لإضافتها: ثم نقوم بإضافة عنوان الصورة: توجد هذه الصورة في الصفحة 21 من المستند. لنفترض أننا قمنا بتحديث المستند وإضافة صورة في صفحة ما قبل الصفحة 21: عندما نقوم بإضافة تسمية توضيحية للصورة الجديدة، فإنّ البرنامج يقوم بترقيمها حسب تسلسلها في المستند، وليس حسب أسبقية إدراجها (لاحظ أنّ الصورة الجديدة ستأخذ الرقم 1 بدلا من 2): وسيتم تحديث ترقيم الصورة القديمة تلقائيا ليصبح رقمها 2: وهذا التحديث التلقائي يجنّبك إضاعة الوقت في الحفاظ على أرقام الصورة مرتبة ومتسلسلة، كما يقلل من إمكانية حدوث الأخطاء في الترقيم. الإحالة المرجعية (أو الإسناد الترافقي) Cross-reference تُستخدم الإحالة المرجعية (أو كما يُشار إليها في وورد "الإسناد الترافقي") لتوجيه القارئ مباشرة إلى عنصر ما في المستندات الطويلة. عند إنشاء إسناد ترافقي، يقوم وورد بإدراجها كارتباط تشعبي hyperlink بشكل افتراضي، يمكن النقر على هذا الارتباط للانتقال إلى العنصر المشار إليه. يمكن إنشاء إسناد ترافقي لعدد من العناصر، كالفقرات المرقمة، التسميات التوضيحية، الإشارات المرجعية، الحواشي السفلية footnotes، والعناوين Headings. مثلا، نريد أن نوجه القارئ عند الانتهاء من قراءة الفقرة أدناه إلى الشكل الذي يوضّح ما تتحدث عنه الفقرة: سنقوم بوضع العبارة "Refer to" داخل قوسين، نضع المؤشر بعد كلمة "to" ثم نذهب إلى تبويب إدراج Insert وننقر على أمر إسناد ترافقي Cross-reference: يمكننا الوصول إلى نفس الأمر من تبويب مراجع Reference أيضا، وفي الحالتين سيُفتح نفس مربع الحوار. في مربع الحوار Cross-reference، ومن قائمة Reference type نختار نوع العنصر الذي نرغب في إنشاء إسناد ترافقي له، وهو شكل Figure في حالتنا هذه: ومن قائمة Insert reference to نحدد فيما إذا كنا نريد إدراج كل التسمية التوضيحية Entire caption (أي الرقم والعنوان)، نص التسمية التوضيحية فقط Only caption text، رقم الصفحة Page number، إلخ: نبقي على خيار Insert as hyperlink مؤشرا لكي يكون الإسناد بشكل ارتباط يمكن النقر عليه للانتقال إلى الشكل، ثم نحدد الشكل الذي نريد الإحالة إليه، وهو الشكل 3 في مثالنا، ثم ننقر على إدراج Insert: سيتم إدراج الإسناد الترافقي، وعند تمرير الفأرة فوقه يظهر تلميح يخبرنا أنّه يمكننا الانتقال إلى الشكل بالنقر على النص مع الضغط على مفتاح CTRL: سنقوم بإدراج إسناد ترافقي آخر، للجدول 4، ولكن هذه المرة سنستخدم نص التسمية التوضيحية فقط بدون الرقم: بعد النقر على إدراج، سيتم إنشاء إسناد ترافقي للجدول 4 داخل القوسين، يمكننا النقر عليه للانتقال إلى الجدول الواقع في مكان آخر من هذا المستند:1 نقطة