dbgrid
自定義資料字段顯示(匯出)實現一例
在同城系統開發實踐中,碰到這樣的一種情況,對於相同的資料集,有的區局需要將該資料集匯出到
excel
,但各自需要不同的字段。當然,我們可以在程式中針對各個區的網點編號來設定欄位的屬性來控制其顯示或匯出,但程式顯得僵硬化,不利於程式的修改。在這裡,我提供了一種方法,可以將要顯示的字段以選單的形式加以控制,並以配置檔案的形式記錄你的個性要求,靈活地控制資料集合的顯示或匯出字段。
程式分為以下步驟進行:
一、查詢資料,動態生成控制選單。
procedure tc_bkpenaltyfrm.initmenuitem;
varnewitem: tmenuitem;
i: integer;
begin
popupmenu6.items.clear;
for i := 0 to dbgrideh3.columns.count - 1 do
begin
newitem := tmenuitem.create(nil);
newitem.caption := dbgrideh3.columns.items[i].title.caption;
newitem.onclick := menuonclick; //
新增彈出選單子項的方法
newitem.checked := true;
popupmenu6.items.add(newitem);
end;
end;
二、讀取配置檔案,控制資料字段屬性
procedure tc_bkpenaltyfrm.setfromini;
varlistini: tinifile;
list: string;
ts: tstringlist;
i: integer;
begin
//讀入非顯示欄位的下標列表。
trylistini := tinifile.create(extractfilepath(paramstr(0)) + 'ini/config.ini');
list := listini.readstring('explist', 'list', '');
finally
listini.free;
end;
ts := tstringlist.create;
ts.delimiter := ',';
ts.delimitedtext := list;
//按列表內容,控制欄位的屬性
for i := 0 to ts.count - 1 do
begin
popupmenu6.items[strtoint(ts[i])].click;//
觸發選單單擊事件
end;
end;
//選單單擊,控制顯示
procedure tc_bkpenaltyfrm.menuonclick(sender: tobject);
begin
inherited;
tmenuitem(sender).checked := not tmenuitem(sender).checked;//
取反settoini;//
寫入配置檔案
dbgriddisplayinf;//
控制字段屬性
end;
//控制選單項對應的字段屬性,決定顯示或匯出的屬性
procedure tc_bkpenaltyfrm.dbgriddisplayinf;
vari: integer;
begin
for i := 0 to popupmenu6.items.count - 1 do
begin
if not popupmenu6.items[i].checked then
begin
dbgrideh3.columns.items[i].visible := false;//
不顯示dbgrideh5.columns.items[i].visible := false;
dbgrideh5.datasource.dataset.fieldbyname(dbgrideh5.columns.items[i].title.caption).tag := 1;//
該屬性控制匯出
excel
時該字段不匯出
endelse
begin
dbgrideh3.columns.items[i].visible := true; //
顯示dbgrideh5.columns.items[i].visible := true;
dbgrideh5.datasource.dataset.fieldbyname(dbgrideh5.columns.items[i].title.caption).tag := 0; //
該屬性控制匯出
excel
時該字段時匯出
end;
end;
end;
//寫入配置檔案。
procedure tc_bkpenaltyfrm.settoini;
varlistini: tinifile;
list: string;
i: integer;
begin
//遍歷選單項,把所有非選的專案的下標新增到
list
裡面。for i := 0 to popupmenu6.items.count - 1 do
begin
if not popupmenu6.items[i].checked then
begin
list := list + inttostr(i) + ',';
end;
end;
list := copy(list, 1, length(list) - 1);
//把非選的專案寫入配置檔案。
trylistini := tinifile.create(extractfilepath(paramstr(0)) + 'ini/config.ini');
listini.writestring('explist', 'list', list);
finally
listini.free;
end;
end;
使用自定義字段
轉儲所有自定義字段作為列表顯示乙個特定自定義欄位的值id,mood true mood 將是自定義欄位的id值 顯示相同自定義欄位id的多個值id,songs false 僅在存在時顯示自定義字段 邏輯 url get post meta post id,snippet reference url ...
織夢搜尋頁面顯示自定義字段
第一處修改的是 根目錄下 include arc.searchview.class.php檔案。找到 處理一些特殊字段 然後在 1 row arcurl getfileurl row id row typeid row senddate row title 前面加入以下 1 row 你的欄位名 se...
dede自定義欄位table去掉,自定義附件裡面有
我們在使用dede 建設時,自定義附件,讀取是會出 uploads soft 100602 1 10060221235523434.zip 我們在系統內容模型中新增附件型別欄位時,前台需要用來呼叫。例如我在後台發布一篇文章,上傳乙個zip的附件,欄位的時間內容是 uploads soft 10060...