|
Вопрос # 933/ вопрос открыт / |
|
Приветствую, уважаемые эксперты!
Нужно создать компонент Edit во время работы программы и отобразить его на созданной вместе с Edit странице PageControl, причем изменять длину Edit вместе с изменением длины формы. Как все это сделать если может создаваться несколько страниц?
 |
Вопрос задал: Евгений Eklmn (статус: Посетитель)
Вопрос отправлен: 21 сентября 2007, 20:27
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, Трофимов Евгений!
Для начала можно почитать статью здесь http://www.delphikingdom.com/asp/viewitem.asp?catalogid=342
В приложении код, который создаёт новую вкладку, а на ней Edit. Для позиционирования я применяю свойство Anchors. Процедура предполагает наличие PageControl1 на Form1. Если у вас имена другие - разберётесь. Как параметр передаётся имя вкладки. (например так MyProcedure(\'1111\');)
Сразу предупрежу вопрос. "А как достучаться до созданного Edit?"
очень просто. имена их вы увидите. но на момент того, как вы пишете код, имена эти будут неизвестны, поэтому, зная, что владельцем этих Edit есть форма (смотрите код), то мы можем в формы и попросить ссылку на нужный Edit вот такой строкой
TEdit(FindComponent(\'MyEdit1\')).Text := \'Hello!\';
Также вопрос о том, кто должен будет удалять созданные компоненты. Тут всё предельно просто. так как для компонента указан родитель, то он и удалит сам автоматом, когда будет удаляться сам.
Приложение: Переключить в обычный режим- procedure MyProcedure(PageCaption:string);
- var t:TTabSheet;
- e:TEdit;
- begin
-
- t := TTabSheet.Create(Form1.PageControl1);
- t.Caption := PageCaption;
- t.PageControl := Form1.PageControl1;
-
- Form1.PageControl1.ActivePage := t;
-
-
- e := TEdit.Create(Form1);
- e.Parent := t;
- e.Top := 10;
- e.Left := 10;
- e.Width := 100;
- e.Anchors := [akLeft, akTop, akRight];
-
- e.Name := 'MyEdit'+inttostr(form1.PageControl1.ActivePageIndex);
- end;
-
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 22 сентября 2007, 00:34
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 2; последнее сообщение — 30 сентября 2007, 12:59; участников в обсуждении: 2.
|
Евгений Eklmn (статус: Посетитель), 30 сентября 2007, 12:01 [#1]:
В продолжение темы. Как узнать только имя нажатой кнопки на PageControle? Кнопки могут создаваться динамически.
Генерация случайных чисел - слишком важный вопрос, чтобы оставлять его на волю случая. (Роберт Ковзю, Окриджская лаборатория)
|
|
Вадим К (статус: Академик), 30 сентября 2007, 12:59 [#2]:
упс. А кнопки мы не создавали. откуда они появились я не знаю. Но напрягая телепатический модуль, предоплагаю, что вы их создаёте по аналогии с Edit
Ну тогда имя вы присвоить им сможете. обработчик приписать тоже не проблема, а само имя нажатой кнопки в обработчике можно узнать так
TButton(Sender).Name
Галочка "подтверждения прочтения" - вселенское зло.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|