關於動態視窗的釋放和ThemeEngine的問題

來源:互聯網
上載者:User
關於動態視窗的釋放和ThemeEngine的問題 VCL組件開發及應用
http://www.delphi2007.net/DelphiVCL/html/delphi_20061221110256226.html
首先第一個問題  
          我有個動態查詢時段FORM3,當我在form1裡按BUTTON1的時候,建立FORM3,並且把查詢資料庫的結果返回給FORM3上的STRINGGRID1中,當我點下form3的button1(fORM3.BUTTON1的MODALRESULT=MROK)時候,希望把結果返回到form1.edit1.text中,具體語句如下:  
  if   query.frmQuery.ShowModal=mrOk   then   begin  
              showmessage('123');  
              edit1.Text   :=trim(query.frmQuery.StringGrid1.Cells[GlobleJ-1,query.frmQuery.StringGrid1.Row]);  
          end;  
   
  如果在不在FORM3的close動作裡寫action:=cafree;       上面的語句就沒問題,如果寫了action:=cafree;,把showmessage去掉也沒問題,但是加上showmessage就會報錯,有點迷惑了,這裡總是似懂非懂,請大家幫忙解釋下為什麼.  
   
  第2個問題,我上面的查詢時段沒用ThemeEngine的時候使用正常,如果我把表單全換成ThemeEngine的之後就會報錯,錯誤提示如下:Project   project1.exe   raised   exception   class   ElistError   with   message   'list   index   out   of   bounds(-1)'   Process   stoped   USE   step   or   run   to   continue.  
  這個是為什麼呢?

在兩個對話方塊間使用訊息通訊機制好了,安全些  
  或者showmessage改成Application.ShowMessage();

第二個是索引越界,檢查一下list下標引用

加了action:=cafree會導致表單關閉後,立即進行了釋放,如果表單關閉還要用它裡面的內容,最好不要加釋放語句。

LIST下標引用這裡能不能說的再詳細點呢?

如果frmQuery已經釋放了,引用它裡面的對象肯定不行了。  
  只要對象在,你可以調試一下呀,看看下標的範圍,看一下是否引用已超出了這個範圍

list裡下標索引是基於0的,如list裡有5個元素,下標從0到4

問題解決,謝謝樓上的兩位。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.