Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.08.02;
Скачать: CL | DM;

Вниз

Создание объекта и его переменные   Найти похожие ветки 

 
worldmen   (2009-06-07 00:11) [0]

Есть MDI форма в которой я создаю два окна (из одной и той же формы - TGoIc)
 
TForms = object
   Ic_1    : TGoIc;  
   Ic_2    : TGoIc;  
 end;
.....
Var
 BeginIce : TForms;
 ...
       BeginIce.Ic_1:= TGoIc.Create(Application);
       BeginIce.Ic_1.Show;

       BeginIce.Ic_2:= TGoIc.Create(Application);
       BeginIce.Ic_2.Show;

В каждой форме я загружаю свои параметры в переменные (которые расположены после implementation ). Из-за этого переменные получаются общими и значения переменных получаются те, которые были загружены последними, а мне нужно чтоб для каждого обьекта  BeginIce.Ic_1 и  BeginIce.Ic_2 они были свои.


 
DVM ©   (2009-06-07 00:18) [1]


> worldmen


> а мне нужно чтоб для каждого обьекта  BeginIce.Ic_1 и  BeginIce.
> Ic_2 они были свои.

Ну так сделай их полями класса формы.


 
Германн ©   (2009-06-07 00:37) [2]


> В каждой форме я загружаю свои параметры в переменные (которые
> расположены после implementation ).

Учебник читай!
Форма и implementation - это термины из разных областей программирования. Не имеющие друг к другу никакого отношения.


 
Юрий Зотов ©   (2009-06-07 08:51) [3]

> worldmen   (07.06.09 00:11)  

Перевожу на русский:

type
 TGoIc = class(TForm)
 private
   FParam1: ...;
   FParam2: ...;
   FParamN: ...;
 ...
 public
   procedure LoadParams; // Написать код загрузки параметров
 ...
 end;


Теперь после создания формы вызываем ее метод LoadParams, который и грузит параметры FParam1..FParamN. У каждого экземпляра формы они будут своими.

Для MDI-Child форм вызывать Show не нужно.


 
Юрий Зотов ©   (2009-06-07 09:44) [4]

Добавление - если к параметрам формы нужен доступ извне, то объявите еще и свойства:

TGoIc = class(TForm)
private
 FParam1: ...;
 FParam2: ...;
 FParamN: ...;
 ...
public
 procedure LoadParams; // Написать код загрузки параметров
 property Param1: ... read FParam1;
 property Param2: ... read FParam2;
 ...
 property ParamN: ... read FParamN;
end;


 
worldmen   (2009-06-07 12:34) [5]

После выполнения этого кода (нажатие кнопки Button1)  выводится ошибка "Access violation..."

 TGoIc = class(TForm)
 private
  FParam1: integer;
  FParam2: integer;
  FParamN: integer;
 public
  procedure LoadParams; //  код загрузки параметров
  property Param1: integer read FParam1;
  property Param2: integer read FParam2;
  property ParamN: integer read FParamN;
 end;

var
 Form1: TForm1;
 GoIc : TGoIc;

implementation

{$R *.dfm}

procedure TGoIc.LoadParams;
Begin
 FParam1:= StrToInT(Form1.Edit1.Text);
End;

procedure TForm1.Button1Click(Sender: TObject);
begin
 GoIc.LoadParams;
end;



 
Юрий Зотов ©   (2009-06-07 12:39) [6]

Переменная Form1 не получила значение.


 
Юрий Зотов ©   (2009-06-07 12:40) [7]

Или переменная GoIc не получила значение.


 
Плохиш ©   (2009-06-07 14:48) [8]


> worldmen   (07.06.09 12:34) [5]

goto [2]


 
worldmen   (2009-06-07 15:27) [9]

Все работает. Только не пойму какие свойства правильно использовать FParam1 или Param1 ? Значения есть в обоих.


 
Юрий Зотов ©   (2009-06-07 15:30) [10]

> worldmen   (07.06.09 15:27) [9]

FParam1 - это не свойство, а поле. Оно доступно для чтения и записи, но только внутри модуля с классом TGoIc.

Param1 - это свойство. Оно доступно только для чтения, но зато везде.

Соответственно и используйте.



Страницы: 1 вся ветка

Текущий архив: 2009.08.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
15-1243590415
pasha_golub
2009-05-29 13:46
2009.08.02
Delphi 2009 breakpoints


2-1244186642
VitalZ
2009-06-05 11:24
2009.08.02
Диалоговые HTML-окна


15-1243923034
alert2009
2009-06-02 10:10
2009.08.02
Подскажите программу...


4-1213304094
ply
2008-06-13 00:54
2009.08.02
Сделать фото с веб-камеры


15-1243863130
Пит
2009-06-01 17:32
2009.08.02
функция LoadStr