小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

delphi的bugs

 frie 2005-08-09

Delphi實際的開發(fā)中發(fā)現(xiàn)的問題

 

1、TDateTimePicker的錯誤

TDateTimePicker控件在讀寫日期時有很多錯誤,主要是日期不能及時刷新。

隨便舉一個例子:

新建一個Form,然后添加一個TDateTimePicker控件,隨便放一個浮動型按鈕例如TSpeedButton或者TToolButton等,相信這種方式用的會很多!

在浮動按鈕的Click事件中加入很簡單的代碼:

ShowMessage(FormatDateTime(‘yyyy-mm-dd‘,DateTimePicker1.Date));

此時你通過直接修改TDateTimePicker的時間值來修改日期,然后激活浮動按鈕的Click事件,你會發(fā)現(xiàn)在TDateTimePicker中反映出來的日期并不是TDateTimePicker真實的日期!多試幾次你會發(fā)現(xiàn)問題更嚴(yán)重!

相信Borland公司的人應(yīng)該測出了此錯誤,但是沒有修復(fù)!

現(xiàn)在似乎明白為什么沒有日期型的DB控件!

 

2、TDBGrid的錯誤

如果你是通過TDBGrid直接讀寫數(shù)據(jù),你會發(fā)現(xiàn)問題很致命!

隨便舉一個例子:

新建一個Form,然后添加一個TDBGrid,添加相應(yīng)的數(shù)據(jù)關(guān)聯(lián)然后激活數(shù)據(jù)源,隨便放一個浮動型按鈕,相信這種方式用的也比較多!

在浮動按鈕的Click事件中加入很簡單的代碼:

ShowMessage(ADOQuery1.Fields.Fields[0].AsString);

然后運(yùn)行!

運(yùn)行時首先選中TDBGrid中的一條數(shù)據(jù)(已經(jīng)默認(rèn)選中一條),然后滾動鼠標(biāo)的滾輪翻滾數(shù)據(jù),就象大家平時上網(wǎng)是滾動瀏覽網(wǎng)頁或者在Excel數(shù)據(jù)區(qū)滾動瀏覽一樣,然后在TDBGrid中單擊鼠標(biāo),你會發(fā)現(xiàn)此時在TDBGrid中實際控制了兩條數(shù)據(jù),繼續(xù)則可能出現(xiàn)多條!

繼續(xù)下去!

如果你不停的下翻直至TDBGrid中的光標(biāo)在鼠標(biāo)的游標(biāo)之下然后點擊,然后激活浮動按鈕的Click事件,你會發(fā)現(xiàn)在TDBGrid中激活的數(shù)據(jù)與數(shù)據(jù)源中實際的當(dāng)前數(shù)據(jù)根本就不一致!

在實際應(yīng)用中相信會碰到這種情況:我明明選擇是這條數(shù)據(jù),但進(jìn)行后繼操作的為什么不是這條數(shù)據(jù)?

 

3、TQuickRep的錯誤

TQuickRep歷來以使用簡單,功能靈活(當(dāng)然是通過添加代碼來實現(xiàn))而著名,當(dāng)然她的缺陷之多也同樣有名,這當(dāng)然也不是完全Delphi的問題。

隨便舉一個例子:

系統(tǒng)主窗口是的FormStyle為fsMDIForm類型,系統(tǒng)中的各個窗體采用模式窗體(ShowModal),這是一個很普通的應(yīng)用。

在實際中系統(tǒng)主窗口往往是最大化(WindowState = wsMaximized)的,如果在模式窗體中預(yù)覽報表:

QuickRep1.Preview;

如果你把報表預(yù)覽窗口最小化,你會發(fā)現(xiàn)你根本就不能關(guān)閉任何窗口!除非通過Alt+Ctrl+Delete強(qiáng)行關(guān)閉!

所幸QuSoft公司已經(jīng)發(fā)現(xiàn)了這個問題,在專業(yè)版(目前是3.6.2版)解決方案居然是在預(yù)覽窗口默認(rèn)是普通窗口而不是標(biāo)準(zhǔn)版中的將窗體最大化!

 

4、IDE開發(fā)工具的問題

相信大家至少99%以上是直接通過Delphi提供的IDE工具進(jìn)行開發(fā),在實際應(yīng)用中為了減少EXE文件的大小(主要是因為調(diào)用比較大的第三方控件引起的)往往會通過取消部分VCL連接庫(例如非Delphi自身的*.BPL)來完成,現(xiàn)在發(fā)現(xiàn)在Delphi中幾乎不可能要么全部添加,要么都不添加!

不管你在[Build with runtime packages]中如何設(shè)置都不管用,似乎IDE工具只辨認(rèn)那個Check或者CFG文件中的那個[-LU]參數(shù)而不管其它!

說明:對此目前依然沒有確認(rèn)是IDE工具的問題或者其它問題,只是一般認(rèn)為是IDE工具的問題。

 

 

 

Hank

starfarm@263.net

2002.12.12


相關(guān)文章
對該文的評論
CSDN 網(wǎng)友 ( 2004-10-15)
第一條沒有什么問題呀,是不是作者搞錯了
dreamnyj ( 2004-05-01)
呵。謝謝,還是記下。
softman11 ( 2003-04-27)
同意,delphi中的bug真的很多。因為我用過vb,所以一對比,發(fā)覺dephi雖然簡單易用。但是很多控見使用的時候常常有這樣那樣的問題。但是MS的東西雖然沒有這么體貼。但是人家的東西真的很穩(wěn)定,bug也少。
zz3 ( 2003-01-25)
有些不是BUG,要自己編程實現(xiàn),打開vcl‘s source看看!
hausen ( 2002-12-13)
Delphi的BUGS確實很多,希望各位同行在使用過程中把問題擺出來并共同解決.

下面列出在所有g(shù)rid 類都存在的一個問題:
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
  var rect:tgridrect;
begin
  Rect:=stringgrid1.selection;
  label1.caption:=‘left:  ‘+inttostr(Rect.left)+‘     top:  ‘+inttostr(Rect.top);
end;

Rect.left 等的值出現(xiàn)混亂.原因可能是Trect每次都沒有初始化

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多