1 (edited by carlo_dj 2017-01-01 18:20:51)

Topic: matched cell value between 2 table grids

Hi Dmitry' Happy New Year!

I’ve got 3 tables, (members, drawsessions and drawnumbers), Belgium lotto consists of 45 numbers, each member plays with 10 chosen numbers. The winner of that round is the person that have the first 10 numbers matched between the table grids (tgDrawings and tgMembers).

How to validate and change cell or font color for the matched values (equal numbers) between the 2 table grids (tgDrawings and tgMembers)?

example.
tgDrawings value num: 7,18,19,21,27,31.

tgMembers: correct matched value numbers are: 7,18,27.

I want to change the color of the matching cells(Correct values) and only those cells.
I've only been able to change a whole row of color.
So how to change cell color for the matched cell values 7,18 and 27 in tgMembers?

Project lotto club is send to DropBox.

Thanks in advance, Carlo

#Post has been corrected

Re: matched cell value between 2 table grids

Hello.


Unfortunately I can help you only with specific question.

Dmitry.

Re: matched cell value between 2 table grids

I would like to color the cells with matching values and only those cells.

Problem: I want to ONLY color the cell with matching values, not a whole row/column. So it should be relative.

The problem should be illustrated in the image that i sent you via dropbox.

Thanks

https://www.dropbox.com/s/k7utomusbhqum … e.PNG?dl=0

Re: matched cell value between 2 table grids

You need script like this

procedure Form1_GridEmployees_OnChange (Sender: string);
var
   i,c: integer;
   k,q: integer;
begin
     q := Form1.GridEmployees.Columns.Count-1;
     c := Form1.GridEmployees.RowCount - 1;
     for i := 0 to c do
     begin
         for k := 0 to q do
         begin
             if Form1.GridEmployees.Cells[k,i] = '6' then
                 Form1.GridEmployees.Cell[k,i].Color := clYellow;
         end;
     end;
end;

But I don't know where you store value of numbers.

Dmitry.

Re: matched cell value between 2 table grids

Thanks for your reply,

Your script is ok, but not for my problem,
Maybe insert a function: Styling a Cell based on a value (via the OnGetValue function call), The challenge is coloring the cell contents of matched numbers between two tables in random cells.
thanks

Re: matched cell value between 2 table grids

Hi to all fans,

Problem with correct syntax.

Error Incompatible types (AND)?

How to fix this problem,  Thanks

procedure frmMain_tgDrawings_OnChange (Sender: string);
begin
            TableGrid_OnChange(frmMain.tgDrawings);
end;

procedure frmMain_tgMembers_OnChange (Sender: string);
begin
            TableGrid_OnChange(frmMain.tgMembers);
end;

procedure TableGrid_OnChange (Sender: TdbStringGridEx);
var
   i,c: integer;
   k,q: integer;
begin
     q := frmMain.tgMembers.Columns.Count-1;
     c := frmMain.tgMembers.RowCount - 1;

     q := frmMain.tgDrawings.Columns.Count-1;
     c := frmMain.tgDrawings.RowCount - 1;

     for i := 0 to c do
     begin
         for k := 0 to q do
         begin
             if frmMain.tgDrawings.Cells[k,i] = '1' and frmMain.tgMembers.Cells[k,i] = '1' then frmMain.tgMembers.Cell[k,i].Color := clGreen;
             if frmMain.tgDrawings.Cells[k,i] = '2' and frmMain.tgMembers.Cells[k,i] = '2' then frmMain.tgMembers.Cell[k,i].Color := clGreen;
             if frmMain.tgDrawings.Cells[k,i] = '3' and frmMain.tgMembers.Cells[k,i] = '3' then frmMain.tgMembers.Cell[k,i].Color := clGreen;
             if frmMain.tgDrawings.Cells[k,i] = '4' and frmMain.tgMembers.Cells[k,i] = '4' then frmMain.tgMembers.Cell[k,i].Color := clGreen;
             if frmMain.tgDrawings.Cells[k,i] = '5' and frmMain.tgMembers.Cells[k,i] = '5' then frmMain.tgMembers.Cell[k,i].Color := clGreen;
             if frmMain.tgDrawings.Cells[k,i] = '6' and frmMain.tgMembers.Cells[k,i] = '6' then frmMain.tgMembers.Cell[k,i].Color := clGreen;
             if frmMain.tgDrawings.Cells[k,i] = '7' and frmMain.tgMembers.Cells[k,i] = '7' then frmMain.tgMembers.Cell[k,i].Color := clGreen;
             if frmMain.tgDrawings.Cells[k,i] = '8' and frmMain.tgMembers.Cells[k,i] = '8' then frmMain.tgMembers.Cell[k,i].Color := clGreen;
             if frmMain.tgDrawings.Cells[k,i] = '9' and frmMain.tgMembers.Cells[k,i] = '9' then frmMain.tgMembers.Cell[k,i].Color := clGreen;
             if frmMain.tgDrawings.Cells[k,i] = '10' and frmMain.tgMembers.Cells[k,i] = '10' then frmMain.tgMembers.Cell[k,i].Color := clGreen;

         end;
     end;
end;

7 (edited by ehwagner 2017-01-19 00:51:51)

Re: matched cell value between 2 table grids

You need parentheses around the equations on each side of the "and". See below for fix.

         begin
             if (frmMain.tgDrawings.Cells[k,i] = '1') and (frmMain.tgMembers.Cells[k,i] = '1') then frmMain.tgMembers.Cell[k,i].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '2') and (frmMain.tgMembers.Cells[k,i] = '2') then frmMain.tgMembers.Cell[k,i].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '3') and (frmMain.tgMembers.Cells[k,i] = '3') then frmMain.tgMembers.Cell[k,i].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '4') and (frmMain.tgMembers.Cells[k,i] = '4') then frmMain.tgMembers.Cell[k,i].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '5') and (frmMain.tgMembers.Cells[k,i] = '5') then frmMain.tgMembers.Cell[k,i].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '6') and (frmMain.tgMembers.Cells[k,i] = '6') then frmMain.tgMembers.Cell[k,i].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '7') and (frmMain.tgMembers.Cells[k,i] = '7') then frmMain.tgMembers.Cell[k,i].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '8') and (frmMain.tgMembers.Cells[k,i] = '8') then frmMain.tgMembers.Cell[k,i].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '9') and (frmMain.tgMembers.Cells[k,i] = '9') then frmMain.tgMembers.Cell[k,i].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '10') and (frmMain.tgMembers.Cells[k,i] = '10') then frmMain.tgMembers.Cell[k,i].Color := clGreen;
         end

Re: matched cell value between 2 table grids

Thanks for help me Ehwagner,

Have a nice day, Carlo

9 (edited by carlo_dj 2017-01-22 07:27:05)

Re: matched cell value between 2 table grids

Hi,

How to tune loading time of this script, I think the loop function is not correct.

Drop box link:  https://www.dropbox.com/s/cnlormp1eovcr … b.zip?dl=0


procedure frmMain_tgDrawings_OnChange (Sender: string);
begin
            TableGrid_OnChange(frmMain.tgDrawings);
            frmMain.tgMembers.dbUpdate;
             // UpdateDatabase('members');
end;

procedure frmMain_tgMembers_OnChange (Sender: string);
begin
            TableGrid_OnChange(frmMain.tgMembers);

end;

procedure TableGrid_OnChange (Sender: TdbStringGridEx);
var
   i,c: integer;
   k,q: integer;
   ii,cc: integer;
   kk,qq: integer;

begin
         frmMain.tgMembers.SelectedRow := 0;
         frmMain.tgMembers.ScrollToRow(0);
         frmMain.tgDrawings.SelectedRow := 0;
         frmMain.tgDrawings.ScrollToRow(0);

           frmMain.tgMembers.BeginUpdate;

     qq := frmMain.tgMembers.Columns.Count-1;
     cc := frmMain.tgMembers.RowCount - 1;

     q := frmMain.tgDrawings.Columns.Count-1;
     c := frmMain.tgDrawings.RowCount - 1;

begin     
         for i := 0 to c do
         for k := 0 to q do

         for ii := 0 to cc do
         for kk := 0 to qq do

         begin
             if (frmMain.tgDrawings.Cells[k,i] = '1') and (frmMain.tgMembers.Cells[kk,ii] = '1') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '2') and (frmMain.tgMembers.Cells[kk,ii] = '2') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '3') and (frmMain.tgMembers.Cells[kk,ii] = '3') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '4') and (frmMain.tgMembers.Cells[kk,ii] = '4') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '5') and (frmMain.tgMembers.Cells[kk,ii] = '5') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '6') and (frmMain.tgMembers.Cells[kk,ii] = '6') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '7') and (frmMain.tgMembers.Cells[kk,ii] = '7') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '8') and (frmMain.tgMembers.Cells[kk,ii] = '8') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '9') and (frmMain.tgMembers.Cells[kk,ii] = '9') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '10') and (frmMain.tgMembers.Cells[kk,ii] = '10') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '11') and (frmMain.tgMembers.Cells[kk,ii] = '11') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '12') and (frmMain.tgMembers.Cells[kk,ii] = '12') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '13') and (frmMain.tgMembers.Cells[kk,ii] = '13') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '14') and (frmMain.tgMembers.Cells[kk,ii] = '14') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '15') and (frmMain.tgMembers.Cells[kk,ii] = '15') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '16') and (frmMain.tgMembers.Cells[kk,ii] = '16') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '17') and (frmMain.tgMembers.Cells[kk,ii] = '17') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '18') and (frmMain.tgMembers.Cells[kk,ii] = '18') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '19') and (frmMain.tgMembers.Cells[kk,ii] = '19') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '20') and (frmMain.tgMembers.Cells[kk,ii] = '20') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '21') and (frmMain.tgMembers.Cells[kk,ii] = '21') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '22') and (frmMain.tgMembers.Cells[kk,ii] = '22') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '23') and (frmMain.tgMembers.Cells[kk,ii] = '23') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '24') and (frmMain.tgMembers.Cells[kk,ii] = '24') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '25') and (frmMain.tgMembers.Cells[kk,ii] = '25') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '26') and (frmMain.tgMembers.Cells[kk,ii] = '26') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '27') and (frmMain.tgMembers.Cells[kk,ii] = '27') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '28') and (frmMain.tgMembers.Cells[kk,ii] = '28') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '29') and (frmMain.tgMembers.Cells[kk,ii] = '29') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '30') and (frmMain.tgMembers.Cells[kk,ii] = '30') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '31') and (frmMain.tgMembers.Cells[kk,ii] = '31') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '32') and (frmMain.tgMembers.Cells[kk,ii] = '32') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '33') and (frmMain.tgMembers.Cells[kk,ii] = '33') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '34') and (frmMain.tgMembers.Cells[kk,ii] = '34') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '35') and (frmMain.tgMembers.Cells[kk,ii] = '35') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '36') and (frmMain.tgMembers.Cells[kk,ii] = '36') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '37') and (frmMain.tgMembers.Cells[kk,ii] = '37') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '38') and (frmMain.tgMembers.Cells[kk,ii] = '38') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '39') and (frmMain.tgMembers.Cells[kk,ii] = '39') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '40') and (frmMain.tgMembers.Cells[kk,ii] = '40') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '41') and (frmMain.tgMembers.Cells[kk,ii] = '41') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '42') and (frmMain.tgMembers.Cells[kk,ii] = '42') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '43') and (frmMain.tgMembers.Cells[kk,ii] = '43') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '44') and (frmMain.tgMembers.Cells[kk,ii] = '44') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             if (frmMain.tgDrawings.Cells[k,i] = '45') and (frmMain.tgMembers.Cells[kk,ii] = '45') then frmMain.tgMembers.Cell[kk,ii].Color := clGreen;
             
             frmMain.tgMembers.EndUpdate;

Thanks, Carlo