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

Вниз

TNotifyEvent и AccessViolation   Найти похожие ветки 

 
mfender ©   (2006-12-06 14:16) [0]


type
 TmfCustomPicturePanel = class(TCustomPanel)
 private
   FbtnStretch: TSpeedButton;
   FOnStretchClick: TNotifyEvent;
 protected
   procedure StretchClick(Sender: TObject);
 public
   constructor Create(AOwner: TComponent); override;
 published
   property OnStretchClick: TNotifyEvent
     read FOnStretchClick write FOnStretchClick;
 end;

constructor TmfCustomPicturePanel.Create(AOwner: TComponent);
begin
 FbtnStretch.OnClick := StretchClick;
end;

procedure TmfCustomPicturePanel.StretchClick(Sender: TObject);
begin
 if FImage.Stretch then
   FImage.Stretch := False
 else
   FImage.Stretch := True;
 FOnStretchClick(Sender);
end;


Так вот, если я снаружи (у компонента на форме) определяю какие-то действия по клику на кнопку - всё нормально. Если нет - AccessViolation по адресу 0. Как можно избавиться от этой порчи?


 
Palladin ©   (2006-12-06 14:32) [1]

Не долбится головой об стенку, а проверить можно ли пройти.


 
Рамиль ©   (2006-12-06 14:40) [2]

Assigned + F1


 
mfender ©   (2006-12-06 14:47) [3]


> Рамиль ©   (06.12.06 14:40) [2]

Спасибо! Помогло! Ещё раз спасибо!


 
Anatoly Podgoretsky ©   (2006-12-06 14:48) [4]

> mfender  (06.12.2006 14:16:00)  [0]

Странно написаный компонент.

Почему то этот переход делается без проверки на допустимость

Посмотри как VCL написан.


 
Loginov Dmitry ©   (2006-12-06 15:43) [5]

constructor TmfCustomPicturePanel.Create(AOwner: TComponent);
begin
FbtnStretch.OnClick := StretchClick;
end;


Как такое вообще может работать?


 
Palladin ©   (2006-12-06 15:45) [6]

А почему оно не может работать?


 
app ©   (2006-12-06 15:48) [7]


>
> Как такое вообще может работать?

Нет оснований для сомнений, процедура типа TNotifyEvent, а раз так то почему бы ей не работать.


 
Loginov Dmitry ©   (2006-12-06 16:20) [8]

> А почему оно не может работать?


Не вызваны родительские конструкторы. Это по вашему нормально?


 
Loginov Dmitry ©   (2006-12-06 16:22) [9]

Как я понял, в [0] приведен псевдокод.


 
Anatoly Podgoretsky ©   (2006-12-06 16:25) [10]

> Loginov Dmitry  (06.12.2006 16:20:08)  [8]

Какие еще конструкторы, при назначение свойства?
Ты о чем?


 
Loginov Dmitry ©   (2006-12-06 16:43) [11]

> Какие еще конструкторы, при назначение свойства?


Не знаю. Вам виднее. Только как вот это объясните:


constructor TmfCustomPicturePanel.Create(AOwner: TComponent);
begin
FbtnStretch.OnClick := StretchClick;
end;


Где создается FbtnStretch?
Где вызывается inherited?

Или счас так и нужно, и я отстал от жизни?


 
Anatoly Podgoretsky ©   (2006-12-06 16:45) [12]

> Loginov Dmitry  (06.12.2006 16:43:11)  [11]

> Где создается FbtnStretch?

Он уже создан, это поле класса


 
Amoeba ©   (2006-12-06 16:45) [13]


> if FImage.Stretch then
>    FImage.Stretch := False
>  else
>    FImage.Stretch := True;

Это замени на
FImage.Stretch := not FImage.Stretch;
Так короче и понятней.


 
Loginov Dmitry ©   (2006-12-06 16:47) [14]

> Он уже создан, это поле класса


Откуда такая информация?


 
Anatoly Podgoretsky ©   (2006-12-06 16:53) [15]

> Loginov Dmitry  (06.12.2006 16:47:14)  [14]

Ой, ты что совсем Дельфи не знаешь?


 
Loginov Dmitry ©   (2006-12-06 17:02) [16]

> Ой, ты что совсем Дельфи не знаешь?


Что именно я не знаю?

Только пожалуйста, отвечайте максимально осмысленно.


 
Anatoly Podgoretsky ©   (2006-12-06 17:03) [17]

> Loginov Dmitry  (06.12.2006 17:02:16)  [16]

Например не знаешь как работают конструкторы, ознакомься самостоятельно по справке.


 
Loginov Dmitry ©   (2006-12-06 17:10) [18]

> [17] Anatoly Podgoretsky ©   (06.12.06 17:03)
> > Loginov Dmitry  (06.12.2006 17:02:16)  [16]
>
> Например не знаешь как работают конструкторы, ознакомься
> самостоятельно по справке.


Как бы конструкторы ни работали, а код

constructor TmfCustomPicturePanel.Create(AOwner: TComponent);
begin
FbtnStretch.OnClick := StretchClick;
end;

в любом случае является некорректным.
Объект FbtnStretch еще не создан, однако OnClick используется.

Если вы считаете что объект FbtnStretch уже создан, то поясните, где, кем и почему он был создан?


 
Anatoly Podgoretsky ©   (2006-12-06 20:32) [19]

> Loginov Dmitry  (06.12.2006 17:10:18)  [18]

Зря не слушаешься, сопротивляешься, почитай хотя бы справку, если уж не хочешь читать учебник для начинающих.


 
Loginov Dmitry ©   (2006-12-06 20:55) [20]

-   2 + 2 = 5 ?

-   Неа!

-   Тогда читай учебники, пока не поймешь, что 2 + 2 = 5!


 
sniknik ©   (2006-12-06 21:53) [21]

>> Как такое вообще может работать?
> Нет оснований для сомнений, процедура типа TNotifyEvent, а раз так то почему бы ей не работать.
...
> Какие еще конструкторы, при назначение свойства?
> Ты о чем?
о том, что у него в конструкторе вообще не связанному с TNotifyEvent, и главное не созданному обьекту FbtnStretch: TSpeedButton; свойство устанавливается FbtnStretch.OnClick := StretchClick;
т.е. если бы он там событие FOnStretchClick инициализировал начальным значением то вопроса бы не было. да и то inherited в конструкторе все одно бы не помешал.


 
Anatoly Podgoretsky ©   (2006-12-07 00:41) [22]

О черт, замылились глаза

FbtnStretch: TSpeedButton;

Я думал об

FOnStretchClick: TNotifyEvent;



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

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

Наверх





Память: 0.5 MB
Время: 0.347 c
2-1165372992
Myxa_0
2006-12-06 05:43
2006.12.24
Как можно выполнить код записанный в текстовом поле?


4-1155901190
Прогер
2006-08-18 15:39
2006.12.24
Как грамотно остановить сервис? Service WinNT


1-1162989068
Greenchel
2006-11-08 15:31
2006.12.24
Edit.Font to RichEdit


2-1164702053
Mishenka
2006-11-28 11:20
2006.12.24
Повторный запуск программы


2-1165154716
FIL-23
2006-12-03 17:05
2006.12.24
как отследить изменения в dbedit





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