科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件Delphi数据库输入控件DBPanel的实现下

Delphi数据库输入控件DBPanel的实现下

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

论是开发什么样的程序,数据输入是不可缺少的。快速地生成一个美观的输入界面无疑会大大提高程序开发的效率。

作者:李晓平 来源:yesky 2007年11月1日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
{ 创建各字段的数据输入控件的方法}

procedure TDBPanel.CreateEditors;//(DS: TDataSource; ColCount: Integer);
var
i, n, RowCount: Integer;
TextHeight: Integer;
begin
if DataSource.DataSet.Active then begin
n := DataSource.DataSet.FieldCount;

{ 计算最大的标题长度及显示长度}

DataSource.DataSet.First;

{ 计算高度}

TextHeight := Canvas.TextHeight(D Source.DataSet.Fields[0].DisplayLabel) + FLineHeight; //10;

{ 计算行列数}

RowCount := n div Columns;
if n mod Columns $#@60;$#@62; 0 then inc(RowCount);

{ 分配内存}

FreeEditors;
SetLength(Editors, n);
SetLength(Labels, n);

{ 创建滚动盒}

FScrollBox := TScrollBox.Create(Owner);
FScrollBox.Parent := Self;
FScrollBox.Align := alClient;

{ 创建编辑}

for i:=0 to n-1 do begin

{ 创建标题}

Labels[i] := TLabel.Create(Owner);
Labels[i].Parent := FScrollBox; //Self;
Labels[i].Caption := DataSource.DataSet.Fields[i].DisplayLabel;
Labels[i].Left := FLeft + (maxLabelLen + maxTextLen + 10) * (i div RowCount);
Labels[i].Width := maxLabelLen;
Labels[i].Top := FTop + (i mod RowCount) * TextHeight + 5;

{ 创建编辑对象}

Editors[i] := TDBComboBox.Create(Owner);
Editors[i].Parent := FScrollBox; //Self;
Editors[i].Left := Labels[i].Left + Labels[i].Width;
Editors[i].Width := maxTextLen;
Editors[i].Top := FTop + (i mod RowCount) * TextHeight;
Editors[i].DataSource := DataSource;
Editors[i].DataField := DataSource.DataSet.Fields[i].FieldName;
Editors[i].OnKeyPress := AKeyPress;
Editors[i].OnKeyDown := AKeyDown;
end;
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章