|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.03.2013, 15:00 | #1 |
Пользователь
Регистрация: 13.03.2013
Сообщений: 18
|
Проблема с opendialog
Помогите разобраться.
Есть кнопка созданная в рантайм: Код:
если тот же код вставить в кнопку созданную в десигнтайм то все работает. Последний раз редактировалось Stilet; 13.03.2013 в 17:35. |
13.03.2013, 15:25 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Значит кнопку не правильно создаете
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
13.03.2013, 15:29 | #3 |
Пользователь
Регистрация: 13.03.2013
Сообщений: 18
|
Функция создания кнопки:
Код:
Код:
Код:
Последний раз редактировалось Stilet; 13.03.2013 в 17:36. |
13.03.2013, 16:10 | #4 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
жуть... Вы вообще не понимаете, что есть ООП, что есть класс, что есть объект, что такое методы объекта, как объект создавать и т.д. и т.п.
это раз. второе, вместо кусков разрозненного кода, лучше бы вы привели полностью свой код. например, какого типа у Вас Obj? а вот это Цитата:
в любом случае вместо Цитата:
Код:
|
||
13.03.2013, 17:03 | #5 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
Код:
Почитайте об ООП, Frames, и динамических объектах. Код:
Используйте TComponentList. |
14.03.2013, 08:40 | #6 | |
Пользователь
Регистрация: 13.03.2013
Сообщений: 18
|
Цитата:
obj: TobjControl; В Showform есть Obj:= TObjControl.Create(); В классе TObjControl есть процедура SetProp: procedure TObjControl.setProp(top, left, height, width: integer; par: TWinControl; name: string; Owner: TComponent); begin Prop.owner:= Owner; Prop.top:= top; Prop.left:= left; Prop.height:= height; Prop.width:= width; Prop.par:= par; Prop.name:= name; end; и функция CreateBtn: function TObjControl.CreateBtn; begin Btn:= TButton.Create(Prop.Owner); Btn.Top:= Prop.top; Btn.Left:= Prop.left; Btn.Height:= Prop.height; Btn.Width:= Prop.width; Btn.Parent:= Prop.par; Btn.name:= Prop.name; Result:= Btn; end; в которой есть строчка Btn:= TButton.Create(Prop.Owner); Создание кнопки: obj.setProp(17, 375, 25, 25, TGroupBox(findObj('ConnGrpBox')), 'ConnStrBtn', Form62); Obj.CreateBtn(); TButton(findObj('ConnStrBtn')).Capt ion:= '...'; TButton(findObj('ConnStrBtn')).OnCl ick:= OpenConnStrClick; Функция findObj: function TForm62.findObj(name: string): TComponent; var z: TComponent; begin z:= FindComponent(name); Result:= z; end; Кнопок созданных таким образом на форме несколько, и не работает в них только OpenDialog, хотелось бы узнать почему |
|
14.03.2013, 09:02 | #7 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
проект ещё не смотрел (кстати, Вы правильно сделали, что выложили его!)
хотел бы сразу у Вас, как у автора программы выяснить: Цитата:
то, 1) зачем вызывается метод Obj.CreateBtn(); ? 2) в методе CreateBtn() создаётся кнопка Btn:= TButton.Create(Prop.Owner); которая возвращается в качестве результата функции. вопрос - куда девается результат в вашем случае?! |
|
14.03.2013, 09:14 | #8 | |
Пользователь
Регистрация: 13.03.2013
Сообщений: 18
|
Цитата:
2. эта функция должна быть процедурой, ее результатом не пользуюсь, компоненты нахожу по имени с помощь функции findobj |
|
14.03.2013, 09:17 | #9 |
Пользователь
Регистрация: 13.03.2013
Сообщений: 18
|
Obj:= TObjControl.Create(); это не создание кнопки, а создание экземпляра класса.
|
14.03.2013, 10:05 | #10 | |||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,527
|
Цитата:
1. findObj('ConnStr') (нашли/или нет) 2. Tedit(.. (а тот ли тип Tbutton|Tedit|...) используем. Цитата:
Delphi7 F1 Constructors and class references Цитата:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 14.03.2013 в 10:51. |
|||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
OpenDialog проблема | redenemy | C++ Builder | 5 | 20.05.2012 00:45 |
Проблема с OpenDialog!!!! | Екатерина_21 | C++ Builder | 3 | 09.10.2011 15:12 |
Проблема с иконкой в трее и OpenDialog | Dop | Общие вопросы Delphi | 2 | 05.08.2011 14:48 |
Проблема OpenDialog и ifstream | yuriyua | Помощь студентам | 1 | 14.10.2009 19:20 |
OpenDialog.Options:=OpenDialog.Options+[ofAllowMultiSelect]; | necky | Компоненты Delphi | 2 | 11.08.2007 12:53 |