DBGrid之Columns屬性的問題 |
答題得分者是:sos_admin
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
|
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
|
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
感謝﹒ 比如說資料表中的欄位名有'訂單編號','客戶編號','產品編號','數量','訂購日期'五個﹒ 現在我需要DBGrid中只顯示'訂單編號','產品編號','訂購日期'這三個欄位名﹐該如何處理﹖ DBGrid的編輯器可以加入All Fields﹐并加以控制(設計時期可直接指定DBGrid只顯示哪些欄位名)﹐而資料集元件(如ADOQuery)也可用編輯器加入All Fields﹐并加以控制(也可設計時期直接指定出現的欄位名)﹐那么欄位名在DBGrid中的顯示控制是否也可用ADOQuery的Fields屬性來寫﹖ 感謝﹗ =====================
努力,相信會獲得美麗!
忻晟
------
忻晟 |
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
現在我需要DBGrid中只顯示'訂單編號','產品編號','訂購日期'這三個欄位名﹐該如何處理﹖
右键一个一个添加,然后设置! 那么欄位名在DBGrid中的顯示控制是否也可用ADOQuery的Fields屬性來寫﹖ 这是对于一个空的dbgrid的动态添加栏位及动态赋予对应的字段
var
i:integer;
begin
adoquery1.Open ; if (DBGrid1.Columns.Count<3) then
for i:=DBGrid1.Columns.Count to 3 do
DBGrid1.Columns.Add ; for i:=0 to 3 do
DBGrid1.Columns[i].FieldName :=adoquery1.Fields[i].FieldName ; end;
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
引言: 感謝﹒ 比如說資料表中的欄位名有'訂單編號','客戶編號','產品編號','數量','訂購日期'五個﹒ 現在我需要DBGrid中只顯示'訂單編號','產品編號','訂購日期'這三個欄位名﹐該如何處理﹖ DBGrid的編輯器可以加入All Fields﹐并加以控制(設計時期可直接指定DBGrid只顯示哪些欄位名)﹐而資料集元件(如ADOQuery)也可用編輯器加入All Fields﹐并加以控制(也可設計時期直接指定出現的欄位名)﹐那么欄位名在DBGrid中的顯示控制是否也可用ADOQuery的Fields屬性來寫﹖ 感謝﹗ ===================== 努力,相信會獲得美麗! 忻晟procedure TForm1.Button1Click(Sender: TObject); begin if not adoquery1.Active then adoquery1.Open ; DBGrid1.Columns[0].FieldName:='訂單編號'; DBGrid1.Columns[1].FieldName:='產品編號'; DBGrid1.Columns[2].FieldName:='訂購日期'; end; TRY TRY SEE> |
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
謝謝兩位前輩﹒ 但還是沒有結果﹐小弟把問題講得詳細一些﹕
當資料表Open時﹐利用CheckListBOx來擷取所有的欄位名稱﹐并處于勾選狀態﹐若使用者在CheckListBox中做勾選內容的變動后﹐DBGrid元件也對應只顯示在CheckListBox中有勾選狀態的欄位﹐未勾選的欄位則不做顯示﹒前段程式碼如下﹕
procedure TForm1.ADOQuery1AfterOpen(DataSet: TDataSet); var I,J : Integer; begin CheckListBox1.Items.Clear; For I:=0 To ADOQuery1.FieldCount-1 do CheckListBox1.Items.Add(ADOQuery1.Fields[I].FieldName); For J:=0 To CheckListBox1.Items.Count-1 do CheckListBox1.Checked[J] := True; end;此時已經將資料表所有的欄位名都讀入CheckListBox中﹐并全部呈勾選狀態﹐接下來該如何處理就是小弟的問題﹐照兩位前輩所指點的試了好久﹐還是不得理﹐故請前輩再為指教﹐感謝﹗ ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟 |
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, CheckLst, Grids, DBGrids; type
TForm1 = class(TForm)
CheckListBox1: TCheckListBox;
Button1: TButton;
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Button2: TButton;
procedure ADOQuery1AfterOpen(DataSet: TDataSet);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.dfm} procedure TForm1.ADOQuery1AfterOpen(DataSet: TDataSet);
var
I,J : Integer;
begin
CheckListBox1.Items.Clear;
For I:=0 To ADOQuery1.FieldCount-1 do
CheckListBox1.Items.Add(ADOQuery1.Fields[I].FieldName);
For J:=0 To CheckListBox1.Items.Count-1 do
CheckListBox1.Checked[J] := True;
end; procedure TForm1.Button1Click(Sender: TObject);
begin
adoquery1.Open ;
end; //根据选择框动态改变
procedure TForm1.Button2Click(Sender: TObject);
var
i:integer;
begin
dbgrid1.DataSource :=DataSource1;
dbgrid1.Columns.Clear ;
for i:=0 to CheckListBox1.Count-1 do
begin
dbgrid1.Columns.Add;
dbgrid1.Columns[i].FieldName:=CheckListBox1.Items.Strings[i];
if checklistbox1.Checked[i] then
dbgrid1.Columns[i].Visible :=true
else
dbgrid1.Columns[i].Visible :=false;
end; end;
end.
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |