2016-09-02 12 views
5

Używam Delphi Berlin na Windows 10. Muszę użyć tOpenDialog na tForm na tStringGrid.Niezamierzone tStringGrid.OnFixedCellClick wypalanie za tOpenDialog

Po dwukrotnym kliknięciu pliku, który pokrywa się ze stałą kolumną lub wierszem w otwartym oknie dialogowym, zdarzenie FixedCellClick jest uruchamiane automatycznie zaraz po zniknięciu otwartego okna dialogowego. Na poniższym obrazie plik znajduje się w tej samej pozycji, co stały wiersz, który jest pierwszym wierszem.

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; 

W większości przypadków mogę sobie z tym poradzić, przesuwając okno dialogowe lub kliknięcie pliku raz i klikając przycisk otwierania, ale nie mogę zagwarantować, że inne osoby, które będą korzystać z tego zrobi to.

Jaki jest powód i jak mogę rozwiązać ten problem?

Odpowiedz

5

Wierzę, że jest to problem występujący w jaki TCustomGrid wyzwala swój OnFixedCellClick zdarzenia na wiadomości myszy-up (w jego nadpisane MouseUp metody) bez sprawdzania, czy nie było wiadomość mysz w dół odpowiednia (FHotTrackCell.Pressed). Quick Fix (jeśli można kopiować i modyfikować Vcl.Grids): na linii 4564 w Berlinie (w TCustomGrid.MouseUp metody dodać kolejny warunek, aby sprawdzić, co prowadzi do wywołania FixedCellClick):

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

Innymi słowy, nie zadzwoń pod numer FixedCellClick, jeśli kursor myszy pojawi się bez wcześniejszej odpowiadającej mu myszy.

+4

To naprawdę potrzebuje QP zgłosić –

+2

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

+1

Delphi DX10 (Seattle) (bez aktualizacji 1) ma takie samo zachowanie. – Zam

Powiązane problemy