/components/lazreport/source/lr_flds.pas

http://github.com/graemeg/lazarus · Pascal · 167 lines · 123 code · 24 blank · 20 comment · 11 complexity · acb089a17421d76ce355ce896379227a MD5 · raw file

  1. {*****************************************}
  2. { }
  3. { FastReport v2.3 }
  4. { Fields list }
  5. { }
  6. { Copyright (c) 1998-99 by Tzyganenko A. }
  7. { }
  8. {*****************************************}
  9. unit LR_Flds;
  10. interface
  11. {$I LR_Vers.inc}
  12. uses
  13. Classes, SysUtils, LResources,
  14. Forms, Controls, Graphics, Dialogs,
  15. StdCtrls,LCLType;
  16. type
  17. { TfrFieldsForm }
  18. TfrFieldsForm = class(TForm)
  19. ValCombo: TComboBox;
  20. ValList: TListBox;
  21. Label1: TLabel;
  22. procedure ValComboClick(Sender: TObject);
  23. procedure FormActivate(Sender: TObject);
  24. procedure FormCreate(Sender: TObject);
  25. procedure FormDeactivate(Sender: TObject);
  26. procedure ValListDblClick(Sender: TObject);
  27. procedure ValListKeyDown(Sender: TObject; var Key: Word;
  28. {%H-}Shift: TShiftState);
  29. procedure FormKeyDown(Sender: TObject; var Key: Word;
  30. {%H-}Shift: TShiftState);
  31. procedure ValListSelectionChange(Sender: TObject; {%H-}User: boolean);
  32. private
  33. { Private declarations }
  34. procedure FillValCombo;
  35. procedure UpdateDBField;
  36. public
  37. { Public declarations }
  38. DBField: String;
  39. end;
  40. var
  41. frFieldsForm: TfrFieldsForm;
  42. implementation
  43. {$R *.lfm}
  44. uses LR_Class, LR_Const, LR_Utils, LR_DBRel, DB;
  45. var
  46. LastDB: String;
  47. procedure TfrFieldsForm.ValListKeyDown(Sender: TObject; var Key: Word;
  48. Shift: TShiftState);
  49. begin
  50. if Key = vk_Return then
  51. begin
  52. UpdateDBField;
  53. ModalResult := mrOk;
  54. end;
  55. end;
  56. procedure TfrFieldsForm.FillValCombo;
  57. var
  58. Lst : TStringList;
  59. begin
  60. Lst := TStringList.Create;
  61. try
  62. if Curreport.DataType = dtDataSet then
  63. frGetComponents(CurReport.Owner, TDataSet, Lst, nil)
  64. else
  65. frGetComponents(CurReport.Owner, TDataSource, Lst, nil);
  66. Lst.Sort;
  67. ValCombo.Items.Assign(Lst);
  68. ValCombo.Enabled:=(Lst.Count>0);
  69. finally
  70. Lst.Free;
  71. end;
  72. end;
  73. procedure TfrFieldsForm.UpdateDBField;
  74. begin
  75. if ValCombo.Items.Count>0 then
  76. begin
  77. LastDB := ValCombo.Items[ValCombo.ItemIndex];
  78. if ValList.ItemIndex <> -1 then
  79. DBField:=LastDB + '."' + ValList.Items[ValList.ItemIndex] + '"';
  80. end
  81. else DBField:='';
  82. end;
  83. procedure TfrFieldsForm.ValComboClick(Sender: TObject);
  84. var
  85. DataSet: TfrTDataSet;
  86. begin
  87. ValList.Items.Clear;
  88. if ValCombo.Items.Count>0 then
  89. begin
  90. DataSet := nil;
  91. DataSet := frGetDataSet(ValCombo.Items[ValCombo.ItemIndex]);
  92. if Assigned(DataSet) then
  93. begin
  94. try
  95. frGetFieldNames(DataSet, ValList.Items);
  96. except
  97. end;
  98. end;
  99. end;
  100. end;
  101. procedure TfrFieldsForm.FormKeyDown(Sender: TObject; var Key: Word;
  102. Shift: TShiftState);
  103. begin
  104. if Key = vk_Escape then
  105. ModalResult := mrCancel;
  106. end;
  107. procedure TfrFieldsForm.ValListSelectionChange(Sender: TObject; User: boolean);
  108. begin
  109. { if User then
  110. begin
  111. UpdateDbField;
  112. if DBField<>'' then
  113. ModalResult := mrOk;
  114. end;}
  115. end;
  116. procedure TfrFieldsForm.FormCreate(Sender: TObject);
  117. begin
  118. Caption := sFieldsFormInsert;
  119. Label1.Caption := sFieldsFormAviableDB;
  120. end;
  121. procedure TfrFieldsForm.FormActivate(Sender: TObject);
  122. begin
  123. FillValCombo;
  124. if ValCombo.Items.Count>0 then
  125. begin
  126. if ValCombo.Items.IndexOf(LastDB) <> -1 then
  127. ValCombo.ItemIndex := ValCombo.Items.IndexOf(LastDB)
  128. else
  129. ValCombo.ItemIndex := 0;
  130. ValComboClick(nil);
  131. end;
  132. end;
  133. procedure TfrFieldsForm.FormDeactivate(Sender: TObject);
  134. begin
  135. //UpdateDBField;
  136. end;
  137. procedure TfrFieldsForm.ValListDblClick(Sender: TObject);
  138. begin
  139. UpdateDbField;
  140. if DBField<>'' then
  141. ModalResult := mrOk;
  142. end;
  143. end.