delphi4arab منتديات دلفي للعرب
سؤال عن كيفية جعل DateTimePicker فارغة - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : سؤال عن كيفية جعل DateTimePicker فارغة (/showthread.php?tid=5587)



سؤال عن كيفية جعل DateTimePicker فارغة - bouazza8 - 25-09-2013

السلام عليكم
كيفية جعل DateTimePicker1 فارغة في حال لم أدحل التاريخ و ا ردت أن تظهر فارغة


سؤال عن كيفية جعل DateTimePicker فارغة - SMP3 - 25-09-2013

و عليكم السلام
تفضل :

PHP كود :
procedure TForm3.FormCreate(Sender: TObject);
begin
  DateTimePicker1
.Format := ' ';
end;

procedure TForm3.DateTimePicker1CloseUp(Sender: TObject);
begin
  
if Sender is TDateTimePicker then
    TDateTimePicker
(Sender).Format := '';
end; 



سؤال عن كيفية جعل DateTimePicker فارغة - Najy Ibraheem - 25-09-2013

السلام عليكم...

(( سبقني أخي SMP3 بينما كنت أجهز الرد ==> طريقته أسهل !! ))

المكون TDateTimePicker لا يدعم ذلك.

يمكنك استعمال الخاصية ShowCheckBox لإظهار CheckBox داخل الـ DateTimePicker. عندما تظهر علامة صح داخل الـ CheckBox فإن الـ DateTimePicker يظهر بشكل عادي، و عند مسح علامة الصح فإن نص ال DateTimePicker يظهر باهتاً (كأنه معطل - و هو غير معطل). و يمكنك في الكود أن تفحص قيمة الخاصية Checked فإذا وجدتها False فإنه يمكنك اعتبار الـ DateTimePicker فارغاً.

أنا شخصياً لا أحب هذه الطريقة، و ألجأ أحياناً إلى الخدعة التالية:

1. أضف مربع نص (TEdit). لا يهم مكانه و لا حجمه، و لكن امسح النص من الخاصية Text و اضبط الخاصية ReadOnly على True، و الخاصية Visible على False.

2. في إجراء الحدث OnCreate للـ Form اكتب السطر التالي (بفرض أن اسمي المكونين هما DateTimePicker1 و Edit1):
كود :
Edit1.SetBounds(DateTimePicker1.Left, DateTimePicker1.Top, DateTimePicker1.Width, DateTimePicker1.Height);

3. في إجراء الحدث OnKeyDown للـ DateTimePicker1 اكتب الكود التالي:
كود :
if Key = VK_DELETE then begin Edit1.Show; Edit1.SetFocus; DateTimePicker1.Hide; end;

4. في إجراء الحدث OnDblClick للـ Edi1 اكتب الكود التالي:
كود :
DateTimePicker1.Show; DateTimePicker1.SetFocus; Edit1.Hide;

* الآن عند تشغيل البرنامج، و عندما يكون المؤشر داخل الـ DateTimePicker اضغط المفتاح Delete و سيظهر للمستخدم أنه تم مسح التاريخ (حيث سيظهر الـ Edit1 و يختفي الـ DateTimePicker)، و عند النقر المزدوج (Double Click) داخل الـ Edit1 سيظهر الـ DateTimePicker1 مرة أخرى.

* ربما يكون من المفيد إظهار الـ DateTimePicker بلوحة المفاتيح أيضاً. الكود التالي مثلاً يعمل على إظهاره عند ضغط المفتاح Insert (و يمكنك طبعاً استعمال أي بديل آخر) - ضع الكود في الحدث OnKeyDown للـ Edit1 :
كود :
if Key = VK_INSERT then begin DateTimePicker1.Show; DateTimePicker1.SetFocus; Edit1.Hide; end;

نرجو الاستفادة و السلام.