線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1964
推到 Plurk!
推到 Facebook!

請問一下關於MaskEdit的問題?

尚未結案
kenny_yeh
一般會員


發表:8
回覆:8
積分:3
註冊:2008-03-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-06-15 16:15:39 IP:118.168.xxx.xxx 訂閱

請問一下各位大大,

1.MaskEdit為何設定了EditMask時,且已經增加了Alignment屬性,為何不能像沒有設定EditMask時可以讓游標放在右邊然後使用者一直輸
入資料游標還是維持在同一個位置上且資料由右至左一直排下去?

2.MaskEdit使用EditMask時如設定!AAAAAAAAAAAAAAAAAAAA;1; 共20位數,但是否可以允許使用者只要輸入20位數以內都可以接受?

以下附上我自己修改的元件AlignMaskEdit的程式碼:

[code delphi]
unit AlignMaskEdit;

interface

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

type

TAlign = (eaLeft, eaCenter, eaRight);

TAlignMaskEdit = class(TMaskEdit)
private
{ Private-Deklarationen }
FAlign: TAlign;
procedure SetAlign(const Value: TAlign);
protected
{ Protected-Deklarationen }
procedure CreateParams(var Params: TCreateParams); override;
public
{ Public-Deklarationen }
constructor Create(AOwner: TComponent); override;
published
{ Published-Deklarationen }
property Alignment: TAlign read FAlign write SetAlign default eaLeft;
end;

procedure Register;

implementation

constructor TAlignMaskEdit.Create(Aowner: TComponent);
begin
inherited Create(AOwner);
FAlign := eaRight;
end;

procedure TAlignMaskEdit.SetAlign(const Value: TAlign);
begin
if FAlign <> Value then
begin
FAlign := Value;
RecreateWnd;
end;
end;

procedure TAlignMaskEdit.CreateParams(var Params: TCreateParams);
begin
inherited;
case FAlign of
eaLeft: Params.Style := Params.Style or ES_LEFT;
eaCenter: Params.Style := Params.Style or ES_CENTER;
eaRight: Params.Style := Params.Style or ES_RIGHT;
end;
end;

procedure Register;
begin
RegisterComponents('System', [TAlignMaskEdit]);
end;

end.
[/code]

煩請各位大大不吝賜教!!
謝謝!!



------
對權威愚忠就是真理最大的敵人!!
編輯記錄
danny 重新編輯於 2009-06-18 10:02:56, 註解 無‧
danny 重新編輯於 2009-06-18 10:03:46, 註解 無‧
danny
版主


發表:100
回覆:522
積分:595
註冊:2002-03-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-06-18 10:06:30 IP:122.254.xxx.xxx 訂閱
你的問題很簡單, 看 Help 可以知道 EditMask 中的 A 是一定要輸入字, 但 a 是允許不輸入字
所以將 !AAAAAAAAAAAAAAAAAAAA;1; 改為 !aaaaaaaaaaaaaaaaaaaa;1; 即可

===================引 用 kenny_yeh 文 章===================

請問一下各位大大,

1.MaskEdit為何設定了EditMask時,且已經增加了Alignment屬性,為何不能像沒有設定EditMask時可以讓游標放在右邊然後使用者一直輸
入資料游標還是維持在同一個位置上且資料由右至左一直排下去?

2.MaskEdit使用EditMask時如設定!AAAAAAAAAAAAAAAAAAAA;1; 共20位數,但是否可以允許使用者只要輸入20位數以內都可以接受?

以下附上我自己修改的元件AlignMaskEdit的程式碼:

[code delphi]
unit AlignMaskEdit;

interface

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

type

TAlign = (eaLeft, eaCenter, eaRight);

TAlignMaskEdit = class(TMaskEdit)
private
{ Private-Deklarationen }
FAlign: TAlign;
procedure SetAlign(const Value: TAlign);
protected
{ Protected-Deklarationen }
procedure CreateParams(var Params: TCreateParams); override;
public
{ Public-Deklarationen }
constructor Create(AOwner: TComponent); override;
published
{ Published-Deklarationen }
property Alignment: TAlign read FAlign write SetAlign default eaLeft;
end;

procedure Register;

implementation

constructor TAlignMaskEdit.Create(Aowner: TComponent);
begin
inherited Create(AOwner);
FAlign := eaRight;
end;

procedure TAlignMaskEdit.SetAlign(const Value: TAlign);
begin
if FAlign <> Value then
begin
FAlign := Value;
RecreateWnd;
end;
end;

procedure TAlignMaskEdit.CreateParams(var Params: TCreateParams);
begin
inherited;
case FAlign of
eaLeft: Params.Style := Params.Style or ES_LEFT;
eaCenter: Params.Style := Params.Style or ES_CENTER;
eaRight: Params.Style := Params.Style or ES_RIGHT;
end;
end;

procedure Register;
begin
RegisterComponents('System', [TAlignMaskEdit]);
end;

end.
[/code]

煩請各位大大不吝賜教!!
謝謝!!



------
將問題盡快結案也是一種禮貌!
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-06-24 22:40:05 IP:61.67.xxx.xxx 未訂閱
針對第1項, 完全看不懂WHAT YOU SAY!
針對第2項, 請先查HELP, MASK 'A" 的用法
系統時間:2024-03-28 20:38:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!