Форум: "Основная";
Текущий архив: 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