• 締切済み

VB A,Bフォームから同一Cフォームを呼び出し呼出元によってCの処理を変えたい

環境 WindowsXP SP3.0 VB6.0 宜しくお願いします。 表題通り、A.frm,B.frmという異なったフォームがあり、A.Bの処理で同一C.frmを C.Show 1 とモーダルで表示しています。 ここで、呼び出し元A,Bによって、C内部の処理を変えたいのですが Cの呼び出し元がAなのかBなのか、判定させるよいルーチンが思いつきません。 CのForm.Loadの引数に与えようと考えたのですが当然構文エラーになります。 Public変数を宣言して適当なパラメータを格納しC内で判定すればよい とは思うのですが、それはなるべく避けたいのです。 プロジェクト的には、A.vbpとB.vbpにフォームとしてC.frmを取り込んでいます。 よいアイデアや検索のヒントがあればご教授ください。

みんなの回答

  • don_go
  • ベストアンサー率31% (336/1059)
回答No.3

ANo.2 訂正 Public Property Get Mode() As Integer

  • don_go
  • ベストアンサー率31% (336/1059)
回答No.2

FormC Private mnMode As Integer Public Property Let Mode (n As Integer)   mnMode = n End Property Public Property Get Mode As Integer   mode = mnMode End Property FormA   Dim frmC As FormC   Set frmC = New FormC   frmC.Mode = n   frmC.Show 1   Debug.Print frmC.Mode

  • mindatg
  • ベストアンサー率48% (110/227)
回答No.1

長らくVB触ってないのでアテになるか分かりません 何をどのタイミングでしたいのか分からないのでアテずっぽうで適当に考えてみました。 これもpublic変数持たせるのと大差無い気もしますが '''FromC側 Private yobidashi as String Public Sub Hantei(hikisu as String) yobidashi = hikisu End Sub '''FromAとB dim c as FormC set c = new Fromc ' ここでInitialize c.Hantei("A") ' c.Hantei("B") c.show 要するにFormを表示する前にごにょごにょする。

関連するQ&A

  • VBPで教えてください。

    VB6で作成したプログラムが下記のようにプログラムというフォルダーの下に各フォルダーごとにあります。 EX プログラム    ・処理Aフォルダー(処理A.vbp,処理A.Frm,     処理A.bas・・・)    ・処理Bフォルダー(処理B.vbp,処理B.Frm,     処理B.bas・・・)               こんな感じでメチャメチャフォルダーがあります。 処理B.VBPで処理A.basを使用しているとします。 処理B.vbpのフォルダーには処理A.basはありません、追加モジュールとしてつないでいますのでパスをリンクしています。 処理B.vbpのテキストを開くと処理A.basはありますが、処理Bフォルダー上にはありません。 何をしたいかというと処理A.basを共有しているフォルダー名はどれなのか検索したいのですが、何かいい方法、ツール等ありますでしょうか? 処理A.basは沢山共有しています。VBPを開いて一つずつ探すのはとても数が多く大変なので。

  • C++2012でのフォーム切替

    いつも御世話になっております。 現在C++2012EXPRESSを使用し勉強を始めたばかりのものです。 早速質問なのですが、フォームの切替の仕方がわからず困っています。 #pragma once #include "Frm_Manual.h" ←追加 private: System::Void cmd_Manual_Click(System::Object^ sender, System::EventArgs^ e) { Frm_Manual^ form = gcnew Frm_Manual(); form->Show(); } 上記で追加したフォームを開く 上記の方法で追加したフォームを開くことが出来ました。 同様に追加したフォームからFrm_Mainを開きたいので #pragma once #include "Frm_Main.h" ←追加 private: System::Void cmd_Main_Click(System::Object^ sender, System::EventArgs^ e) { Frm_Main^ form = gcnew Frm_Main(); form->Show(); } とするとエラーが15個も発生してしまいます。 エラーはC2065,C2061,C2227の三種類です。 どこかでFrm_Main.hをインクルードする必要があると思うのですがどこに記入すればよいのかわかりません。 ネット検索もしたのですが、2つのフォームを交互に開くプログラムは検索できたのですが、現在行いたい処理は、フォームを5個作成し、切り替えるプログラムです。 VBでは簡単に出来たので、安易に考えていましたがつまいづいてしまいました。 よろしくお願いいたします。

  • 別プロジェクトを起動する

    DDE通信でA.vbpからB.vbpにデータを渡しています。 その際、B.vbpを立ち上げ忘れたらエラーになるので Aのフォームロード時にBも起動したいと考えています。 同プロジェクトならともかく、別プロジェクトのフォームを 同時に起動させることは可能なのでしょうか? またそれはどうやってすればよいのでしょう? DDE通信とかえらそうに書いてますが、ほとんど初心者です。 回答よろしくお願いします。

  • C#のフォーム間のデータの受け渡しについて

    はじめまして。よろしくお願いします。 最近C#をはじめましたがいきなりつまづいてしまいました。 クラスを利用しフォーム間でデータの受け渡しをしたいのですがどうすればいいのでしょうか? 処理は以下のようになっております まず、フォームが2つあります。フォーム1とフォーム2とします。 最初に起動されるのがフォーム1で、フォーム1にはボタンが2つあります。ボタンA、ボタンBとします ボタンA、ボタンBどちらのボタンを押下しても、フォーム2が開きますがどちらを押されてたかをフォーム2のテキストボックス(テキスト2とします)に表示します。 クラスですがフォームが2つとデータ保持のためのクラスが1つ(データ保持クラスとします)があります。 データ保持クラスにはint形のBtnClickプロパティ(get,set)を作成しております。, フォーム1のボタンA押下時処理  データ保持クラスのBtnClickに1を格納し、フォーム2を開きます。 フォーム1のボタンB押下時処理  データ保持クラスのBtnClickに2を格納し、フォーム2を開きます。 フォーム2起動時処理  データ保持クラスのBtnClickから値を取得しフォーム2のテキスト2へ表示します。 で、肝心の質問ですが、データ保持クラスの宣言はどこにすればいいのでしょうか? また、インスタンスはどのタイミングで作成すればいいのでしょうか? フォーム1にpublicとして宣言しインスタンスを作成し、ボタン押下時にBtnClickプロパティーにデータを格納し・・・ というところまではできたのですが、フォーム2で値が取得できないどころか、コンパイルが通りません。 あと、こういうデータ保持クラス使い方って一般的ですか?? 長々と脈略もなく書きましたがご教授ください。どうぞよろしくお願いします。

  • 引数

    VB の引数について prA.vbp(プロジェクト) の frAA.frx(フォーム) で  private sub comm_click()   shell "c:\work\try\prB.exe",vbNormalFocus  end sub prB.vbp(プロジェクト) の 標準モジュール内で public sub Main()  [password...]  frBB.show end sub ご質問内容で御座いますが  frAA.frx(フォーム) で入力されたパスワードを  "c:\work\try\prB.exe" を実行する時に引数として  prB.vbp(プロジェクト) の 標準モジュール public sub Main() に   引数を渡したいのですが、  prA の frAA , prB の Main でどのように記述すれば いいのでしょうか 以上 宜しくお願い申し上げます

  • エクセル/式 =OR(A1="A",A1="B",A1="C")について

    A1セルの値がA、B、Cのいずれかであるか否かの判定式は =OR(A1="A",A1="B",A1="C") だと思います。 しかし、いちいちA1=と書くのが面倒なので、 =OR(A1={"A","B","C"}) としてみたら案の定正しく判定されません。たぶんA1が単独の値で、{ }内が配列だからだと思いますが、その理解であっていますか? 次に、 =OR(A1:A1={"A","B","C"}) としたら今度は正しく判定するようですが、この式は=OR(A1="A",A1="B",A1="C")と同じ判定として正しいですか? 正しいとしたら、A1:A1と同じセル指定なのにこれを配列とみなしているのでしょうか?

  • vb2008 フォームのコピー方法を教えて下さい

    windows xp でVB2008を使っています。 「プロジェクトA」のフォームを別の「プロジェクトB」にコピーして使用したいのですが、プロジェクト間のコピー方法が良く分かりません。 フォームのエクスポート・インポートも見当たらないし・・ 初心者でゴメンなさい。教えて下さい。

  • C#でのフォーム間のデータの受け渡しについて

    フォーム間のデータ(パラメータ等)の受け渡しについて教えてください。 現在Form1からForm2を起動させる場合、以下のようにForm2のインスタンスの生成時のパラメータを設定してもForm2のLoadイベントでは拾うことはできないのでしょうか? ↓実際のコード //Form1クラスのインスタンスを作成する //引数(a,b) Form2 f = new Form2(a,b); //Form1を表示する //ここではモーダルダイアログボックスとして表示する //オーナーウィンドウにthisを指定する f.ShowDialog(this); //フォームが必要なくなったところで、Disposeを呼び出す f.Dispose(); また、上記の方法が違っていた場合、方法としてどのようなやり方があるのか教えてください。 よろしくお願いいたします。

  • (A-B)-C=(A-C)-(B-C)を証明まであと一歩

    A,B,Cがセットであったとして (A-B)-C=(A-C)-(B-C) を証明したいんです。 (ちなみに∈/は∈の上から/の線が入った記号です;元として含まれない、と読むのでしょうか…) (A-B)-C ≡(X∈(A-B))∧(X∈/C) ≡(X∈A∧X∈/B)∧(X∈/C) ≡(X∈A∧X∈/C)∧(X∈/B∧X∈/C) ≡(A-C)-(B-C) 最後の一行がジャンプしてますよね、きっと。 (X∈A∧X∈/C)はdifferenceの定義で直接(A-C)と出来ます。 (X∈/B∧X∈/C)はX∈/Bが邪魔してこのままでは出来ません。 もしかして、このX∈/Bの/を前にもってきて¬(X∈B∧X∈/C)としてもいいんですか? あと一歩です、お助けください。

  • VB6、何でフォームを先に保存しないといけないんでしょうか

    途中まで作ったプログラムがあるとします。 Aという路線で作ってきたプログラムです。 このままA路線でプログラムを作ると同時に 別のやり方であるB路線でも作りたい、と思いました。 つまりA路線とB路線で枝分かれするわけですから 一回ここでA路線用とB路線用の2つ保存しますよね。 ところが保存場所や名前も変えても フォームよりプロジェクトを先に保存すると 両方ともB路線になっちゃうんです。 フォームを先に保存してからプロジェクトを保存するとうまくいくんですが。 これは何かいみがあるんでしょうか? それともバグなんでしょうか?

専門家に質問してみよう