![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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
|
||||
|
||||
|
Цитата:
|