Форум: "Основная";
Текущий архив: 2003.06.09;
Скачать: [xml.tar.bz2];
ВнизОбласти видимости Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c