線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2503
推到 Plurk!
推到 Facebook!

如何將資料型態為text的內容顯示在DBGrid上??

答題得分者是:william
yabula
初階會員


發表:47
回覆:117
積分:42
註冊:2002-10-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-11-28 09:21:11 IP:61.220.xxx.xxx 未訂閱
如題
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-11-28 09:39:00 IP:147.8.xxx.xxx 未訂閱
Any problem? DBGrid should display text field perfectly...
yabula
初階會員


發表:47
回覆:117
積分:42
註冊:2002-10-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-11-28 09:46:17 IP:61.220.xxx.xxx 未訂閱
可是我用可是我在DBGrid看到內容是顯示(MEMO) 我是用DBMemo元件處理text的欄位
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-11-28 10:27:52 IP:210.58.xxx.xxx 未訂閱
Hi Yabula try this : Select Convert(varchar(255), Field1) from Table 我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-11-28 10:39:01 IP:147.8.xxx.xxx 未訂閱
Write a GetText event handler for the field, e.g.    
procedure TForm1.ADOTable1TextGetText(Sender: TField; var Text: String;
  DisplayText: Boolean);
begin
    Text := Sender.AsString;
end;
yabula
初階會員


發表:47
回覆:117
積分:42
註冊:2002-10-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-11-28 14:50:25 IP:61.220.xxx.xxx 未訂閱
引言: Hi Yabula try this : Select Convert(varchar(255), Field1) from Table 我不是高手, 高手是正在銀幕前微笑的人.
Miles 前輩, 我在ADOQuery中的sql加入那段語法,然後此欄位用dbmemo元件來顯示資料,發覺會有錯誤,然後有將轉換後給予別名,dbgrid的column用別名的欄位來顯示就可以了````感謝前輩。 william 前輩 你的方式呼叫GetText 的地方,應該是在哪呼叫阿?? 我有點不懂意思 發表人 - yabula 於 2002/11/28 14:55:55
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-11-28 15:10:42 IP:147.8.xxx.xxx 未訂閱
引言:william 前輩 你的方式呼叫GetText 的地方,應該是在哪呼叫阿?? 我有點不懂意思
This is an event for a field. You need to create the field first, e.g. 1) double click on the dataset (e.g. a TTable) 2) right click in the fields editor and add all fields 3) select the proper field and write the event handler for OnGetText
yabula
初階會員


發表:47
回覆:117
積分:42
註冊:2002-10-02

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-12-05 13:28:19 IP:61.220.xxx.xxx 未訂閱
Miles前輩,小弟用convert的方式若在增修刪的情況下,會產生問題。在查詢程式就不會有此問題。    william前輩: 小弟後來採用你的方式後,已經解決我想要的答案了,但是再請教另一個問題, 如果要把DBRadioGroup元件的items顯示在DBGrid上的話,小弟想比照DBMemo的方式,卻不知如何做ㄋ?? 請前輩再指點一下
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-12-05 14:21:03 IP:147.8.xxx.xxx 未訂閱
引言:Miles前輩,小弟用convert的方式若在增修刪的情況下,會產生問題。在查詢程式就不會有此問題。 william前輩: 小弟後來採用你的方式後,已經解決我想要的答案了,但是再請教另一個問題, 如果要把DBRadioGroup元件的items顯示在DBGrid上的話,小弟想比照DBMemo的方式,卻不知如何做ㄋ?? 請前輩再指點一下 < face="Verdana, Arial, Helvetica"> I am sorry I can't get your meaning. Do you mean a pick list for the item in DBGrid?
yabula
初階會員


發表:47
回覆:117
積分:42
註冊:2002-10-02

發送簡訊給我
#10 引用回覆 回覆 發表時間:2002-12-05 15:16:07 IP:61.220.xxx.xxx 未訂閱
不好意思我沒有表達清楚 field A char(1) 用DBRadioGroup元件需在items和values設定表示的值 values items ------ ------- 1 黑 2 白 3 紅 4 綠 但是在DBGrid的內容是顯示values值 我想要顯示的是items的內容 目前我的做法是如下 procedure TForm1.ADOQuery1AGetText(Sender: TField; var Text: String; DisplayText: Boolean); var i:integer; s:string; begin s:=Sender.AsString; for i:=0 to DBRadioGroup1.Items.Count-1 do if s=DBRadioGroup1.Values[i] then Text :=DBRadioGroup1.Items.Strings[i]; end; 可是產生另一個問題,也就是DBRadioGroup1元件上'黑點'卻消失了 不曉得哪裡影響了``` 請前輩指點一下,或者有更好的方式??
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#11 引用回覆 回覆 發表時間:2002-12-05 15:21:05 IP:147.8.xxx.xxx 未訂閱
You need to implment the OnSetText event handler to convert the 'display text' to 'value' stored on the table.
yabula
初階會員


發表:47
回覆:117
積分:42
註冊:2002-10-02

發送簡訊給我
#12 引用回覆 回覆 發表時間:2002-12-05 17:25:33 IP:61.220.xxx.xxx 未訂閱
引言: You need to implment the OnSetText event handler to convert the 'display text' to 'value' stored on the table.
若把中文字存入的話,影響的程式太多了。
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#13 引用回覆 回覆 發表時間:2002-12-05 17:33:53 IP:147.8.xxx.xxx 未訂閱
Usually, both OnSetText and OnGetText are used if you want to edit the dataset, e.g.    
procedure TForm1.ADOQuery1AGetText(Sender: TField; var Text: String; DisplayText: Boolean);
var
  i:integer;
  s:string;
begin
  s := Sender.AsString;
  for i := 0 to DBRadioGroup1.Items.Count-1 do
    if s=DBRadioGroup1.Values[i] then
      Text := DBRadioGroup1.Items.Strings[i];
end;    procedure TForm1.ADOQuery1ASetText(Sender: TField; const Text: String);
var
  i:integer;
begin
  for i := 0 to DBRadioGroup1.Items.Count-1 do
    if Text=DBRadioGroup1.Items.Strings[i] then
      Sender.AsString := DBRadioGroup1.Values[i];
end;
The above codes are not tested.
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#14 引用回覆 回覆 發表時間:2002-12-06 10:56:03 IP:210.58.xxx.xxx 未訂閱
引言: Miles前輩,小弟用convert的方式若在增修刪的情況下,會產生問題。在查詢程式就不會有此問題。 william前輩: 小弟後來採用你的方式後,已經解決我想要的答案了,但是再請教另一個問題, 如果要把DBRadioGroup元件的items顯示在DBGrid上的話,小弟想比照DBMemo的方式,卻不知如何做ㄋ?? 請前輩再指點一下 < face="Verdana, Arial, Helvetica"> 不好意思最近才看到, 請問您的問題解決的嗎, 目前用哪種方式儲存, 下SQL, 還是直接使用Post. 我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
yabula
初階會員


發表:47
回覆:117
積分:42
註冊:2002-10-02

發送簡訊給我
#15 引用回覆 回覆 發表時間:2002-12-06 13:19:45 IP:61.220.xxx.xxx 未訂閱
問題已經解決了,用willian前輩的方式就可以了 procedure TForm1.ADOTable1TextGetText(Sender: TField; var Text: String;  DisplayText: Boolean);begin    Text := Sender.AsString;end;    不過我現在提的是另一個問題,看一下之前的資料就知道了``     
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#16 引用回覆 回覆 發表時間:2002-12-06 13:50:55 IP:61.221.xxx.xxx 未訂閱
不一定要用sql的方式來做show 'text' procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin Case DataCol of 0://這裡是代表在DBGrid的第幾格 Begin DBGrid1.Canvas.TextRectRect,Rect.Left,Rect.Top,Query1.fieldbyname ('欄位').AsString); End; End; end; 這樣做就不影響以後sql語法的增.刪.修
------
======================
昏睡~
不昏睡~
不由昏睡~
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#17 引用回覆 回覆 發表時間:2002-12-06 14:23:08 IP:210.58.xxx.xxx 未訂閱
可用一個StringList去做對應 例如    

strs := TStringList.Create
strs.Add('1=黑');
strs.Add('2=白');
strs.Add('3=紅');
strs.Add('4 綠');     ...
...    procedure TForm1.ADOQuery1AGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin    Text :=strs.Values[Sender.AsString];    end;    ...
...    strs.Free
我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
yabula
初階會員


發表:47
回覆:117
積分:42
註冊:2002-10-02

發送簡訊給我
#18 引用回覆 回覆 發表時間:2002-12-09 10:56:07 IP:61.220.xxx.xxx 未訂閱
不好意思今天才來回覆訊息。 可是產生另一個問題,也就是DBRadioGroup1元件上'黑點'卻消失了
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#19 引用回覆 回覆 發表時間:2002-12-09 11:22:16 IP:210.58.xxx.xxx 未訂閱
引言: 不好意思今天才來回覆訊息。 可是產生另一個問題,也就是DBRadioGroup1元件上'黑點'卻消失了
Hello : 因為DBRadioGroup會讀取DataSet的值再決定選項, DataSet的值被我們改過了 所以可以直接將DBRadioGroup的Value改成我們改後的值即可. 我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
yabula
初階會員


發表:47
回覆:117
積分:42
註冊:2002-10-02

發送簡訊給我
#20 引用回覆 回覆 發表時間:2002-12-09 13:20:31 IP:61.220.xxx.xxx 未訂閱
已經可以了`````感謝前輩指點`````
系統時間:2024-11-23 7:27:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!