掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Style = csDropDownListのComboBoxをクリックしたときに、アイテムリストを表示させないようにするには? (ID:19755)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
開発環境は、Delphi6 Personal,Windows2000です。 TComboBoxから継承して、マウスでドラッグするとマウスに合わせて移動するコンボボックスTMyCmbBoxを作っています。 Web上の情報を頼りに以下のようにしてみました。 〜(略) type TMyCmbBox = class(TComboBox) private FBoolStartMove: Boolean; //移動開始フラグ FXbefore: integer; //移動前のクライアント座標 FYBefore: integer; //移動前のクライアント座標 protected procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; procedure MouseMove(Shift: TShiftState; X, Y: Integer); override; procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; published end; 〜(略)〜 procedure TMyCmbBox.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin //マウスキャプチャを解除 ReleaseCapture; //移動開始 FBoolStartMove := true; //移動前のクライアント座標を記録 FXbefore := X; FYbefore := Y; inherited; end; procedure TMyCmbBox.MouseMove(Shift: TShiftState; X, Y: Integer); begin if FBoolStartMove = true then begin //(X - FXbefore) : X方向の移動量 Self.Left := Self.Left + (X - FXbefore); Self.Top := Self.Top + (Y - FYbefore); end; inherited; end; procedure TMyCmbBox.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin //移動フラグ解除 FBoolStartMove := false; inherited; end; テストしてみると、ドロップボタンの部分をドラッグすると期待通りの動きを見せてもらえます。 ところが、StyleプロパティをcsDropDownListに変更すると、 コンボボックスをクリックしたあとに一度アイテムリストがドロップダウンされてしまいます。 これをクリックしたあとにアイテムリストを表示させないようにするにはどうすればいいのでしょうか? またはドラッグで移動するコンボボックスを作るには別の方向からアプローチするべきでしょうか? 解決策、アドバイスよろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.