在我的表單中,我有許多TMyQuery組件。他們的名字標識他們使用哪個MySQL表。例如,COMPONENTSTABLE可與組件表一起使用,等等。將組件名稱存儲爲字符串供以後使用
約有30個表格,但未來可能會改變。
我也使用一個基本的字符串列表從一個名爲TIMESTAMPS的表中讀取字段名稱。當發生UPDATE,INSERT或DELETE時,通過觸發器更新此表。 TIMESTAMPS表中的每個字段指的是修改了哪個表。表中只有一個記錄!基於字段值,我可以看到哪些表已更改,因此我可以刷新它而不是刷新所有表。
我不想這樣做;
If fieldbyname['COMPONENTSTABLE'] <> CurrentTimeStamp
then ComponentsTable.Refresh;
If fieldbyname['ORDERSTABLE'] <> CurrentTimeStamp
then OrdersTable.Refresh;
{ and so on forever }
我想要做的是;
現在我有一個帶有「名稱/值」的字符串列表。每個「Name」是表中的字段名,「Value」是MySQL觸發器提供的TIMESTAMP。
我得到以下;
For Idx := 0 to MyStringList.Count -1 do
Begin
If MyStringlist.ValueFromIndex[Idx] <> SomethingElse then
Begin
with (MyStringList.Names[Idx] as tMyQuery).Refresh;
End;
End;
我已經得到了字符串列表的功能,名稱,值等都是正確的。
我的問題是這樣的;
有沒有一種方法可以使用字符串(「名稱」列中的列表)引用一個對象,如果該對象存在?
我已經有一個函數用來通過傳遞一個對象來刷新單個表,但這是一個對象,並且易於使用。我想根據從String中檢索的名稱傳遞「Object」。
我希望這是有道理的,你可以按照我所追求的。
謝謝@Pepak,請看下面發佈的答案,謝謝你。 :) –