2016-07-15 31 views
1

我運行此查詢:cxgrid:ApplyBestFit催人淚下

procedure TForm1.cxButton1Click(Sender: TObject); 
begin 
cxGrid1DBTableView1.ClearItems; 
DataModule2.ACRQuery1.Close; 
DataModule2.ACRQuery1.SQL.Clear; 
DataModule2.ACRQuery1.SQL.Text := ADVMemo1.Lines.Text; 
AdvMemo1.UpdateWrap(); 
try 
DataModule2.ACRQuery1.Open; 
except 
    on E:Exception do 
    begin 
    MessageDlg('Napaka pri izvedbi : ' + E.ClassName, 
       mtError, [mbOK], 0); 
    end; 
    end; 
cxGrid1DBTableView1.DataController.CreateAllItems; 
cxGrid1DBTableView1.ApplyBestFit(); 
end; 

然而,當查詢被顯示在我注意到了網格,一秒鐘,列得到正常顯示,然後將最適合被應用。 看起來像某種混蛋。

現在,我不知道這種行爲是由設計還是我在錯誤的地方適用。我能做些什麼來避免這種情況?

這似乎改善的事情,多虧了烏利建議:

cxGrid1DBTableView1.DataController.CreateAllItems; 
cxGrid1DBTableView1.BeginUpdate(); 
cxGrid1DBTableView1.ApplyBestFit(); 
cxGrid1DBTableView1.EndUpdate(); 
+0

嘗試在兩行上添加一個'BeginUpdate' /'EndUpdate'pair。 –

+0

@Uli Gerhardt你的建議工作,所以你應該得到的credit.You可以發佈答案,如果你喜歡。 – user763539

+0

好聽!完成。 :-) –

回答

3

嘗試添加BeginUpdate/EndUpdate對。

+0

實際上只有在創建所有項目後,否則你會得到索引超出界限的錯誤... – user763539

+0

我簡化了我的答案。 :-) –

+0

謝謝你Uli ... – user763539