/components/datadict/frmselectcodegenerator.pp

http://github.com/graemeg/lazarus · Puppet · 101 lines · 81 code · 20 blank · 0 comment · 0 complexity · 2d26a070befd192f3a79d27cf83d9e30 MD5 · raw file

  1. unit frmSelectCodeGenerator;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, fpddcodegen,
  6. ButtonPanel, ldd_consts;
  7. type
  8. { TSelectCodeGeneratorForm }
  9. TSelectCodeGeneratorForm = class(TForm)
  10. BPButtons: TButtonPanel;
  11. RGGenerators: TRadioGroup;
  12. procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
  13. procedure FormCreate(Sender: TObject);
  14. procedure FormShow(Sender: TObject);
  15. private
  16. FHaveFields: Boolean;
  17. FHaveSQL: Boolean;
  18. FSelF: TCodeGeneratorItem;
  19. procedure ShowAvailableGenerators;
  20. { private declarations }
  21. public
  22. { public declarations }
  23. Property HaveSQL : Boolean Read FHaveSQL Write FHaveSQL;
  24. Property HaveFields : Boolean Read FHaveFields Write FHaveFields;
  25. Property SelectedGenerator : TCodeGeneratorItem Read FSelF Write FSelF;
  26. end;
  27. var
  28. SelectCodeGeneratorForm: TSelectCodeGeneratorForm;
  29. implementation
  30. {$R *.lfm}
  31. { TSelectCodeGeneratorForm }
  32. procedure TSelectCodeGeneratorForm.FormShow(Sender: TObject);
  33. begin
  34. ShowAvailableGenerators;
  35. end;
  36. procedure TSelectCodeGeneratorForm.FormClose(Sender: TObject;
  37. var CloseAction: TCloseAction);
  38. begin
  39. If (ModalResult=mrOK) then
  40. With RGGenerators do
  41. FSelF:=Items.Objects[ItemIndex] as TCodeGeneratorItem;
  42. end;
  43. procedure TSelectCodeGeneratorForm.FormCreate(Sender: TObject);
  44. begin
  45. Caption := ldd_Selectcodetobegenerated;
  46. RGGenerators.Caption:= ldd_Availablecodegenerators;
  47. end;
  48. procedure TSelectCodeGeneratorForm.ShowAvailableGenerators;
  49. Function AllowGenerator(G : TCodeGeneratorItem) : Boolean;
  50. begin
  51. Result:=True;
  52. If G.GeneratorClass.NeedsSQL then
  53. Result:=HaveSQL;
  54. If Result then
  55. If G.GeneratorClass.NeedsFieldDefs then
  56. Result:=HaveFields;
  57. end;
  58. Var
  59. I,J: Integer;
  60. G : TCodeGeneratorItem;
  61. begin
  62. RGGenerators.Items.Clear;
  63. J:=-1;
  64. For I:=0 to CodeGenerators.Count-1 do
  65. begin
  66. G:=CodeGenerators[i];
  67. If AllowGenerator(G) then
  68. begin
  69. RGGenerators.Items.AddObject(G.Description,G);
  70. If (G=FSelF) then
  71. J:=I;
  72. end;
  73. end;
  74. With RGGenerators do
  75. If (J<>-1) then
  76. ItemIndex:=Items.IndexOfObject(CodeGenerators[J])
  77. else
  78. If Items.Count>0 then
  79. ItemIndex:=0;
  80. end;
  81. end.