|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Подсказка при наведении в Label
Привет, подскажите как сделать, чтобы при наведение на кнопку или checkbox появлялась подсказка в определенном месте в label(или по другому). Кнопок и checkbox может быть много, а подсказка всегда в одном месте!
|
#2
|
||||
|
||||
В событии OnMouseEnter нужного контрола пишешь:
Код:
Label1.Caption:='Подсказка'; |
#3
|
|||
|
|||
Не работает(((
|
#4
|
|||
|
|||
Нужно
Код:
onMouseMove |
#5
|
|||
|
|||
Подсказка появляется, но не исчезает!
А если checkbox ов много, для каждого создавать onMouseMove? |
#6
|
|||
|
|||
Ну так что, в чем дело, подскажите?
|
#7
|
||||
|
||||
Цитата:
Цитата:
Работает. П.С. А не проще включить ShowHint и для каждого контрола нужную подсказку написать? |
#8
|
|||
|
|||
OnMouseEnter нет в списке, нужно что-то ещё подключать?
|
#9
|
||||
|
||||
Обычно делал так:
Код:
... private { Private declarations } procedure ShowHint(Sender: TObject); procedure OnShowHint(var HintStr: string; var CanShow: Boolean; var HintInfo: THintInfo); procedure AppIdle(Sender: TObject; var Done: Boolean); ... end; function FindStatusBar(var SB : TStatusBar) : Boolean; begin // ищем наш StatusBar на активной форме SB := TStatusBar(Screen.ActiveForm.FindComponent('StatusBar')); // если не найден -- ищем на основной форме if not Assigned(SB) then SB := TStatusBar(Application.MainForm.FindComponent('StatusBar')); Result := SB <> NIL; end; procedure TMainForm.ShowHint(Sender: TObject); var SB : TStatusBar; begin // если что-то обнаружено -- рисуем на нем наш текст if FindStatusBar(SB) and Assigned(SB) then SB.SimpleText := Application.Hint; end; // меняем цвет и ширину стандартной подсказки. procedure TMainForm.OnShowHint(var HintStr: string; var CanShow: Boolean; var HintInfo: THintInfo); begin with HintInfo do begin HintMaxWidth := 250; HintColor := clAqua; end; end; procedure TMainForm.AppIdle(Sender: TObject; var Done: Boolean); var S : String; SB : TStatusBar; begin S := Screen.ActiveControl.Hint; // если что-то обнаружено -- рисуем на нем наш текст if (not Screen.ActiveControl.ShowHint) and (FindStatusBar(SB)) and (Assigned(SB)) then begin if S <> '' then SB.SimpleText := S else SB.SimpleText := ''; end; end; procedure TMainForm.FormCreate(Sender: TObject); begin ... Application.OnHint := ShowHint; Application.OnShowHint := OnShowHint; // Установка обработчика Application.OnIdle := AppIdle; ... end; Код:
Подсказка Подсказка|Очень длинная подсказка. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#10
|
||||
|
||||
Код:
type TForm1 = class(TForm) Button1: TButton; CheckBox1: TCheckBox; ApplicationEvents1: TApplicationEvents; Label1: TLabel; Edit1: TEdit; procedure ApplicationEvents1Hint(Sender: TObject); ... procedure TForm1.ApplicationEvents1Hint(Sender: TObject); begin Label1.Caption:=Application.Hint; end; http://zalil.ru/32374010 Пишу программы за еду. __________________ |
#11
|
|||
|
|||
[quote=NumLock]
Код:
type TForm1 = class(TForm) Button1: TButton; CheckBox1: TCheckBox; ApplicationEvents1: TApplicationEvents; Label1: TLabel; Edit1: TEdit; procedure ApplicationEvents1Hint(Sender: TObject); ... procedure TForm1.ApplicationEvents1Hint(Sender: TObject); begin Label1.Caption:=Application.Hint; end; Спасибо, сделал так! |