delphi中关于动态生成memo和button问题,怎么将对应记录加到数据库里???
varfrm_cs:Tfrm_cs;memo:TMemo;butt:Tbutton;label1:Tlabel;implementation{$R*.dfm}vari:I...
var
frm_cs: Tfrm_cs;
memo:TMemo;
butt:Tbutton;
label1:Tlabel;
implementation
{$R *.dfm}
var
i:Integer;
procedure Tfrm_cs.Butt_scClick(Sender: TObject);
begin
label1:=TLabel.Create(Self);
label1.Parent:=Self;
label1.Left:=20;
label1.Top:=30+i*150;
label1.Caption:=IntToStr(i);
label1.Show;
memo:=Tmemo.Create(Self);
memo.Parent:=Self;
memo.Left:=150;
memo.Top:=30+i*150;
memo.Show;
butt:=TButton.Create(Self);
butt.Parent:=Self;
butt.Left:=280;
butt.Top:=120+i*150;
butt.Height:=25;
butt.Width:=60;
butt.Caption:='添加';
butt.OnClick:=myclick;
butt.Show;
inc(i);
end;
procedure Tfrm_cs.myclick(Sender: TObject);
begin
query_tj.Close;
query_tj.Connection:=conn;
query_tj.SQL.Clear;
query_tj.SQL.Add('select * from cs_table');
query_tj.Open;
query_tj.Append;
query_tj.FieldByName('memotext').Text:=memo.Text;
query_tj.Next;
end;
procedure Tfrm_cs.FormCreate(Sender: TObject);
begin
i:=1;
end; 展开
frm_cs: Tfrm_cs;
memo:TMemo;
butt:Tbutton;
label1:Tlabel;
implementation
{$R *.dfm}
var
i:Integer;
procedure Tfrm_cs.Butt_scClick(Sender: TObject);
begin
label1:=TLabel.Create(Self);
label1.Parent:=Self;
label1.Left:=20;
label1.Top:=30+i*150;
label1.Caption:=IntToStr(i);
label1.Show;
memo:=Tmemo.Create(Self);
memo.Parent:=Self;
memo.Left:=150;
memo.Top:=30+i*150;
memo.Show;
butt:=TButton.Create(Self);
butt.Parent:=Self;
butt.Left:=280;
butt.Top:=120+i*150;
butt.Height:=25;
butt.Width:=60;
butt.Caption:='添加';
butt.OnClick:=myclick;
butt.Show;
inc(i);
end;
procedure Tfrm_cs.myclick(Sender: TObject);
begin
query_tj.Close;
query_tj.Connection:=conn;
query_tj.SQL.Clear;
query_tj.SQL.Add('select * from cs_table');
query_tj.Open;
query_tj.Append;
query_tj.FieldByName('memotext').Text:=memo.Text;
query_tj.Next;
end;
procedure Tfrm_cs.FormCreate(Sender: TObject);
begin
i:=1;
end; 展开
2个回答
展开全部
我晕 你Append后没有Post?那数据还是在缓存的吧?然后又用了Next,那数据能保存成功吗?
你说的那个保存 可以通过这个方式 :
1 动态创建Memo的时候可以这样设置:
Memo1.Name := 'Memo1';
Button1.Name := 'Button1';
2 在MyClick中可以这样设置:
var AName, AText : string;
begin
AName := (Sender as TButton).Name; //获取当前按钮控件名称
AName := Copy(AName,Pos('Button',AName)+6,Length(AName)); //获取后缀的数字
AName := 'Memo'+AName; //这个就是memo的名称啦
if Assigned(FindComponent(AName)) then //搜索控件 如果存在就取其文字
AText := TMemo(FindComponent(AName)).Lines.Text
else ShowMessage('没有搜索到相应的Memo控件!无法保存!');
with query_Tj do
begin
Connection := conn;
Close;
SQL.Text := 'select * from cs_table where 1=2'; //加where 1=2 ,避免搜索整个表 按你原先的代码,如果以后你数据变多时,搜索就会很慢
Open;
Append;
FieldByName('memotext').Value := AText;
Post;
end;
end;
以上代码为手打,没有用delphi调试过,意思差不多是这样,自己看着办啦
你说的那个保存 可以通过这个方式 :
1 动态创建Memo的时候可以这样设置:
Memo1.Name := 'Memo1';
Button1.Name := 'Button1';
2 在MyClick中可以这样设置:
var AName, AText : string;
begin
AName := (Sender as TButton).Name; //获取当前按钮控件名称
AName := Copy(AName,Pos('Button',AName)+6,Length(AName)); //获取后缀的数字
AName := 'Memo'+AName; //这个就是memo的名称啦
if Assigned(FindComponent(AName)) then //搜索控件 如果存在就取其文字
AText := TMemo(FindComponent(AName)).Lines.Text
else ShowMessage('没有搜索到相应的Memo控件!无法保存!');
with query_Tj do
begin
Connection := conn;
Close;
SQL.Text := 'select * from cs_table where 1=2'; //加where 1=2 ,避免搜索整个表 按你原先的代码,如果以后你数据变多时,搜索就会很慢
Open;
Append;
FieldByName('memotext').Value := AText;
Post;
end;
end;
以上代码为手打,没有用delphi调试过,意思差不多是这样,自己看着办啦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
query_tj.Append;
query_tj.FieldByName('memotext').Text:=memo.Text;
赋值了又不保存,
还移动了指针:query_tj.Next;
不知道你要干什么?
memo.Parent:=Self;
memo肯定是要放在那一个容器里的,怎么它的父组件是自己呢?
看不懂
query_tj.FieldByName('memotext').Text:=memo.Text;
赋值了又不保存,
还移动了指针:query_tj.Next;
不知道你要干什么?
memo.Parent:=Self;
memo肯定是要放在那一个容器里的,怎么它的父组件是自己呢?
看不懂
追问
query_tj.Append;
query_tj.FieldByName('memotext').Text:=memo.Text;
query_tj.Next;
这是一次插入完成,当然把指针移到下一个,准备插入了!
这个提的意思是这样的就是点击添加按钮可以弹出一个memo和按钮,然后在点击添加按钮,又生成一个memo和button,如这样反复可以,点击释放按钮呢,旧可以把所有的组件清空。点击memo对应的button,就可以把memo的内容存在数据库中!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询