![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
помогите разобраться с TEdit [D7]
Evgen88 © (2011-11-29 14:04:00)Привет! В проге в процессе выполнения создаются Edit-ы
........................
for i:=1 to rang do
begin
with TEdit.Create(Form1)
do begin
Parent := Form1;
Top := 80;
Left := i * 50;
Width := 25;
Height := 18;
Text := '';
Name:='C' + IntToStr(i);
end;
далее пользователь вводит в них числа, как из созданных Edit-ов считать эти числа???
mas[i]:=Ci.Text не получается, т.к. этих Edit-ов еще нет.
Помогите плз!!!!!
Dimka Maslov (2011-11-29 18:45:00) [1]TStringGrid для указанной цели не проще ли использовать?
Anatoly Podgoretsky (2011-11-29 15:44:00) [2]
> Parent := self; он ошибку выдавал
Это он тебе выдавал.
Ega23 (2011-11-29 15:37:00) [3]
> Parent := self; он ошибку выдавал
Врёшь.
unit Unit27;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm27 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form27: TForm27;
implementation
{$R *.dfm}
procedure TForm27.FormCreate(Sender: TObject);
begin
with TEdit.Create(Self) do
begin
Parent := Self;
SetBounds(100, 100, 100, 25);
Text := 'bla-bla-bla';
end;
end;
end.
Evgen88 (2011-11-29 15:18:00) [4]Parent := self; он ошибку выдавал
Anatoly Podgoretsky (2011-11-29 15:18:00) [5]Тем более должен мысли более четко формулировать.
MBo (2011-11-29 15:18:00) [6]http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=342
Evgen88 (2011-11-29 15:14:00) [7]p.s: в первый раз на форуме)
Ega23 (2011-11-29 15:11:00) [8]
> Омлет © (29.11.11 14:18) [3]
> Кстати, как ты их потом удаляешь?
with TEdit.Create( Form1)
Оно, конечно, не правильно, надо от Self создавать. Но для новичка прокатит.
MBo (2011-11-29 15:10:00) [9]В статьях здесь - 'Массив компонентов'
на www.delphikingdom.ru - 'Жизнь и смерть в режиме run-time'
Evgen88 (2011-11-29 15:07:00) [10]ок. спасибо, попробую с сылками
И. Павел (2011-11-29 15:07:00) [11]Иногда возникает такое ощущение, что кто-то обкатывает на сайте ботов.
Омлет (2011-11-29 15:07:00) [12]
> Evgen88 © (29.11.11 15:03) [8]
При создании TEdit надо хранить на него ссылку.
type
TForm1 = class(TForm)
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
Edits: array of TEdit;
mas: array of double;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
const
range = 10;
procedure TForm1.FormCreate(Sender: TObject);
var
i : integer;
begin
SetLength(Edits, range);
SetLength(mas, range);
for i := 0 to high(Edits) do
begin
Edits[i] := TEdit.Create(nil);
with Edits[i] do
begin
Parent := self;
Top := 80;
Left := i * 50;
Width := 25;
Height := 18;
Text := '';
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i: integer;
begin
for i := 0 to high(Edits) do
mas[i] := StrToFloat(Edits[i].Text)
end;
Evgen88 (2011-11-29 15:03:00) [13]
var rang:integer;
procedure TForm1.Button1Click(Sender: TObject);
var
i,j,ogran:integer;
begin
rang:=StrToInt(Edit1.Text);
ogran:=StrToInt(Edit2.Text);
// поля ввода для функции f(x)
for i:=1 to rang do
begin
with TEdit.Create(Form1)
do begin
Parent := Form1;
Top := 80;
Left := i * 50;
Width := 25;
Height := 18;
Text := '';
Name:='C' + IntToStr(i);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i:integer;
mas:array of real;
begin
for i:=0 to rang-1 do mas[i]:=StrToFloat(C+IntToStr(i).Text);{так не получается}
end;
как в массив записать те значения, которые введут в созданные TEdit с именами С1, С2 ит.д.
И. Павел (2011-11-29 14:59:00) [14]> На mas[i]:=StrToFloat(С1.Text) компилятор ругается, т.к.
> этот Edit еще не создан.
Просто от того, что вы зададите для Edit свойство Name, его нельзя будет использовать так, как будто в форме появился элемент с этим именем.
Проще говоря нельзя так делать.
Просто сохраняйте массив ссылок на созданные Edit-ы. Или ищите их перебором, но это более запутанно.
anonims (2011-11-29 14:57:00) [15]
> создаю в зависимости от введенного числа с именами С1, С2
> и т.д.
> компилятор ругается, т.к. этот Edit еще не создан.
имя компонента <>имя переменной.
они Edit c с именем С1 есть. но нет переменной С1, C2, и т.д.
рещение зависит от того где и когда вы желаете считывать данные из Edit.
можно использовать разные механизмы.
Anatoly Podgoretsky (2011-11-29 14:52:00) [16]Еще раз никакого mas в коде нет, но теперь вдруг откуда то появились какие то С1, С2, которых в коде тоже нет.
Ты с кем разговариваешь то?
Evgen88 (2011-11-29 14:44:00) [17]Я их создаю в зависимости от введенного числа с именами С1, С2 и т.д. Потом ввожу в них числа. есть
mas:array of real
Как эти числа записать в массив mas? Наmas[i]:=StrToFloat(С1.Text)компилятор ругается, т.к. этот Edit еще не создан.
Омлет (2011-11-29 14:18:00) [18]В Tag записывай уникальный идентификатор.
Если нужно считывать значения во время их редактирования, то присваивай ещё обработчик OnChange. В обработчике по TEdit(Sender).Tag определяй, какой едит редактируется.
Кстати, как ты их потом удаляешь?
Медвежонок Пятачок (2011-11-29 14:16:00) [19]т.к. этих Edit-ов еще нет.
Этих эдитов уже есть. Причем всех.
Иначе куда же юзер вводил цифири?
Anatoly Podgoretsky (2011-11-29 14:11:00) [20]> Evgen88 (29.11.2011 14:04:00) [0]
mas нет в тексте, Не понятно кто такой этот CI, да и вообще, что сделать то
хочешь?