2015-02-07 39 views
1

我想在運行時(從數據庫)加載dbctrlgrid的內容。所以我遇到了幾個挑戰:dbctrlgrid在運行時刪除並填充條目

  1. 如何檢測dbctrlgrid是否爲空和/或如何清除它。
  2. 如何在面板上放置Tlabel和Tdbtext。主要問題似乎是找到合適的家長。 dbctrlgrid不起作用。有一個名爲Tdbctrlpanel的對象應該可以工作,但我不知道如何訪問它。我無法在Tdbctrlgrid的屬性或方法中找到它。

任何代碼snipplet歡迎

+1

你應該總是**添加**通用[標籤:delphi]標籤到你delphi相關的問題,以正確的語法高亮和更多關注你的問題。 – 2015-02-07 16:27:17

+0

TDBCtrlGrid旨在設計(佈局)在窗體設計器中。只需將'TLabel'和'TDBText'控件放在需要的位置,然後使用Object Inspector將它們連接到DataSource和DataField,就像您使用其他數據感知控件一樣。要清除它,只需將數據集的「Active」屬性設置爲false,或者刪除數據集中的所有數據。通過檢查數據集的「IsEmpty」屬性來判斷它是否爲空。通過將數據添加到數據集來添加條目,並且DBCtrlGrid將自動添加另一個面板和控件以顯示它。 – 2015-02-07 17:49:14

+0

可能是我弄錯了,但我明白TDBCtrlGrid必須適應不斷變化的表格結構。類似於適應給定列的TDBGrid(只要您不設計任何列)。也許我覺得太複雜了? – 2015-02-07 17:55:40

回答

0

要將控件添加到TDBCtrlGrid,您必須將控件父項設置爲TDBCtrlGridPanel屬性。問題是這個屬性是受保護的。有幾種方法可以克服這個限制。其中一個在Delphi中顯示關於:Accessing protected members of a component
這是Delphi程序員衆所周知的常見技術,即'受保護的黑客'。

+0

它也適用於 parent:= TdbCtrlPanel(DBCtrlGrid1.Controls [0]); – 2015-02-08 14:36:20

1

要回答1)

你不查詢TDBCtrlGrid,您查詢基礎數據集;如果它.IsEmpty網格是空的。

當人們開始使用數據感知(網格)組件時,他們傾向於將其視爲可以查詢和修改的「數據容器」,但事實並非如此。使用一些內置修改數據的編輯器將其視爲您的基礎數據視圖。然後,對於這些編輯者,「相同的規則」適用於您:更新基礎數據集。