Форум: "Начинающим";
Текущий архив: 2009.08.02;
Скачать: [xml.tar.bz2];
ВнизСоздание объекта и его переменные Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c