📄 ddhdbwf.pas
字号:
unit DdhDbwF;
interface
uses
SysUtils, Windows, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, ExtCtrls, Grids, DB, DBTables,
Buttons, Mask, DBCtrls;
type
TFormDbWiz = class(TForm)
Notebook1: TNotebook;
Label1: TLabel;
ListDatabases: TListBox;
BitBtnNext1: TBitBtn;
BitBtnNext2: TBitBtn;
Label2: TLabel;
ListTables: TListBox;
BitBtnBack2: TBitBtn;
ListFields: TListBox;
Label3: TLabel;
BitBtnNext3: TBitBtn;
BitBtnBack3: TBitBtn;
Label4: TLabel;
BitBtnNext4: TBitBtn;
BitBtnBack4: TBitBtn;
GroupFilter: TRadioGroup;
BitBtnAll: TBitBtn;
BitBtnNone: TBitBtn;
StringGrid1: TStringGrid;
Table1: TTable;
procedure Notebook1PageChanged(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ListDatabasesClick(Sender: TObject);
procedure BitBtnNext1Click(Sender: TObject);
procedure ListTablesClick(Sender: TObject);
procedure BitBtnBack2Click(Sender: TObject);
procedure BitBtnNext2Click(Sender: TObject);
procedure BitBtnBack3Click(Sender: TObject);
procedure BitBtnAllClick(Sender: TObject);
procedure BitBtnNoneClick(Sender: TObject);
procedure BitBtnNext3Click(Sender: TObject);
procedure BitBtnBack4Click(Sender: TObject);
procedure ListFieldsClick(Sender: TObject);
procedure BitBtnNext4Click(Sender: TObject);
private
{ Private declarations }
public
SourceCode, FormName, UnitName: string;
ResultForm: TForm;
procedure GeneratedFormClose (
Sender: TObject; var Action: TCloseAction);
end;
var
FormDbWiz: TFormDbWiz;
implementation
{$R *.DFM}
uses
DdhDynDb, ExptIntf;
////// form code //////
procedure TFormDbWiz.Notebook1PageChanged(Sender: TObject);
begin
// copy the name of the page into the caption
Caption := Format (
'Ddh DB Form Wizard - Page %d/%d: ',
[NoteBook1.PageIndex + 1,
NoteBook1.Pages.Count,
NoteBook1.ActivePage]);
end;
procedure TFormDbWiz.FormCreate(Sender: TObject);
begin
// fill the first listbox with database names
Session.GetDatabaseNames (
ListDatabases.Items);
// start in the first page
Notebook1.PageIndex := 0;
// default values (modified by the wizard)
FormName := 'TResultForm';
UnitName := 'ResultUnit';
end;
procedure TFormDbWiz.ListDatabasesClick(Sender: TObject);
begin
// database selected: enable the Next button
BitBtnNext1.Enabled := True;
end;
procedure TFormDbWiz.BitBtnNext1Click(Sender: TObject);
var
CurrentDB, CurrentFilter: string;
begin
// get the database and filters
CurrentDB := ListDatabases.Items [
ListDatabases.ItemIndex];
CurrentFilter := GroupFilter.Items [
GroupFilter.ItemIndex];
// retrieve the tables
Session.GetTableNames (CurrentDB,
CurrentFilter, True, False, ListTables.Items);
// move to the next page
NoteBook1.PageIndex := 1;
BitBtnNext2.Enabled := False;
end;
procedure TFormDbWiz.ListTablesClick(Sender: TObject);
begin
// table selected: enable next button
BitBtnNext2.Enabled := True;
end;
procedure TFormDbWiz.BitBtnBack2Click(Sender: TObject);
begin
// go back to first page
NoteBook1.PageIndex := 0;
end;
procedure TFormDbWiz.BitBtnNext2Click(Sender: TObject);
var
I: Integer;
begin
// set the properties of the selected table
with Table1 do
begin
DatabaseName := ListDatabases.Items[
ListDatabases.ItemIndex];
TableName := ListTables.Items[
ListTables.ItemIndex];
// load the field definitions
FieldDefs.Update;
end;
// clear the list box, then fill it
ListFields.Clear;
for I := 0 to Table1.FieldDefs.Count - 1 do
// add number, name, and class name of each field
ListFields.Items.Add (Format (
'%d) %s [%s]',
[Table1.FieldDefs[I].FieldNo,
Table1.FieldDefs[I].Name,
Table1.FieldDefs[I].FieldClass.ClassName]));
// move to the next page
NoteBook1.PageIndex := 2;
BitBtnNext3.Enabled := False;
end;
procedure TFormDbWiz.BitBtnBack3Click(Sender: TObject);
begin
// back to the second page
NoteBook1.PageIndex := 1;
end;
procedure TFormDbWiz.BitBtnAllClick(Sender: TObject);
var
I: Integer;
begin
// select every available field
for I := 0 to ListFields.Items.Count - 1 do
ListFields.Selected [I] := True;
// enable Next button
BitBtnNext3.Enabled := True;
end;
procedure TFormDbWiz.BitBtnNoneClick(Sender: TObject);
var
I: Integer;
begin
// deselect all the fields
for I := 0 to ListFields.Items.Count - 1 do
ListFields.Selected [I] := False;
// disable next button (no fields are selected)
BitBtnNext3.Enabled := False;
end;
procedure TFormDbWiz.ListFieldsClick(Sender: TObject);
begin
// enable button if there at least one field selected
BitBtnNext3.Enabled := ListFields.SelCount > 0;
end;
procedure TFormDbWiz.BitBtnNext3Click(Sender: TObject);
var
I, RowNum: Integer;
begin
// reserve enough rows in the string grid
StringGrid1.RowCount := ListFields.Items.Count;
// empty the string grid
for I := 0 to StringGrid1.RowCount - 1 do
begin
StringGrid1.Cells [0, I] := '';
StringGrid1.Cells [1, I] := '';
end;
// for each field, if selected list it with the
// corresponding data aware component
RowNum := 0;
for I := 0 to ListFields.Items.Count - 1 do
if ListFields.Selected [I] then
begin
StringGrid1.Cells [0, RowNum] := Format ('%d) %s [%s]',
// field number, name, classname of data aware control
[Table1.FieldDefs[I].FieldNo,
Table1.FieldDefs[I].Name,
ConvertClass(Table1.FieldDefs[I].FieldClass).ClassName]);
StringGrid1.Cells [1, RowNum] := Table1.FieldDefs[I].Name;
Inc (RowNum);
end;
// set the real number of rows
StringGrid1.RowCount := RowNum;
NoteBook1.PageIndex := 3;
end;
procedure TFormDbWiz.BitBtnBack4Click(Sender: TObject);
begin
NoteBook1.PageIndex := 2;
end;
// generate button
procedure TFormDbWiz.BitBtnNext4Click(Sender: TObject);
var
StrList: TStringList;
I, RowNum: Integer;
begin
StrList := TStringList.Create;
Screen.Cursor := crHourGlass;
try
RowNum := 0;
for I := 0 to ListFields.Items.Count - 1 do
if ListFields.Selected [I] then
begin
StrList.AddObject (
StringGrid1.Cells [1, RowNum], TObject (I));
// move to next row in string grid
Inc (RowNum);
end;
ResultForm := GenerateForm (StrList, Table1);
if not Assigned (ToolServices) then
begin
// stand alone form
ResultForm.OnClose := GeneratedFormClose;
ResultForm.Show;
end
else
begin
// wizard
SourceCode := GenerateSource (ResultForm,
FormName, UnitName);
ModalResult := mrOK;
end;
finally
Screen.Cursor := crDefault;
StrList.Free;
end;
end;
procedure TFormDbWiz.GeneratedFormClose(
Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -