Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/22: Рейтинг темы: голосов - 22, средняя оценка - 4.91
7 / 7 / 2
Регистрация: 19.11.2009
Сообщений: 105
1

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

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

Author24 — интернет-сервис помощи студентам
Создаю элемент с помощью процедуры.
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.09.2012, 21:54
Ответы с готовыми решениями:

Программное добавление формы
Здравствуйте, нужно программно добавить форму при нажатии на кнопку. Как это осуществить? Гугл не...

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

Программное создание exe
Доброго времени. Встал вопрос о программном создании exe в программе. Сразу пример: есть...

Программное создание кнопок
Всем привет. В последнее время в "самодельных" калькуляторах программистов-новичков очень часто...

8
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
04.09.2012, 22:02 2
Если он будет на форме, то и parent:=Form1; или какая там форма.
0
7 / 7 / 2
Регистрация: 19.11.2009
Сообщений: 105
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
7 / 7 / 2
Регистрация: 19.11.2009
Сообщений: 105
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
7 / 7 / 2
Регистрация: 19.11.2009
Сообщений: 105
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
1928 / 1163 / 423
Регистрация: 31.05.2012
Сообщений: 4,112
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
7 / 7 / 2
Регистрация: 19.11.2009
Сообщений: 105
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
4165 / 1817 / 216
Регистрация: 06.10.2010
Сообщений: 4,074
06.09.2012, 07:43 9
Delphi
1
procedure TForm1.ComboChange(Sender: TObject);
0
06.09.2012, 07:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.09.2012, 07:43
Помогаю со студенческими работами здесь

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

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

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

Программное создание элемента управления
Доброго времени суток! Хотел поинтересоваться, как программно, на языке C#, создать элемент...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru