تلوين جدول سطر ب سطر او سطرين ب سطرين , على حسب ما هو مكتوب فى Edit
مثلا مكتوب العدد 3 : سيتم تلوين 3 اسطر بالازرق و 3 اسطر بالبنى . مثلا . و هكذا حتى نهاية الجدول .
حلى يوجد فيه بعض الاضافات الغير مطلوبة فى التمرين .
بهذا (الاجراء + الدالة) يمكن تلوين :
(س)سطر ب (ع)سطر .
(س)عمود ب(ع)عمود .
(س)سطر ب (ع)سطر ب عمود .
الدالة :
PHP كود :
Function ColumnAndLine(NmbrLine1,NmbrLine2:Byte;DataSource:TDataSource;Column:TColumn):TColor; var I:Integer; Count,No:Byte; begin I:=1; Result:=0; With DataSource.DataSet do begin Count:=RecordCount; No :=RecNo; end; Case Column.Field.FieldNo Mod 2 Of 1: begin
While I < Count do begin if (No >= I) and (No <= I+NmbrLine1) then Result:= $00E6D9C4; I:=I+(NmbrLine1);
if (No >= I) and (No <= I+NmbrLine2) then 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 I: Integer; Count,No:Byte; Result:TColor; begin I:=1; Result:= 0; Count:=0; No:=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 I < Count do begin if (No >= I) and (No <= I+Lin_Col1) then Result:= $00E6D9C4; I:=I+(Lin_Col1);
if (No >= I) and (No <= I+Lin_Col2) then 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); end; end;
الاستدعاء فى حدث : 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);