Post Reply 
 
Thread Rating:
  • 239 Votes - 2.8 Average
  • 1
  • 2
  • 3
  • 4
  • 5
ListBoxのエラーについて
01-19-2012, 04:45 PM
Post: #1
Question ListBoxのエラーについて
以下のプログラムを実行し、生成されたListBoxをダブルクリックすると、
NullDereferenceException例外が発生します。
これはバグでしょうか?それともそういう仕様なのでしょうか?

{curl 7.0 applet}
{curl-file-attributes character-encoding = "shift-jis"}

{value
{ListBox}
}


Attached File(s)
.png  error.png (Size: 52.59 KB / Downloads: 464)
Find all posts by this user
Quote this message in a reply
01-20-2012, 09:05 AM
Post: #2
RE: ListBoxのエラーについて
(01-19-2012 04:45 PM)alphard Wrote:  My result in IE8 is a VBox containing Fill - but no error - running RTE 8
(01-19-2012 04:45 PM)alphard Wrote:  Can you provide more runtime info? Did you try CTRL-Right-Click instead of a simple click? What result should we expect for an empty list box in an empty frame? For example, what do expect would be the size of that empty list box? I get a default for a default empty document
(01-19-2012 04:45 PM)alphard Wrote:  以下のプログラムを実行し、生成されたListBoxをダブルクリックすると、
NullDereferenceException例外が発生します。
これはバグでしょうか?それともそういう仕様なのでしょうか?

{curl 7.0 applet}
{curl-file-attributes character-encoding = "shift-jis"}

{value
{ListBox}
}

Robert Shiplett, Curlr
Fredericton NB

Canada
Visit this user's website Find all posts by this user
Quote this message in a reply
01-20-2012, 09:36 AM
Post: #3
RE: ListBoxのエラーについて
これは7.0.xのバグでした。
8.0に直っています。

直っていない7.0の回避策として、try/catchで無視すればいいです。
たとえば:

Code:
{curl 7.0 applet}

{define-class public MySkinnedListBoxFeel {inherits SkinnedListBoxFeel}
  {method protected open {handle-listbox-pointer-event e:PointerEvent}:void
    {try
        {super.handle-listbox-pointer-event e}
    catch e:NullDereferenceException do
    }
  }
}

{value
    let lb:ListBox =
        {ListBox
            height = 0.7in,
            "red", "green", "blue"
        }
    set (lb.ui-object asa SkinnableListBoxUI).control-feel =
        {MySkinnedListBoxFeel}
    lb
}
Visit this user's website Find all posts by this user
Quote this message in a reply
01-20-2012, 09:37 AM
Post: #4
RE: ListBoxのエラーについて
This variant:

{VBox
height = 200px,
{text Line 1},
{hrule},
{ListBox},
{hrule},
{text Line 2}
}

also gave no error - CTRL-Right-Click shows {Fill} again for the empty ListBox under IE8

Robert Shiplett, Curlr
Fredericton NB

Canada
Visit this user's website Find all posts by this user
Quote this message in a reply
01-20-2012, 09:45 AM
Post: #5
RE: ListBoxのエラーについて
Thank you for the reply. tuntime is as follows.

Curl® RTE
build:7.0.5
support API version: 7.0.5, 5.0.4, 4.0.3, 3.0.8
debug API version: 7.0, 5.0

Windows7(32bit)
IE8.0.7601.17514

----------------------------
{curl 7.0 applet}
{curl-file-attributes character-encoding = "utf8"}
{ListBox}
----------------------------
CTRL-Right-Click -> OK
CTRL-Right-DblClick -> OK
Right-Click -> OK
Right-DblClick -> OK

CTRL-Left-Click -> OK
CTRL-Left-DblClick -> NG (NullDereferenceException)
Left-Click -> OK
Left-DblClick -> NG (NullDereferenceException)




----------------------------
{curl 5.0 applet}
{curl-file-attributes character-encoding = "utf8"}
{ListBox}
----------------------------
CTRL-Right-Click -> OK
CTRL-Right-DblClick -> OK
Right-Click -> OK
Right-DblClick -> OK

CTRL-Left-Click -> OK
CTRL-Left-DblClick -> OK
Left-Click -> OK
Left-DblClick -> OK


Do you think that it is a bug?
Find all posts by this user
Quote this message in a reply
01-20-2012, 09:51 AM
Post: #6
RE: ListBoxのエラーについて
Curl Engineer様

ご回答ありがとうございます。
やはりバグでしたか。それがわかっただけで御の字です!
回避のコードまでありがとうございます!助かりました。
Find all posts by this user
Quote this message in a reply
01-23-2012, 01:44 PM
Post: #7
RE: ListBoxのエラーについて
すみません。前回解決したと思っていたのですが・・・
概観をCurl Ver5のままにしたい為、{install-standard-look-and-feel}
をつけて実行してみると、「StandartListBoxUIからSkinnableListBoxUIへキャストすることはできません。」というエラーが発生します。​

これを回避することはできないのでしょうか?

Code:
{curl 7.0 applet}

{install-standard-look-and-feel} || ←ここを追加

{define-class public MySkinnedListBoxFeel {inherits SkinnedListBoxFeel}
  {method protected open {handle-listbox-pointer-event e:PointerEvent}:void
    {try
        {super.handle-listbox-pointer-event e}
    catch e:NullDereferenceException do
    }
  }
}

{value
    let lb:ListBox =
        {ListBox
            height = 0.7in,
            "red", "green", "blue"
        }
    set (lb.ui-object asa SkinnableListBoxUI).control-feel =
        {MySkinnedListBoxFeel}
    lb
}
Find all posts by this user
Quote this message in a reply
01-23-2012, 02:59 PM
Post: #8
RE: ListBoxのエラーについて
(lb.ui-object asa SkinnableListBoxUI) を書いているが、 {install-standard-look-and-feel} の影響で lb.ui-object  StandardListBoxUI になっているはずです。

「Standard」を使えば、直接設定しない限りにFeelとSkinとかが使えません。
StandardUIならFeelじゃなくて、そのUIクラスを継承すべきです。

StandardListBoxUI 
には同じ handle-listbox-pointer-event がありますので、必要であればそれを継承すればいいはずです。

ちなみに、 ui-object を直接変えるよりは、 register-ui-proc で登録出来ます。
Visit this user's website Find all posts by this user
Quote this message in a reply
01-23-2012, 04:16 PM
Post: #9
RE: ListBoxのエラーについて
回答ありがとうございます。難しいですねー。

この回答でロジックわかる人教えてください。

(01-23-2012 02:59 PM)c-s Wrote:  (lb.ui-object asa SkinnableListBoxUI) を書いているが、 {install-standard-look-and-feel} の影響で lb.ui-object  StandardListBoxUI になっているはずです。

「Standard」を使えば、直接設定しない限りにFeelとSkinとかが使えません。
StandardUIならFeelじゃなくて、そのUIクラスを継承すべきです。

StandardListBoxUI 
には同じ handle-listbox-pointer-event がありますので、必要であればそれを継承すればいいはずです。

ちなみに、 ui-object を直接変えるよりは、 register-ui-proc で登録出来ます。
Find all posts by this user
Quote this message in a reply
01-23-2012, 05:17 PM
Post: #10
RE: ListBoxのエラーについて
c-sさんが言ってる事はこーゆーことだと思います。


{curl 7.0 applet}

{install-standard-look-and-feel}

{define-class public MyStandardListBoxUI {inherits StandardListBoxUI}
{method protected open {handle-listbox-pointer-event e:PointerEvent}:void
{try
{super.handle-listbox-pointer-event e}
catch e:NullDereferenceException do
}
}
}

{value
let lb:ListBox =
{ListBox
height = 0.7in,
"red", "green", "blue"
}
set lb.ui-object = {MyStandardListBoxUI}
lb
}
Find all posts by this user
Quote this message in a reply
Post Reply 

Forum Jump:


User(s) browsing this thread:
1 Guest(s)