[تمرين] تلوين DBGrid : (س) سطر ب (س) سطر
#1
السلام عليكم

تلوين جدول سطر ب سطر او سطرين ب سطرين , على حسب ما هو مكتوب فى Edit
مثلا مكتوب العدد 3 : سيتم تلوين 3 اسطر بالازرق و 3 اسطر بالبنى . مثلا . و هكذا حتى نهاية الجدول .

الصورة التالية للتوضيح .

[صورة: zyzoom-e63fe372e3.gif]
#2
السلام عليكم

حلى يوجد فيه بعض الاضافات الغير مطلوبة فى التمرين .
بهذا (الاجراء + الدالة) يمكن تلوين :

(س)سطر ب (ع)سطر .
(س)عمود ب(ع)عمود .
(س)سطر ب (ع)سطر ب عمود .

الدالة :
PHP كود :
Function ColumnAndLine(NmbrLine1,NmbrLine2:Byte;DataSource:TDataSource;Column:TColumn):TColor;
var
 
I:IntegerCount,No:Byte;
begin
 I
:=1Result:=0;
With DataSource.DataSet do
 
begin
    Count
:=RecordCount;
     
No   :=RecNo;
 
end;
Case 
Column.Field.FieldNo Mod 2 Of
1
:
begin

 
While Count do
     
begin
        
if (No >= I) and (No <= I+NmbrLine1then
        Result
:= $00E6D9C4;
        
I:=I+(NmbrLine1);

        if (
No >= I) and (No <= I+NmbrLine2then
        Result
:= $00EAF7FF;
        
I:=I+(NmbrLine2);
     
end;
  
end;
0:
  
Result:= $00E6D9C4
 end
;
end

الاجراء :
PHP كود :
Procedure ColorDBGrid(ColumnOrLine,Lin_Col1,Lin_Col2:Byte;DataSource:TDataSource;Column:TColumn);
var
IIntegerCount,No:ByteResult:TColor;
begin
I
:=1Result:= 0Count:=0No:=0;

Case 
ColumnOrLine of
0
:
 
With DataSource.DataSet do
   
begin
     Count
:=RecordCount;
     
No   :=RecNo;
   
end;
1:
   
begin
     Count
:=TDBGrid(Column.Grid).Columns.Count;
     
No   :=Column.Field.FieldNo;
   
end;
end;

While 
Count do
 
begin
   
if (No >= I) and (No <= I+Lin_Col1then
     Result
:= $00E6D9C4;
     
I:=I+(Lin_Col1);

   if (
No >= I) and (No <= I+Lin_Col2then
     Result
:= $00EAF7FF;
     
I:=I+(Lin_Col2);
 
end;

Case 
ColumnOrLine of
     0
,1:TDBGrid(Column.Grid).Canvas.Brush.Color:=Result;
     
2  :TDBGrid(Column.Grid).Canvas.Brush.Color:=
     
ColumnAndLine(Lin_Col1,Lin_Col2,DataSource,Column);
endend

الاستدعاء فى حدث : DrawColumnCell
نستدعى الاجراء الذى بدوره يستدعى الدالة .
PHP كود :
var
Lin_Col1,Lin_Col2:Byte;
ColumnOrLine:Integer;
begin
  ColumnOrLine
:=StrToInt(Edit3.Text);
  
Lin_Col1:=StrToInt(Edit1.Text);Lin_Col2:=StrToInt(Edit2.Text);

  
ColorDBGrid(ColumnOrLine,Lin_Col1,Lin_Col2,DataSource1,Column);
  
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,ColumnState);
end

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


الملفات المرفقة
.rar   Color.rar (الحجم : 3.59 ك ب / التحميلات : 670)


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


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