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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2009, 09:31   #1
nusik
Форумчанин
 
Регистрация: 13.04.2009
Сообщений: 117
По умолчанию работа с Hint-ами

Здравствуйте формумчане!
Помогите плизз с hint-ами разобраться.
Задача стоит такая:
При навигации по richedit-у (up,down,left,right...) выводить hint рядом с позицией каретки
позицию каретки вычислем так:
Код:
 var pt:Tpoint;
....
  GetCaretPos(pt);
  pt:= ClientToScreen(pt);
получаем экранные координаты.
То есть я говорю точку в пикселях, и какой собственно текст, и выводиться соот-но hint.
Заранее спасибо.
nusik вне форума Ответить с цитированием
Старый 14.05.2009, 10:06   #2
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Может примерно так?
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    RzToolbar1: TRzToolbar;
    RichEdit1: TRichEdit;
    Label1: TLabel;
    Label2: TLabel;
    procedure FormCreate(Sender: TObject);
  private
    procedure MyShowHint(var HintStr: String; var CanShow: Boolean; var HintInfo: THintInfo);
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.MyShowHint(var HintStr: String; var CanShow: Boolean;
  var HintInfo: THintInfo);
var
  p: TPoint;
begin
  if not (HintInfo.HintControl is TRichEdit) then Exit;
  HintInfo.HintColor := clRed;
  GetCaretPos(p);
  p := RichEdit1.ClientToScreen(p);
  HintInfo.HintPos := p;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnShowHint := MyShowHint;
end;

end.
Баламут вне форума Ответить с цитированием
Старый 14.05.2009, 11:23   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Предлагаю быть проще:
Код:
procedure TForm1.RichEdit1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
Application.ActivateHint(Mouse.CursorPos);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 WITH RichEdit1 DO BEGIN
  Hint:='sfsdfsdfsd';
  ShowHint:=true;
 END
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.05.2009, 11:27   #4
nusik
Форумчанин
 
Регистрация: 13.04.2009
Сообщений: 117
По умолчанию

Большое спасибо!
nusik вне форума Ответить с цитированием
Старый 31.05.2009, 16:20   #5
sysyman
Пользователь Подтвердите свой е-майл
 
Аватар для sysyman
 
Регистрация: 04.07.2007
Сообщений: 75
По умолчанию

Ну раз здесь разговор зашел о Hintax, может кто подскажет как показать подсказку при наведении курсора на форму ? Сложность в том , что подсказка должна появляться даже если форма не в фокусе! Навроде как сделано в программе download master. У меня в программе есть такое же небольшое окошко. окошко без обрамления я сделал, изменение прозрачности работает, подсказки тоже работают, но только когда окно в фокусе(то есть если нажать на него).
sysyman вне форума Ответить с цитированием
Старый 01.06.2009, 10:34   #6
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

В обработчике onMouseEnter нужной формы напиши что-то вроде Нужная_форма.SetFocus
Баламут вне форума Ответить с цитированием
Старый 01.06.2009, 11:11   #7
sysyman
Пользователь Подтвердите свой е-майл
 
Аватар для sysyman
 
Регистрация: 04.07.2007
Сообщений: 75
По умолчанию

Спасибо! Только вместо обработчика onMouseEnter я использовал onMouseМоve. onMouseEnter я что то не нашел в Delphi 7.
sysyman вне форума Ответить с цитированием
Старый 01.06.2009, 11:26   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
onMouseEnter я что то не нашел в Delphi 7.
Его легко описать:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
  procedure w(var m:TMessage); message CM_MOUSEENTER;//WM_MOUSEMOVE;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.w(var m: TMessage);
begin
 SetFocus;
 Application.HintPause:=0;
 ShowHint:=true;
 Hint:='12122';
 Application.ActivateHint(Mouse.CursorPos);
end;

end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Верска div-ами (не получается) Ururu HTML и CSS 1 06.04.2009 19:46
Траблы с tRadioButton-ами Altera Компоненты Delphi 2 19.12.2008 08:50
Свой hint Altera Общие вопросы Delphi 3 14.05.2008 15:01
Поскажите как отфильтровать данные в выбраном диаппазоне DateTimePicker-ами: Denzel БД в Delphi 1 26.01.2007 16:31