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
--^----------------------------------------------------------------