Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как из фомы 1 передать занчение параметры в форму 2? [D6, XP]


Страницы:   1 2

vegarulez ©   (2006-04-18 09:05:00) 

привет мастерам!
Есть 2 формы, и 2 юнита, которые их описывают.
В 1-ом юните описал переменную n в public и в var как стринг...
Внимание вопрос ) : как в юните 2 обратится к переменной n из юнита 1...Где её надо описать, чтоб она доступна была.


Anatoly Podgoretsky   (2006-04-18 13:02:00) [1]

Ega23 ©   (18.04.06 11:55) [26]
Нет нужды, есть более кардинальное решение


Ega23   (2006-04-18 11:55:00) [2]

2 Anatoly Podgoretsky ©   (18.04.06 11:54) [25]
[12] и [13] почистить бы...


Anatoly Podgoretsky   (2006-04-18 11:54:00) [3]

vovnuke ©   (18.04.06 11:08) [18]
С чего бы. Конструкция свойств для удобства программиста и защиты полей от несанкционированного доступа.


Сергей М.   (2006-04-18 11:39:00) [4]


> vovnuke ©   (18.04.06 11:33) [23]


И для него тоже.


vovnuke   (2006-04-18 11:33:00) [5]

а для кода вида:
SomeValue := FSomeProp;
SomeValue := SomeProp;
?


Сергей М.   (2006-04-18 11:28:00) [6]


> vovnuke ©   (18.04.06 11:08) [18]
> доступ к полям объекта осуществляентся гораздо быстрее чем
> к к свойствам


Если св-во объявлено как

FSomeField: SomeType; //поле того же объекта
..
property SomeProp: SomeType read FSomeField write FSomeField;

то компилятор генерирует абсолютно идентичный код для обращений вида

Object.FSomeField := SomeValue;
Object.SomeProp := SomeValue;


Ega23   (2006-04-18 11:25:00) [7]


> целиком и полностью согласен, поэтому и написаны уточнения
> в скобках.


Я к тому, что я бы всё равно не стал напрямую к полю обращаться, коль скоро оно в public-секции фигурирует. Пусть чуть дольше, зато потом будет проще, если исправлять придётся.


vovnuke   (2006-04-18 11:23:00) [8]

целиком и полностью согласен, поэтому и написаны уточнения в скобках.


Ega23   (2006-04-18 11:19:00) [9]

В данном конкретном случае - наверное я с тобой соглашусь.
Но. В данном случае тогда и не нужно property, достаточно public-переменную объявить. А обычно пишется
private
FMyProp:TMyType;
function GetFMyProp:TMyType;
procedure SetFMyProp(Value:TMyType);

public
property MyProp : TMyType Read GetFMyProp Write SetFMyProp;


А впроцедуре и функции - уже логика. И этот способ более правильный. Ибо сейчас ты не хочешь никакой логики на запись/чтение поля навешивать - вот ты и обращаешься напрямую к полям. Но завтра тебе эта логика потребуется - и придётся не только декларацию чтения-записи поля менять, а ещё и весь код класса лопатить.


vovnuke   (2006-04-18 11:08:00) [10]

доступ к полям объекта осуществляентся гораздо быстрее чем к к свойствам, таким образом внутри объекта следут использовать его поля (если это возможно).


Ega23   (2006-04-18 10:50:00) [11]


> правиьней было бы написать так (в данном случае):
> Form2.aString:=FaString;


Докажи.


vovnuke   (2006-04-18 10:43:00) [12]

Вот это:

> Form2.aString:=aString;

правиьней было бы написать так (в данном случае):
Form2.aString:=FaString;


balepa   (2006-04-18 10:35:00) [13]


> Ega23 ©   (18.04.06 10:29) [14]

Он первый начал.
Не надо нас в РО.
Извините если мое высказывание кого-то это оскорбило. Я был в состоянии аффекта. Больше не буду.


Ega23   (2006-04-18 10:29:00) [14]

Моё мнение - обоих умников в РО отправить. Дня на 3. Дабы остыли.


balepa   (2006-04-18 10:27:00) [15]

Удалено модератором


vegarulez   (2006-04-18 10:11:00) [16]

Удалено модератором


balepa   (2006-04-18 10:07:00) [17]

Удалено модератором


Anatoly Podgoretsky   (2006-04-18 10:07:00) [18]

Не используй одинаковые имена, если не представляешь как это работает.


Ega23   (2006-04-18 10:06:00) [19]

Всё не так.

unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   Edit1: TEdit;
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   FaString: String;
   { Private declarations }
 public
   property aString:String Read FaString Write FaString;
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
aString:=Edit1.Text;
Application.CreateForm(TForm2, Form2);
try
  Form2.aString:=aString;
  Form2.ShowModal;
finally
  Form2.Free;
  Form2:=nil;
end;

end;

end.

//*******************************************************

unit Unit2;

interface

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

type
 TForm2 = class(TForm)
 private
   FaString: String;
   { Private declarations }
 public
   property aString:String Read FaString Write FaString;
 end;

var
 Form2: TForm2;

implementation

{$R *.DFM}

end.

//*********************************************************

program Project1;

uses
 Forms,
 Unit1 in 'Unit1.pas' {Form1},
 Unit2 in 'Unit2.pas' {Form2};

{$R *.RES}

begin
 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.Run;
end.


Anatoly Podgoretsky   (2006-04-18 10:06:00) [20]

В одном случае работаешь с полем, а в другом случае с переменной.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо