powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Создание оригинальных компонент в Дельфи
7 сообщений из 32, страница 2 из 2
Создание оригинальных компонент в Дельфи
    #32168886
Lana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще неплохо сделать для свойства DataSet функцию чтения,
я сталкивалась с глюками в случае, когда в дезайне компонент удалялся
Компонент не уничтожается а принимает статусc sDestroying, в таком случае лучше сразу уничтожить ссылку на такой объект.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
property DataSet : TDataSet read GetDataSet write FDataSet;


function TRuTreeView.GetDataSet : TDataSet;
begin
  if (FDataSet <> nil) and (csDestroying in FDataSet.ComponentState)
   then  FDataSet:=nil;

  Result:=FDataSet;
end;
...
Рейтинг: 0 / 0
Создание оригинальных компонент в Дельфи
    #32168956
Господа...предлагаю создать библиотеку оригинальных компонент для Дельфи по принципу OpenSource ...
...
Рейтинг: 0 / 0
Создание оригинальных компонент в Дельфи
    #32172114
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>то возникает access violation и глючит ДЕльфя прям во время desin time
Чтобы этого не было, надо перекрывать метод Notification, где можно отследить удаление компонента и освободить ссылку... а иначе ошибочка.

Вот выдержка из хелпа:
A component can, if needed, act on the notification that a component is being inserted or removed. For example, if a component has object fields or properties that contain references to other components, it can check the notifications of component removals and invalidate those references as needed.

Note: Notification is not called for components that are freed implicitly (because their Owner is freed).


Вот реальный пример:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
procedure TpFIBDataSet.Notification(AComponent: TComponent; Operation: TOperation); //override;
var i:integer;
begin
 inherited Notification(AComponent,Operation);
 case Operation of
  opRemove:  if (AComponent=FContainer)  then FContainer:=nil
             else
             if (AComponent is TField) and not (csDestroying in ComponentState) then
             begin
               i:=FFNFields.IndexOfObject(AComponent);
               if i<>- 1  then FFNFields.Delete(i);
             end;
 end;
end;
...
Рейтинг: 0 / 0
Создание оригинальных компонент в Дельфи
    #32172289
да я в SetRules добавил проверку if<>nil и всё.... всё теперь работает...
...
Рейтинг: 0 / 0
Создание оригинальных компонент в Дельфи
    #32173551
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>да я в SetRules добавил проверку if<>nil и всё.... всё теперь работает...
А откуда ты знаешь существует еще компонент или его уже удалили с формы??
Единственный способ это узнать Notification...
...
Рейтинг: 0 / 0
Создание оригинальных компонент в Дельфи
    #32173601
ну не знаю что ты там вообразил - у меня всё работает
...
Рейтинг: 0 / 0
Создание оригинальных компонент в Дельфи
    #32204742
Vald
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hi All!
Мне досталась по случаю книга Рея Конопки, первое издание, но при ней не было дискеты. Может ли кто-нибудь из владельцев этой книги прислать мне контент этой дискеты?
...
Рейтинг: 0 / 0
7 сообщений из 32, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Создание оригинальных компонент в Дельфи
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]