![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Здравствуйте!
Ковыряю формы, возникло несколько вопросов, которые не могу решить уже несколько дней, все параметры и код перепроверял, но видимо где-то что-то неправильно: 1. В закладке есть 4 TPanel, в каждой по 4-10 полей разного типа. Курсор при нажатии Tab в одном месте переходит неправильно, не на следующее поле в этой панели которое имеет TabOrder+1, а на следующий такой же объект TJvDBComboBox вообще в другой панели! 2. Есть две похожие формы, на обеих есть одинаковый (скопированный) объект - TDBCheckBox - в одной форме при открытии (форма без данных) - он выключен, а на другой - включен... нужно чтобы был отключен... фантастика какая-то! 3. Процедура открытия одного нового окна из двух возможных с передачей в это новое окно значения переменной, которая объявлена в том окне, но Delphi всё время ругается на код, не понимаю почему и как же написать правильно?!: Код:
Procedure ShowF(aGroupId:LongInt;aIsShift:boolean); var P:Tform; begin case aGroupId of 1: begin P:=TfBaseForm; P.Create(Application); P.VarTemp := not aIsShift; (!) не может найти в Tform переменную VarTemp ===================== вариант 2 case aGroupId of 1: begin P:=TfBaseForm.Create(Application); If aIsShift=True Then TfBaseForm.VarTemp:=False (!) Else TfBaseForm.TfBaseForm:=True; end; ругается что ждал метод ===================== вариант 3 var P:variant и string не нравится присвоение имени формы varinat, если string не работают методы формы вообще Я понимаю, что не видя проект сложно сказать наверняка, тем более, что все доступные свойства я перепроверил уже н-раз. Тем не менее, возможно Ваш профессиональный опыт поможет Вам выдвинуть предположения с чем эти баги могут быть связаны? |
#2
|
||||
|
||||
![]() Код:
var P: TfBaseForm; P := TfBaseForm.Create(Application); P.VarTemp := not aIsShift; Последний раз редактировалось ryderx34, 23.07.2011 в 23:27. |
#3
|
|||
|
|||
![]() одного нового окна из двух возможных
Указывая вначале P:= одному из двух окон, затем не получается присвоить второе окно... вот: Цитата:
Последний раз редактировалось delphicoding, 24.07.2011 в 12:06. |
#4
|
|||
|
|||
![]() 4. Как TJvDBComboBox или TDBComboBox указать из кода программы, чтобы он ВЫБРАЛ И ПОКАЗАЛ значение из своего списка? Строка cbSpisok.ItemIndex:=1 увы ничего не делает.
|
#5
|
|||
|
|||
![]() 5. Нужно назначить событие на момент формы ввода данных. Какое событие-момент подойдёт, чтобы обработка запускалась: а) при первом открытии пустой формы и б) когда данные отправляются в БД и форма ввода очищается и в) когда форма открывается загружая во все поля данные из БД ?
Какое выбрать событие формы? AfterOpen? Или лучше что-то другое? Может из событий БД? |
#6
|
||||
|
||||
![]() Цитата:
Код:
var P: TForm; begin case aGroupId of 1: begin P := TfBaseFormA.Create(Application); (P as TfBaseFormA).VarTemp := not aIsShift; end; 2: begin P := TfBaseFormB.Create(Application); (P as TfBaseFormB).VarTemp := not aIsShift; end; end; |
#7
|
|||
|
|||
![]() Я так писать не буду, тк я не могу логически понять этот бредовый код "P as TfBaseFormA". AS в анлгийском языка означает КАК, но мне не нужно КАК, мне нужно передать В форму массу значений, а не В ФОРМУ Х КАК В ФОРМУ У. В общем код отвратителен. Сделал с двумя переменными вначале, хотя это тоже кривизна. Проблема в том, что в "очень удобном Delphi" изначально плохо продуман синтаксис - надо было разделить написание объектов и свойств, тогда код бы выглядел намного лучше и не было этой проблемы, когда вроде бы как всё написано правильно, но, увы, программа так работать не может... вобщем должно быть типа такого:
Код:
var P:TForm; (ведь КЛАСС переменной - это именно ФОРМА) begin case aGroupId of 1: P:=TfBaseFormA; (уточняем название формы из которой создаём окно) 2: P:=TfBaseFormB; (также) end; P.[Create(Application)]; (о да, свойство и функция объекта это на самом деле совсем не тоже самое, что путь к объекту, поэтому СТОИЛО ОТДЕЛИТЬ СВОЙСТВА СКОБОЧКАМИ, товарищи разработчики Delphi) P.VarTemp := not aIsShift; (тут просто через точку, тк это обычный путь к объекту-переменной) |
#8
|
||||
|
||||
![]() Цитата:
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |