Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.62
M9sNik
7 / 7 / 2
Регистрация: 19.11.2009
Сообщений: 87
#1

Программное создание элемента формы - Delphi

04.09.2012, 21:54. Просмотров 1850. Ответов 8
Метки нет (Все метки)

Создаю элемент с помощью процедуры.
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.ComboCreate(i: Integer; name: string);
begin
Combo:=TsComboBoxEx.Create(Form1);
Combo.Parent:=???;
Combo.Left:=0;
Combo.Top:=(CoBuff+1)*21+5;
Combo.Name:='Combo'+IntToStr(CoBuff);
CoBuff:=CoBuff+1;
Combo.Text:='Наименование';
Combo.Visible:=true;
end;
Combo.Parent:= - просит TWinnControl, но он может быть любым. Как его получить и передать в процедуру?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2012, 21:54
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Программное создание элемента формы (Delphi):

Программное создание событий для кнопок
есть главная форма, есть дочерняя. При запуске дочерней создаются программно...

Создание формы по коду
Помогите плз создать форму (программа "Магический квадрат", не срочноо!), у...

Создание многослойной формы...
Добрый день! Появилась задача, не знаю как решить... Нужно сделать...

Создание функций формы
Добрового времени суток. Я хочу создать форму, которая будет появлятсе при...

Создание окон необычной формы
Мне тут надо одну красавицу удивить! В общем что-то красивое и не шибко...

Программное создание БД
Приветствую! Исходное положение следующее: планируем использовать в связке с...

8
Puporev
Модератор
54145 / 41778 / 28884
Регистрация: 18.05.2008
Сообщений: 98,326
04.09.2012, 22:02 #2
Если он будет на форме, то и parent:=Form1; или какая там форма.
0
M9sNik
7 / 7 / 2
Регистрация: 19.11.2009
Сообщений: 87
04.09.2012, 22:11  [ТС] #3
Цитата Сообщение от Puporev Посмотреть сообщение
Если он будет на форме, то и parent:=Form1; или какая там форма.
Спасибо, сам уже разобрался. Вот так будет;
Delphi
1
procedure TForm1.ComboCreate(name: TWinControl);
Тогда чтоб не создавать новую тему: Если сделать запуск процедуры на ивэнт OnChange, как сделать чтобы процедура выполнялась только при первом изменении? А то у меня при каждом изменении она выполняется...
0
Ev1l
04.09.2012, 22:18
  #4

Не по теме:

кстати элемент по умолчанию видимый, у тебя не отображался из-за отсутствия парента, так что строку с показом можно убрать

0
M9sNik
7 / 7 / 2
Регистрация: 19.11.2009
Сообщений: 87
05.09.2012, 13:07  [ТС] #5
Цитата Сообщение от M9sNik Посмотреть сообщение
Тогда чтоб не создавать новую тему: Если сделать запуск процедуры на ивэнт OnChange, как сделать чтобы процедура выполнялась только при первом изменении? А то у меня при каждом изменении она выполняется...
Вопрос уже не актуален. Появился новый вопрос: Создаем программно комбобокс, и необходимо чтобы у него так же срабатывал ивент ОнЧендж. Но в моем случае процедура вызывает саму себя, на что скорей всего и ругается программа:
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.ComboCreate(name: TWinControl);
begin
Combo:=TsComboBoxEx.Create(Form1);
Combo.Parent:=name;
Combo.Left:=0;
Combo.Top:=(CoBuff+1)*21+5;
Combo.Name:='Combo'+IntToStr(CoBuff);
CoBuff:=CoBuff+1;
Combo.Text:='Наименование';
Combo.OnChange:=???;
end;
0
M9sNik
7 / 7 / 2
Регистрация: 19.11.2009
Сообщений: 87
05.09.2012, 17:25  [ТС] #6
Цитата Сообщение от M9sNik Посмотреть сообщение
Вопрос уже не актуален. Появился новый вопрос: Создаем программно комбобокс, и необходимо чтобы у него так же срабатывал ивент ОнЧендж. Но в моем случае процедура вызывает саму себя, на что скорей всего и ругается программа:
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.ComboCreate(name: TWinControl);
begin
Combo:=TsComboBoxEx.Create(Form1);
Combo.Parent:=name;
Combo.Left:=0;
Combo.Top:=(CoBuff+1)*21+5;
Combo.Name:='Combo'+IntToStr(CoBuff);
CoBuff:=CoBuff+1;
Combo.Text:='Наименование';
Combo.OnChange:=???;
end;
Delphi
1
Combo.OnChange:=Form1.ComboCreate(Combo.Parent);
Так тож ругается, а по другому не знаю как...
0
Аватар
298 / 219 / 8
Регистрация: 31.05.2012
Сообщений: 520
05.09.2012, 21:56 #7
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  ...
end;
 
procedure TForm1.ComboCreate(name: TWinControl);
begin
  ...
  Combo.OnChange:=ComboBox1Change;
end;
0
M9sNik
7 / 7 / 2
Регистрация: 19.11.2009
Сообщений: 87
05.09.2012, 22:28  [ТС] #8
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
procedure TForm1.ComboCreate(name: TWinControl);
var CoName:TWinControl;
begin
Combo:=TsComboBoxEx.Create(Form1);
Combo.Parent:=name;
Combo.Left:=0;
Combo.Top:=(CoBuff+1)*21+5;
Combo.Name:='Combo'+IntToStr(CoBuff);
CoBuff:=CoBuff+1;
Combo.Text:='Наименование';
Combo.OnChange:=Form1.ComboChange;
end;
 
procedure TForm1.ComboChange;
begin
ComboCreate(combo.parent);
end;
Ошибка: [DCC Error] Unit1.pas(73): E2009 Incompatible types: 'Parameter lists differ'
0
murderer
3314 / 1461 / 133
Регистрация: 06.10.2010
Сообщений: 3,215
06.09.2012, 07:43 #9
Delphi
1
procedure TForm1.ComboChange(Sender: TObject);
0
06.09.2012, 07:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.09.2012, 07:43
Привет! Вот еще темы с решениями:

Программное создание компонентов и подключение к бд
Здраствуйте. Решил создать подключение к БД не кидая компоненты на форму. То...

Программное создание базы данных
Помогите пожалуйста!!!!!!!!!У меня есть база данных из 7 таблиц, мне нужно эту...

Программное создание alias windows 7
Приветствую всех. Пишу программу с бд paradox в delphi7 на windows 7. Недавно...

Программное создание таблицы в базе Paradox
Здравствуйте! Я хотела бы узнать можно ли в Delphi программно создать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru