關於DBGrid顯示memo型態資料問題 |
答題得分者是:ccchen
|
chinliang
一般會員 發表:16 回覆:26 積分:13 註冊:2002-06-17 發送簡訊給我 |
在程式設計俱樂部沒人回答,故再此請各位先進看看,如蒙賜教,感激不盡,謝謝. 為了在DBGrid中能顯示memo,在DBGrid的DrawDataCell的事件中加入以下程式碼,但是小弟有問題的是在 Table1 --> DataSource --> DBGrid 下能夠正常執行,但在ClientDataSet --> DataSource --> DBGrid下卻不能執行. 錯誤在型熊轉換部份: Table1.FieldByName('memo') as TBlobField 正確 Enquiry_AllMedTableClientDmod.cdsMed_patient_register.FieldByName('memo') as TBlobField 錯誤 錯誤訊息 "Invalid class typecast" 小弟想不懂的是,上面二個陳述式均是由TField 轉成 TBloBField,一個卻有問題,不知為那方面的問題,請
各位先進不吝指教, 謝謝!
if Field is TMemoField then begin Table1.Locate('date_',dbgRegister.fields[0].Value ,[loCaseInsensitive]); with (Sender as TDBGrid).Canvas do begin bs := TBlobStream.Create(Table1.FieldByName('memo') as TBlobField, bmRead); FillChar(P,SizeOf(P),#0); bs.Read(P, 50); bs.Free; hStr := StrPas(P); while Pos(#13, hStr) > 0 do hStr[Pos(#13, hStr)] := ' '; while Pos(#10, hStr) > 0 do hStr[Pos(#10, hStr)] := ' '; FillRect(Rect); TextOut(Rect.Left, Rect.Top, hStr); end; end; |
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
|
chinliang
一般會員 發表:16 回覆:26 積分:13 註冊:2002-06-17 發送簡訊給我 |
|
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
改用TClientDataSet之CreateBlobStream
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState); var P: array [0..50] of char; bs: TStream; hStr: String; begin if Field is TMemoField then begin with (Sender as TDBGrid).Canvas do begin bs := ClientDataSet1.CreateBlobStream(field, bmRead); |
chinliang
一般會員 發表:16 回覆:26 積分:13 註冊:2002-06-17 發送簡訊給我 |
版主你好: 非常感謝版主能抽空看小弟的程式,而且也順利了解決小弟很久以來的問題,好高興喔,本來想說如果弄不出就想要放棄,把這個欄位拿掉不要顯示算了,但是就是很不甘心,可是就是找不到範例,去程式設計師俱樂部問,都沒有回應,但是在這裡得到版主及其他先進指導,真是非常敬佩各位能熱心的回答新手的問題,不知道什麼時候自己才能幫助別人解決問題。 不好意思想再問一下版主,遇到很難的問題都去那裡找資料呢?雖然說Delphi的HELP也有很多資料,但是有時查出來幫助也不是很大,請賜教。 最後,再次感謝版主,謝謝。
|
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
引言: 版主你好: 非常感謝版主能抽空看小弟的程式,而且也順利了解決小弟很久以來的問題,好高興喔,本來想說如果弄不出就想要放棄,把這個欄位拿掉不要顯示算了,但是就是很不甘心,可是就是找不到範例,去程式設計師俱樂部問,都沒有回應,但是在這裡得到版主及其他先進指導,真是非常敬佩各位能熱心的回答新手的問題,不知道什麼時候自己才能幫助別人解決問題。 不好意思想再問一下版主,遇到很難的問題都去那裡找資料呢?雖然說Delphi的HELP也有很多資料,但是有時查出來幫助也不是很大,請賜教。 最後,再次感謝版主,謝謝。你可以先在本網站用"搜尋文章"找看看有沒有類似問題, 找到的內容可能包含以前別人問過的, Delphi官方文章, 甚至3rd Party元件, 也可以找書,(不過大部分中文書比較沒什麼內容). 再不行就發問, 你寄來的Sample就很恰當的表達了問題, 不過較理想的方法是將壓縮檔貼到"會員求助程式上傳區貼上後Righ Click選"複製捷徑", 發問時將此捷徑貼上. "新手必看"內有詳細說明 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |