个你一个例子
var i: integer;
frame: TFrame2;
function CreateFrame(Index: integer; alias: string):TFrame2;
begin
Result := TFrame2.create(self);
Result.name := 'Fram'+inttostr(Index);
Result.Parent := self;
Result.Tag := index;
Result.txflag:=0;
Result.cxflag:=true;
Result.RePaintSingle(alias, index);
end;
begin
query1.Close;
query1.SQL.Clear;
query1.SQL.add('select pointno, aliasname from dtcld');
query1.Open;
i := 0;
while not query1.Eof do
begin
frame := CreateFrame(query1.fieldbyname('pointno').asinteger,query1.fieldbyname('aliasname').asstring);
case count of
4:
begin
frame.Width := MainForm.ClientWidth div 2;
frame.Height := (MainForm.ClientHeight - panel1.height*2) div 2;
frame.Top := (i div 2)*frame.Height;
frame.Left := (i mod 2)*frame.Width;
end;
6:
begin
frame.Width := MainForm.ClientWidth div 3;
frame.Height := (MainForm.ClientHeight - panel1.height*2) div 2;
frame.Top := (i div 3)*frame.Height;
frame.Left := (i mod 3)*frame.Width;
end;
9:
begin
frame.Width := MainForm.ClientWidth div 3;
frame.Height := (MainForm.ClientHeight - panel1.height*2) div 3;
frame.Top := (i div 3)*frame.Height;
frame.Left := (i mod 3)*frame.Width;
end;
end;
frame.Button1.Left := frame.Width - 60;
inc(i);
if i >= count then break;
query1.Next;
end;
tag := count;
end;
var i: integer;
frame: TFrame2;
function CreateFrame(Index: integer; alias: string):TFrame2;
begin
Result := TFrame2.create(self);
Result.name := 'Fram'+inttostr(Index);
Result.Parent := self;
Result.Tag := index;
Result.txflag:=0;
Result.cxflag:=true;
Result.RePaintSingle(alias, index);
end;
begin
query1.Close;
query1.SQL.Clear;
query1.SQL.add('select pointno, aliasname from dtcld');
query1.Open;
i := 0;
while not query1.Eof do
begin
frame := CreateFrame(query1.fieldbyname('pointno').asinteger,query1.fieldbyname('aliasname').asstring);
case count of
4:
begin
frame.Width := MainForm.ClientWidth div 2;
frame.Height := (MainForm.ClientHeight - panel1.height*2) div 2;
frame.Top := (i div 2)*frame.Height;
frame.Left := (i mod 2)*frame.Width;
end;
6:
begin
frame.Width := MainForm.ClientWidth div 3;
frame.Height := (MainForm.ClientHeight - panel1.height*2) div 2;
frame.Top := (i div 3)*frame.Height;
frame.Left := (i mod 3)*frame.Width;
end;
9:
begin
frame.Width := MainForm.ClientWidth div 3;
frame.Height := (MainForm.ClientHeight - panel1.height*2) div 3;
frame.Top := (i div 3)*frame.Height;
frame.Left := (i mod 3)*frame.Width;
end;
end;
frame.Button1.Left := frame.Width - 60;
inc(i);
if i >= count then break;
query1.Next;
end;
tag := count;
end;
解决方案 »
- Delphi +ADO+ACCESS 在我把原来在SQL SERVER调试通过的程序改到ACCESS,提交数据时报错:“缺少更新或刷新的健列信息”,救我!!!
- 问一个DevExpressBars的安装问题,有经验的朋友进来看下,在线等。
- 把这段检查环境的代码放在什么位置比较好,谢谢
- excel一般都只有3个sheet,怎样动态的添加sheet?
- 怎么把string型转换成char型
- 如何在delphi源程序中操作sql数据库
- 请问!有难!SOS!
- 一个非常紧急的问题
- 为什么tnmftp.nlist或tnmftp.list列的是服务器端的目录和文件的属性
- 关于ReportBuilder 5的问题
- 有没有excel97单元的详细例子?里面一个autofilter函数我不会用,谢谢
- delphi的dll库中语句执行返回程序出错!dll中加上不相关的语句就可以!是borland的一个大bug!!!?
Frame1:=TMyFrame.Create(Self);
Frame1.Parent:=self;
Frame1.Name:='a1';
Frame1.Tag:=1;
Frame1.Top:=10;
Frame1.Left:=10; Frame2:=TMyFrame.Create(Self);
Frame2.Parent:=self;
Frame2.Name:='a2';
Frame2.Tag:=1;
Frame2.Top:=10;
Frame2.Left:=10;
在你的启发下,我又做了一个例子,发现只要Create(nil)即可解决问题,可能是动态的
Frame 不能有同一个 Owner 的原因,只是不知为何?
在此多谢了,分数仍然奉上。
可否请问Lucky兄用Delphi用了多久,谢谢了。