Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обращение к объекту созданному в РанТайме 
:(
    Опции темы
And_
Дата 30.8.2007, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 5.7.2007

Репутация: нет
Всего: нет



Подскажите, пожалуйста, как можно обратиться к свойствам объекта, который, был создан в процессе выполнения?
Привожу код, который создал по примеру в drkb. Задача такая: есть форма на которой кнопка и два поля ввода. При каждом нажатии кнопки происходит добавление ещё двух полей ввода.

Код

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    NewEdit: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);


  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  cnt,TopValue: Integer;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin
cnt:=1;
TopValue:=31;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin

NewEdit:=TEdit.Create(Self);
NewEdit.Parent:=Self;
NewEdit.Name:='FirstField'+IntToStr(cnt+1);
NewEdit.SetBounds(40, TopValue, 81, 21);
//----
NewEdit:=TEdit.Create(Self);
NewEdit.Parent:=Self;
NewEdit.Name:='SecondField'+IntToStr(cnt+1);
NewEdit.SetBounds(128, TopValue, 81, 21);
//----
cnt:=cnt+1;
TopValue:=TopValue+22;
end;

end.
 


Как можно, например, прочитать содержимое поля с именем FirstField2 ?
Если можно, объясните на пальцах. Или я принципиально не правильно решаю задачу?  smile 

Это сообщение отредактировал(а) And_ - 30.8.2007, 22:53

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  form.jpg 11,43 Kb
PM MAIL   Вверх
Alexeis
Дата 30.8.2007, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 34
Всего: 459



  При помощи Form1.FindComponent

Код

(Form1.FindComponent('FirstField2') as TEdit).Text := 'sdfsd';



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Rennigth
Дата 31.8.2007, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 15
Всего: 76



Цитата(And_ @  30.8.2007,  22:50 Найти цитируемый пост)
Если можно, объясните на пальцах. Или я принципиально не правильно решаю задачу?   

Более правильно было бы объявить не одну а две переменные на каждый создаваемый Edit.



--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
And_
Дата 26.12.2007, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 5.7.2007

Репутация: нет
Всего: нет



Подскажите, как в ран-тайме проверить есть ли требуемый компонент на форме?
PM MAIL   Вверх
Alexeis
Дата 26.12.2007, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 34
Всего: 459



And_, точно также 
см.
Код

function TComponent.FindComponent(const AName: string): TComponent;
var
  I: Integer;
begin
  if (AName <> '') and (FComponents <> nil) then
    for I := 0 to FComponents.Count - 1 do
    begin
      Result := FComponents[I];
      if SameText(Result.FName, AName) then Exit;
    end;
  Result := nil;
end;


Еси не найден, компонент у родителя (у формы), то возвращается nil иначе адрес объекта (отличный от нуля)


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0638 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.