2016-09-02 11 views
5

Я использую Delphi Berlin в Windows 10. Мне нужно использовать tOpenDialog для tForm на tStringGrid.Unintended tStringGrid.OnFixedCellClick стрельба позади tOpenDialog

Когда я дважды щелкаю файл, который перекрывает фиксированный столбец или строку в открытом диалоговом окне, событие onFixedCellClick запускается автоматически сразу после исчезновения открытого диалога. На следующем изображении файл находится в том же положении фиксированной строки, который является первой строкой.

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; 

В большинстве случаев я могу справиться с этим, перемещая диалоговое окно или щелкнув файл один раз и нажав кнопку Открыть, но я не могу гарантировать, что другие люди, которые будут использовать это будет делать.

В чем причина и как я могу решить эту проблему?

ответ

5

Я считаю, что это проблема в том, как TCustomGrid запускает его OnFixedCellClick событие на сообщения мыши вверх (в перекрываться MouseUp метод) без проверки, есть ли соответствующая мышь-вниз сообщение (FHotTrackCell.Pressed). Быстрое исправление (если вы можете копировать и изменять 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 (Seattle) (без обновления 1) имеет такое же поведение. – Zam

 Смежные вопросы

  • Нет связанных вопросов^_^