名前 題名 ▼ Mr.XRAYさん > ▼ Delphi_new_1さん > > > ただ、出来れば、アクセスのプロパティー指定で出来るような > > 「センターリング表示」などは無いのでしょうか? > > また、「左寄せ」や「右寄せ」も簡単には出来ないでしょうか? > > 簡単かどうかはわかりませんが,コードで行うよりも,コンポーネント > にしてしまった方がいいと思われます. > そのようなコンポは,他の方が作成したものがあります.Delphian World > にもあります.調べてみて下さい.以下は私がある掲示板で示したものです. > これに表示Formatのプロパティを追加すればなお充実しますね. > また,この掲示板にplEditの質問がありますので参考にして下さい. > http://mrxray.on.coocan.jp/bbs/DelphiBBS/plcyclamen.cgi?tree=r437 > > {$WARNINGS OFF} > //============================================================================= > // 右寄せ入力専用Editコンポーネント > // > // 右寄せから想像するのは数値専用(?) > // というわけで数値専用入力とするかの・#95;理型プロパティNumOnlyも用意 > // > // 2004.08.23 Ver1.0 > // HGH03072@nifyt.ne.jp > // http://mrxray.on.coocan.jp/ > //============================================================================= > unit plEdit; > > interface > > uses > Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, > StdCtrls,IMM; > > type > TplEdit = class(TEdit) > private > FAlignment : TAlignment; > FNumOnly : Boolean; > procedure SetAlignment(const Value: TAlignment); > procedure SetNumOnly(const Value: Boolean); > procedure WMIMEStartComp(var Message: TMessage); message WM_IME_STARTCOMPOSITION; > protected > procedure CreateParams(var params: TCreateParams); override; > public > constructor Create(AOwner: TComponent); override; > published > property Alignment : TAlignment read FAlignment write SetAlignment; > property NumOnly : Boolean read FNumOnly write SetNumOnly; > end; > > procedure Register; > > implementation > > uses DebugWndUnit; > > const > //Styleの設定用 > Alignments: array[TAlignment]of Word = (ES_LEFT, ES_RIGHT, ES_CENTER); > NumOnlies : array[Boolean]of Word = (0,ES_NUMBER); > > procedure Register; > begin > RegisterComponents('plXRAY', [TplEdit]); > end; > > { TplEdit } > > //============================================================================= > // Create処理.初期状態で数値入力専用とする > //============================================================================= > constructor TplEdit.Create(AOwner: TComponent); > begin > inherited Create(AOwner); > FNumOnly :=True; > FAlignment:=taRightJustify; > end; > //============================================================================= > // CreateParams処理 > //============================================================================= > procedure TplEdit.CreateParams(var params: TCreateParams); > begin > inherited CreateParams(Params); > Params.Style:=Params.Style or Alignments[FAlignment] or NumOnlies[FNumonly]; > end; > //============================================================================= > // Alignmentプロパティ設定 > // 左,右,中央寄せ入力 > //============================================================================= > procedure TplEdit.SetAlignment(const Value: TAlignment); > begin > if FAlignment<>Value then begin > FAlignment:=Value; > //オブジェクト再生成 > RecreateWnd; > end; > end; > //============================================================================= > // NumOnlyプロパティ設定 > // Trueなら数値入力専用 > // かな漢字変換もONにならないようにしている > //============================================================================= > procedure TplEdit.SetNumOnly(const Value: Boolean); > begin > if FNumOnly<>Value then begin > FNumOnly:=Value; > //オブジェクト再生成 > RecreateWnd; > end; > end; > //============================================================================= > // TControlのprivateメソッド > // 継承関係は以下の通りなので,このコンポ内であれば直接使用可能 > // TplEdit-=>TEdit-->TCustomEdit-->TWinControl-->TControl > // WM_IME_STARTCOMPOSITIONは,変換文字列が生成される前にアプリケーションに送ら > // れるメッセージ > // > // IMEを切換えてテストしようと思ったら,WindowsXPでの方法が中々解らなくてえら > // い苦労.[コントロールパネル][地域と言語のオプション][言語][詳細]でした. > // Windows2000ではキーボード(こちらのが変か?) > //============================================================================= > procedure TplEdit.WMIMEStartComp(var Message: TMessage); > var > H : HIMC; > CForm : TCompositionForm; > P : TPoint; > begin > H:=ImmGetContext(Handle); > GetCaretPos(P); > > with CForm do begin > dwStyle := CFS_POINT; > ptCurrentPos:= P; > end; > ImmSetCompositionWindow(parent.Handle,Addr(CForm)); > ImmReleaseContext(Handle,H); > end; > > end. GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link