|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.07.2011, 21:11 | #1 |
Заблокирован
Регистрация: 04.07.2011
Сообщений: 261
|
Несколько простейших вопросов по формам
Здравствуйте!
Ковыряю формы, возникло несколько вопросов, которые не могу решить уже несколько дней, все параметры и код перепроверял, но видимо где-то что-то неправильно: 1. В закладке есть 4 TPanel, в каждой по 4-10 полей разного типа. Курсор при нажатии Tab в одном месте переходит неправильно, не на следующее поле в этой панели которое имеет TabOrder+1, а на следующий такой же объект TJvDBComboBox вообще в другой панели! 2. Есть две похожие формы, на обеих есть одинаковый (скопированный) объект - TDBCheckBox - в одной форме при открытии (форма без данных) - он выключен, а на другой - включен... нужно чтобы был отключен... фантастика какая-то! 3. Процедура открытия одного нового окна из двух возможных с передачей в это новое окно значения переменной, которая объявлена в том окне, но Delphi всё время ругается на код, не понимаю почему и как же написать правильно?!: Код:
|
24.07.2011, 06:41 | #2 |
Форумчанин
Регистрация: 08.09.2010
Сообщений: 880
|
3. Какая необходимость объявлять переменную базового класса (P : TForm;), если есть описание класса своей формы (TfBaseForm)?
Код:
Если и остальной код в таком же духе, то не удивительно, что происходят "фантастические" вещи. По двум первым вопросам ничего нельзя даже предположить без исходных текстов. Последний раз редактировалось Прик; 24.07.2011 в 06:46. |
24.07.2011, 11:56 | #3 | |
Заблокирован
Регистрация: 04.07.2011
Сообщений: 261
|
//обращение к полям и методам объекта не может быть через тип класса, только через переменную класса
нде... идиотизм... главное по коду это понять абсолютно невозможно! одного нового окна из двух возможных Указывая вначале P:= одному из двух окон, затем не получается присвоить второе окно... вот: Цитата:
Последний раз редактировалось delphicoding; 24.07.2011 в 12:07. |
|
24.07.2011, 13:06 | #4 |
Форумчанин
Регистрация: 08.09.2010
Сообщений: 880
|
А задача то в чем?
Через одну переменную орудовать в разных формах? Можно, конечно, но смысла не видно (действительно, задачу поглубже надо знать). Такой вариант устроит? Код:
|
24.07.2011, 13:18 | #5 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
> звучит как бред
ну так не создавайте бредовый код ) Кто ж присваивает экземпляру класс. Делайте как советует Прик, или унаследуйте TfBaseFormA и TfBaseFormB от общего предка, и уже у этого предка добавьте поле VarTemp.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
24.07.2011, 13:46 | #6 | ||
Заблокирован
Регистрация: 04.07.2011
Сообщений: 261
|
Цитата:
Цитата:
Логика проста - присваиваем некой переменной название нужной пользователю формы и через переменную передаём все значения в выбранную пользователем форму... но... видимо в Delphi данная задача из-за кривизны стандартов кода... нерешаема. Ошибка разработчиков Delphi в том, что они зря всё стали писать через точку - и названия объектов и свойства. Правильно код должен был бы выглядеть так: Код:
=================================== ============= 4. Как TJvDBComboBox или TDBComboBox указать из кода программы, чтобы он ВЫБРАЛ И ПОКАЗАЛ значение из своего списка? Строка cbSpisok.ItemIndex:=1 увы ничего не делает. |
||
24.07.2011, 16:29 | #7 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
> Это извращения!
нет, это стройный и понятный ООП, придуманный, слава богу, лет 30-40 назад, и устраивавший, до сегодняшнего дня, миллионы разработчиков. > присваиваем некой переменной название нужной пользователю формы только не название, а экземпляр класса > и через переменную передаём все значения в выбранную пользователем форму ну так и присваивайте, какие проблемы? > данная задача из-за кривизны стандартов кода... нерешаема прежде чем обвинять что-то в кривизне, попытайтесь сами хоть понять, что вы хотите от компилятора. Вот ваш "идеальный" код: Код:
> что они зря всё стали писать через точку - и названия объектов и свойства боже, ну а точка-то тут при чём? И нет никаких названий у объектов. Есть имена классов. Вы хоть 10 минут потратьте на изучение основ ООП, прежде чем предлагать сомнительные улучшения в Дельфи ) Ещё раз, если у ваших форм есть общие свойства, вынесите их в общего предка. Если общих свойст нет, не мучайте компилятор, создайте переменную для каждого класса, или пишите, например, так: Код:
Это вы про этот ужос? Код:
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
24.07.2011, 17:09 | #8 | |||||
Заблокирован
Регистрация: 04.07.2011
Сообщений: 261
|
Цитата:
Цитата:
Тут кстати возникает вопрос, почему тогда Delphi при объявлении например Var S:String не пытается найти строки в S сам по себе и позволяет присваивать переменной любые строковые значения, а при var P:TForm и переменные ищет и переназначать не даёт?! Недоделка! Цитата:
Цитата:
Цитата:
Код:
=================================== =================================== ==== 5. Нужно назначить событие на момент формы ввода данных. Какое событие-момент подойдёт, чтобы обработка запускалась: а) при первом открытии пустой формы и б) когда данные отправляются в БД и форма ввода очищается и в) когда форма открывается загружая во все поля данные из БД ? Какое выбрать событие формы? AfterOpen? Или лучше что-то другое? Может из событий БД? Последний раз редактировалось delphicoding; 24.07.2011 в 17:29. |
|||||
24.07.2011, 19:24 | #9 |
Форумчанин
Регистрация: 08.09.2010
Сообщений: 880
|
а) при первом открытии пустой формы
OnCreate, если форма создается и показывается. OnShow, если форма предварительно создана и ее нужно только показать (методом Show). б) когда данные отправляются в БД и форма ввода очищается Кто же знает когда у вас данные отправляются в БД. Момент записи данных зависит от разработчика. в) когда форма открывается загружая во все поля данные из БД? Какое выбрать событие формы? AfterOpen? AfterOpen - событие компонента Dataset и ни малейшего отношения к формам не имеет. Или лучше что-то другое? А в чем проблема? Опять же нет четко поставленной задачи. Приходиться гадать чего человеку надо. Может из событий БД? У БД нет событий, если под БД подразумевается сервер БД (СУБД) или файл, содержащий базу данных. Если что-то другое, то надо бы уточнять. Я вам вот что скажу: здесь на форуме вы не сможете научится программировать на Дельфи. На невнятные вопросы вы будете получать такие же невнятные ответы. И к чему это приведет? Разве только к затяжному выяснению своих отношений к Дельфи. Напишите мне на мыло, если есть желание разобраться со своими проблемами. |
25.07.2011, 01:57 | #10 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
> не получится всё через P
получится > как минимум нужно вначале объявить PA и PB не нужно > что при задании var P:TForm компилятор не пропускает, тк в TForm Delphi не может найти VarTemp!! может, если мы ему поможем. Есть даже специальный оператор with: Код:
похоже, вас кто-то насильно заставляет пользоваться столь нелюбимым продуктом )
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Несколько вопросов | phphel | Общие вопросы Delphi | 19 | 30.01.2011 21:24 |
несколько вопросов по C | Horus92 | Общие вопросы C/C++ | 2 | 15.11.2009 16:08 |
БД - Несколько вопросов | lutdan | БД в Delphi | 3 | 11.10.2009 20:22 |
Несколько вопросов | pix_l | Общие вопросы Delphi | 1 | 29.03.2009 22:26 |
Несколько вопросов | Зубоскалик | Общие вопросы Delphi | 14 | 20.11.2008 14:28 |