掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TrackBarをMouseUpした時のイベント取得 (ID:41005)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>他の変数が変わるたびにPositionが変わってその度にイベントが発生する 変数が変わるときにTrackBarのPositionをセットしているということかな。 それならば計算処理をしてほしくないときにTrackBarのTagを1にセットしてOnChangeイベントの中でTagの値を見て処理を振り分けるという方法もありかと。 procedure TForm1.TrackBar1Change(Sender: TObject); begin if (BOOL(Hi(GetAsyncKeyState(VK_LBUTTON)))) or (TrackBar.Tag = 1) then begin TrackBar.Tag := 0; Exit; end; //計算+結果表示 end; >とありますがかなり難しい課題でしょうか? 難しくはないですが手間はかかります。 「コンポーネント」メニューの「コンポーネントの新規作成」を選択します。 出てきたダイアログの「上位クラス」で「TTrackBar [ComCtrls]」を選択します。 「クラス名」は「TMyTrackBar」とか「TMouseEventTrackBar」とかなんとか適当に。 「パレットページ名」はこのコンポーネントをインストールした後に表示されるパレットのページ名を選択しますが、後で「コンポーネント」メニューの「パレットの設定」で変更できるのでデフォルトの「Sample」のままで良いと思います。 「ユニットファイル名」はこの新規コンポーネントのソースファイルになります。 [OK]ボタンを押すとソースコードが表示されるので type TMouseEventTrackBar = class(TTrackBar) private { Private 宣言 } protected { Protected 宣言 } public { Public 宣言 } published { Published 宣言 } property OnMouseUp; end; というように必要なプロパティをpublished部に付け足して保存します。 MouseDownやMouseMoveのイベントも欲しければ同様にpublished部に付け足します。 「コンポーネント」メニューの「コンポーネントのインストール」を選択します。 出てきたダイアログに「既存のパッケージへ追加」と「新規パッケージに追加」のタブがありますが「新規パッケージに追加」の方が問題が起きたときに切り分けできて楽かなと思います。 「ユニットファイル名」には↑で保存したソースコードを指定します。 「パッケージファイル名」はコンポーネントのプロジェクトファイルのようなものです。 適当(あるいは適切)に名前をつけます。 [OK]ボタンを押すと「インストールするにはコンパイルしないとならない」とかなんとか言われるので言われるががままにします。 するとパレットのSampleタブの最後にトラックバーのアイコンが追加されているはずなのでそのトラックバーのアイコンをフォームに貼り付けてイベントの一覧にOnMouseUpがあれば成功、と。 ざっとこんな感じです。 あとつまみの部分以外を触って放した時にもOnMouseUpイベントは起きるのでその対策が必要ならつまみの部分のRectを取得しないといけないので手間がかかります。 その対策の必要がなければこのままでOKかと思います。 対策が必要なら以下を参考にどうぞ。 http://drang.s4.xrea.com/program/lib/myTrackBar.pas 思いつきの命名だったりするのでその辺は自分なりに変更するなどして下さい。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.