📄 dbaware.pas
字号:
unit DbAware;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, DB, DBTables, Grids, DBGrids, RXDBCtrl, ExtCtrls,
TabNotBk, StdCtrls, Spin, DBCtrls, rxDbQBE, RXLookup, Mask, rxDBIndex,
Buttons, rxDBFilter, rxPlacemnt, RxQuery, rxPicClip, RXCtrls;
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: TrxDBGrid;
Panel1: TPanel;
CheckBox1: TCheckBox;
GroupBox2: TGroupBox;
DBStatusLabel1: TDBStatusLabel;
DBNavigator1: TDBNavigator;
Label2: TLabel;
DataSource2: TDataSource;
QBEQuery1: TQBEQuery;
GroupBox3: TGroupBox;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Edit1: TMaskEdit;
Label6: TLabel;
Table1: TTable;
DataSource3: TDataSource;
GroupBox4: TGroupBox;
rxDBGrid2: TrxDBGrid;
DBIndexCombo1: TDBIndexCombo;
Label7: TLabel;
Table3: TTable;
DataSource4: TDataSource;
DBFilter1: TrxDBFilter;
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: TrxDBLookupCombo;
FormStorage1: TFormStorage;
Table1OrderNo: TFloatField;
Table1ItemNo: TFloatField;
Table1PartNo: TFloatField;
Table1Qty: TIntegerField;
Table1Discount: TFloatField;
GroupBox8: TGroupBox;
Label16: TLabel;
Panel4: TPanel;
Label17: TLabel;
Label19: TLabel;
rxDBLookupCombo2: TrxDBLookupCombo;
ComboBox2: TComboBox;
DBGrid1: TRxDBGrid;
Table4: TTable;
DataSource6: TDataSource;
rxQuery1: TrxQuery;
DataSource5: TDataSource;
DBStatusLabel2: TDBStatusLabel;
PicClip: TPicClip;
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
rxDBUtils;
{$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 TrxDBGrid).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 := PicClip.Width + 2;
if not IsEmpty then begin
PhoneExt := QBEQuery1.FieldByName('PhoneExt').AsString;
Graphic := PicClip.GraphicCell[3];
if Length(PhoneExt) = 0 then
Graphic := PicClip.GraphicCell[4];
end
else Graphic := PicClip.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.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -