有高手在吗??? 谁是高手,请进!全部分数敬上!(300分)

  • 主题发起人 主题发起人 ZZHI
  • 开始时间 开始时间
Z

ZZHI

Unregistered / Unconfirmed
GUEST, unregistred user!
谁有具有类似Lable的Edit控件, 也就是说Edit控件要具有文字对齐(左中右)、
透明和Layout(上中下)的属性。
/*--------------------------------------------------------------------------
不太喜欢Delphi的Edit控件,但还没能学到那里,不能自己开发,只好求教于各位大侠了。
以前问过一次,但没几个人能回答。
(http://www.delphibbs.com/delphibbs/dispq.asp?lid=705960)
这次,只好把全部分拿去来,做做穷人,好逮要把问题解决,学Delphi也舒服一点。
--------------------------------------------------------------------------*/
 
>Edit控件要具有文字对齐(左中右)

你可以运用rxRiceEdit控件,很多的,去搜索一把.
 
要实现左、中、右对奇很简单,只要重载其CreateParams函数就可以了,设成只能输入
数字的也是这样。但要实现透明度的控制就比较麻烦了。你可以参考一下我做的这个控件,
如果有不满意的地方自己改改试试(例如在把Style设为stInteger时自动把Edit的文本清空)
unit EditEx;

interface

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

type
TEditStyle = (esAnything, esInteger);
TEditEx = class(TEdit)
private
FAlignment: TAlignment;
FStyle: TEditStyle;
procedure SetAlignment(Value: TAlignment);
procedure SetEditStyle(Value: TEditStyle);
procedure CMEnter(var Message: TCMGotFocus); message CM_ENTER;
procedure CMExit(Sender: TObject);
protected
procedure CreateParams(var Params: TCreateParams); override;
public
constructor Create(AOwner: TComponent); override;
published
property Alignment: TAlignment read FAlignment write SetAlignment;
property Style: TEditStyle read FStyle write SetEditStyle default esAnything;
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('Standard', [TEditEx]);
end;

procedure TEditEx.CMEnter(var Message: TCMGotFocus);
begin
Color := clInfoBk;
Font.Color := clNavy;
end;

procedure TEditEx.CMExit(Sender: TObject);
begin
Color := clWindow;
Font.Color := clWindowText;
end;

constructor TEditEx.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
OnExit := CMExit;
end;

procedure TEditEx.CreateParams(var Params: TCreateParams);
var PrevParams: TCreateParams;
begin
inherited CreateParams(Params);
PrevParams.Style := Params.Style;
case FAlignment of
taLeftJustify:
begin
Params.Style := PrevParams.Style;
Params.Style := Params.Style + ES_LEFT;
end;
taRightJustify:
begin
Params.Style := PrevParams.Style;
Params.Style := Params.Style + ES_RIGHT;
end;
taCenter:
begin
Params.Style := PrevParams.Style;
Params.Style := Params.Style + ES_CENTER;
end;
end;
PrevParams.Style := Params.Style;
if FStyle = esInteger then
begin
Params.Style := PrevParams.Style;
Params.Style := Params.Style + ES_NUMBER;
end;
end;

procedure TEditEx.SetAlignment(Value: TAlignment);
begin
if FAlignment<>Value then
begin
FAlignment := Value;
RecreateWnd;
end;
end;

procedure TEditEx.SetEditStyle(Value: TEditStyle);
begin
if FStyle<>Value then
begin
FStyle := Value;
RecreateWnd;
end;
end;

end.
 
Sachow:
控件很厉害,呵呵,不知是否可以推荐一些比较实用的控件下载地址。
以后可要向你多多请教。
 
我不经常用第三方控件,尤其是近大半年以来都不做MIS了,所以更是不了解行情了。^_^
我知道的下载网址别人大概都知道:
www.vclxx.org
www.torry.net
 
我也不经常用第三方控件,因为很多的有问题,比如delphi5到delphi6的问题(版本问题)
不过,有时实在没办法;
 
少用第三方控件吧,漏洞太多的时候堵都堵不住。

你可以试试Toolbar97自带的Edit97控件.
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部