Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.07.2011, 21:11
delphicoding delphicoding вне форума
Активный
 
Регистрация: 04.07.2011
Сообщения: 206
Репутация: -461
Вопрос Несколько простейших вопросов по формам

Здравствуйте!

Ковыряю формы, возникло несколько вопросов, которые не могу решить уже несколько дней, все параметры и код перепроверял, но видимо где-то что-то неправильно:
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  
Старый 23.07.2011, 23:25
Аватар для ryderx34
ryderx34 ryderx34 вне форума
Активный
 
Регистрация: 22.01.2010
Сообщения: 211
Версия Delphi: 7, 2010
Репутация: 1349
По умолчанию

Код:
var 
  P: TfBaseForm;

P := TfBaseForm.Create(Application);
P.VarTemp := not aIsShift;

Последний раз редактировалось ryderx34, 23.07.2011 в 23:27.
Ответить с цитированием
  #3  
Старый 24.07.2011, 11:53
delphicoding delphicoding вне форума
Активный
 
Регистрация: 04.07.2011
Сообщения: 206
Репутация: -461
По умолчанию

одного нового окна из двух возможных
Указывая вначале P:= одному из двух окон, затем не получается присвоить второе окно... вот:
Цитата:
var P:TfBaseFormA;
begin
case aGroupId of
1: P:=TfBaseFormA; (!)
2: P:=TfBaseFormB;
end;
P.Create(Application);
P.VarTemp := not aIsShift;
также не пашет, ругается, что в указанной строке - Incompatible types: 'TfBaseFormA' and '(class of TfBaseFormA)'. - даже простым языком это звучит как бред, уж не говоря про код... короче я фигею от этой тупой ситуации и уже не представляю себе как правильно это реализовать ?!?!?!

Последний раз редактировалось delphicoding, 24.07.2011 в 12:06.
Ответить с цитированием
  #4  
Старый 24.07.2011, 13:48
delphicoding delphicoding вне форума
Активный
 
Регистрация: 04.07.2011
Сообщения: 206
Репутация: -461
По умолчанию

4. Как TJvDBComboBox или TDBComboBox указать из кода программы, чтобы он ВЫБРАЛ И ПОКАЗАЛ значение из своего списка? Строка cbSpisok.ItemIndex:=1 увы ничего не делает.
Ответить с цитированием
  #5  
Старый 24.07.2011, 17:09
delphicoding delphicoding вне форума
Активный
 
Регистрация: 04.07.2011
Сообщения: 206
Репутация: -461
По умолчанию

5. Нужно назначить событие на момент формы ввода данных. Какое событие-момент подойдёт, чтобы обработка запускалась: а) при первом открытии пустой формы и б) когда данные отправляются в БД и форма ввода очищается и в) когда форма открывается загружая во все поля данные из БД ?
Какое выбрать событие формы? AfterOpen? Или лучше что-то другое? Может из событий БД?
Ответить с цитированием
  #6  
Старый 24.07.2011, 17:46
Аватар для ryderx34
ryderx34 ryderx34 вне форума
Активный
 
Регистрация: 22.01.2010
Сообщения: 211
Версия Delphi: 7, 2010
Репутация: 1349
По умолчанию

Цитата:
Сообщение от delphicoding
одного нового окна из двух возможных
А, ну тогда:
Код:
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  
Старый 24.07.2011, 18:06
delphicoding delphicoding вне форума
Активный
 
Регистрация: 04.07.2011
Сообщения: 206
Репутация: -461
По умолчанию

Я так писать не буду, тк я не могу логически понять этот бредовый код "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  
Старый 24.07.2011, 21:14
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от delphicoding
Я так писать не буду, тк я не могу логически понять этот бредовый код ...
Это не бредовый код, это приведение к типу, читайте справку прежде чем высказывать бредовые слова.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:09.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025