2016-09-02 14 views
5

Windows 10'da Delphi Berlin kullanıyorum. TStringGrid tabanlı bir tForm'da tOpenDialog kullanmam gerekiyor. Açık bir iletişim kutusundaki sabit bir sütun veya satırla çakışan bir dosyayı çift tıklattığımda, açık iletişim kutusundaki hatalardan hemen sonra FixedCellClick olayı otomatik olarak patlar. Aşağıdaki resimde dosya, ilk satır olan sabit satırın aynı konumunda.İstem dışı tStringGrid.OnFixedCellTıklama işlemi geri çekiliyor tOpenDialog

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; 

Çoğu durumda ben iletişim penceresi hareketli ya sonra dosyayı tıklatıp açık düğmesini tıklayarak bu işleyebilir ama bunu yapacağını bu kullanacağını başka insanlara garanti edemez.

Nedeni nedir ve bu sorunu nasıl çözebilirim?

cevap

5

Bu TCustomGrid karşılık gelen fare aşağı mesajı (FHotTrackCell.Pressed) olup olmadığını kontrol etmeden (onun overriden MouseUp yönteminde), bir fare-up mesajı üzerindeki OnFixedCellClick olayı tetikler nasıl bir sorun olduğuna inanıyoruz. Hızlı bir düzeltme (kopyalayıp Vcl.Grids değiştirebilirsiniz varsa): hat 4564 tarihinde Berlin'de (TCustomGrid.MouseUp yönteminde FixedCellClick çağrısına yol kontrol etmek başka bir koşul ekleyin): Diğer bir deyişle

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

, yapma Bir fare-up önceden karşılık gelen fare aşağı olmadan gelirse, FixedCellClick arayın.

+4

Bu gerçekten bir QP –

+2

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

+1

Delphi DX10 (Seattle) (güncelleme 1 olmadan) aynı davranışı vardır. – Zam

İlgili konular