📄 prdatafields.pas
字号:
unit prDataFields;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TfrmDataFields = class(TForm)
lstDatasets: TListBox;
lsbFields: TListBox;
Button1: TButton;
Button2: TButton;
Image1: TImage;
Image2: TImage;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure lstDatasetsClick(Sender: TObject);
procedure lsbFieldsDblClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure lstDatasetsDrawItem(Control: TWinControl; Index: Integer;
ARect: TRect; State: TOwnerDrawState);
private
{ Private declarations }
public
{ Public declarations }
DF:TList;
end;
var
frmDataFields: TfrmDataFields;
implementation
uses PReport, PRDesigner;
{$R *.DFM}
procedure TfrmDataFields.Button1Click(Sender: TObject);
begin
if lsbFields.ItemIndex >=0 then
Modalresult := mrOk;
end;
procedure TfrmDataFields.Button2Click(Sender: TObject);
begin
Modalresult := mrCancel;
end;
procedure TfrmDataFields.lstDatasetsClick(Sender: TObject);
var j:integer;
begin
try
lsbFields.Clear;
if TDatasetDef(DF[lstDatasets.ItemIndex]).slFieldLabel.Count>0 then
for j:=0 to TDatasetDef(DF[lstDatasets.ItemIndex]).slFieldLabel.Count-1 do
lsbFields.Items.Add(TDatasetDef(DF[lstDatasets.ItemIndex]).slFieldLabel[j]);
except end;
end;
procedure TfrmDataFields.lsbFieldsDblClick(Sender: TObject);
begin
if lsbFields.ItemIndex >=0 then Modalresult := mrOk;
end;
procedure TfrmDataFields.FormCreate(Sender: TObject);
var i,j:integer;
begin
DF:=TList.Create;
DF:=frmPRDesigner.myDatasets; //传递数据
lstDatasets.Clear;
try
for i:=0 to DF.Count-1 do
lstDatasets.Items.Add(TDatasetDef(DF[i]).sDefine);
lsbFields.Clear;
for j:=0 to TDatasetDef(DF[0]).slFieldLabel.Count-1 do
lsbFields.Items.Add(TDatasetDef(DF[0]).slFieldLabel[j]);
lstDatasets.ItemIndex:=0; //必须有 否则
lsbFields.ItemIndex:=0; //必须有
except end;
end;
procedure TfrmDataFields.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),
Image.Picture.Bitmap.TransparentColor);
Canvas.TextOut(ARect.Left + 20, ARect.Top + 1, Items[Index]);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -