掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Editコンポーネントを右寄せで表示させるには? (ID:9210)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
途中からしゃしゃりでます. ヨウコさんへ, 既に他の方からも同様の意見がありますが,機能の変更や追加動作のコンポーネント が必要な場合,元となるコンポーネントから変更,追加したコンポーネント を作成する方法は便利です.これが比較的簡単に出来るのがDelphiの特徴でもあります. コンポーネントにすれば,再利用が簡単です.たとえコンポーネントの作成や インストールが初めてであっても,いつかは必要になることがあります. 是非この際,挑戦して見て下さい. にゃ〜さんのコードに,数値専用かどうかを設定するプロパティを追加しました. (右寄せということは,多分数値入力だと思って) (1) [ファイル][新規作成]でユニットを作成します. (2) そのユニットのコードを全て削除します. (3) 下のコードをコピーして,そのユニットに貼付けます. (4) このユニットをplEdit.pasという名前で保存します. (5) plEdit.pasをコンポーネントとしてインストールします. 参考URL http://homepage2.nifty.com/Mr_XRAY/Delphi/CompInstall.htm (6) コンポーネントパレットに[plXRAY]というのが追加されて,そこに plEditというコンポーネントが見えるようになります. (7) 新規作成FormにこのplEditを配置して[F9]で実行してみて下さい. では,ご検討をお祈り致します. {$WARNINGS OFF} //==================================================================== // 右寄せ入力専用Editコンポーネント // // 右寄せから想像するのは数値専用(?) // というわけで数値専用入力とするかの論理型プロパティNumOnlyも用意 // // 2004.08.23 Ver1.0 // HGH03072@nifyt.ne.jp // http://homepage2.nifty.com/Mr_XRAY/ //==================================================================== unit plEdit; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TplEdit = class(TEdit) private FAlignment : TAlignment; FNumOnly : Boolean; procedure SetAlignment(const Value: TAlignment); procedure SetNumOnly(const Value: Boolean); 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 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なら数値入力専用 //==================================================================== procedure TplEdit.SetNumOnly(const Value: Boolean); begin if FNumOnly<>Value then begin FNumOnly:=Value; //オブジェクト再生成 RecreateWnd; end; end; end.
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.