2012-10-12 30 views
0

我第一次使用TDBGridTDBGrid色譜柱設計時間或運行時間?

我甚至沒有注意到對象檢查器中的Columns屬性,一切都很順利:網格被填滿。

然後我看到了Columns屬性並試了一下。當我使用對象捕捉器將項目添加到網格的Columns屬性時,它們不會在運行時顯示所有項目。對我而言,看起來FieldName屬性很重要。它看起來是正確的,但某些列中沒有值。

如果我將此屬性留空(根本沒有列),那麼控件似乎會在運行時自行填充它,我會看到所有列。我可以忍受這一點。當我在運行時設置列標題時,它可以工作,但設置列寬不會。


[更新]謝謝您的反饋。我正在慢慢學習。現在我看到發生了什麼。我想要計算五列中的三列。兩個來自INNER JOINs,另一個來自SELECT ... FROM_UNIXTIME(<table>.time_stamp)的SQL'cast'。

如果我沒有在設計時定義列,那麼當我執行我的SELECT時,這些值會在運行時填充。有誰告訴我如何在設計時進行設置?謝謝

+1

我無法解釋爲什麼在運行時設置列寬不成功。 – NGLN

+0

我想已經給出了答案:在列編輯器中選擇_Add all fields_命令。這將導致與添加任何內容完全相同的行爲,但現在您可以檢查列的設置方式。 – NGLN

回答

1

運行時間和設計時間設置列的功能沒有區別。那就是:可以做什麼designtime也可以做到運行時,反之亦然。

當te Columns屬性保持爲空時,一旦數據集打開,網格會默認填充它在鏈接數據集中找到的所有字段。根據相應字段的類型,長度和名稱,所有列的特定設置(例如對齊,寬度,標題說明等)都被設置爲默認值。這是一種可以充分利用的懶惰方式。

你可以deside使用列屬性的自己建立或者修改,一個或多個以下原因:

  • 變化,他們必須出現在網格中的數據集字段的順序,
  • 截斷文本字段的寬度(尤其是VarChar字段或具有大的長度Char字段通常會導致太寬爲正常呈現和/或用戶交互colums),
  • 變化的字段的排列(通常數字字段默認情況下是右對齊的),
  • 隱藏從數據集中一個或多個字段,
  • 等...

這些自己的設置可以做到desingtime以及運行。

使用designtime列編輯器是需要這些自定義設置的首選和RAD方式。雙擊網格或屬性或通過網格的上下文菜單打開編輯器。如果鏈接數據集處於活動狀態,則命令添加所有字段已啓用,這與您完全未選擇任何字段(即第二段中所述的默認行爲)完全相同。

2

在dbGrid上定義列的最好方法是雙擊數據集以創建表單知道的變量(持久字段)。您可以編輯這些變量的各種屬性,例如DisplayLabel,DisplayWidth和DisplayFormat。

您還可以通過雙擊雙擊客戶端數據集時出現的對話框添加計算字段。

+0

+1「雙擊數據集」 - 我使用AnyDac(並且對於所有這些都是新的)。我有一個連接,一個數據源和一個查詢。數據集是哪一個,還是我需要一些其他的東西?請閱讀我的更新。謝謝 – Mawg

+0

@Mawg:我不知道AnyDac,但是原則上它不應該與我使用的dbExpress控件有所不同。反過來,網格連接到連接到數據集的數據源,數據集連接到數據庫連接器。或者,數據集是您定義查詢本身的地方。 –

相關問題