| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Динамическое создание Edita |
| Автор: Teran 25.5.2006, 18:24 | ||||
Этим кодом я создаю 10 Edit-ов на форме
этим убиваю
но у созданных edit-ах я не могу получить имена Edit.Name? Кто-нибудь знает как можно получить имя каждого чтобы потом можно было к нему обращаться? |
| Автор: Snowy 25.5.2006, 18:25 | ||
Сначала их присвой.
|
| Автор: Yanis 25.5.2006, 18:27 |
| При создании присваивай ему имя. Что бы помнить заведи массив с индексами или постоянно пробегай по форме в поисках своих TEdit. Где-нибудь после Edit:=TEdit.Create(nil); напиши Edit.Name := 'желаемое имя'; |
| Автор: Teran 25.5.2006, 18:39 | ||
а как потом получить его если в прграме напишу 'Edit5.Text; - программа не откомпилируется потому что такого edit -а на форме нет? Добавлено @ 18:50 Почему-то и так не помогает:
выводит '' - пусто (Хотя текст я туда задаю) |
| Автор: skyboy 25.5.2006, 18:57 |
| а символ "_" зачем? ты точно имя с этим подчёркиванием формируешь? ;) |
| Автор: Teran 25.5.2006, 19:03 | ||
| да содаю так:
|
| Автор: Yanis 25.5.2006, 19:08 |
| Так его действительно нету! Создаешь динамечески, то и обращайся "динамически". |
| Автор: McDevil 25.5.2006, 20:26 |
| Teran, а зачем динамически их создавать... Может имеет смысл накидать их на форму и не мучиться... При моем раскладе размер .exe увеличиться незначительно, а при твоем скушаешь немного лишней памяти... |
| Автор: Dimannn 25.5.2006, 20:41 |
| Наверное, надо TEdit.Create(Form1); |
| Автор: Foley 25.5.2006, 23:45 |
да и потом обращаться к ним удобней, если тебе не все эдиты нужны, то можно и Visible у них поюзать... |
| Автор: Teran 26.5.2006, 08:31 |
| нет мне нужно создавать их именно - динамически из-за того что я заранее низнаю их колличества |
| Автор: ElMichael 26.5.2006, 08:45 | ||
Попробуй воспользоваться динамической структурой типа:
P.S.: Извини, если обидел кодом ;) |
| Автор: Teran 26.5.2006, 08:45 |
| Уррра! Совершенно верно. Все заработало. |
| Автор: Yanis 26.5.2006, 09:01 |
| А я хотел пример настрочить... |
| Автор: Sunr1se 26.5.2006, 09:19 | ||||||
Можно создать глобальную переменную, динамический массив:
При создании Edit'а увеличивать размер массива на 1:
И затем вставляем в массив динамически созданный Edit:
После можно обращаться к Edit'ам как к элементам массива. |
| Автор: Yanis 26.5.2006, 10:28 |
Как я понял |
| Автор: Mechanic 26.5.2006, 23:31 | ||
Помимо этого, если указан Ovner, то и дестроить их в деструкторе не нужно, об этом позаботится VCL сама. |
| Автор: Yanis 27.5.2006, 07:47 | ||||
Для тех, кто не знает, справка гласит:
|
| Автор: Dimannn 28.5.2006, 15:01 |
| При обращениик эдтитам использовалось TEdit(FindComponent('Edit_1')) FindComponent - это метод формы. Но ведь ей даже не сказали, что на неё добавили эдит. А в TEdit.Create как раз и вызывают AOwner.Components.Add(NewEdit). Поэтому, когджа туда посылали nil, ссылка на новый эдит в форму не догбавлялась, и она не могла его найти. |