Перейти к содержанию
Fire Monkey от А до Я
  • 0

Конфликт Hint и BorderStyle


Maximus

Вопрос

Опубликовано

День добрый. Возникла следующая проблема. Если свойству формы BorderStyle поставить любое значение (кроме Sizeable), все подсказки Hint компонентов этой формы перестают отображаться. Аналогично дело обстоит с BorderIcons, стоит убрать хотя бы одну кнопку, как Hint сразу перестаёт работать.

Это нормальное поведение или ошибка? И можно ли как-то это обойти?

Рекомендуемые сообщения

  • 0
Опубликовано

Поддержу вопрос, но немного его перефразирую. У меня вообще какой то затык с этим Hint-ом! Как приложение я пишу уже полгода (начал с DelphiEX7), бинт появился только сейчас, то я его добавил только сейчас, но не тут то было! Он вообще не отображается нигде ни при каких обстоятельствах!!!! Что делать? С кем то конфликтует?

  • 0
Опубликовано (изменено)

Поддержу вопрос, но немного его перефразирую. У меня вообще какой то затык с этим Hint-ом! Как приложение я пишу уже полгода (начал с DelphiEX7), бинт появился только сейчас, то я его добавил только сейчас, но не тут то было! Он вообще не отображается нигде ни при каких обстоятельствах!!!! Что делать? С кем то конфликтует?

В пустом проекте хоть отображается?

Изменено пользователем Maximus
  • 0
Опубликовано

 

Поддержу вопрос, но немного его перефразирую. У меня вообще какой то затык с этим Hint-ом! Как приложение я пишу уже полгода (начал с DelphiEX7), бинт появился только сейчас, то я его добавил только сейчас, но не тут то было! Он вообще не отображается нигде ни при каких обстоятельствах!!!! Что делать? С кем то конфликтует?

В пустом проекте хоть отображается?

 

Если с нуля пустой проект, то да, отображается!

  • 0
Опубликовано (изменено)

А если BorderStyle=None?

Хмм... так хинты высвечиваются только при использовании обычного VCL

Изменено пользователем HyperZen
  • 0
Опубликовано

 

 

А если BorderStyle=None?

Хмм... так хинты высвечиваются только при использовании обычного VCL

 

А причём тут VCL?

 

Если создать простой проект VCL Form Application, все работает и со свойством формы BorderStyle = None, хинты высвечиваются, все корректно. А если создать кроссплатформенный проект - хинты с этим свойством не работают.

  • 0
Опубликовано

Друзья, привет!

Вопрос так и остался актуальным. В случае, если свойства формы BorderStyle = None, то Hint'ы не отображаются!

Собственно это больше вопрос к нашим гуру. Что делать и как быть?

  • 0
Опубликовано
39 минут назад, AlexG сказал:

Друзья, привет!

Вопрос так и остался актуальным. В случае, если свойства формы BorderStyle = None, то Hint'ы не отображаются!

Собственно это больше вопрос к нашим гуру. Что делать и как быть?

Не только BorderStyle, но еще что то. А что, я так и не выяснил. Потому что в моем проекте, нет BorderStyle в none, но хинты так и не отображаются!

  • 0
Опубликовано
1 минуту назад, Vitaldj сказал:

Не только BorderStyle, но еще что то. А что, я так и не выяснил. Потому что в моем проекте, нет BorderStyle в none, но хинты так и не отображаются!

Думаю, что еще и свойство Transparency, при определенных условиях.

  • 2
  • Модераторы
Опубликовано

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

  • копируем в проект и открываем FMX.Forms.pas
  • Ctrl+F -> procedure TCommonCustomForm.SetShowHint(const Value: Boolean);

 

procedure TCommonCustomForm.SetShowHint(const Value: Boolean);
begin
  FShowHint := Value;
  ReleaseLastHinted;

  // ZuBy ***
  if (not(csDesigning in ComponentState)) then
  begin
    FreeAndNil(FSharedHint);
    FSharedHint := THint.CreateNewInstance(Handle);
  end;
  // *** ZuBy
end;
  • сохраняем
  • в событии OnCreate, OnShow пишем
ShowHint := true;
  • Готово!

 

  • 0
Опубликовано
3 минуты назад, Равиль Зарипов (ZuBy) сказал:

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

  • копируем в проект и открываем FMX.Forms.pas
  • Ctrl+F -> procedure TCommonCustomForm.SetShowHint(const Value: Boolean);

 


procedure TCommonCustomForm.SetShowHint(const Value: Boolean);
begin
  FShowHint := Value;
  ReleaseLastHinted;

  // ZuBy ***
  if (not(csDesigning in ComponentState)) then
  begin
    FreeAndNil(FSharedHint);
    FSharedHint := THint.CreateNewInstance(Handle);
  end;
  // *** ZuBy
end;
  • сохраняем
  • в событии OnCreate, OnShow пишем

ShowHint := true;
  • Готово!

 

Хотелось бы без костылей((

  • 0
  • Модераторы
Опубликовано
Только что, Vitaldj сказал:

Хотелось бы без костылей((

без костылей никак, т.к. этот код не вызывается повторно.

почему повторно? потому что форма создается всегда со стилем Sizeble, потом если стиль другой (например None), то вызывается пересоздание окна (не формы!!) где выставляются стили (винапи). и так как форма создана, то повторно событие где вызывается этот код не происходит

надеюсь понятно написал)

  • 0
Опубликовано
6 минут назад, Равиль Зарипов (ZuBy) сказал:

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

  • копируем в проект и открываем FMX.Forms.pas
  • Ctrl+F -> procedure TCommonCustomForm.SetShowHint(const Value: Boolean);

 


procedure TCommonCustomForm.SetShowHint(const Value: Boolean);
begin
  FShowHint := Value;
  ReleaseLastHinted;

  // ZuBy ***
  if (not(csDesigning in ComponentState)) then
  begin
    FreeAndNil(FSharedHint);
    FSharedHint := THint.CreateNewInstance(Handle);
  end;
  // *** ZuBy
end;
  • сохраняем
  • в событии OnCreate, OnShow пишем

ShowHint := true;
  • Готово!

 

Работает!

А то, что это "костыль" - пофигу! Если бы он был одним единственным... А так - это решение вполне устраивает!

Спасибо!

  • 0
  • Модераторы
Опубликовано

ну и кому хочется сделать Ballon, а не прямоугольник

  • копируем в проект и открываем FMX.Controls.Win.pas
  • Ctrl+F -> constructor TWindowsHint.Create(const AHandle: TWindowHandle);
FToolTipHandle := CreateWindowEx(0, TOOLTIPS_CLASS, nil, WS_POPUP or TTS_ALWAYSTIP or TTS_BALLOON, 
   0, 0, 300, 300, FNativeControlHandle, 0, hInstance, nil);
  • TTS_BALLON - сделает закругленные подсказки со стрелкой
  • сохраняем
  • Готово!

 

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...