Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.12.04;
Скачать: [xml.tar.bz2];

Вниз

Изменение объектов одного модуля из другого модуля   Найти похожие ветки 

 
Walrus   (2003-11-25 20:33) [0]

Вечер добрый всем! У меня есть объект форма1 типа TForm1, у формы1 - public поле fA типа А. А - это класс, у него есть public поле b типа integer. По нажатию кнопки на форме1 вызывается форма2, в обработчике событий которой меняется значение поля форма1.fA.b. Отработал обработчик, дальше нажали кнопку2 формы1 и появилась форма3, в её обработчиках мы пытаемся обратиться к полю форма1.fA.b. И что же? Оказывается, его значение не изменилось! Все модули связаны директивами uses и классы объявлены в интерфейсной части. Во время всех манипуляций форма1 не уничтожается. Занятно: Если же А - не класс, а целое поле, то его изменения сохраняются! Помогите советом!
Спасибо.


 
default   (2003-11-25 20:44) [1]

покажи код


 
Walrus   (2003-11-25 21:50) [2]

Прошу прощения, не спросишь - не додумаешься. Заработало. Просто у меня fa создавалось в обработчике OnActivate формы1, т.е. когда формы сменяли друг друга он вызывался и каждый раз обновлял fa исходным значением. Приведу код. Он - просто примерчик на тему нашей системы. Она из кучи модулей, там код затмевает суть проблемы.

///////////////////////////////////////////
unit Unit1;

interface

uses
Unit2, Unit3, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
fa : A;
end;

var
Form1: TForm1;

implementation

uses Unit4;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
form2.Visible := true;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
form4.Visible := true;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
// fa := a.CreateMe( 1 ); //Вот тут мы и сглупили!!!
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
fa := a.CreateMe( 1 ); //Вот так надо!
end;

end.
/////////////////////////////////////////////////////////////

unit Unit2;

interface

uses
Unit3, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;

type
TForm2 = class(TForm)
BitBtn1: TBitBtn;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.dfm}
uses Unit1;

procedure TForm2.Button1Click(Sender: TObject);
begin
form1.fa.b := 2;
form2.Visible := false;
end;

end.
/////////////////////////////////////////////////////////

unit Unit3;

interface
type
A = class
public b : integer;
constructor CreateMe( b1 : integer );
end;

implementation
constructor a.CreateMe( b1 : integer );
begin
b := b1;
end;

end.

////////////////////////////////////////////////////////
unit Unit4;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm4 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form4: TForm4;

implementation

{$R *.dfm}
uses Unit1, Unit3;
procedure TForm4.Button1Click(Sender: TObject);
begin
form1.fa.b := 6;
end;

end.



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

Форум: "Основная";
Текущий архив: 2003.12.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.003 c
4-11732
SkyN
2003-10-08 10:22
2003.12.04
Как вызвать событие onExit в DBLookupComboBox чужго приложения?


6-11680
ss300
2003-10-06 11:03
2003.12.04
Кодировка в отправляемом письме


1-11602
greenrul
2003-11-26 03:31
2003.12.04
Проблемы с File of TMyType


6-11690
Volcano
2003-10-04 17:10
2003.12.04
Нужны заголовки


8-11632
LevAlexander
2003-08-04 11:28
2003.12.04
MediaPlayer





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский