سؤال عن كيفية جعل DateTimePicker فارغة
#1
السلام عليكم
كيفية جعل DateTimePicker1 فارغة في حال لم أدحل التاريخ و ا ردت أن تظهر فارغة
الرد
#2
و عليكم السلام
تفضل :

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; 
Open Your Source .. Open Your Mind
الرد
#3
السلام عليكم...

(( سبقني أخي 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;

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


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم