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

Вниз

Наконец-то вопрос по теме сайта))   Найти похожие ветки 

 
lookin ©   (2007-11-24 22:35) [0]

Решил задать очередной возникший у меня вопрос. Предположим, есть TChart и есть некий компонент, работающий с этим TChart. Этот компонент желал бы переопределить (а точнее, расширить) метод, например, TChartClickBackground. Скажем, у TChart (у его экземпляра) уже определен метод ClickBackground, например, на клике по фону чарта программа выдает Showmessage("First"). Компонент хотел бы лишь добавить при клике на фон второе сообщение в виде Showmessage("Second") в этот обработчик, не портя исходного. Т.е. так, чтобы появлялись оба сообщения. У компонента есть дизайн-тайм свойство Chart, которое назначается просто приравниванием FChart:=AChart в процедуре-описании этого свойства Chart (то бишь, это лишь указатель на AChart, а не сам объект AChart). Вопрос - можно ли это реализовать сразу в рамках компонента, а не в процедуре ChartBackgroundClick объекта TChart в программе, и если да, то как? Мои попытки почему-то оказались наполовину успешные, а наполовину нестабильные (в плане вылета с ошибками типа AV)... Заранее спасибо)

ПС Написал сюда, а не в тему "Компоненты", лишь потому, что тут народу сейчас поболее... За что и прошу прощения у модераторов...


 
turbouser ©   (2007-11-25 01:58) [1]


> Мои попытки почему-то оказались наполовину успешные

Интересно, каким образом?
В идале - делаем наследника, перекрываем OnChartBackgroundClick
и творим что хотим. Однако у меня не получилось. Нет chart.pas
и не понятно в где и как этот метод реализован.


 
lookin ©   (2007-11-25 03:22) [2]

> [1] turbouser ©   (25.11.07 01:58)

я сделал не совсем так...


 
lookin ©   (2007-11-25 03:26) [3]

вот то, что я наппсал в компоненте

type TChartClickBackgroundReserved = procedure(Sender: TCustomChart;
                                    Button: TMouseButton; Shift: TShiftState;
                                    X, Y: Integer) of object;

procedure TEqapSeriesTool.SetChart(Value: TChart);
begin
 FChart:=Value;
 if not (csDesigning in ComponentState) then begin
 if Assigned(FChart) then begin
 ChartClickBackgroundReserved:=FChart.OnClickBackground;
 FChart.OnClickBackground:=ChartClickBackground; end; end;
end;

procedure TEqapSeriesTool.ChartClickBackground(Sender: TCustomChart;
         Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 showmessage("zzz");
 ChartClickBackgroundReserved(Sender,Button,Shift,X,Y);
end;


 
Johnmen ©   (2007-11-25 03:32) [4]


> lookin ©

Пеши исчо!

ЗЫ
Прежде, чем писАть, надо думать. (с)


 
KilkennyCat ©   (2007-11-25 04:54) [5]


> Прежде, чем писАть, надо думать

Зачем?!


 
lookin ©   (2007-11-25 05:03) [6]

> [4] Johnmen ©   (25.11.07 03:32)

Здравую критику всегда выслушаю...


 
lookin ©   (2007-11-25 05:08) [7]

> [4] Johnmen ©   (25.11.07 03:32)

Хм, нездравую, типа "Пеши исчо", лучше не буду выслушивать...)


 
antonn ©   (2007-11-25 12:15) [8]


> Johnmen ©   (25.11.07 03:32) [4]
>
>
> > lookin ©
>
> Пеши исчо!
>
> ЗЫ
> Прежде, чем писАть, надо думать. (с)
>

есть что сказать - скажите :)



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

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

Наверх




Память: 0.48 MB
Время: 0.027 c
11-1181737379
Nikfel
2007-06-13 16:22
2007.12.23
Возможно ли изменить цвет Tkolbutton


2-1196096385
AntonUSAnoV
2007-11-26 19:59
2007.12.23
импорт/экспорт в MS WORD


2-1196481525
San1712
2007-12-01 06:58
2007.12.23
Возникает сообщение об ошибке как его обработать ?


2-1196189438
Petrovich
2007-11-27 21:50
2007.12.23
Определение размера динамического массива


2-1196152756
Ростик
2007-11-27 11:39
2007.12.23
Как правильно записывать числа типа флоат