掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Editコンポーネントを右寄せで表示させるには? (ID:9200)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>コンポーネントを作って実際に使えるようにするにはどしたらよいでしょうか? >さきほどのコードをコンポーネント作成のところに打てばいいのですか? jokさんのサンプルコードは自分のアプリのユニットファイルに書き込むだけで右寄せの「REdit」を使えるんで、コンポーネントではないんだにゃ〜 右寄せEditの数が1個〜数個くらいなら、そのサンプル通りにするのが簡単で良いにゃ〜 でも、もし大量に右寄せEditを使うのならコンポーネントとして登録した方が便利かにゃ〜 コンポ登録する場合でもコードはたったこれだけにゃ〜 下のコードを REdit.pasのファイル名でDelphiのLibフォルダに保存して「コンポーネントのインストール」をすれば、「Samples」パレットに右寄せの「REdit」が登録されるにゃ〜 unit REdit; interface uses Windows, Messages, SysUtils, Classes, Controls, StdCtrls; type TREdit = class(TEdit) protected procedure CreateParams(var Params: TCreateParams); override; end; procedure Register; implementation procedure Register; begin RegisterComponents('Samples', [TREdit]); end; procedure TREdit.CreateParams(var Params: TCreateParams); begin inherited; Params.Style := Params.Style or ES_RIGHT; end; end. //----------------------------------------- こちらは、ちょっと高度に Alignmentプロパティを追加して、左寄せ、中央寄せ、右寄せを自由に変更できる UAEditコンポの例だにゃ〜 unit UAEdit; interface uses Windows, Messages, SysUtils, Classes, Controls, StdCtrls; type TUAEdit = class(TEdit) protected procedure CreateParams(var Params: TCreateParams); override; private FAlignment: TAlignment; procedure SetAlignment(Value: TAlignment); published property Alignment: TAlignment read FAlignment write SetAlignment default taLeftJustify; end; procedure Register; implementation procedure Register; begin RegisterComponents('Samples', [TUAEdit]); end; procedure TUAEdit.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; Params.Style := Params.Style or Alignments[UseRightToLeftAlignment, FAlignment]; end; procedure TUAEdit.SetAlignment(Value: TAlignment); begin if FAlignment <> Value then begin FAlignment := Value; RecreateWnd; end; end; end.
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.