mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-02 17:03:41 +02:00
102 lines
2.2 KiB
ObjectPascal
102 lines
2.2 KiB
ObjectPascal
unit frmSelectCodeGenerator;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, fpddcodegen,
|
|
ButtonPanel, ldd_consts;
|
|
|
|
type
|
|
|
|
{ TSelectCodeGeneratorForm }
|
|
|
|
TSelectCodeGeneratorForm = class(TForm)
|
|
BPButtons: TButtonPanel;
|
|
RGGenerators: TRadioGroup;
|
|
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure FormShow(Sender: TObject);
|
|
private
|
|
FHaveFields: Boolean;
|
|
FHaveSQL: Boolean;
|
|
FSelF: TCodeGeneratorItem;
|
|
procedure ShowAvailableGenerators;
|
|
{ private declarations }
|
|
public
|
|
{ public declarations }
|
|
Property HaveSQL : Boolean Read FHaveSQL Write FHaveSQL;
|
|
Property HaveFields : Boolean Read FHaveFields Write FHaveFields;
|
|
Property SelectedGenerator : TCodeGeneratorItem Read FSelF Write FSelF;
|
|
end;
|
|
|
|
var
|
|
SelectCodeGeneratorForm: TSelectCodeGeneratorForm;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
{ TSelectCodeGeneratorForm }
|
|
|
|
procedure TSelectCodeGeneratorForm.FormShow(Sender: TObject);
|
|
begin
|
|
ShowAvailableGenerators;
|
|
end;
|
|
|
|
procedure TSelectCodeGeneratorForm.FormClose(Sender: TObject;
|
|
var CloseAction: TCloseAction);
|
|
begin
|
|
If (ModalResult=mrOK) then
|
|
With RGGenerators do
|
|
FSelF:=Items.Objects[ItemIndex] as TCodeGeneratorItem;
|
|
end;
|
|
|
|
procedure TSelectCodeGeneratorForm.FormCreate(Sender: TObject);
|
|
begin
|
|
Caption := ldd_Selectcodetobegenerated;
|
|
RGGenerators.Caption:= ldd_Availablecodegenerators;
|
|
end;
|
|
|
|
procedure TSelectCodeGeneratorForm.ShowAvailableGenerators;
|
|
|
|
Function AllowGenerator(G : TCodeGeneratorItem) : Boolean;
|
|
|
|
begin
|
|
Result:=True;
|
|
If G.GeneratorClass.NeedsSQL then
|
|
Result:=HaveSQL;
|
|
If Result then
|
|
If G.GeneratorClass.NeedsFieldDefs then
|
|
Result:=HaveFields;
|
|
end;
|
|
|
|
Var
|
|
I,J: Integer;
|
|
G : TCodeGeneratorItem;
|
|
|
|
begin
|
|
RGGenerators.Items.Clear;
|
|
J:=-1;
|
|
For I:=0 to CodeGenerators.Count-1 do
|
|
begin
|
|
G:=CodeGenerators[i];
|
|
If AllowGenerator(G) then
|
|
begin
|
|
RGGenerators.Items.AddObject(G.Description,G);
|
|
If (G=FSelF) then
|
|
J:=I;
|
|
end;
|
|
end;
|
|
With RGGenerators do
|
|
If (J<>-1) then
|
|
ItemIndex:=Items.IndexOfObject(CodeGenerators[J])
|
|
else
|
|
If Items.Count>0 then
|
|
ItemIndex:=0;
|
|
end;
|
|
|
|
end.
|
|
|