none
外部を出したい時のpublicについて RRS feed

  • 質問

  • こんにちは。

    前回form1のサムネイル画像ををform2のpicturebox4つに載せたいと言っていた美流久です。                   前回の時にじゃんぬねっとさんからご教授頂きました↓


    Form2 に Public なメソッドをひとつ追加してみてください。
    メソッド名は、SetPictureBoxImage とか、それなりの名前で良いでしょう。

    このメソッドの引数として必要なのは、ファイルパスだけです。
    あとはこのメソッド内で、Form2 にある PictureBox にあれこれ出来ますよね?

    このように、クラス内のものはクラス内でどうこうするようにした方が良いです。
    それを外部から呼び出したい場合は、今回ように Public メソッドなどを使います


    なんですが, なんどかコード打ちましたが、                                                       メソッドを追加した後のメソッド内でpictureboxあれこれというのは、                             メソッド内に書くのでしょうか?                                                                 

    public function setpictureboximage() as integer

    ・                                                                    ・

    end function

    と言うようにしてしまいました。でもfunctionプロシージャはクラス内部を定義するそうなので、                                                    あやふやながらもやっています。                                               こんなかんじでしょうか?                                                                                                                                                                                                                                                                                                                                      

    2007年1月12日 4:59

回答

  • 美流久さん、こんにちは。

    返信が前後してしまったので、こちらでも念のため言っておきます。
    他の人の発言を引用する場合は、[quote] ~[/quote] (すべて半角) で、くくってください。

    自分の投稿に、引用句 (>>) をつけるのはおかしいです。(普通は逆で、相手様につけるものです)
    それと、原色に近い背景色で相手の引用を表現するのは、コモンセンスに反しています。

     美流久 さんからの引用
    ええ、分かるんですがsubプロシージャだと、入出力情報の取得じゃないですか。
    functionプロシージャではプロシージャの実行結果を呼び出し元に返す。

    Sub と Function のキーワードの違いを何か誤解していませんか?
    Function は戻り値を持つメソッドです。Sub は戻り値を持たないメソッドです。

    "入出力情報の取得" という言葉が出てくること自体おかしいです。

    あ!って事は入出力になるんですかね!んーfunctionで考えていました^^;

    Function でも Sub でもどちらでもいいです。

    form1で取得したパスをform2からpublicメソッド使って入出力するってことですよね??引数のbyval byrefの違いがよくわからなくなっていました。

    引数が値渡しか参照渡しかは関係ないです。
    どちらでも、引数には正しい値が格納されます。

    以上のことから、それ以前の段階で躓いていると予想します。
    たとえば、全然別のインスタンスを渡しているなど。

    このあたりのインスタンスの概念は、前に説明したような気がしますけども。

    2007年1月24日 2:07

すべての返信

  • 美流久さん、こんにちは。

     美流久 さんからの引用
    メソッド内に書くのでしょうか?

    はい、外部から呼び出されるそのメソッド内に書かなければ意味がありませんよね?
    そのメソッド内で処理する理由は、そのクラス (Form) 内にいる PictureBox にアクセスするからです。

    ここに、PictureBox の Image プロパティに、生成した Image のインスタンスを適用してください。

    2007年1月12日 5:03
  • じゃんぬねっとさんおはようございます★

    あれからしてみたものの、form2の一番上に


        Public Function setpictureboximage() As String
            If setpictureboximage Then

            
                setpictureboximage = PictureBox1.Text _
                = PictureBox2.Text _
                = PictureBox3.Text _
                = PictureBox4.Text
                setpictureboximage = ("system.IO.Path.GetFileName")

         End If
        End Function


    としてみました。引数のパス表示違いますか??

    これではまだ反映されません・・・・トホホ。。

    ちなみに、pictureboxのimageプロパティは何もいじっていません、imageのインスタンスを適用ってどういう意味でしょうか??!

    2007年1月22日 1:35
  • おひさしぶりでっす。ジープです(・ω・)ノ

     

    おろ…Form1で取得したパスをForm2に渡して、Form2でPictureBoxに表示させるんでした…よね?

    多分それじゃ出来ないとおもいます…

     

    Public Sub と Private Subの違いはわかりますか?

    じゃんぬねっとさんの「Form2にPublicメソッドを追加する」というのは、From1からでもForm2からでもアクセスできるメソッドを追加する。という意味合いだと思われます。

     

    あとは、せっかくForm1で取得したファイルパスをどうすればいいのか、ということになってきますが…

    じゃんぬねっとさんの回答で「引数」という言葉がありました。

    「Form1からでもアクセスできるPublicメソッド」「Form1で取得したパスをどうすればいいか」「引数を使う」というのを念頭においてもう一度考えてみてください。

    (*´ω`)

     

    もし「引数ってなんぞや?」とゆーようなことがあれば調べてみてください。

    一応説明サイトのアドレスを乗せておきます。

    http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_k05.htm

    2007年1月22日 3:05
  • 美流久さん、お疲れ様です。

     美流久 さんからの引用
    引数のパス表示違いますか??
    Public Function setpictureboximage() As String

    ん? このメソッド... 引数、ないじゃないですか...

    If setpictureboximage Then
                setpictureboximage = PictureBox1.Text _
                = PictureBox2.Text _
                = PictureBox3.Text _
                = PictureBox4.Text
                setpictureboximage = ("system.IO.Path.GetFileName")

    それに、メソッド内にメソッドと同名の何かが記述されていますが...
    これは、何をしようとしているのでしょうか... 再帰呼び出しになっちゃいますけど...

    オペランドがめちゃくちゃになっていますし...
    何だか、無作法なオレオレ言語文法になっていますよ。

    メソッド (関数) と変数の違いはお分かりですよね?

    このあたりは、古き言語からの基本なので、ぜひ自分で勉強してみてください。

    これではまだ反映されません・・・・トホホ。。

    ちょっと気持ちだけ先に進みすぎだと思います。
    まだ、引数を渡すところまで言っていないのですから...

    これでは、三角関数がわからない人が、図面を書こうとしているような状態 になってしまいます。

    ちなみに、pictureboxのimageプロパティは何もいじっていません、imageのインスタンスを適用ってどういう意味でしょうか??!

    4 度目になりそうですが、先のことまで悩まない方が良いです。
    作業内容の見積もりができる人であれば、先を見据える必要がありますが、今はそういう時期ではないでしょう。

    まずは、引数をセットして、メソッド内には処理はまだ記述せず、
    引数が渡ってきていることを、MessageBox などに出力して実感することから始めましょう。

    それから、その引数を利用する手段を考えましょう。

    2007年1月22日 5:05
  • ジープさんお久しぶりです。

    遅くなってすみません。こんにちは^^

    おろ…Form1で取得したパスをForm2に渡して、Form2でPictureBoxに表示させるんでした…よね?

    >>そうです・・・・

    Public Sub と Private Subの違いはわかりますか?

    >>ええ、分かるんですがsubプロシージャだと、入出力情報の取得じゃないですか。functionプロシージャではプロシージャの実行結果を呼び出し元に返す。

    じゃんぬねっとさんの「Form2にPublicメソッドを追加する」というのは、From1からでもForm2からでもアクセスできるメソッドを追加する。という意味合いだと思われます。

    >>あ!って事は入出力になるんですかね!んーfunctionで考えていました^^;

    あとは、せっかくForm1で取得したファイルパスをどうすればいいのか、ということになってきますが…

    じゃんぬねっとさんの回答で「引数」という言葉がありました。

    「Form1からでもアクセスできるPublicメソッド」「Form1で取得したパスをどうすればいいか」「引数を使う」というのを念頭においてもう一度考えてみてください。

    >>form1で取得したパスをform2からpublicメソッド使って入出力するってことですよね??引数のbyval byrefの違いがよくわからなくなっていました。

    わかりました・・・ご迷惑おかけします・・・(汗

    URLありがとうございます。

    2007年1月24日 0:38
  • じゃんぬねっとさんこんにちは^^

    返事遅くなってすみません。

    ん? このメソッド... 引数、ないじゃないですか...

    >>このとき引数の意味が分かっておらず、そのあと少し勉強していました(涙

    それに、メソッド内にメソッドと同名の何かが記述されていますが...
    これは、何をしようとしているのでしょうか... 再帰呼び出しになっちゃいますけど...

    オペランドがめちゃくちゃになっていますし...
    何だか、無作法なオレオレ言語文法になっていますよ。

    >>これなんですが・・・・・・やけくそで意味分かんないコード作っていました。。ほんっとすみません。

    メソッド (関数) と変数の違いはお分かりですよね?

    >>分かります^^

    まずは、引数をセットして、メソッド内には処理はまだ記述せず、
    引数が渡ってきていることを、MessageBox などに出力して実感することから始めましょう。

    >>これなんですが。引数をセットしたあと、messagaboxを記入したんですが出力しないんです。ってことは引数がちゃんとセットされていないってことなんでしょうか??messageboxは同じpublicメソッド内で記入しています。

     

    2007年1月24日 0:52
  • 美流久さん、こんにちは。

    まず、他の人の発言を引用する場合は、[quote] ~[/quote] (すべて半角) で、くくってください。
    目が痛くて、みづらいです。

     美流久 さんからの引用
    分かります^^

    変数とメソッドの違いがわかっていれば、あのようなオレオレ文法はありえないでしょう。

    これなんですが。引数をセットしたあと、messagaboxを記入したんですが出力しないんです。ってことは引数がちゃんとセットされていないってことなんでしょうか??

    そうは言われましても、助けたくともコードがなければ指摘さえできないです。

    2007年1月24日 2:00
  • 美流久さん、こんにちは。

    返信が前後してしまったので、こちらでも念のため言っておきます。
    他の人の発言を引用する場合は、[quote] ~[/quote] (すべて半角) で、くくってください。

    自分の投稿に、引用句 (>>) をつけるのはおかしいです。(普通は逆で、相手様につけるものです)
    それと、原色に近い背景色で相手の引用を表現するのは、コモンセンスに反しています。

     美流久 さんからの引用
    ええ、分かるんですがsubプロシージャだと、入出力情報の取得じゃないですか。
    functionプロシージャではプロシージャの実行結果を呼び出し元に返す。

    Sub と Function のキーワードの違いを何か誤解していませんか?
    Function は戻り値を持つメソッドです。Sub は戻り値を持たないメソッドです。

    "入出力情報の取得" という言葉が出てくること自体おかしいです。

    あ!って事は入出力になるんですかね!んーfunctionで考えていました^^;

    Function でも Sub でもどちらでもいいです。

    form1で取得したパスをform2からpublicメソッド使って入出力するってことですよね??引数のbyval byrefの違いがよくわからなくなっていました。

    引数が値渡しか参照渡しかは関係ないです。
    どちらでも、引数には正しい値が格納されます。

    以上のことから、それ以前の段階で躓いていると予想します。
    たとえば、全然別のインスタンスを渡しているなど。

    このあたりのインスタンスの概念は、前に説明したような気がしますけども。

    2007年1月24日 2:07
  • じゃんぬねっとさんこんにちは^^

     

    返信が前後してしまったので、こちらでも念のため言っておきます。
    他の人の発言を引用する場合は、[quote] ~[/quote] (すべて半角) で、くくってください。

    こないだ、引用をクリックしてそのまま送信したら引用出来ていなくて、<quote></quote>なのかな?と思っていました><

    これで引用できてますか!!??

    自分の投稿に、引用句 (>>) をつけるのはおかしいです。(普通は逆で、相手様につけるものです)
    それと、原色に近い背景色で相手の引用を表現するのは、コモンセンスに反しています。

    すみません。これも以後きをつけます・・・

    引数が値渡しか参照渡しかは関係ないです。
    どちらでも、引数には正しい値が格納されます。

    以上のことから、それ以前の段階で躓いていると予想します。
    たとえば、全然別のインスタンスを渡しているなど。

    えと・・・・標準モジュールでやってみましたところform1のものがform2でmessageboxでできました。

    form1に↓

    module mainmodule

    public main as string="あああああ"

    end module

    って言う感じにしました。それからmsgbox(main)とするとform2であああああとでました。これで少し作業してみます

    このあたりのインスタンスの概念は、前に説明したような気がしますけども。

    なんどもなんどもごめんなさい;;

    ありがとうございます

    2007年1月24日 3:14
  • 美流久さん、こんにちは。

     美流久 さんからの引用
    すみません。これも以後きをつけます・・・

    口うるさいことを言って申し訳ありません。
    めげずに返信してくださったことに敬意を表します。

    えと・・・・標準モジュールでやってみましたところform1のものがform2でmessageboxでできました。

    ということは、やはり渡すべきインスタンスが間違っていたように思えます。
    どうしても解決できなければ、またミニマム コードなどを提示してください。

    大変だとは思いますが、頑張ってくださいね。

    2007年1月24日 5:29
  •  

     じゃんぬねっと さんからの引用

    口うるさいことを言って申し訳ありません。
    めげずに返信してくださったことに敬意を表します。

    いえ、間違った事があったら指摘して欲しい派なので口うるさいとか思っていませんよ

    言われて気づく事もありますから^^

    ということは、やはり渡すべきインスタンスが間違っていたように思えます。
    どうしても解決できなければ、またミニマム コードなどを提示してください。

    そうみたいです><;でも。。。今回は少し違うやりかたでやっていますが。。引数の事も含めメソッドの追加などきちんとやんなくては・・・・と思います(汗

    大変だとは思いますが、頑張ってくださいね。

    ありがとうございます★

    2007年1月24日 7:21