الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تلوين (سطر/عمود/خلية) محدد في Stringgrid

بدأه rober في 18 سبتمبر 2008 · 4 رد · 2,412 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

أخواني الكرام أنا أعمل على مشروع احتاج فيه إلى تلوين (سطر/عمود/خلية) معين من stringgrid بشرط معين

جربت الطريقة في المرفق الأول و هي تعمل 100% لكنها طويلة و معقدة قليلاً

جربت الطريقة في المرفق الثاني و فيها مشكلة (بعد تلوين العمود المحدد و تلوين عمود آخر و النقر على إحدى خلايا العمود السابق يعود لون الخلية إلى اللون السابق)

-

-

أرجو أن أجد النصيحة

StringGrid_Cells_Color_1.rar

StringGrid_Cells_Color_2.rar

I'm Away For Sometimes

I'll Finish My Works

Come Back Soon

More Study > More Search > More Try > More Learning > Great Success

#2

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

المثال الثاني هو الأفضل و الأسرع و الأكثر اختصاراً. لكن كانت مشكلته أنك كنت تربط عملية التلوين برقم العمود الذي تم تحديده عن طريق الـ Button و بالتالي فإن الـ StringGrid عندما تقوم بعملية الـ Refresh (أو الـ Paint) فإنها ستستخدم الأوان الافتراضية لأي عمود غير العمود المحدد بقيمة المتغير Col، بما في ذلك الأعمدة التي قمت بتلوينها سابقاً.

لحل المسألة تحتاج إلى تتبع ألوان كل عمود على حدة للمحافظة على الأوان المخصصة. الكود التالي هو تعديل للكود الثاني (StringGrid_Cells_Color_2.rar) المرفق في مشاركتك، و المعذرة إذ لم أجد الوقت الكافي لضغطه و إرساله كمرفق.

  1. implementation
  2.  
  3. {$R *.DFM}
  4.  
  5. type
  6. TMyGridColors = record
  7. BackColor: TColor;
  8. FontColor: TColor;
  9. end;
  10.  
  11. var
  12. ColColors: array of TMyGridColors; // مصفوفة ألوان الأعمدة
  13.  
  14. procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  15. Rect: TRect; State: TGridDrawState);
  16. var
  17. S: string ;
  18. begin
  19. if not (gdFixed in State) then begin // لتجنب تلوبن الصف - أو العمود - الثابت
  20. S := StringGrid1.Cells[ACol, ARow];
  21. StringGrid1.Canvas.Brush.Color := ColColors[ACol].BackColor;
  22. StringGrid1.Canvas.FillRect(Rect);
  23. StringGrid1.Canvas.Font.Color := ColColors[ACol].FontColor;
  24. StringGrid1.Canvas.TextOut(Rect.Left + 2, Rect.Top + 2, S);
  25. end;
  26. end;
  27.  
  28. procedure TForm1.FormCreate(Sender: TObject);
  29. var
  30. Index: Integer;
  31. begin
  32. // تحديد حجم المصفوفة حسب عدد الأعمدة
  33. SetLength(ColColors, StringGrid1.ColCount);
  34. // مبدئياً نضع الألوان الافتراضية في مصفوفة الألوان
  35. for Index := 0 to StringGrid1.ColCount - 1 do begin
  36. ColColors[Index].BackColor := StringGrid1.Color;
  37. ColColors[Index].FontColor := StringGrid1.Font.Color;
  38. end;
  39. end;
  40.  
  41. procedure TForm1.Button1Click(Sender: TObject);
  42. var
  43. I: integer ;
  44. begin
  45. ColColors[StringGrid1.Col].BackColor := clRed;
  46. ColColors[StringGrid1.Col].FontColor := clWhite;
  47. StringGrid1.Refresh; // لإجبار الشبكة على إظهار الأوان الجديدة
  48.  
  49. // for I := 1 to StringGrid1.RowCount - 1 do
  50. // StringGrid1.Cells[stringGrid1.Col, I] := 'AT2000';
  51. end;
  52.  
  53. end.
  54.  

في حالة تلوين صفوف فأعتقد أن الأمر غالباً ما يتعلق بشرط معين، مثلاً تلوين صفوف الأصناف ذات الكميات المنخفضة، أو تلوين سجلات التلاميذ الناجحين بتقدير ممتاز، ... إلخ. و لن تكون في حاجة إلى مصفوفة ألوان لتتبع ألوان الصفوف. و بالتالي سيكون لديك شرط أو شروط لاختبارها و تحديد اللون الذي تريده، و لكن الكود لن يختلف كثيراً.

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

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#3

السلام عليكم

أخي الكريم جزاك الله كل خير على ما تفضلت به الحمد لله المشكلة أنحلت بالطريقة التي ذكرتها

حاولت أن أقوم بعمل التلوين لخلية معينة (ليس صف أو عمود) لكن الأمر لم ينجح فهل من الممكن تساعدني فيها (معلش أزعجتك معي :blush: )

-

-

مشكور سلف :wub:

قمت بوضع المرفق للإستفادة

StringGrid_Cells_Color_1.rar

تم تعديل هذه المشاركة بواسطة rober في 20 سبتمبر 2008 في 15:47

I'm Away For Sometimes

I'll Finish My Works

Come Back Soon

More Study > More Search > More Try > More Learning > Great Success

#4

المثال المرفق يقوم بذلك

كل عام والجميع بألف حير

EX.rar

#5

اخى العزيز

فعلا عمل ممتاز بالنسبه للتعامل مع السترينج جريد

واريد منكم معرفه كيفيه تخزين البيانات الموجوده به فى قاعده بيانات من نوع اكسيس

برمجيا بجمله sql

وشكرا لكم

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…