![]() |
|
اتعامل مع StringGrid و اريد التنقل - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : اتعامل مع StringGrid و اريد التنقل (/showthread.php?tid=11795) |
RE: اتعامل مع StringGrid و اريد التنقل - Med-01 - 04-02-2022 فهمت المشكلة المشكل انه كان فيه 10 صفوف يجب ان تملأ كاملة حتى تتم عملية الجمع ؟ يعني هناك مشكلة متلا ماذا لو لدينا خلية واحد او اتنان او تلاتة هل يجب ان املائها كلها ؟ كيف اجعل الكود اذا كانت الخلية فارغة اعطيها قيمة صفر او يتجهلها افضل لانه في الطبعة ستظر 0 بارك الله فيك على المجهود الجبار RE: اتعامل مع StringGrid و اريد التنقل - Ndagor - 04-02-2022 نعم يجب ملؤها جميعها لحساب النتيجة بطريقة امنة و لقد ذكرت ذلك في السابق اما ان كنت تريد تتجاهل الخانات الفارغة فهاذا اسهل كود : procedure TForm5.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
var
I:integer;
Total:Double;
begin
Total:= 0.0;
with StringGrid1 do
for I := FixedRows to RowCount - 1 do
Total:=Total + StrToFloatDef(Cells[FixedCols+0,I],0);
Edit1.Text:=FloatToStr(Total);
end;إقتباس :كيف اجعل الكود اذا كانت الخلية فارغة اعطيها قيمة صفر او يتجهلها افضلكما قلت سابقا ابحث في help عن الفرق بين TryStrToFloat StrToFloatDef StrToFloat ملف https://www.casimages.com/f_get.php?f=gpyBsuK61Xb RE: اتعامل مع StringGrid و اريد التنقل - Med-01 - 04-02-2022 اشغل الحمد لله في ميزان حسناتك بخصوص جمع الاعداد التي تحتوي على فاصلة هل يكفي تغير StrToFloatDef الى StrToFloat ام كل دالة لها طريقة عملها ؟ شكرا اخي الكريم ساعتدني كتيرا جزاك الله خيرا RE: اتعامل مع StringGrid و اريد التنقل - Ndagor - 04-02-2022 نعم كلتا الدالتين للاعداد الحقيقية و التي قد تحتوي فاصلة StrToFloatDef تعمل عندما تكون القراءة غير مهمة في حال ادخال text لا يمثل عدد فترسل القيمة المحددة سلفا عادة تكون الصفر اما StrToFloat فتلزم بادخال عدد و الا فترسل رسالة تحذير و يتوقف البرنامج ,,,هناك نسختين اخريين للاعداد الصحيحة StrToIntDef و StrToInt ,,, ملاحظة مهمة ان اردت اعتماد الكود في حال ادخال قيمة ثم الخروج مباشرة من StringGrid كالضغط على زر button او الكتابة في edit فان الحساب لا يتم,, اذا ينبغي وضع كود الحساب في دالة منفصلة ثم ستعماله على مرتين الاولى فى OnSelectCell و الثانية في OnExit انظر في الملف الذي في الرابط في التعليق السابق... RE: اتعامل مع StringGrid و اريد التنقل - Med-01 - 04-02-2022 <p> <br><br><br>نفس الشيئ لا يقوم بحساب الاعداد التى بها فاصلة </p>
RE: اتعامل مع StringGrid و اريد التنقل - Ndagor - 04-02-2022 نعم انا استعملت الاعداد الصحيحة باستعمال StrToIntDef ....فعلت ذالك لان الاعداد الفاصلة لها مشكل مع حرف الفاصلة اي احيانا هنا من يستعمل . و هناك ,يسمى Decimalseparator و هذه تسبب احيانا مشاكل لهذا فضلت ان اكتب مثال للاعداد بدون فاصلة... هذا ليس مشكل يمكنك اعادة كود السابق للاعداد الفاصلة..انقله الى الدلة Calculate RE: اتعامل مع StringGrid و اريد التنقل - Med-01 - 04-02-2022 وهو كذالك المشكلة يجب عدم استخدام النقطة التي في لوح المفاتيح الموجودة مع الارقام بل استخدام فاصلة الموجودة مع الحروف اريد اظهار الارقام بهذا الشكل FormatFloat('#,##0.00' الموجودة في عمود StringGrid1 ؟ وجدت هذا الشخص قام بها سابقا لكن لم استطع استخلاص الكود https://delphi4arab.net/forum/showthread.php?tid=10827&highlight=StringGrid <p> حاولت تجريب هذا الكود ولم يشتغل هل يمكن المشكلة من النسخة ؟ <br><br> كود : procedure TfrmMain.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if ACol = 3 then // le 3 est un exemple , faut voir le numéro de ta colonne
With TStringGrid(Sender) do
Cells[ACol,ARow] := FormatFloat('0.00', StrToFloat(Cells[ACol,ARow],0.00));
end;RE: اتعامل مع StringGrid و اريد التنقل - Ndagor - 04-02-2022 إقتباس :وهو كذالك المشكلة يجب عدم استخدام النقطة التي في لوح المفاتيح الموجودة مع الارقام بل استخدام فاصلة الموجودة مع الحروف البرنامج يقوم بقراءة الاعدادت اللغة و التاريخ و الارقام في الحاسوب اذا الامر يتعلق بالاعدادات الخارجية و لكن يمكن تغير ذلك بوضع كود في FormCreate كود : Decimalseparator : ='.'بنسبة للفرمات اظن انها تعمل على العمود الرابع وليس الاول حاول تغير الى ACol=0 ..اشك انها ستعمل...غدا ان شاء الله. RE: اتعامل مع StringGrid و اريد التنقل - Med-01 - 04-02-2022 بانسبة لنقطة حللت المشكلة وجدت كود يقوم بتحويل النقطة الى فاصلة عنذ الضغط الحمد لله لم انتبه حتى اخبرتني انت كنت طوال الوقت اكتب نقطة ولا تظهر اي نتيجة مهما عدلت الكود هل يمكنك تجريب كود تحويل العمود الى مئات عندك لم يشتغل عندي اكيد وضعت 0 RE: اتعامل مع StringGrid و اريد التنقل - Ndagor - 05-02-2022 إقتباس :هل يمكنك تجريب كود تحويل العمود الى مئات عندك لم يشتغل عندي اكيد وضعت 0 جرب هذا الكود OnDrawCell ,يعمل عندي كود : var
Value:Double;
begin
with StringGrid1 do
if (ACol=0) then
begin
Value :=StrToFloatDef(Cells[ACol, ARow],0);
Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2,
FormatFloat('0.00',Value));
end; |