求EDIT+DBGRID组合控件的源码!(50分)

  • 主题发起人 主题发起人 LJH1978
  • 开始时间 开始时间
L

LJH1978

Unregistered / Unconfirmed
GUEST, unregistred user!
学习学习
即EDIT上弹出GRID,选择后收回
 
在edit上弹出,还是在edit下弹出?
要不要个按钮之类的?
 
不需要按纽
根据EDIT位置,如果EDIT靠下,就在上弹出,反之
一进入EDIT就弹出,离开EDIT就隐藏

最好是自定义控件
 
简单!不过要加不少属性,否则你弹出的Grid的内容从哪儿来呀!
建议你参考elib的控件写法!
 
有没有现在的这样的例子?
 
目前我不知道,不过我都是自己写!
给你一点启发:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, DBGrids;

type
TmyEdit = class(TEdit)
private
FOnEnter: TNotifyEvent;
FOnExit: TNotifyEvent;
AForm:TForm;
FGrid: TCustomGrid;
procedure CMEnter(var Message: TCMEnter); message CM_ENTER;
procedure CMExit(var Message: TCMExit); message CM_EXIT;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property OnEnter: TNotifyEvent read FOnEnter write FOnEnter;
property OnExit: TNotifyEvent read FOnExit write FOnExit;
end;

TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

{ TmyEdit }

procedure TmyEdit.CMEnter(var Message: TCMEnter);
begin
//定义位置,窗口大小 Visible:=True;
end;

procedure TmyEdit.CMExit(var Message: TCMExit);
begin
//Visible:=False;如果是窗口要hide
end;

constructor TmyEdit.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
AForm:=TForm.Create(nil);
AForm.Visible:=false;
FGrid:=TCustomGrid.Create(nil);
FGrid.Parent:=Aform;
FGrid.Align:=alclient;
//你可以用窗口停靠
//如果是窗口要hide
//创建Grid,Visible为false
end;

destructor TmyEdit.Destroy;
begin
if Assigned(FGrid) then
FGrid.Free;
if Assigned(AForm) then
FreeAndNil(AForm);
inherited;
end;

end.
 
好的,谢谢
 
接受答案了.
 
后退
顶部