Public form1 form1= Createobject('Form1') form1.Visible = .T. form1.Show Define Class form1 As Form Top = 164 Left = 78 Height = 267 Width = 823 DoCreate = .T. Caption = "Filling" Name = "Form1" Add Object grid1 As Grid With ; Height = 181, ; Left = 36, ; ReadOnly = .T., ; Top = 72, ; Width = 732, ; Name = "Grid1" Add Object label1 As Label With ; AutoSize = .T., ; Caption = "From Line", ; Height = 17, ; Left = 60, ; Top = 11, ; Width = 58, ; Name = "Label1" Add Object combo1 As ComboBox With ; Height = 24, ; Left = 120, ; Top = 7, ; Width = 48, ; Name = "Combo1" Add Object label2 As Label With ; AutoSize = .T., ; Caption = "Column #", ; Height = 17, ; Left = 174, ; Top = 11, ; Width = 56, ; Name = "Label2" Add Object spinner1 As Spinner With ; Height = 25, ; KeyboardHighValue = 12, ; KeyboardLowValue = 1, ; Left = 240, ; SpinnerHighValue = 12.00, ; SpinnerLowValue = 1.00, ; Top = 7, ; Width = 36, ; Value = 1, ; Name = "Spinner1" Add Object label3 As Label With ; AutoSize = .T., ; Caption = "To Line", ; Height = 17, ; Left = 60, ; Top = 42, ; Width = 43, ; Name = "Label3" Add Object combo2 As ComboBox With ; Height = 24, ; Left = 120, ; Top = 38, ; Width = 48, ; Name = "Combo2" Add Object label4 As Label With ; AutoSize = .T., ; Caption = "Column #", ; Height = 17, ; Left = 174, ; Top = 42, ; Width = 56, ; Name = "Label4" Add Object spinner2 As Spinner With ; Height = 25, ; KeyboardHighValue = 12, ; KeyboardLowValue = 1, ; Left = 240, ; SpinnerHighValue = 12.00, ; SpinnerLowValue = 1.00, ; Top = 38, ; Width = 36, ; Value = 1, ; Name = "Spinner2" Add Object command1 As CommandButton With ; AutoSize = .T., ; Top = 37, ; Left = 285, ; Height = 27, ; Width = 35, ; FontBold = .T., ; Caption = "Fill", ; Name = "Command1" Procedure Activate Select crsrlines Endproc Procedure Load Create Cursor crsrlines (titlehead c(1),head1 c(1),; head2 c(1),head3 c(1),head4 c(1),head5 c(1),head6 c(1),head7 c(1),head8 c(1),; head9 c(1),head10 c(1),head11 c(1),head12 c(1)) Insert Into crsrlines (titlehead) Values ('A') Insert Into crsrlines (titlehead) Values ('B') Insert Into crsrlines (titlehead) Values ('C') Insert Into crsrlines (titlehead) Values ('D') Insert Into crsrlines (titlehead) Values ('E') Insert Into crsrlines (titlehead) Values ('F') Insert Into crsrlines (titlehead) Values ('G') Insert Into crsrlines (titlehead) Values ('H') Go Top In crsrlines Endproc Procedure combo1.Init This.AddItem('A') This.AddItem('B') This.AddItem('C') This.AddItem('D') This.AddItem('E') This.AddItem('F') This.AddItem('G') This.Value='A' Endproc Procedure combo2.Init This.AddItem('A') This.AddItem('B') This.AddItem('C') This.AddItem('D') This.AddItem('E') This.AddItem('F') This.AddItem('G') This.Value='A' Endproc Procedure combo1.InteractiveChange Thisform.SetGridColor(1) Endproc Procedure combo2.InteractiveChange Thisform.SetGridColor(1) Endproc Procedure spinner1.InteractiveChange Thisform.SetGridColor(1) Endproc Procedure spinner2.InteractiveChange Thisform.SetGridColor(1) Endproc Procedure command1.Click Thisform.SetGridColor(2) Acopy(Thisform.aColorIndex,Thisform.aColorBuf) Endproc Procedure SetGridColor Lparameters tnColorIndex Acopy(This.aColorBuf,This.aColorIndex) Local lnRow,lnCol,lnCols lnCol = Min(This.spinner1.Value,This.spinner2.Value) lnCols = Abs(This.spinner1.Value-This.spinner2.Value)+1 For lnRow = Min(This.combo1.ListIndex,This.combo2.ListIndex) To ; MAX(This.combo1.ListIndex,This.combo2.ListIndex) This.aColorIndex[m.lnRow] = ; STUFF(This.aColorIndex[m.lnRow], ; m.lnCol, m.lnCols,Replicate(Padl(m.tnColorIndex,1),m.lnCols)) Endfor This.grid1.Refresh Endproc Procedure Init Local ix This.AddProperty('aColorIndex['+Transform(Reccount('crsrlines'))+']',; REPLICATE('0',Fcount('crsrlines'))) This.AddProperty('aColorBuf['+Transform(Reccount('crsrlines'))+']',; REPLICATE('0',Fcount('crsrlines'))) With This.grid1 For ix = 1 To .ColumnCount .Columns(m.ix).DynamicBackColor = ; "(thisform.GetGridColor(RECNO(),"+Transform(m.ix)+"))" Endfor Endwith Endproc Procedure GetGridColor Lparameters tnRow,tnCol Local lcIndex lcIndex = Substr(This.aColorIndex[m.tnRow],m.tnCol) Do Case Case lcIndex = '1' Return 0x00FFFF Case lcIndex = '2' Return 0xFF0000 Endif Otherwise Return 0xFFFFFF Endcase Endproc EnddefineCetin