怎么样动态调用EDIT组件? (0分)

  • 主题发起人 主题发起人 crossbannyli
  • 开始时间 开始时间
C

crossbannyli

Unregistered / Unconfirmed
GUEST, unregistred user!
不知道窗体中有多少个TEdit,想获取其中第N个的的TEXT,怎么实现
谢谢
 
确实每钱啊,真的没人知道吗?
 
var
i,ediCount: integer;
edtText: string;
for i := 0 to componentCount - 1 do
if components is Tedit then
begin
edtCount := edtCount + 1;
if edtcount = N then
begin
edtText := Tedit(components).Text
break;
end;
end
else
continue;
 
easykey大哥让我佩服
我意图是这样的,就把很多Tedit中输入的数据在FOR 语句中用数组保存起来,我都实现不了。
 
var
i: integer;
edtTexts: Tstrings;
begin
edtTexts := TStrings.Create;
for i := 0 to componentCount - 1 do
if components is Tedit then
edtTexts.Add(Tedit(components).Text);
end;
忘了一点,edtTexts用完了之后要释放:edtTexts.Free;
 
handle是公共变量,引用两外的Form1单元的编辑框的值
有错误,郁闷
if Form1.components is TEdit then
begin
handle:=strtoint (Form1.TEdit(components).Text);
end;
 
handle什么东西?
 
是这样的,刚才写错了一些
错误就是在这里“if Form1.components is Tedit then”


procedure TForm4.access(handle:array of double);
var
i,k,n:integer;
begin
n:=Form1.ComponentCount;
k:=0;
for i:=0 to n-1 do
begin
if Form1.components is Tedit then
begin
handle[k]:=strtoint(TEdit(components).Text);
k:=k+1;
end;
end;
end;
 
不要用Handle作参数名,handle是Form的一个属性,出错信息是什么?
 
用到动态数组了,动态数组要SetLength 的
 
我把handle 该成hand,strtoint->strtofloat,有:
undeclared identifier "TEdit"
there is no overload version of ""strtofloat"……
 
uses子句中加入StdCtrls,SysUtils;
 
还是不行,一样错误
郁闷
和谢谢你尽力帮我啊,到时后我没完的另外的100分给你,意思意思

全部的代码:
unit Unit4;

interface

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

type
TForm4 = class(TForm)
private
{ Private declarations }
public
{定义公共常量和变量 }
hand:array of double;//定义获取四杆机构杆件基本尺寸数组
handle_R:double;
handle_P:double;
handle_C:double;
handle_A:double;
handle_I:double;
handle_HG:double;
handle_K:double;

procedure access(hand:array of double); //定义获取四杆机构杆件基本尺寸函数

end;

var
Form4: TForm4;

implementation

uses Unit1;
procedure TForm4.access(hand:array of double);
var
i,k,n:integer;
begin
n:=Form1.ComponentCount;
k:=0;
for i:=0 to n-1 do
begin
if (Form1.components is TEdit ) then
begin
hand[k]:=strtofloat(Form1.TEdit(components).Text);
k:=k+1;
end;
end;
end;



{$R *.dfm}

end.
 
没帮上你,不好意思,帖子上联系太慢,想常联系可以加我QQ85872499
 
解决了
谢谢
han:string;
begin
n:=Form1.ComponentCount;
k:=0;
for i:=0 to n-1 do
begin
if (Form1.components is TEdit ) then
begin
han:=TEdit(Form1.Components).Text;
hand[k]:=strtofloat(han);
k:=k+1;
end;
end;
 
接受答案了.
 
后退
顶部