📄 rm_bnded.pas
字号:
{*****************************************}
{ }
{ Report Machine v2.0 }
{ Select Band datasource dialog }
{ }
{*****************************************}
unit RM_bnded;
interface
{$I RM.inc}
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, RM_Class;
type
TRMBandEditorForm = class(TRMObjEditorForm)
btnOK: TButton;
btnCancel: TButton;
GB1: TGroupBox;
Label2: TLabel;
edtNum: TEdit;
lstDatasets: TListBox;
Image1: TImage;
procedure lstDatasetsClick(Sender: TObject);
procedure lstDatasetsDblClick(Sender: TObject);
procedure lstDatasetsDrawItem(Control: TWinControl; Index: Integer;
ARect: TRect; State: TOwnerDrawState);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure FillCombo;
procedure Localize;
public
{ Public declarations }
function ShowEditor(View: TRMView): TModalResult; override;
end;
implementation
{$R *.DFM}
uses RM_DSet, RM_Const, RM_Utils;
function TRMBandEditorForm.ShowEditor(View: TRMView): TModalResult;
var
i: Integer;
s: string;
begin
FillCombo;
s := (View as TRMBandView).DataSet;
if (s <> '') and (s[1] in ['1'..'9']) then
begin
i := 1;
edtNum.Text := s;
end
else
begin
i := lstDatasets.Items.IndexOf(CurReport.Dictionary.AliasName[s]);
if i = -1 then
i := lstDatasets.Items.IndexOf(RMLoadStr(SNotAssigned));
end;
lstDatasets.ItemIndex := i;
lstDatasetsClick(nil);
Result := ShowModal;
if Result = mrOk then
begin
RMDesigner.BeforeChange;
if lstDatasets.ItemIndex = 1 then
TRMBandView(View).DataSet := edtNum.Text
else
TRMBandView(View).DataSet :=
CurReport.Dictionary.RealDataSourceName[lstDatasets.Items[lstDatasets.ItemIndex]];
end;
end;
procedure TRMBandEditorForm.FillCombo;
begin
CurReport.Dictionary.GetBandDatasourceList(lstDatasets.Items);
lstDatasets.Items.Insert(0, RMLoadStr(SVirtualDataset));
lstDatasets.Items.Insert(0, RMLoadStr(SNotAssigned));
end;
procedure TRMBandEditorForm.lstDatasetsClick(Sender: TObject);
begin
RMEnableControls([Label2, edtNum], lstDatasets.ItemIndex = 1);
end;
procedure TRMBandEditorForm.lstDatasetsDrawItem(Control: TWinControl;
Index: Integer; ARect: TRect; State: TOwnerDrawState);
var
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 Index <> 0 then
Canvas.BrushCopy(r, Image1.Picture.Bitmap, Rect(0, 0, 18, 16), Image1.Picture.Bitmap.TransparentColor);
Canvas.TextOut(ARect.Left + 20, ARect.Top + 1, Items[Index]);
end;
end;
procedure TRMBandEditorForm.lstDatasetsDblClick(Sender: TObject);
begin
ModalResult := mrOk;
end;
procedure TRMBandEditorForm.Localize;
begin
Font.Name := RMLoadStr(SRMDefaultFontName);
Font.Size := StrToInt(RMLoadStr(SRMDefaultFontSize));
Font.Charset := StrToInt(RMLoadStr(SCharset));
RMSetStrProp(Self, 'Caption', rmRes + 480);
RMSetStrProp(Label2, 'Caption', rmRes + 482);
btnOK.Caption := RMLoadStr(SOk);
btnCancel.Caption := RMLoadStr(SCancel);
end;
procedure TRMBandEditorForm.FormCreate(Sender: TObject);
begin
Localize;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -