| Цитата(Poseidon @ 5.6.2013, 18:03) | | А что конкретно работает не корректно? У меня вроди нормально обрабатывается. Может вся загвоздка в том, что в S, а что реально в Edit.Text? |
Вот пример:
| Код | unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Edit1: TEdit; procedure Edit1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Edit1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if Canvas.TextWidth(Edit1.Text) > Edit1.ClientWidth then Edit1.Hint := 'Текст не влазит' else Edit1.Hint := 'Текст влазит'; end;
procedure TForm1.FormCreate(Sender: TObject); begin Edit1.Text := 'yyyyyyyyyyyyyyyyyyyyyytr'; Edit1.ShowHint := True; end;
end.
|
При наведении выводится, что текст влазит, хотя реально нет (Длина Edit'а - 121 pix). |