RE: TZF - TzGrid Colors
Alex Mackinnon <[email protected]> Thu, 6 Nov 2003 16:11:54 -0000
| Newsgroups | gmane.comp.lang.delphi.topaz |
|---|---|
| Message-ID | <[email protected]> |
I missed many of your earlier posts but I think I've figured out what
you are trying to do.
But it's got me puzzled... why when what you want to do is TzGrid
related were you talking about making the changes to a descendant of
TzDBF?
More logical would be to descend a new component from TzGrid and add the
behaviour to that... you can also obsolete your dependance on a global
variable by adding a new 'MasterDB' property (published) to the
component and make setting the tracking a no-brainer.
A.
===============================================
unit descdemo;
interface
uses
Windows, Graphics, Classes, DB, Grids, DbGrids, tzprimds, ucommon,
utzcds, utzfds, atzgrids;
type
TTzGridRC=class(TTzGrid)
private
_masterdb:TTzDbf;
procedure ChangeColors(Sender: TObject; curRow: Integer;
var IndicatorColor, CellColor, CellTextColor, HiliteColor,
HiliteTextColor, DeletedColor, DeletedTextColor: TColor);
public
constructor Create(AOwner: TComponent); override;
published
property MasterDB:TTzDBF read _masterdb write _masterdb;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('SSI', [TTzGridRC]);
end;
{ TTzGridRC }
procedure TTzGridRC.ChangeColors(Sender: TObject; curRow: Integer;
var IndicatorColor, CellColor, CellTextColor, HiliteColor,
HiliteTextColor, DeletedColor, DeletedTextColor: TColor);
begin
if Assigned(DataSource) and Assigned(DataSource.DataSet)
and Assigned(_masterdb) then
begin
if _masterdb.recNo=DataSource.DataSet.RecNo then
begin
// CellColor:=$00B3A8FF;
CellColor:=$0033FFFF;
DeletedColor:=clRed;
HiliteColor:=$00ffff01;
CellTextColor:=clBLACK;
HiliteTextColor:=clBLACK;
// Canvas.Font.Style:=Canvas.Font.Style+[fsBold];
// Canvas.Font.Size:=12;
end
else
begin
CellColor:=$00B3F8FF;
HiliteColor:=$00B3F8FF;
CellTextColor:=clBlack;
HiliteTextColor:=clBlack;
// Canvas.Font.Style:=Canvas.Font.Style-[fsBold];
// Canvas.Font.Size:=8;
end;
end;
end;
constructor TTzGridRC.Create(AOwner: TComponent);
begin
inherited;
// _masterdb:=nil;
OnChangeColorsEvent:=ChangeColors;
end;
-----Original Message-----
From: Alex Mackinnon [mailto:[email protected]]
Sent: 06 November 2003 15:05
To: [email protected]
Subject: RE: TZF - TzGrid Colors
The answer about wrapping the variable was right in front of you
really... just stick the global into the class/component...
unit descdemo;
interface
uses
Classes, DB, tzprimds, ucommon, utzcds, utzfds;
type
TTzDBFRC=class(TTzDBF)
private
public
globMasterRecordNo:Integer;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('SSI', [TTzDBFRC]);
end;
end.
...after you drop an instance of the class/component on the form the
variable will be available,
Regards,
A.
-----Original Message-----
From: [email protected] [mailto:[email protected]]
Sent: 06 November 2003 14:10
To: [email protected]
Subject: Re: TZF - TzGrid Colors
globMasterRecordNo is variable in my main form.
And I use it to "communicate" between the tzGrid
and TzDBF objects.
In creating a descendent object of TTzGrid, I dont
know to communicate the CurrentRecord number
(from an unknown TzDBF object) to the TTzGrid.
NOTE TO MARIE: If you are going to use this
code we have developed, you need to modify
the TzDBF.AfterScroll code. Here is my
latest AfterScroll:
procedure TfrmDM.DBF_DocMovtAfterScroll(DataSet: TDataSet);
begin
if DBF_DocMovt.ControlsDisabled then exit; // without this statement
I get a run-time error from the Grid
frmMain.globDocMovtRecNo:=DBF_DocMovt.RecNo;
frmMain.TzGrid_RecPck.refreshGrid;
end;
I am certain all of these global variables could be "wrapped up" in
a new TzDBF object, but I have not figured out how, as of yet.
Bob
__________________
unit U_Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
Dialogs, Grids, DBGrids, atzgrids, DB, tzprimds, ucommon, utzcds,
utzfds;
type
TForm1 = class(TForm)
<SNIP>
private
{ Private declarations }
public
{ Public declarations }
globCurrentMasterRecordNo:LongInt;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.TzGrid1ChangeColorsEvent(Sender: TObject; curRow:
Integer;
var IndicatorColor, CellColor, CellTextColor, HiliteColor,
HiliteTextColor, DeletedColor, DeletedTextColor: TColor);
begin
if tzDBF1.recNo=globCurrentMasterRecordNo then
begin
// CellColor:=$00B3A8FF;
CellColor:=$0033FFFF;
DeletedColor:=clRed;
HiliteColor:=$00ffff01;
CellTextColor:=clBLACK;
HiliteTextColor:=clBLACK;
// Canvas.Font.Style:=Canvas.Font.Style+[fsBold];
// Canvas.Font.Size:=12;
end
else
begin
CellColor:=$00B3F8FF;
HiliteColor:=$00B3F8FF;
CellTextColor:=clBlack;
HiliteTextColor:=clBlack;
// Canvas.Font.Style:=Canvas.Font.Style-[fsBold];
// Canvas.Font.Size:=8;
end;
end;
procedure TForm1.TzDbf1AfterScroll(DataSet: TDataSet);
begin
globCurrentMasterRecordNo:=tzDBF1.RecNo;
tzgrid1.refreshgrid;
end;
end.
In a message dated 11/06/2003 7:24:10 AM Eastern Standard Time,
[email protected] writes:
Open up the source file for TTzDBF (if that's where it's needed)... find
a reference to 'globMasterRecordNo'... track it back to it's source file
and add that file to the 'uses' section of your new unit.
BTW I don't seem to see any reference to a 'globMasterRecordNo' in my
topaz source...
A.
--^----------------------------------------------------------------
This email was sent to: [email protected]
EASY UNSUBSCRIBE click here: http://topica.com/u/?clvXPN.a5kvff.Z2NsZHQt
Or send an email to: [email protected]
TOPICA - Start your own email discussion group. FREE!
http://www.topica.com/partner/tag02/create/index2.html
--^----------------------------------------------------------------