Перейти к содержимому


Фотография
- - - - -

Delphi Всплывающая подсказка


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 Вадик666

Вадик666

    Новобранец

  • Пользователи
  • Pip
  • Репутация
    0
  • 3 сообщений
  • 2 тем

Отправлено 24 июня 2015 - 09:08

Всем привет сегодня я вам расскажу как сделать при наводе мышкой на компонент появляется сообщение. 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

 
Будем делать мы это на Delphi в моем случае Delphi 7. Для начала добавим в Uses Следующее, CommCtrl;
в var пишем   
hToolTip: HWND;
  ti:TToolInfo;
  buffer: array [0..255] of Char;
 
const
  TTS_BALLOON = $40;
  TTM_SETTITLE = (WM_USER + 32);
 
  procedure AddToolTip(hwnd: HWND; lpti: PToolInfo; IconType: Integer;
        Text, Title: PChar);
  procedure CreateToolTip(hwnd: HWND);
 
Получается так:
50x0e822L7u7N1K6.png
 
Далее пишем в любом месте ниже строчки {$R *.dfm}:
 
procedure AddToolTip(hwnd: HWND; lpti: PToolInfo; IconType: Integer;
        Text, Title: PChar);
var
  Item: THandle;
  Rect: TRect;
begin
  Item:= hwnd;
  if (Item <> 0) and (GetClientRect(Item, Rect)) then
  begin
    lpti.hwnd:= Item;
    lpti.Rect:= Rect;
    lpti.lpszText:= Text;
    SendMessage(hToolTip, TTM_ADDTOOL, 0, Integer(lpti));
    FillChar(buffer, SizeOf(buffer), #0);
    lstrcpy(buffer, Title);
    if (IconType > 3) or (IconType < 0) then
      IconType:= 0;
    SendMessage(hToolTip, TTM_SETTITLE, IconType, integer(@buffer));
    end;
  end;
 
и еще
 
procedure CreateToolTip(hwnd: HWND);
begin
  hToolTip:= CreateWindowEx(0, 'ToolTips_Class32', nil,
       TTS_ALWAYSTIP or TTS_BALLOON,
       integer(CW_USEDEFAULT),
       integer(CW_USEDEFAULT),
       integer(CW_USEDEFAULT),
       integer(CW_USEDEFAULT),
       hwnd, 0, hInstance, nil);
  if (hToolTip <> 0) then
  begin
    SetWindowPos(hToolTip, HWND_TOPMOST, 0, 0, 0, 0,
        SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE);
        ti.cbSize:= SizeOf(TToolInfo);
        ti.uFlags:= TTF_SUBCLASS;
        ti.hInst:=HInstance;
  end;
end;
 
 
И последнее:
FormCreate (Два раза по форме);
 
CreateToolTip(Form1.Handle);
AddtoolTip(Button1.Handle, @ti, 1, 'Нажми меня!', 'Информация');
 
Где Button1 Это наш компонент.
 
Всем удачи!

СКАЧАТЬ

Сообщение отредактировал dikoj: 24 июня 2015 - 19:36

  • 0

#2 Вадик666

Вадик666

    Новобранец

  • Пользователи
  • Pip
  • Репутация
    0
  • 3 сообщений
  • 2 тем

Отправлено 24 июня 2015 - 19:41

Забыл сказать для того чтобы получился такой же шарик, нужно добавить на форму компонент XPManifest в вкладке win32 ,  Иначе он будет в стиле Windows XP


  • 0

#3 dima dima

dima dima

    Генералиссимус

  • Пользователи
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • Репутация
    127
  • 187 сообщений
  • 12 тем

Отправлено 24 июня 2015 - 20:42

Знал что есть способ куда легче чем это мозготрепство, используем стандартные настройки дельфи:

1)ищем в objectinspector такие поля "hint" и "showhint"

2) в 1 поле пишем нашу подсказку во второе ставим на тру чтобы сообщение высвечивалось.


  • 0

786152.gif


#4 Вадик666

Вадик666

    Новобранец

  • Пользователи
  • Pip
  • Репутация
    0
  • 3 сообщений
  • 2 тем

Отправлено 24 июня 2015 - 20:52

Знал что есть способ куда легче чем это мозготрепство, используем стандартные настройки дельфи:

1)ищем в objectinspector такие поля "hint" и "showhint"

2) в 1 поле пишем нашу подсказку во второе ставим на тру чтобы сообщение высвечивалось.

Будет совсем другое. Вот прописал в Hint Текст

D04078Z2I9Y124L6.png


  • 0

#5 dima dima

dima dima

    Генералиссимус

  • Пользователи
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • Репутация
    127
  • 187 сообщений
  • 12 тем

Отправлено 24 июня 2015 - 21:10

 

Знал что есть способ куда легче чем это мозготрепство, используем стандартные настройки дельфи:

1)ищем в objectinspector такие поля "hint" и "showhint"

2) в 1 поле пишем нашу подсказку во второе ставим на тру чтобы сообщение высвечивалось.

Будет совсем другое. Вот прописал в Hint Текст

D04078Z2I9Y124L6.png

 

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


Сообщение отредактировал dima dima: 24 июня 2015 - 21:11

  • 0

786152.gif


#6 MByte

MByte

    Генералиссимус

  • Пользователи
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • Репутация
    572
  • 278 сообщений
  • 5 тем

Отправлено 25 июня 2015 - 20:15

На ХЕ XP Manifest не нужен)


  • 0

MonsterByte.gif





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных

Click to return to top of page in style!