Hello Stephen,
   
     I have worked on this kind of app before, so I find this interesting:
   
     You explain things in terms of where the data is in the grid which is 
confusing. You want to fill the grid up in the most efficient way possible and 
you must think of where the data is in the table and how to most efficiently 
fill the grid from the table's perspective. It has to do the most work. 
   
     If you've got each room as a field organized with each record representing 
one time slots worth of info, you need to pull all the data from that record 
before moving on to the next one. This would imply that you fill up the cells 
going horizontally and work your way down the table, across the grid. Remember, 
filling the grid up has nothing to with the drawing the data. You want to turn 
screen draw off when filling the cells, fill them with the most minimal effort 
required by the table, then turn on and let the info in the cells determine the 
color of the cell or row so that it's only hampered by memory access, not hard 
drive thrashing. I think you'll prefer the results infinitely better.. assuming 
I've understood your explanation below of course.
   
  Dave

"Wilson, Stephen" <[EMAIL PROTECTED]> wrote:
          
David

Thanks for your reply. I probably made my explanation a bit too brief and left 
out essential info and used misleading terminology. Each grid column represents 
a room within a Dept and each row a day of a preselected month. The data is got 
from a single table which contains the date, the aforementioned times and 
information (or no information - empty cell) about each room at a particular 
time of day on a particular date. The query fetches data for a single day, 
containing 27 rows (there are 27 time slots in a day) and cols/fields 
representing the rooms in the dept. The app loops through (for loop) each field 
in turn (individual rooms) where it enters a while loop through each row (the 
time slots) and increments a count if data is found. The const 27 you see in 
the code is the total number of time slots in a day. Three constant colours 
(you are quite right that they should be declared as const) are assigned, one 
for no data found for that room on that day (count=0), one for
 some data but not in all time slots (count > 0 and < 27), and one for data 
found in all time slots for that room on that day (count=27). Thus for each 
cell in the stringgrid data is got and counted, and a colour is assigned to the 
individual cell based on the value of the count. 

I take your point (and that of Antonis) that the code for getting and 
manipulating data should be kept outside of the OnDraw event. It'll be a few 
hours before I can get back to the job, but as soon as I can I'll let you know 
what progress has been made.

Regards
Steve 

Your OnDraw event is flawed. First of all, do NOT get the data from within the 
onDraw event! Your only putting code in to handle custom drawing of the control.

You did say "field" so I assume you want to color the columns?. Get rid of the 
for loops since it already loops through each cell. It starts at the top left 
and ends up at the bottom right. Just have it check the column property as it 
goes and color the cell based on that. You could put the color for that column 
in the column tag property. The code to set the color for each column is put in 
the appropriate place outside of this event (button click or whatever). You'd 
have to give each column tag a default property in order for it not to be black 
with ($000000) until your code executes.
(Tip: defined your cutom colors as a constant at top of form):

constants
clAmber: TColor($0011FF); <-- only 6 digits for a color!!!

procedure TOverviewForm.SGDrawCell(Sender: TObject; ACol, ARow: Integer;Rect: 
TRect; State: TGridDrawState);
begin
Case ACol Of
0: color := SG.Column[0].Tag;
1: color := SG.Columns[1].Tag;
etc.
end;



***************************************************************************
This e-mail and any files transmitted with it are confidential. If you are not 
the intended recipient, any reading, printing, storage, disclosure, copying or 
any other action taken in respect of this e-mail is prohibited and may be 
unlawful. If you are not the intended recipient, please notify the sender 
immediately by using the reply function and then permanently delete what you 
have received.
Content of emails received by this Trust will be subject to disclosure under 
the Freedom of Information Act 2000, subject to the specified exemptions, 
including the Data Protection Act 1998 and Caldicott Guardian principles.
This footnote also confirms that this email message has been swept by 
MIMESweeper and Sophos Anti-virus for the presence of computer viruses.
***************************************************************************



         

                
---------------------------------
Talk is cheap. Use Yahoo! Messenger to make PC-to-Phone calls.  Great rates 
starting at 1ยข/min.

[Non-text portions of this message have been removed]



-----------------------------------------------------
Home page: http://groups.yahoo.com/group/delphi-en/
To unsubscribe: [EMAIL PROTECTED] 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/delphi-en/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 


Reply via email to