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

Вниз

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

 
gelios   (2003-10-23 12:05) [0]

Имеется некий класс, содержащий ряд методов в секции public.
Как малой кровью перенести ряд методов в секцию published у потомка этого класса? (Со свойствами все просто...)


 
Anatoly Podgoretsky   (2003-10-23 12:10) [1]

А зачем их в published, понятно если бы в public


 
Amoeba   (2003-10-23 12:12) [2]

Вопрос достойный орешника!


 
gelios   (2003-10-23 12:22) [3]

потому что для published создается rtti, а для public нет


 
Reindeer Moss Eater   (2003-10-23 12:29) [4]

Малая кровь зависит от типов переносимых в published свойств


 
Reindeer Moss Eater   (2003-10-23 12:35) [5]

А вот как методы туда перенести и главное зачем?

потому что для published создается rtti, а для public нет

А можно существующий пример published методов?


 
gelios   (2003-10-23 12:47) [6]

[i]Малая кровь зависит от типов переносимых в published свойств[/i]
Имхо от типов свойств тут не зависит. Просто имена свойст переопределяются в published секции.

[i]А можно существующий пример published методов?[/i]
А дизайнер все обработчики событий помещяет в published


 
Reindeer Moss Eater   (2003-10-23 12:50) [7]

Имхо от типов свойств тут не зависит. Просто имена свойст переопределяются в published секции.

К счастью это только твое ИМХО

А дизайнер все обработчики событий помещяет в published

Обработчики событий помещаются к исходный текст.
А сами события это свойства, а не методы.


 
Reindeer Moss Eater   (2003-10-23 12:58) [8]

Кроме того ОБРАБОТЧИКИ СОБЫТИЙ не принадлежат классу в котором определены сами события.

Просто имена свойст переопределяются в published секции.

TMyLabel = class(TLabel)
private
protected
public
MyCaption : string;
MyTag : integer;
published
end;

Для тренировки попробуй написать наследника у которого MyCaption и MyTag будут published


 
gelios   (2003-10-23 13:02) [9]

Событие - это свойство
Обработчик события - метод.

Проведите такой эксперимент.
Создайте обработчик любого события и ручками перенесите его описание в секцию public, а потом в инспекторе объектов попробуйте его выбрать...


 
Anatoly Podgoretsky   (2003-10-23 13:11) [10]

gelios © (23.10.03 12:47) [6]
Никаких методов он туда не помещает, зато там находятся свойство процедурного типа.

gelios © (23.10.03 13:02) [9]
А ты не про форму здесь говоришь?


 
gelios   (2003-10-23 13:19) [11]

да, про форму
то есть procedure FormCreate(Sender: TObject);
это свойство процедурного типа, а не метод?

Reindeer Moss Eater © (23.10.03 12:58) [8]
MyCaption : string;
и
MyTag : integer;
есть поле, а не свойство или метод.


 
Zacho   (2003-10-23 13:24) [12]


> gelios © (23.10.03 13:19) [11]
> да, про форму
> то есть procedure FormCreate(Sender: TObject);

Это - метод. А вот OnFormCreate - именно свойство процедурного типа.


 
gelios   (2003-10-23 13:33) [13]

ну так про onFormCreate я разговор не веду.


 
Reindeer Moss Eater   (2003-10-23 13:46) [14]

Просто имена свойст переопределяются в published секции.

Ну вот тебе свойства. Попробуй написать наследника у которого свойства MyCaption и MyTag будут паблишед.

TMyLabel = class(TLabel)
private
fMyCaption : string;
fMyTag : integer;
protected
public
property MyCaption:string read fMyCaption write fMyCaption;
property MyTag : integer read fMyTag write fMyTag;
published
end;

Еще раз повторяю ОБРАБОТЧИКИ событий не принадлежат самому классу и не будут принадлежать твоему усовершенствованому наследнику класса.
Поэтому переопределением класса ты ничего не получишь.


 
Zacho   (2003-10-23 13:53) [15]

2 gelios © : Лучше напиши, что конкретно ты хочешь сделать и зачем.


 
gelios   (2003-10-23 13:55) [16]

TMyLabelEx=class(TMyLabel)
published
property MyCaption;
property MyTag;
end;


 
Reindeer Moss Eater   (2003-10-23 14:12) [17]

gelios

Пример со свойствами в прошел только потому, что есть редакторы для типов этих свойств (string и integer).
Стоит изменить типы на другие и сразу станет ясно что перенос свойств в паблишед все же сильно зависит от типов данных этих свойств.


 
gelios   (2003-10-23 14:15) [18]

есть некий скриптовый движок, который автоматом получает доступ к published методам и свойствам. Для доступа к public свойствам и методам нужно обучать этот движок, причем код получается громоздкий. Вот я и хочу узнать, есть ли способ перенести методы в published, кроме как в переопределяя их в потомке и потом в реализации вызывать предка...


 
Reindeer Moss Eater   (2003-10-23 14:17) [19]

есть ли способ перенести методы в published, кроме как в переопределяя их в потомке и потом в реализации вызывать предка...

То что ты хочешь поместить в паблишед не является членом класса над которым ты колдуешь.


 
gelios   (2003-10-23 14:30) [20]

это как? с каких это пор определенный в классе метод не является членом этого класса?


 
Reindeer Moss Eater   (2003-10-23 14:31) [21]

это как? с каких это пор определенный в классе метод не является членом этого класса?

Ты пару часов твердил, что хочешь видеть обработчики событий, а не методы


 
gelios   (2003-10-23 14:35) [22]

посмотри внимательно первый пост...


 
Reindeer Moss Eater   (2003-10-23 14:38) [23]

Я вот это внимательно изучил:

Проведите такой эксперимент.
Создайте обработчик любого события и ручками перенесите его описание в секцию public, а потом в инспекторе объектов попробуйте его выбрать...


 
Reindeer Moss Eater   (2003-10-23 14:47) [24]

Обработчики это тоже методы. Но методы другого класса.

А ты пытаешься путем изменения фамилий имен и пола пассажиров автобуса изменить скорость и цвет автобуса


 
gelios   (2003-10-23 14:53) [25]

это к тому, что дизайнер все пишет в published...


 
Reindeer Moss Eater   (2003-10-23 14:58) [26]

это к тому, что дизайнер все пишет в published...

И хочешь изменить дизайнер написанием нового класса?
Я правильно понял?


 
gelios   (2003-10-23 15:11) [27]

нет, я не хочу менять дизайнер, я хочу узнать, есть ли способ проще, чем этот

type
tc1=class
public
procedure p1;
end;
tc2=class(tc1);
published
procedure p1;
end;
procedure tc1.p1;
begin
....
end;
procedure tc2.p1;
begin
tc1.p1;
end;


 
Reindeer Moss Eater   (2003-10-23 15:14) [28]

"А в чем "простота", брат?"

Можно ведь сделать CTRL+X CTRL+V в исходном классе например


 
Zelius   (2003-10-23 17:45) [29]


> gelios ©

а почему не стал использовать стандартный MS Script Host? Или прикрути IDispatch, впринципе для твоей задачи как раз.


 
Amoeba   (2003-10-23 18:05) [30]

Н-да-а! Автору вопроса все как об стенку горох...


 
gelios   (2003-10-24 07:09) [31]

Можно ведь сделать CTRL+X CTRL+V в исходном классе например
Это если есть исходники...
Amoeba (23.10.03 18:05) [30]
В каком месте смеяться?


 
Amoeba   (2003-10-24 11:01) [32]

gelios © (24.10.03 07:09) [31]
Читая любой твой пост



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

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

Наверх




Память: 0.51 MB
Время: 0.009 c
3-8274
tprkv
2003-10-14 10:42
2003.11.03
Как сделать так, чтобы я нажал на запись в DBGRID а она отобразил


4-8717
Evgeniy
2003-08-29 14:37
2003.11.03
Передвижение формы по экрану


3-8283
rosl
2003-10-09 02:32
2003.11.03
sql


3-8324
td
2003-10-11 00:09
2003.11.03
как узнать тип .dbf


3-8319
mari
2003-10-14 16:28
2003.11.03
работа со строками





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский