powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TBalloonHint.SetHintSize
16 сообщений из 16, страница 1 из 1
TBalloonHint.SetHintSize
    #39322465
r00xus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте коллеги.

Пытаюсь задать размер BalloonHint. Действую вот так:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
procedure TForm1.Button1Click(Sender: TObject);
var
  LHintWindow : TCustomHintWindow;
  LPoint : TPoint;
begin
  LPoint.X := Button1.Width div 2;
  LPoint.Y := Button1.Height;

  LHintWindow := TCustomHintWindow.Create(Application);
  LHintWindow.Width := 100;
  LHintWindow.Height := 200;
  BalloonHint.SetHintSize(LHintWindow);

  BalloonHint.HideAfter := 2000;

  BalloonHint.Description := 'This is a hint';

  BalloonHint.ShowHint(Button1.ClientToScreen(LPoint));
end;

Получаю Access violation. Что не так?
...
Рейтинг: 0 / 0
TBalloonHint.SetHintSize
    #39322511
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отладка тебе все покажет.
...
Рейтинг: 0 / 0
TBalloonHint.SetHintSize
    #39322518
r00xus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отладчик не заходит в метод BalloonHint.SetHintSize(LHintWindow), а только вываливает исключение :(
...
Рейтинг: 0 / 0
TBalloonHint.SetHintSize
    #39322533
Фотография DetSimen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проверь для начала свой BaloonHint на nil.
...
Рейтинг: 0 / 0
TBalloonHint.SetHintSize
    #39322543
r00xus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DetSimen,

Не ну я по вашему не в своем уме чтоли:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    BalloonHint: TBalloonHint;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  LHintWindow : TCustomHintWindow;
  LPoint : TPoint;
begin
  LPoint.X := Button1.Width div 2;
  LPoint.Y := Button1.Height;

  LHintWindow := TCustomHintWindow.Create(Application);

  LHintWindow.Width := 100;
  LHintWindow.Height := 200;

  BalloonHint.SetHintSize(LHintWindow);

  BalloonHint.HideAfter := 2000;

  BalloonHint.Description := 'This is a hint';

  BalloonHint.ShowHint(Button1.ClientToScreen(LPoint));

end;

end.


какой nil?! O_O
...
Рейтинг: 0 / 0
TBalloonHint.SetHintSize
    #39322553
Фотография DetSimen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r00xus, по виду ошибки, вызывается метод несуществующего объекта.
...
Рейтинг: 0 / 0
TBalloonHint.SetHintSize
    #39322569
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r00xus,

Код: pascal
1.
2.
3.
4.
5.
6.
7.
procedure TBalloonHint.SetHintSize(HintWindow: TCustomHintWindow);
...
 if HintParent.Style = bhsBalloon then  <-- HintWindow.HintParent = nil
      LHeight := cBalloonStemHeight
    else
      LHeight := 0;
...
...
Рейтинг: 0 / 0
TBalloonHint.SetHintSize
    #39322584
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r00xus,

Use Debug dcu's
...
Рейтинг: 0 / 0
TBalloonHint.SetHintSize
    #39322587
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А проще - сделай свой наследник TBalloonHint
...
Рейтинг: 0 / 0
TBalloonHint.SetHintSize
    #39322601
Tactical Nuclear Penguin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r00xusЧто не так?

забыл установить HintParent
...
Рейтинг: 0 / 0
TBalloonHint.SetHintSize
    #39322607
r00xus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Paranta установил. Но похоже этот метод не меняет размер самого BalloonHint...
...
Рейтинг: 0 / 0
TBalloonHint.SetHintSize
    #39322803
Tactical Nuclear Penguin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r00xusParanta установил. Но похоже этот метод не меняет размер самого BalloonHint...

вопрос был про AV или что-то другое?
...
Рейтинг: 0 / 0
TBalloonHint.SetHintSize
    #39322829
r00xus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tactical Nuclear Penguin,

Изначально я хотел изменить размер облачка BalloonHint т.к. отступы у стандартного маловаты. Думал метод SetHintSize мне в этом поможет, но судя по его коду он как раз меняет размер CustomHintWindow...
...
Рейтинг: 0 / 0
TBalloonHint.SetHintSize
    #39322830
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
procedure TForm1.Button1Click(Sender: TObject);
var
  LHintWindow : TCustomHintWindow;
  LPoint : TPoint;
begin
  LPoint.X := Button1.Width div 2;
  LPoint.Y := Button1.Height;

  LHintWindow := TCustomHintWindow.Create(Application);

  LHintWindow.Width := 100;
  LHintWindow.Height := 200;
  LHintWindow.HintParent := BalloonHint1;

  BalloonHint1.SetHintSize(LHintWindow);

  BalloonHint1.HideAfter := 2000;

  BalloonHint1.Description := 'This is a hint';

  BalloonHint1.ShowHint(Button1.ClientToScreen(LPoint));

end;
...
Рейтинг: 0 / 0
TBalloonHint.SetHintSize
    #39323574
r00xus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HintParent я поправил. Но похоже метод SetHintSize не изменяет размер подсказки, а скорее изменяет размер окна TCustomHintWindow. Это не совсем то что мне нужно. Я хочу увеличить отступы у окна. Это можно как-то сделать?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
TBalloonHint.SetHintSize
    #39607539
mxustin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я даже специально зарегистрировался на форуме, чтобы ответить на это сообщение. Понятно, что за давностью лет топикстартеру уже ничего не нужно давно, но, может быть, кто-то будет ломать голову над этим, как ломал ее я. Решение для изменений размеров окошка BalloonHint у меня простое и незатейливое.

Если надо сделать отступ слева - то добавляю несколько пикселей к иконке (если иконки нет - то сколько надо ведущих пробелов к строкам). Если надо отступ справа - то к строкам добавляю завершающие пробелы (по потребности). Если надо сделать многострочный комментарий - то один лишний символ возврата каретки добавляю (#13), чтобы "отступом снизу" была просто пустая строка.

Попутно хотел бы добавить, что у некоторых начинающих программистов есть беда (включая и меня) — пытаться решать в лоб:

Ах, нету у BalloonHint свойств Height и Width — ну, тогда полезем в родительские классы...
Ах, так просто не решается вопрос — ну, тогда давайте переделывать... создавать своих наследников... А, еще лучше, вообще, давайте собственный MyFullyСustomizableSuperHint (разумеется, со всевозможными свистелками и перделками, с блэкджеком и шлюхами... и т.д.) запилим... А еще лучше, — вообще свой мега-крутой набор компонентов.

Ларчик иногда открывается очень просто: пара пробелов... пустая строка... пара лишних пикселей... Не усложняйте себе жизнь, коллеги! )) Прежде чем идти по тернистому и сложному пути, попытайтесь найти простой.

Всем удачи в поисках простых решений!



З.Ы. Может быть, это и не ТруЪ, но так я потрачу пару лишних минут (и то, только если иконку буду переделывать), а в противном случае, можно тратить часы, дни, недели... и т.д.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TBalloonHint.SetHintSize
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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