Componentes.Terceros.jvcl/official/3.32/examples/RxLib/DBAWARE.PAS

349 lines
10 KiB
Plaintext

{******************************************************************
JEDI-VCL Demo
Copyright (C) 2002 Project JEDI
Original author:
Contributor(s):
You may retrieve the latest version of this file at the JEDI-JVCL
home page, located at http://jvcl.sourceforge.net
The contents of this file are used with permission, subject to
the Mozilla Public License Version 1.1 (the "License"); you may
not use this file except in compliance with the License. You may
obtain a copy of the License at
http://www.mozilla.org/MPL/MPL-1_1Final.html
Software distributed under the License is distributed on an
"AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
implied. See the License for the specific language governing
rights and limitations under the License.
******************************************************************}
unit DbAware;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, DB, DBTables, Grids, DBGrids, JvPicClip, JvBDEQuery,
JvFormPlacement, JvComponent, JvBDEFilter, JvBDEQBE, StdCtrls, ExtCtrls,
Buttons, DBCtrls, JvBDEIndex, JvDBLookup, Mask, JvLabel, JvDBControls,
ComCtrls, TabNotBk, JvExControls, JvDBGrid, JvExStdCtrls, JvExDBGrids;
type
TDBAwareForm = class(TForm)
TabbedNotebook1: TTabbedNotebook;
DataSource1: TDataSource;
Table2: TTable;
Table2SpeciesNo: TFloatField;
Table2Category: TStringField;
Table2Common_Name: TStringField;
Table2Lengthcm: TFloatField;
Table2Notes: TMemoField;
Table2Graphic: TGraphicField;
GroupBox1: TGroupBox;
rxDBGrid1: TJvDBGrid ;
Panel1: TPanel;
CheckBox1: TCheckBox;
GroupBox2: TGroupBox;
DBStatusLabel1: TJvDBStatusLabel ;
DBNavigator1: TDBNavigator;
Label2: TLabel;
DataSource2: TDataSource;
QBEQuery1: TJvQBEQuery ;
GroupBox3: TGroupBox;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Edit1: TMaskEdit;
Label6: TLabel;
Table1: TTable;
DataSource3: TDataSource;
GroupBox4: TGroupBox;
rxDBGrid2: TJvDBGrid ;
DBIndexCombo1: TJvDBIndexCombo ;
Label7: TLabel;
Table3: TTable;
DataSource4: TDataSource;
DBFilter1: TJvDBFilter ;
Panel2: TPanel;
Panel3: TPanel;
ScrollBox: TScrollBox;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
EditCompany: TDBEdit;
EditCity: TDBEdit;
EditState: TDBEdit;
EditZip: TDBEdit;
EditCountry: TDBEdit;
Label14: TLabel;
EditPhone: TDBEdit;
GroupBox6: TGroupBox;
DBNavigator: TDBNavigator;
GroupBox7: TGroupBox;
Label15: TLabel;
GroupBox5: TGroupBox;
EnterQuery: TSpeedButton;
ExecQuery: TSpeedButton;
CancelQuery: TSpeedButton;
RadioGroup1: TRadioGroup;
EditCustNo: TDBEdit;
rxDBLookupCombo1: TJvDBLookupCombo ;
FormStorage1: TJvFormStorage ;
Table1OrderNo: TFloatField;
Table1ItemNo: TFloatField;
Table1PartNo: TFloatField;
Table1Qty: TIntegerField;
Table1Discount: TFloatField;
GroupBox8: TGroupBox;
Label16: TLabel;
Panel4: TPanel;
Label17: TLabel;
Label19: TLabel;
rxDBLookupCombo2: TJvDBLookupCombo ;
ComboBox2: TComboBox;
DBGrid1: TJvDBGrid ;
Table4: TTable;
DataSource6: TDataSource;
rxQuery1: TJvQuery ;
DataSource5: TDataSource;
DBStatusLabel2: TJvDBStatusLabel ;
JvPicclip: TJvPicClip ;
Label1: TLabel;
CheckBox2: TCheckBox;
rxQuery1OrderNo: TFloatField;
rxQuery1SaleDate: TDateTimeField;
rxQuery1Company: TStringField;
rxQuery1CustNo: TFloatField;
rxQuery1ShipDate: TDateTimeField;
rxQuery1ShipToContact: TStringField;
rxQuery1ShipToAddr1: TStringField;
rxQuery1ShipToAddr2: TStringField;
rxQuery1ShipToCity: TStringField;
rxQuery1ShipToState: TStringField;
rxQuery1ShipToZip: TStringField;
rxQuery1ShipToCountry: TStringField;
rxQuery1ShipToPhone: TStringField;
rxQuery1ShipVIA: TStringField;
rxQuery1PO: TStringField;
rxQuery1Terms: TStringField;
rxQuery1PaymentMethod: TStringField;
rxQuery1ItemsTotal: TCurrencyField;
rxQuery1TaxRate: TFloatField;
rxQuery1Freight: TCurrencyField;
rxQuery1AmountPaid: TCurrencyField;
rxQuery1EmpNo: TIntegerField;
rxQuery1LastName: TStringField;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure CheckBox1Click(Sender: TObject);
procedure rxDBLookupCombo1Change(Sender: TObject);
procedure EnterQueryClick(Sender: TObject);
procedure ExecQueryClick(Sender: TObject);
procedure CancelQueryClick(Sender: TObject);
procedure RadioGroup1Click(Sender: TObject);
procedure DBFilter1Change(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure rxDBLookupCombo2Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure rxDBGrid1GetCellParams(Sender: TObject; Field: TField;
AFont: TFont; var Background: TColor; Highlight: Boolean);
procedure rxDBLookupCombo1GetImage(Sender: TObject; IsEmpty: Boolean;
var Graphic: TGraphic; var TextMargin: Integer);
procedure DBGrid1CheckButton(Sender: TObject; ACol: Longint;
Field: TField; var Enabled: Boolean);
procedure DBGrid1TitleBtnClick(Sender: TObject; ACol: Longint;
Field: TField);
procedure CheckBox2Click(Sender: TObject);
procedure DBGrid1GetBtnParams(Sender: TObject; Field: TField;
AFont: TFont; var Background: TColor; var SortMarker: TSortMarker;
IsDown: Boolean);
procedure rxDBGrid1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
procedure SetMacro(const MacroName, Value: string);
public
{ Public declarations }
end;
implementation
uses JvDBUtils, Main;
{$R *.DFM}
procedure TDBAwareForm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TDBAwareForm.CheckBox1Click(Sender: TObject);
begin
rxDBGrid1.ShowGlyphs := CheckBox1.Checked;
end;
procedure TDBAwareForm.rxDBLookupCombo1Change(Sender: TObject);
begin
Edit1.Text := rxDBLookupCombo1.Value;
end;
procedure TDBAwareForm.EnterQueryClick(Sender: TObject);
begin
DBFilter1.SetCapture;
end;
procedure TDBAwareForm.ExecQueryClick(Sender: TObject);
begin
with DBFilter1 do begin
ReadCaptureControls;
ReleaseCapture;
Activate;
end;
end;
procedure TDBAwareForm.CancelQueryClick(Sender: TObject);
begin
with DBFilter1 do begin
ReleaseCapture;
Deactivate;
end;
end;
procedure TDBAwareForm.RadioGroup1Click(Sender: TObject);
begin
DBFilter1.LogicCond := TFilterLogicCond(RadioGroup1.ItemIndex);
end;
procedure TDBAwareForm.DBFilter1Change(Sender: TObject);
begin
ExecQuery.Enabled := DBFilter1.Captured;
CancelQuery.Enabled := DBFilter1.Active or DBFilter1.Captured;
EnterQuery.Enabled := True;
end;
procedure TDBAwareForm.SetMacro(const MacroName, Value: string);
begin
with rxQuery1 do begin
MacroByName(MacroName).AsString := Value;
DisableControls;
try
Close;
Open;
finally
EnableControls;
end;
end;
end;
procedure TDBAwareForm.ComboBox2Change(Sender: TObject);
var
Order: string;
begin
case ComboBox2.ItemIndex of
0: Order := 'SaleDate';
1: Order := 'ShipDate';
2: Order := 'Company';
3: Order := 'LastName';
end;
SetMacro('ORDER', Order);
end;
procedure TDBAwareForm.rxDBLookupCombo2Change(Sender: TObject);
var
Value: string;
begin
Value := TrueExpr;
if rxDBLookupCombo2.Value <> '' then begin
Value := 'ORDERS."CustNo"=' + rxDBLookupCombo2.Value;
end;
SetMacro('CUSTOMER', Value);
end;
procedure TDBAwareForm.FormCreate(Sender: TObject);
begin
ComboBox2.ItemIndex := 1;
{$IFDEF WIN32}
DBGrid1.Columns.State := csCustomized;
{$ENDIF}
end;
procedure TDBAwareForm.rxDBGrid1GetCellParams(Sender: TObject;
Field: TField; AFont: TFont; var Background: TColor; Highlight: Boolean);
var
Len: Integer;
begin
if Field.FieldName = 'Category' then
AFont.Style := AFont.Style + [fsBold]
else if Field.FieldName = 'Length (cm)' then
Background := clYellow;
Len := (Sender as TJvDBGrid ).DataSource.DataSet.FieldByName('Length (cm)').AsInteger;
if (Len <= 30) and (Len > 0) then
Background := clLime { shortest }
else if Len >= 150 then
AFont.Color := clRed; { longest }
if Highlight then begin
AFont.Color := clHighlightText;
Background := clHighlight;
end;
end;
procedure TDBAwareForm.rxDBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if (Key = ' ') then rxDBGrid1.ToggleRowSelection;
end;
procedure TDBAwareForm.rxDBLookupCombo1GetImage(Sender: TObject;
IsEmpty: Boolean; var Graphic: TGraphic; var TextMargin: Integer);
var
PhoneExt: string;
begin
TextMargin := JvPicclip.Width + 2;
if not IsEmpty then begin
PhoneExt := QBEQuery1.FieldByName('PhoneExt').AsString;
Graphic := JvPicclip.GraphicCell[3];
if Length(PhoneExt) = 0 then
Graphic := JvPicclip.GraphicCell[4];
end
else Graphic := JvPicclip.GraphicCell[5];
end;
procedure TDBAwareForm.DBGrid1CheckButton(Sender: TObject; ACol: Longint;
Field: TField; var Enabled: Boolean);
begin
Enabled := (Field <> nil) and not (Field is TBlobField);
end;
procedure TDBAwareForm.DBGrid1TitleBtnClick(Sender: TObject; ACol: Longint;
Field: TField);
begin
if (Field <> nil) then begin
SetMacro('ORDER', Field.FieldName);
ComboBox2.ItemIndex := -1;
end;
end;
procedure TDBAwareForm.CheckBox2Click(Sender: TObject);
begin
rxDBGrid1.MultiSelect := CheckBox2.Checked;
end;
procedure TDBAwareForm.DBGrid1GetBtnParams(Sender: TObject; Field: TField;
AFont: TFont; var Background: TColor; var SortMarker: TSortMarker;
IsDown: Boolean);
begin
if (Field <> nil) and rxQuery1.Active and (CompareText(Field.FieldName,
rxQuery1.MacroByName('ORDER').AsString) = 0) then
SortMarker := smDown;
end;
end.