lazarus/components/lazreport/source/lr_flds.pas
mattias 26d472e206 lazreport: less notes
git-svn-id: trunk@36418 -
2012-03-29 08:52:20 +00:00

168 lines
3.6 KiB
ObjectPascal

{*****************************************}
{ }
{ FastReport v2.3 }
{ Fields list }
{ }
{ Copyright (c) 1998-99 by Tzyganenko A. }
{ }
{*****************************************}
unit LR_Flds;
interface
{$I LR_Vers.inc}
uses
Classes, SysUtils, LResources,
Forms, Controls, Graphics, Dialogs,
StdCtrls,LCLType;
type
{ TfrFieldsForm }
TfrFieldsForm = class(TForm)
ValCombo: TComboBox;
ValList: TListBox;
Label1: TLabel;
procedure ValComboClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDeactivate(Sender: TObject);
procedure ValListDblClick(Sender: TObject);
procedure ValListKeyDown(Sender: TObject; var Key: Word;
{%H-}Shift: TShiftState);
procedure FormKeyDown(Sender: TObject; var Key: Word;
{%H-}Shift: TShiftState);
procedure ValListSelectionChange(Sender: TObject; {%H-}User: boolean);
private
{ Private declarations }
procedure FillValCombo;
procedure UpdateDBField;
public
{ Public declarations }
DBField: String;
end;
var
frFieldsForm: TfrFieldsForm;
implementation
{$R *.lfm}
uses LR_Class, LR_Const, LR_Utils, LR_DBRel, DB;
var
LastDB: String;
procedure TfrFieldsForm.ValListKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = vk_Return then
begin
UpdateDBField;
ModalResult := mrOk;
end;
end;
procedure TfrFieldsForm.FillValCombo;
var
Lst : TStringList;
begin
Lst := TStringList.Create;
try
if Curreport.DataType = dtDataSet then
frGetComponents(CurReport.Owner, TDataSet, Lst, nil)
else
frGetComponents(CurReport.Owner, TDataSource, Lst, nil);
Lst.Sort;
ValCombo.Items.Assign(Lst);
ValCombo.Enabled:=(Lst.Count>0);
finally
Lst.Free;
end;
end;
procedure TfrFieldsForm.UpdateDBField;
begin
if ValCombo.Items.Count>0 then
begin
LastDB := ValCombo.Items[ValCombo.ItemIndex];
if ValList.ItemIndex <> -1 then
DBField:=LastDB + '."' + ValList.Items[ValList.ItemIndex] + '"';
end
else DBField:='';
end;
procedure TfrFieldsForm.ValComboClick(Sender: TObject);
var
DataSet: TfrTDataSet;
begin
ValList.Items.Clear;
if ValCombo.Items.Count>0 then
begin
DataSet := nil;
DataSet := frGetDataSet(ValCombo.Items[ValCombo.ItemIndex]);
if Assigned(DataSet) then
begin
try
frGetFieldNames(DataSet, ValList.Items);
except
end;
end;
end;
end;
procedure TfrFieldsForm.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = vk_Escape then
ModalResult := mrCancel;
end;
procedure TfrFieldsForm.ValListSelectionChange(Sender: TObject; User: boolean);
begin
{ if User then
begin
UpdateDbField;
if DBField<>'' then
ModalResult := mrOk;
end;}
end;
procedure TfrFieldsForm.FormCreate(Sender: TObject);
begin
Caption := sFieldsFormInsert;
Label1.Caption := sFieldsFormAviableDB;
end;
procedure TfrFieldsForm.FormActivate(Sender: TObject);
begin
FillValCombo;
if ValCombo.Items.Count>0 then
begin
if ValCombo.Items.IndexOf(LastDB) <> -1 then
ValCombo.ItemIndex := ValCombo.Items.IndexOf(LastDB)
else
ValCombo.ItemIndex := 0;
ValComboClick(nil);
end;
end;
procedure TfrFieldsForm.FormDeactivate(Sender: TObject);
begin
//UpdateDBField;
end;
procedure TfrFieldsForm.ValListDblClick(Sender: TObject);
begin
UpdateDbField;
if DBField<>'' then
ModalResult := mrOk;
end;
end.