Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

помогите разобраться с 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, да и вообще, что сделать то
хочешь?


Наверх

Титульная страница Поиск, карта сайта Написать письмо