TEdit не поддерживает выравниваение текста по центру и по правой
стороне - лучше использовать компонент TMemo. Вам понадобится запретить
пользователю нажимать Enter, Ctrl-Enter и всевозможные комбинации клавиш со
стрелками, чтобы избежать появления нескольких сторк в Memo. Этого можно
добиться и просматривая содержимое текста в TMemo в поисках кода возврата
каретки (13) и перевода строки(10) на событиях TMemo Change и KeyPress.
Можно также заменять код возврата каретки на пробел - для того чтобы
позволять вставку из буфера обмена многострочного текста в виде одной
строки.
Пример:
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Alignment := taRightJustify;
Memo1.MaxLength := 24;
Memo1.WantReturns := false;
Memo1.WordWrap := false;
end;
procedure MultiLineMemoToSingleLine(Memo : TMemo);
var
t : string;
begin
t := Memo.Text;
if Pos(#13, t) > 0 then
begin
while Pos(#13, t) > 0 do
delete(t, Pos(#13, t), 1);
while Pos(#10, t) > 0 do
delete(t, Pos(#10, t), 1);
Memo.Text := t;
end;
end;
procedure TForm1.Memo1Change(Sender: TObject);
begin
MultiLineMemoToSingleLine(Memo1);
end;
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
MultiLineMemoToSingleLine(Memo1);
end;
Комментарий
от "Сэр Кот-Оборотень" (kotwlf@newmail.ru)
Вот так это можно
сделать...
unit QEditAlignment;
interface
uses Windows, Messages, SysUtils, Classes, Controls, StdCtrls;
type
TEdit_Alignment = class(TEdit)
private
FAlignment: TAlignment;
protected
procedure CreateParams(var Params: TCreateParams); override;
procedure SetAlignment(Value: TAlignment);
public
function GetControlsAlignment: TAlignment; override;
constructor Create (AOwner: TComponent); override;
published
property Alignment: TAlignment read FAlignment write SetAlignment default taLeftJustify;
end;
procedure Register;
implementation
constructor TEdit_Alignment.Create (AOwner: TComponent);
Begin
inherited Create (AOwner);
Alignment:=FAlignment;
End;
procedure TEdit_Alignment.CreateParams(var Params: TCreateParams);
const
Alignments: array[Boolean, TAlignment] of DWORD =
((ES_LEFT, ES_RIGHT, ES_CENTER),(ES_RIGHT, ES_LEFT, ES_CENTER));
begin
inherited CreateParams(Params);
with Params do
begin
Style := Style or Alignments[UseRightToLeftAlignment, FAlignment];
end;
end;
function TEdit_Alignment.GetControlsAlignment: TAlignment;
begin
Result := FAlignment;
end;
procedure TEdit_Alignment.SetAlignment(Value: TAlignment);
begin
if FAlignment <> Value then
begin
FAlignment := Value;
RecreateWnd;
end;
end;
procedure Register;
begin
RegisterComponents('Standard', [TEdit_Alignment]);
end;
end.
|
Copyright ©
"Мастера DELPHI" E-mail:
delphi@mastak.com
http://www.delphimaster.ru |
Источник получения информации: http://www.delphimaster.ru
|