2016-09-02 8 views
5

私はWindows 10でDelphi Berlinを使用しています.tFormGridをベースにしたtFormでtOpenDialogを使用する必要があります。意図していないtStringGrid.OnFixedCellClick tOpenDialogの背後で発砲

開いているダイアログの固定列または行に重なっているファイルをダブルクリックすると、開いたダイアログが消えた直後に自動的にFixedCellClickイベントが発生します。次のイメージでは、ファイルは最初の行である固定行と同じ位置にあります。多くの場合

enter image description here

type 
    TForm1 = class(TForm) 
    StringGrid1: TStringGrid; 
    OpenDialog1: TOpenDialog; 
    procedure FormClick(Sender: TObject); 
    procedure StringGrid1FixedCellClick(Sender: TObject; ACol, ARow: Integer); 
    procedure FormCreate(Sender: TObject); 
    end; 

procedure TForm1.FormCreate(Sender: TObject); 
begin 
    StringGrid1.Options := StringGrid1.Options + [goFixedColClick, goFixedRowClick]; 
end; 

procedure TForm1.FormClick(Sender: TObject); 
begin 
    OpenDialog1.Execute; 
end; 

procedure TForm1.StringGrid1FixedCellClick(Sender: TObject; ACol, ARow: Integer); 
begin 
    Caption := ''; 
end; 

私は、ダイアログウィンドウを移動したり、ファイルを1回クリックし、[開く]ボタンをクリックすることでこれを扱うことができますが、私はこれを使用する他の人がそれを行うだろうことを保証することはできません。

どのような理由がありますか、どうすればこの問題を解決できますか?

答えて

5

私は、これは、対応するマウスダウンメッセージ(FHotTrackCell.Pressed)があった場合TCustomGridはチェックせず(そのオーバーライドMouseUp方法で)マウスアップメッセージ上のOnFixedCellClickイベントをトリガーする方法に問題があると考えています。クイックフィックス(コピーとVcl.Gridsを変更することができる場合):ライン4564上のベルリン(TCustomGrid.MouseUp方法でFixedCellClickへの呼び出しにつながる、チェックするために、別の条件を追加):つまり

if ... and FHotTrackCell.Pressed then 
    FixedCellClick(Cell.X, Cell.Y); 

、ありません対応するマウスダウンなしでマウスアップが発生した場合はFixedCellClickに電話してください。

+4

これは本当にQPレポートが必要です –

+2

@DavidHeffernan [RSP-15758](https://quality.embarcadero.com/browse/RSP-15758) –

+1

Delphi DX10(シアトル)(アップデート1なし)の動作は同じです。 – Zam

関連する問題