Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2014, 18:14   #1
Port 111
Пользователь
 
Регистрация: 12.01.2009
Сообщений: 34
Сообщение Hint (подсказку) На передний план

Здравствуйте. Столкнулся с такой проблемой... Есть форма, на форме ListView с ViewStyle=vsReport (таблица). И в этой таблице если строка полностью не помещается в столбец, то при наведении на эту строку выскакивает hint который показывает всю строку. Причем этот hint я нигде не включал, он срабатывает по умолчанию.
Но вот если я у формы выставляю свойство FormStyle=fsStayOnTop (на передний план), то этот hint отображается под формой... см. картинку Wink

Подскажите как вывести этот hint на передний план?

Заранее спасибо.
Изображения
Тип файла: jpg hint.jpg (41.6 Кб, 52 просмотров)
Port 111 вне форума Ответить с цитированием
Старый 09.04.2014, 00:50   #2
XE5
Заблокирован
 
Регистрация: 02.03.2014
Сообщений: 439
По умолчанию

Цитата:
Сообщение от Port 111 Посмотреть сообщение
Причем этот hint я нигде не включал, он срабатывает по умолчанию.
Этот Hint формирует сама Win, и ей глубоко по фиг, что там включено, или выключено. Решений у проблемы два.
1 - запретить Win показывать Hint.
Код:
uses CommCtrl; 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  ListView_SetExtendedListViewStyle(ListView1.Handle,
    ListView_GetExtendedListViewStyle(ListView1.Handle) and not LVS_EX_INFOTIP);
end;
2 - поставить хук.
Код:
function HintWindowWndProcHook (Code: Integer; wParam: WParam; lParam: LParam): LRESULT; stdcall;
var
  Buf : array [0..1000] of char;
  HookStruct : PCWPStruct;
  WindowPosStruct : PWindowPos;
begin
  HookStruct := Pointer (lParam);
  case HookStruct.message of
    WM_WINDOWPOSCHANGING :
      begin
        WindowPosStruct := PWindowPos (Pointer (HookStruct.lParam));
        GetClassName (WindowPosStruct.hwnd, @Buf, SizeOf (Buf));
        if SameText ('tooltips_class32', Buf) then begin
          SetWindowPos (WindowPosStruct.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE or SWP_NOSENDCHANGING or SWP_NOACTIVATE);
        end;
      end;
  end;
  Result := CallNextHookEx(varWndProcHookHandle, Code, wParam, lParam);
end;

initialization
  varWndProcHookHandle := SetWindowsHookEx(WH_CALLWNDPROC, HintWindowWndProcHook, 0, GetCurrentThreadId);
finalization
  UnhookWindowsHookEx (varWndProcHookHandle);
end.
XE5 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Форму на передний план! Altera Общие вопросы Delphi 14 28.05.2018 21:40
Формы - передний и задний план myosotis C++ Builder 4 18.05.2012 15:03
Поместить widget на передний план Lindemann66 Qt и кроссплатформенное программирование С/С++ 0 03.11.2011 17:42
Hint от ToolBar выводит на передний план Form1 Shouldercannon Общие вопросы Delphi 2 30.06.2010 18:09
форму на передний план Романнн Общие вопросы Delphi 2 12.12.2007 20:49