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

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

04.09.2012, 21:54. Просмотров 1888. Ответов 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
Ответы с готовыми решениями:

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

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

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

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

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

8
Puporev
Модератор
54729 / 42131 / 29090
Регистрация: 18.05.2008
Сообщений: 99,452
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
3319 / 1465 / 134
Регистрация: 06.10.2010
Сообщений: 3,217
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 таблиц, мне нужно эту...


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

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

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