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

Вниз

Области видимости   Найти похожие ветки 

 
Maks Realov   (2003-05-29 16:30) [0]

Имеем объявления класса:
type
TForm1 = class(TForm)

// sTest3: string;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);

private
{ Private declarations }
sTest: string;
public
{ Public declarations }
sTest2: string;
end;

Что в public и private секциях располагается я понял, а что расоплагается в выделенной мной курсивом области, до private и почему в неё я не могу вставить свои объявления?


 
Palladin ©   (2003-05-29 16:38) [1]

published

кто сказал что не можешь?


 
Digitman ©   (2003-05-29 16:39) [2]

а зачем тебе туда прямо так нужно "вставить" ?
это - спец.секция... private, protected, public - разве этого недостаточно ?


 
McSimm2   (2003-05-29 16:43) [3]

...,published,..


 
Maks Realov   (2003-05-29 16:47) [4]

2 Digitman ©:

как я понял, свойства туда можно вставлять:

type TMyButton = class(TButton)
property Size: Integer;
procedure DoSomething;
end;

Так почему нельзя обычные переменные?



 
default ©   (2003-05-29 16:49) [5]

это секцию спец-ая - обслуживается IDE
пиши private,... и вноси туда свои объявления


 
Digitman ©   (2003-05-29 17:10) [6]


> Maks Realov


вот для описания св-в, автоматически контролируемых IDE, и методов, их реализующих, эта секция и предназначена.. на то она и published... несмотря на отсутствие кл.слова "published"

секция эта, наравне с явно декларируемой тобой (при необходимости) секцией "published" обладает областью видимости, равной public


 
jack128 ©   (2003-05-29 18:41) [7]


> обычные переменные?
Эти обычные переменнst называются полями
можно решить проблему так

TBaseClass = class
Fx : Integer;
published
property X : Integer read Fx write Fx;
end;




 
jack128 ©   (2003-05-29 18:46) [8]

> TmyButtin = class(Tbutton)
private
> Fx : Integer;
> published
> property X : Integer read Fx write Fx;
> end;


 
Юрий Зотов ©   (2003-05-30 06:28) [9]

Народ, никакая это не специальная секция, а самая обычная. Вот цитата из Конопки:

"Поля и методы, объявленные непосредственно вслед за заголовком классового типа, имеют по умолчанию видимость published, если класс компилируется в состоянии {$M+} или если класс порожден от класса, компилировавшегося в состоянии {$M+}. Во всех других случаях по умолчанию видимость - public".

Пример:

type
TClass1 = class // Прямой наследник TObject.
Field1: integer; // Это public.
end;

{$M+}
TClass2 = class // Тоже прямой наследник TObject.
Field1: integer; // А вот это уже published.
end;
{$M-}

TClass3 = class(TPersistent)
Field1: integer; // И это published.
end;

Для полной ясности остается только вспомнить, что формы - это тоже наследники TPersistent.


 
icWasya ©   (2003-05-30 10:05) [10]

>и почему в неё я не могу вставить свои объявления?
Как уже сказали область видимости - Published
В секцию Published можно помещать переменные только тех типов, для которых в IDE есть зарегистрированные редакторы свойств
Кроме того, этот кусок кода автоматически генерируется IDE при помещении/удалении компонент и обработчиков событий. Поэтому, в частности, IDE будет указывать на ошибку, если есть поле, но нет соответствующего ему компонента



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

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

Наверх




Память: 0.49 MB
Время: 0.022 c
1-26457
wera
2003-05-29 12:13
2003.06.09
ListBox


4-26827
Griffin
2003-04-08 17:21
2003.06.09
Какое сообщение нужно послать


3-26412
prihod
2003-05-21 18:39
2003.06.09
Команды компонента Query.Sql


1-26545
OlegM
2003-05-28 09:36
2003.06.09
Про фришты


1-26604
Кирилл Г.
2003-05-28 14:25
2003.06.09
Обьединение в Ворде