⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getstru.pas

📁 一个桌旁室收费系统
💻 PAS
字号:
unit GetStru;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, DbTables, BDE, ExtCtrls;

type
  TReadStru = class(TForm)
    List1: TListBox;
    List2: TListBox;
    Label3: TLabel;
    Alias: TComboBox;
    procedure FormCreate(Sender: TObject);
    procedure AliasChange(Sender: TObject);
    procedure AliasExit(Sender: TObject);
    procedure AliasKeyPress(Sender: TObject; var Key: Char);
    procedure List1Click(Sender: TObject);
  private
    { Private declarations }
    procedure ShowFields(T: TTable);
  public
    { Public declarations }
  end;

var
  ReadStru: TReadStru;

implementation

{$R *.DFM}

procedure TReadStru.ShowFields(T: TTable);
var
  curProp: CURProps;
  pfldDes, pCurFld: pFLDDesc;
  i: Integer;
  MemSize: Integer;
  FieldList: string;
  S: string;
begin
  T.Open;
  Check(DbiGetCursorProps(T.Handle, curProp));
  MemSize := curProp.iFields * SizeOf(FLDDesc);
  pfldDes := AllocMem(MemSize);
  List2.items.Clear;
  try
    pCurFld := pfldDes;
    DbiGetFieldDescs(T.Handle, pfldDes);
    for I := 0 to curProp.iFields - 1 do
      with pCurFld^ do begin
        case iFldType of
          1: S := '字符';
          2: S := '日期';
          3: S := '备注';
          4: S := '逻辑';
          5: S := '短整';
          6: S := '长整';
          7: S := '浮点';
          8: S := 'BCDm';
          9: S := '字节';
          10: S := '时间';
          11: S := '邮戳';
        else S := '未知' + inttostr(iFldType); end;
        FieldList := szName +
          StringofChar(#32, 10 - Length(trim(szName))) +
          Format('(%4s,%3d,%2d)', [S, iUnits1, iUnits2]);
        List2.items.Add(Trim(FieldList));
        inc(pCurFld);
      end;
  finally
    FreeMem(pfldDes, MemSize);
  end;
  T.Close;
end;


procedure TReadStru.FormCreate(Sender: TObject);
var T: TDataBase;
begin
  T := TDataBase.Create(Self);
  T.LoginPrompt := False;
  if Session.Active = false then
    Session.Open;
  Session.GetAliasNames(Alias.Items);
end;

procedure TReadStru.AliasChange(Sender: TObject);
begin
  if Alias.ItemIndex = -1 then Exit;
  Session.GetTableNames(Alias.Text, '', true, false, List1.Items);
end;

procedure TReadStru.AliasExit(Sender: TObject);
begin
  with Alias do
    if (Text <> '') and (Items.indexof(Text) = -1) then
    begin
      Items.Add(Text);
      Alias.ItemIndex := Items.indexof(Text);
      AliasChange(Self);
    end;

end;

procedure TReadStru.AliasKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then AliasExit(Self);
end;

procedure TReadStru.List1Click(Sender: TObject);
var T: TTable;
begin
  T := TTable.Create(Self);
  T.DatabaseName := Alias.Text;
  with List1 do T.TableName := Items[ItemIndex];
  ShowFields(T);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -