📄 rm_flds.pas
字号:
{*****************************************}
{ }
{ Report Machine v2.0 }
{ Fields list }
{ }
{*****************************************}
unit RM_flds;
interface
{$I RM.inc}
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Buttons;
type
TRMFieldsForm = class(TForm)
lstFields: TListBox;
lstDatasets: TListBox;
btnOK: TButton;
btnCancel: TButton;
chkUseTableName: TCheckBox;
Image1: TImage;
Image2: TImage;
Image3: TImage;
Image4: TImage;
procedure lstFieldsDblClick(Sender: TObject);
procedure lstDatasetsClick(Sender: TObject);
procedure lstDatasetsDrawItem(Control: TWinControl; Index: Integer;
ARect: TRect; State: TOwnerDrawState);
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
procedure FillDatasetsLB;
procedure GetFieldName;
procedure Localize;
public
{ Public declarations }
DBField: string;
end;
implementation
{$R *.DFM}
uses Registry, RM_Class, RM_Const, RM_Desgn, RM_DBRel, RM_Utils;
var
LastDB: string;
procedure TRMFieldsForm.Localize;
begin
Font.Name := RMLoadStr(SRMDefaultFontName);
Font.Size := StrToInt(RMLoadStr(SRMDefaultFontSize));
Font.Charset := StrToInt(RMLoadStr(SCharset));
RMSetStrProp(Self, 'Caption', rmRes + 450);
RMSetStrProp(chkUseTableName, 'Caption', rmRes + 722);
btnOK.Caption := RMLoadStr(SOk);
btnCancel.Caption := RMLoadStr(SCancel);
end;
procedure TRMFieldsForm.FillDatasetsLB;
var
i: Integer;
sl: TStringList;
begin
sl := TStringList.Create;
lstDatasets.Items.BeginUpdate;
CurReport.Dictionary.GetDatasetList(lstDatasets.Items);
if CurReport.MixVariablesAndDBFields then
begin
CurReport.Dictionary.GetCategoryList(sl);
for i := 0 to sl.Count - 1 do
lstDatasets.Items.AddObject(sl[i], TObject(1));
end;
lstDatasets.Items.EndUpdate;
sl.Free;
end;
procedure TRMFieldsForm.lstDatasetsClick(Sender: TObject);
var
i: Integer;
sl: TStringList;
begin
if Integer(lstDatasets.Items.Objects[lstDatasets.ItemIndex]) = 1 then
begin
sl := TStringList.Create;
CurReport.Dictionary.GetVariablesList(lstDatasets.Items[lstDatasets.ItemIndex], sl);
lstFields.Items.Clear;
for i := 0 to sl.Count - 1 do
lstFields.Items.AddObject(sl[i], TObject(1));
sl.Free;
end
else
CurReport.Dictionary.GetFieldList(lstDatasets.Items[lstDatasets.ItemIndex],
lstFields.Items)
end;
procedure TRMFieldsForm.GetFieldName;
begin
if lstDatasets.Items.Count > 0 then
LastDB := lstDatasets.Items[lstDatasets.ItemIndex];
if lstFields.ItemIndex <> -1 then
begin
if Integer(lstFields.Items.Objects[lstFields.ItemIndex]) = 1 then
DBField := lstFields.Items[lstFields.ItemIndex]
else
begin
if chkUseTableName.Checked then
DBField := LastDB + '."'
else
DBField := '"';
DBField := DBField + lstFields.Items[lstFields.ItemIndex] + '"';
end;
end;
end;
procedure TRMFieldsForm.FormShow(Sender: TObject);
begin
FillDatasetsLB;
with lstDatasets do
begin
if Items.Count > 0 then
begin
if Items.IndexOf(LastDB) <> -1 then
ItemIndex := Items.IndexOf(LastDB)
else
ItemIndex := 0;
lstDatasetsClick(nil);
end;
end;
end;
procedure TRMFieldsForm.lstFieldsDblClick(Sender: TObject);
begin
ModalResult := mrOk;
end;
procedure TRMFieldsForm.lstDatasetsDrawItem(Control: TWinControl;
Index: Integer; ARect: TRect; State: TOwnerDrawState);
var
Image: TImage;
r: TRect;
begin
r := ARect;
r.Right := r.Left + 18;
r.Bottom := r.Top + 16;
OffsetRect(r, 2, 0);
with TListBox(Control) do
begin
Canvas.FillRect(ARect);
if Control = lstDatasets then
Image := Image1
else
Image := Image2;
Canvas.BrushCopy(r, Image.Picture.Bitmap, Rect(0, 0, 18, 16), clGreen);
Canvas.TextOut(ARect.Left + 20, ARect.Top + 1, Items[Index]);
end;
end;
procedure TRMFieldsForm.FormCreate(Sender: TObject);
begin
Localize;
end;
procedure TRMFieldsForm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
GetFieldName;
if RMDesigner.Visible then
RMDesigner.SetFocus;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -