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

Пытаюсь задать размер 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
07.10.2016, 10:25
    #39322511
Cobalt747
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TBalloonHint.SetHintSize
Отладка тебе все покажет.
...
Рейтинг: 0 / 0
07.10.2016, 10:30
    #39322518
r00xus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TBalloonHint.SetHintSize
Отладчик не заходит в метод BalloonHint.SetHintSize(LHintWindow), а только вываливает исключение :(
...
Рейтинг: 0 / 0
07.10.2016, 10:43
    #39322533
DetSimen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TBalloonHint.SetHintSize
проверь для начала свой BaloonHint на nil.
...
Рейтинг: 0 / 0
07.10.2016, 10:55
    #39322543
r00xus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TBalloonHint.SetHintSize
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
07.10.2016, 11:06
    #39322553
DetSimen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TBalloonHint.SetHintSize
r00xus, по виду ошибки, вызывается метод несуществующего объекта.
...
Рейтинг: 0 / 0
07.10.2016, 11:22
    #39322569
Zelius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TBalloonHint.SetHintSize
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
07.10.2016, 11:33
    #39322584
Cobalt747
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TBalloonHint.SetHintSize
r00xus,

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

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

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

Изначально я хотел изменить размер облачка BalloonHint т.к. отступы у стандартного маловаты. Думал метод SetHintSize мне в этом поможет, но судя по его коду он как раз меняет размер CustomHintWindow...
...
Рейтинг: 0 / 0
07.10.2016, 14:38
    #39322830
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TBalloonHint.SetHintSize
Код: 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
10.10.2016, 08:52
    #39323574
r00xus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TBalloonHint.SetHintSize
HintParent я поправил. Но похоже метод SetHintSize не изменяет размер подсказки, а скорее изменяет размер окна TCustomHintWindow. Это не совсем то что мне нужно. Я хочу увеличить отступы у окна. Это можно как-то сделать?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
26.02.2018, 21:07
    #39607539
mxustin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TBalloonHint.SetHintSize
Я даже специально зарегистрировался на форуме, чтобы ответить на это сообщение. Понятно, что за давностью лет топикстартеру уже ничего не нужно давно, но, может быть, кто-то будет ломать голову над этим, как ломал ее я. Решение для изменений размеров окошка BalloonHint у меня простое и незатейливое.

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

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

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

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

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



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


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