掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
SpinEditのUpClickとDownClick (ID:45521)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>(b)のやり方は考え付きましたが、敷居が高そうで、トライしていません。 見ての通り簡単ですから、ジャンジャンやっちゃってください。 UpClickとDownClickは「overrideしてくれ」と言ってるように思えますので。 >”SpinEdit”って学習用でサンプルなのですか。 私はそう思ってます。少なくともオマケ扱いなのは確かです。(Delphi6 Personalではヘルプに載ってないので。) 正確なところはDelphiの歴史を知る方でないと分からないかと。 >変更前のValueを保持しておく手法もありと言う事ですが、 どうにもそれしか手がない場合は、ですかねー。出来る限り真っ当な方法を採用したいです。 >TSinEditを継承してproperty:last_Valueなどを追加した新たな子を定義すればもっともらしいコーディングになるのでしょうね。 ですです。(でも今回はLastValueという苦しい手を使う必要は無いですね。) private FLastValue: String; public property LastValue: String read FLastValue; ただし、クラスの内部的に使うだけならpropertyを用意せず、FLastValueだけでいいです。 ※クラス内の変数は「フィールド」と言います。ですから頭文字Fを付けるのが作法(命名規則)とされております。 >新たな継承クラスの名称が継承元と同じ”TSpinEdit”となっています。継承元と同じ名称でも構わないのですね。 えーと、やり方によっては大丈夫です。 TSpinEdit = class(TSpinEdit) のようにすると、 [エラー] Unit2.pas(12): 'TSpinEdit' 型の宣言が完了していません のようなエラーが出ます。 これを防ぐためにユニット名Spinをくっつけてます。 私もこの継承方法を初めて見たときは「なんじゃこりゃ!?」と思いましたが、これは常套手段になってますね。 その目的は「継承元と同じクラス名にするため」もそうなのですが、すでにIDEで配置してあるコンポーネントを、 そのままの状態で機能アップさせることが出来るのがポイントです。 普通は TSpinEditEx = class(TSpinEdit) のようにするので、このTSpinEditExは動的に生成するか、または ちゃんとしたコンポーネントに仕立ててコンポーネントパレットから貼り付けなくてはなりません。 >override指定による既存のprocedureを上書きする様な定義が出来ると解釈しています。 そうですね、上書きされます。ただしoverrideは単純に「上書き」という一言では表せません。 なお、おまけとして紹介したSpinExユニットは、一部変更しもう少し手を加えると、カスタムコンポーネント としてコンポーネントパレットに登録することが出来ます。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.