اتعامل مع StringGrid و اريد التنقل
#1
السلام عليكم

لدي StringGrid1 و اريد عند الضغظ على زر انتر يتم الانتقال من حقل الى اخر كلما ضغطت على انتر
حليا هي تعمل لما اضغط على tab يتم الانتقال من خلية الى اخرى اريد ان تكون انتر بدلها [صورة: enter.jpg]
+
اذا امكن كيف اجعل StringGrid1 الاسطر غير محددة لانه حاليا ارى انه يجب كتابة كم عدد الاسطر المراد استعمالها 3=rowcount

شكرا مسبقا في ميزان حسناتكم
الرد
#2
في  OnKeyDown اضف كود
كود :
    if (Key =13) then       Key:=VK_Tab;
[-] كل من 1 user says قال شكرا ل Ndagor على المشاركة المفيدة
  • Med-01
الرد
#3
السلام عليكم
اخي عملت لكن يجب ان اضغط مرتين على ENTER حتى تنتقل
لانه يكون في وضع الكتابة اضغظ انتر يتم قفل الكتابة وبعدها حتى اضغط مرتا اخرى على ENTER فيقوم بالانتقال عكس TAB
تقوم بقفل الكتابة وانتقال مباشرتا
شكرا اخي على المساعدة في ميزان حسناتك ان شاء الله
هل لديك فكرة على جمع مجموع عمود ؟ وبارك الله فيك
الرد
#4
حسنا انا اعمل على نسخة قديمة من دالفي و كثير من الاشياء تغيرت Big Grin 
يمكنك تجريب الكود التالي OnKeyDown يعمل على وندوز  يقوم بارسال 2 tab على التوالى


كود :
with StringGrid1 do if (Key =13)and EditorMode then begin if(Col=(ColCount-1))and(Row=(RowCount-1)) then RowCount:= RowCount + 1; Perform(WM_KEYDOWN, VK_Tab,0); Application.ProcessMessages; Key:=VK_Tab; end;
[-] كل من 1 user says قال شكرا ل Ndagor على المشاركة المفيدة
  • Med-01
الرد
#5
شغااااااااااااااااااااااااااااااااال 100% في ميزان حسناتك يارب
بقى سؤال اذ امكن لدي edit1x واريد جمع مجموع عمود رقم واحد متلا ؟

سؤال اخر خارج النطاق لماذا بقيت تستخدم النسخة القديمة من الدلفي ؟
[-] كل من 1 user says قال شكرا ل Med-01 على المشاركة المفيدة
  • Ndagor
الرد
#6
ان كنت تريد حساب العمود الاول  اليا مثل Excel ضع الكود التاالي في  OnSelectCell  فيقوم بتحديث النتيجة اليا و لكن يجب ملء الخانات بقيم صحيحة لمزيد من المعلومات ابجث عن عمل TryStrToFloat StrToFloatDef  StrToFloat لتعلم الفرق بينها

كود :
procedure TForm5.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;   var CanSelect: Boolean); var   I:integer;   Total,t:Double; begin   Edit1.Text:= '-----';   Total:= 0.0;   with StringGrid1 do   for I := FixedRows to RowCount - 1 do     if TryStrToFloat(Cells[FixedCols+0,I],t) then       Total:= Total+t     else       Exit;   Edit1.Text:=FloatToStr(Total); end;

إقتباس :سؤال اخر خارج النطاق لماذا بقيت تستخدم النسخة القديمة من الدلفي ؟
انا اعل على   دلفي 2009 و لايهم انا لست محترف من حين الى اخر و البرمجة بعد 2012 اصبحت سلعة استهلاكية كغيرها من المنتجات و لا احد يرغب ان يتعلم شي يصبح تنتهي صلاحيته بعد سنوات قليلة  ,,, في ذاك الوقت منتديات البرمجة كانت جد نشيطة سؤال مثل هذا كان قد تلقى عشرات الاقتراحات الحال كما اليوم على منصات التواصل الاجتماعي ,,,وهذا لا يقتصر على المنتديات العربية ,,البرمجة الان اصبحت موسوعية ,,,
[-] كل من 1 user says قال شكرا ل Ndagor على المشاركة المفيدة
  • Med-01
الرد
#7
لم يشتغل الكود ؟
الرد
#8
(04-02-2022, 05:29 PM)Med-01 كتب : لم يشتغل الكود ؟
Cells[FixedCols+0,I]
 تاكد من انه العمود الصحيح غير 0
[-] كل من 1 user says قال شكرا ل Ndagor على المشاركة المفيدة
  • Med-01
الرد
#9
<p>نفش الشي لم يشتغل كنت اظن ان الامر سهل&nbsp; Huh<br>شكرا لك اخي الكريم&nbsp;<br>معك حق اختلفت السنوات كتير لم يعد احد مهم بالبرمجة مثل السابق&nbsp;&nbsp;&nbsp;<br><br></p>
الرد
#10
Photo 
[صورة: Sans-titre.png]
انظر الى الصورة
[-] كل من 1 user says قال شكرا ل Ndagor على المشاركة المفيدة
  • Med-01
الرد


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


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