Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > передача объекта в другую форму


Автор: redmadhat 15.1.2009, 16:33
В главной форме я создаю объект. Когда нажимаю на кнопку КН1 открывается окно с ListView, которое должно отбразить часть данный этого объекта. Нажатием на кнопку КН2 еще одно окно с данными и тд. Вопрос Как передать форме, после нажитя кнопки, параметр в качестве объекта. Создал поле в второй форме под хранение (агрегация) и метод 
Код

SetObj(obj : TMyObj)

Но в форме два он видит только 3 метода:
  • Конструктор
  • ClassName
  • MethodName



В чем проблема?

Автор: skyboy 15.1.2009, 16:45
Цитата(redmadhat @  15.1.2009,  15:33 Найти цитируемый пост)
Но в форме два он видит только 3 метода:

что значит "видит"? может, приведешь больше кода?

Автор: bems 15.1.2009, 16:53
SetObj объявлен public?

Автор: Bose 15.1.2009, 17:19
Цитата(redmadhat @  15.1.2009,  15:33 Найти цитируемый пост)
Создал поле в второй форме под хранение (агрегация) и метод 

метод SetObj должен быть объявлен в секции public


Автор: redmadhat 15.1.2009, 17:23
Я имею в виду то что при написании выражения 
Код

myObj.
, после точки видны эти 3 метода (конструктор понятно, а вот ClassName и
MethodName их нет в определени класса). У меня в классе есть 4 метода типа get (нпр. getAI_value()). Мне кажется что он не видит эти методи так как не инициализован.
Но в основном окне (форме) я создал объект:

Код

var
  dxMainWindow: TdxMainWindow;
  myObj : TObj;


procedure TdxMainWindow.FormCreate(Sender: TObject);
begin
  myObj:=nil;
  myObj:=TObj.Create(self);  
end;


И когда нажимаю на кнопку должно открытся окно для вывода значений из объекта
Код

procedure TdxMainWindow.Button1Click(Sender: TObject);
begin   
    secondWindow.Show;
    secondWindow.SetObj(myObj);
end;


В втором окне
Код

var
  secondWindow: TsecondWindow;
  objLocal:TObj;

implementation
 uses Unit1;

procedure TsecondWindow.SetObj(objRef:TObj);
begin
    objLocal := objRef;
end;


И когда хочу вывести значение из объекта

Код

procedure TsecondWindow.FormCreate(Sender: TObject);
begin
    label3.Caption:=objLocal. {вот здесь он показывает эти три метода} 
end;



Автор: bems 15.1.2009, 17:37
то что у тебя видно, это методы класса TObject. Они есть у любого объекта. Ты читать умеешь?
Цитата
метод SetObj должен быть объявлен в секции public

Автор: skyboy 15.1.2009, 17:39
Цитата(redmadhat @  15.1.2009,  16:23 Найти цитируемый пост)
Мне кажется что он не видит эти методи так как не инициализован.

а мне кажется, что intellisence не выдает твои методы, потому как они не возвращают значение типа string. но откуда мне знать? ты не же не привел описательную часть своего класса.

Автор: redmadhat 15.1.2009, 17:55
Все прошло на ура. Он все видит теперь. может какой то глюк с Delphi 7 smile 
Только когда хочу вывести значение в 
Код

label3.caption := myObj.getAI_value(2);

Он не выводит! Странно. Буду разбиратся smile 

Автор: Bose 15.1.2009, 18:03
Цитата(skyboy @  15.1.2009,  16:39 Найти цитируемый пост)
а мне кажется, что intellisence не выдает твои методы, потому как они не возвращают значение типа string. но откуда мне знать? ты не же не привел описательную часть своего класса. 

Мне тоже так кажется.

Добавлено через 42 секунды
Code Completion частенько подглючивает. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)