Если подсказка длинная, то удобно ее разместить в две или более строк.
Code: |
procedure TForm1.FormCreate(Sender: TObject); begin Button1.Hint := 'Only one string'; Button2.Hint := 'There will be' + #13#10 + 'two strings'; Form1.ShowHint := true; end; |
Автор советов: Даниил Карапетян
Автор справки: Алексей Денисов
Необходимо создать соответствующую компоненту которая показывает "быструю подсказку" (Hints) с более чем одной
строкой. Компонента наследуется от TComponent и называется TMHint. Hint-текст можно задавать следующим образом:
"Строка 1@Строка 2@Строка 3". Символ '@' используется как разделитель строк. Если Вам нравится другой символ -
измените свойство Separator. Свойство Active указывает на активность (TRUE) или неактивность (FALSE)
"многострочности"
Code: |
unit MHint; {©Drkb }
interface
uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs;
type TMHint = class(TComponent) private ScreenSize: Integer; FActive: Boolean; FSeparator: Char; FOnShowHint: TShowHintEvent; protected procedure SetActive(Value: Boolean); procedure SetSeparator(Value: char); procedure NewHintInfo(var HintStr: string; var CanShow: Boolean; var HintInfo: THintInfo); public constructor Create(AOwner: TComponent); override; published property Active: Boolean read FActive write SetActive; property Separator: Char read FSeparator write SetSeparator; end;
procedure Register;
implementation
constructor TMHint.Create(AOwner: TComponent);
begin inherited Create(AOwner); FActive := True; FSeparator := '@'; Application.OnShowHint := NewHintInfo; ScreenSize := GetSystemMetrics(SM_CYSCREEN); end;
procedure TMHint.SetActive(Value: Boolean);
begin FActive := Value; end;
procedure TMHint.SetSeparator(Value: Char);
begin FSeparator := Value; end;
procedure TMHint.NewHintInfo(var HintStr: string; var CanShow: Boolean; var HintInfo: THintInfo);
var I: Byte;
begin if FActive then begin I := Pos(FSeparator, HintStr); while I > 0 do begin HintStr[I] := #13; I := Pos(FSeparator, HintStr); end; if HintInfo.HintPos.Y+10 > ScreenSize then HintInfo.HintPos.Y := ScreenSize-11; end; end;
procedure Register;
begin RegisterComponents('MyComponents', [TMHint]); end;
end. |
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!