Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6 502

/ вопрос открыт /

Приветствую, уважаемые эксперты!
Я создал компоненте на основе TEdit и привязал к нему TBalloonHint. И если закрыть форму во время отображения подсказки, то вылетает access violation для vcl140.bpl. С деструкторами всё в порядке. Насильно спрятать подсказку перед разрушением при разрушении родительского для неё TEdit тоже не удаётся. Из этой ситуации есть какой-то выход? Какой?

P.S. "Не пользоваться" - не предлагать.

dmistand Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: dmistand (статус: 1-ый класс)
Вопрос отправлен: 14 декабря 2013, 18:30
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 4; последнее сообщение — 14 декабря 2013, 22:22; участников в обсуждении: 2.
min@y™

min@y™ (статус: Доктор наук), 14 декабря 2013, 18:39 [#1]:

Код дай посмотреть.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
dmistand

dmistand (статус: 1-ый класс), 14 декабря 2013, 19:16 [#2]:

min@y™:
interface
 
  TSmartEdit = class(TEdit)
    strict private
      FBalloonHint: TBalloonHint;
 
      procedure SetBalloonShowTime(value: Integer);
      procedure ShowBalloon;
 
      function GetBalloonShowTime: Integer;
 
    public
      constructor Create(AOwner: TComponent); override;
      destructor Destroy; override;
 
    published
      property BalloonShowTime: Integer read GetBalloonShowTime write SetBalloonShowTime;
  end;
 
implementation
 
constructor TSmartEdit.Create(AOwner: TComponent);
begin
  inherited;
  FBalloonHint := TBalloonHint.Create(Self);
  FBalloonHint.Delay := 0;
  FBalloonHint.HideAfter := 3000;
  Text := '0';
  Alignment := taCenter;
  Width := 70;
end;
 
destructor TSmartEdit.Destroy;
begin
  FBalloonHint.Free;
  inherited;
end;
 
function TSmartEdit.GetBalloonShowTime: Integer;
begin
  Result := FBalloonHint.HideAfter;
end;
 
procedure TSmartEdit.SetBalloonShowTime(value: Integer);
begin
  FBalloonHint.HideAfter := value;
end;
 
procedure TSmartEdit.ShowBalloon;
var str: string;
begin
  str := 'Разрешены только ';
  if not FInputOptions.IsNegativeAllowed then str := str + 'неотрицательные ';
  case FInputOptions.ValueType of
    vtInteger: str := str + 'целые ';
    vtFloat: str := str + 'действительные ';
  end;
  str := str + 'числа';
  FBalloonHint.Title := str;
  FBalloonHint.ShowHint(Self);
end;

В классе ещё есть подкласс TInputOptions, я его вытер, чтобы не загромождать экран.
min@y™

min@y™ (статус: Доктор наук), 14 декабря 2013, 19:41 [#3]:

Криминала не вижу. Где вываливается Еррор?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
dmistand

dmistand (статус: 1-ый класс), 14 декабря 2013, 22:22 [#4]:

min@y™: криминала и нет. Потому я и здесь, что криминала нет, а подобного опыта - тоже. Если на форме есть такой контрол, хинт показан, и форму закрыть - вот тут и вываливается ошибка - если совсем точно, то на строке FBalloonHint.Free;
Я пытался его скрыть через FBalloonHint.HideHint - не помогло... Пробовал FreeOnRelease, но это вообще к БД, наверное, относится, судя по исходнику.
Вот и кончились идеи. Гугл тоже толком ничего не показывает, или я не так гуглю.

4 октября 2015, 14:35: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Работа с компонентами и библиотеками модератором Ерёмин А.А.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:47
Выполнено за 0.02 сек.