お世話になります。VB6.SP3を使用しています。
早速ですが、画面が最大表示の状態でほぼ目一杯コントロールが並んでいるようなMDIではないフォームがあります。
このフォームをちょっと小さめにすると画面は小さくなりますが、中に配置されているコントロールが隠れてしまいます。
小さくした時に通常のウィンドウのようにスクロールバーが右・下に表示され、スクロールできるようにするにはどんな方法が一番簡単でしょうか?
見たところ、フォームのプロパティにはその設定ができるような属性がなかったようでした。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

基本的にVBのフォームには自動的にスクロールバーが


表示される機能はありません。
なので、自分でスクロールされるようにコーディングするしかないでしょう。
todo36さんの言うようにスクロールバーコントロールと
ピクチャコントロールを使えばできます。
簡単に説明するとピクチャコントロールの上に表示及び入力コントロールを
コンテナさせていき、スクロールバーによってそのピクチャコントロールを
上下左右に移動させて、あたかもフォームにスクロールバーが
ついているかのように見せる方法です。
サンプルは以下のサイトにあります。
そのサンプルでもピクチャコントロールを使用していますが、
ピクチャコントロールの場合、フォーカスを取得できてしまう為、
すこし動き的に変な感じがする場合がありますね。
フレームコントロール等のコンテナ可能なコントロールであれば
なんでもかまわないので、フレームコントロールを使う方が
すっきりします。

参考URL:http://www7.plala.or.jp/anan/sample/
    • good
    • 0
この回答へのお礼

詳しくありがとうございました。
結局、フォームを上下に分け、パネル形式にしてちょっとコンパクトにすることにしました。この方法は時間がある時にでも挑戦してみます。

お礼日時:2001/09/27 08:49

スクロールバーとピクチャボックスを使えば出来ます


http://www.microsoft.com/JAPAN/developer/library …

あるいは、市販の製品を使えば簡単に出来ます
VS-ViewのVSViewPort
http://www.boc.co.jp/support/database/P1_107.htm
    • good
    • 0
この回答へのお礼

結構難しそうですね。市販の製品は使えないのでちょっとページを覗いてみます。

お礼日時:2001/09/27 08:47

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QAccess2000のフォームでのフォームのIMEが、2度目以降変更してしまう。

アクセス初心者です。
Accsss2000のフォームでのデータ入力を楽におこなうために、例えば名前ならばテキストボックスのプロパティシートのその他タブから、IME入力モードをオンにしてかつIME変換モードを人名/地名に変更したのですが、1回目の入力はIMEが全角・人名モードになるのですが、2度目以降は半角カタカナ・人名/地名モードになってしまいます。全角ではありません。なぜでしょうか?
また上のタブにIME入力モード保持というのもありますが、どういう時に利用すればよいのでしょうか?

Aベストアンサー

> 1回目の入力はIMEが全角・人名モードになるのですが、
> 2度目以降は半角カタカナ・人名/地名モードになってしまいます。

恐らく、1回目の入力から2回目に当該テキストボックスへの移動までの
間に、半角カタカナを指定したテキストボックス(またはコンボボックス)を
経由しているのではないでしょうか。
(或いは『IME 入力モード』が「オフ」や「使用不可」、または英数系?)

ともあれ、回避策としては、『IME 入力モード』を、現在の「オン」から
「ひらがな」に変更します。
(「オン」は、「ひらがな/全角カタカナ/半角英数」などのモードを特に指定
 しない場合に使用します。そのため、特定モードで固定したい場合は、
 それに合わせた設定値(ここでは「ひらがな」)を指定する必要がある、
 ということです)


> 上のタブにIME入力モード保持というのもありますが、どういう時に
> 利用すればよいのでしょうか?

私自身はこの設定は使用していないのですが・・・(汗)

例えば、取引情報を入力する場合、『企業略称』テキストボックスには
「アルファベットの略称」や「漢字の略称」、「カタカナの略称」がそれぞれ
連続することになります。
このとき、同テキストボックスの『IME 入力モード』を「ひらがな」などに固定
してしまうと、アルファベットやカタカナの略称のデータを入力する際には
毎回手動で「全角カタカナ」や「半角英数」に切り替える・・・という使い方を
する方もいる可能性があります。
『IME 入力モード保持』は、恐らくそういう場合を想定した機能ではないかと
思います。
(もちろん、ひらがなからの変換で全角カタカナや半角英数に変換するように
 している人の場合は、切替は不要ですので、この設定は使用しなくても
 かまわないことになります)

> 1回目の入力はIMEが全角・人名モードになるのですが、
> 2度目以降は半角カタカナ・人名/地名モードになってしまいます。

恐らく、1回目の入力から2回目に当該テキストボックスへの移動までの
間に、半角カタカナを指定したテキストボックス(またはコンボボックス)を
経由しているのではないでしょうか。
(或いは『IME 入力モード』が「オフ」や「使用不可」、または英数系?)

ともあれ、回避策としては、『IME 入力モード』を、現在の「オン」から
「ひらがな」に変更します。
(「オン」は、...続きを読む

QVB.NET MDI親フォームのスクロールバー制御

開発環境:Windows XP、VB.NET 2005

MDI親フォームに複数のMDI子フォームを貼り付けるプログラムを作っています。
MDI子フォームを重ならないように配置させているのですが、MDI親フォームの表示領域を超えた場合に自動的にスクロールバーが現れます。
この時に、マウスのホイールの上下の動きにあわて、MDI親フォームのスクロールバーを制御して画面を上下させたいのですが方法が分かりません。

どなたかご享受ください。

Aベストアンサー

やるとすると MDIの親フォームのクライアントウィンドウに対して
WM_VSCROLL(または WM_HSCROLL)メッセージを投げてやる必要があるようです

MDIフォームクラスに
dim client as MdiClient
Declare Auto Function SendMessage Lib "User32" _
  (ByVal hWnd As IntPtr, ByVal uMsg As UInt32, _
   ByVal wParam As Int32, ByVal lParam As Int32) As Int32
const WM_VSCROLL as UInt32 = &H115
const WM_HSCROLL as UInt32 = &H114
を宣言します

Loadイベントで
for each ctl as Control in Controls
  if typeof ctl is MdiClient then
    client = ctl
    exit for
  end if
next

MouseWheelイベントで
dim wp as Int32 = 0
if e.delta < 0 then
  wp = 1
end if
SendMessage( client.Handle, WM_VSCROLL, wp, 0 )
といった具合でいいようですよ

やるとすると MDIの親フォームのクライアントウィンドウに対して
WM_VSCROLL(または WM_HSCROLL)メッセージを投げてやる必要があるようです

MDIフォームクラスに
dim client as MdiClient
Declare Auto Function SendMessage Lib "User32" _
  (ByVal hWnd As IntPtr, ByVal uMsg As UInt32, _
   ByVal wParam As Int32, ByVal lParam As Int32) As Int32
const WM_VSCROLL as UInt32 = &H115
const WM_HSCROLL as UInt32 = &H114
を宣言します

Loadイベントで
for each ctl as Control in Co...続きを読む

Qフォーム等入力時においてIMEが働かない(?)

よく起こる現象で、インターネットでフォーム入力や、Yahooとかの検索入力で日本語入力をしたいときに、IMEが働かない現象が起きています。半角英数のみ入力ができます。私の環境だけでしょうか‥。
キーボードの「半角/全角」キーが効かないので、IMEツールバーを出して、マウスで日本語入力の「あ」にしても入力画面では半角英数に戻ったりします。
Wordやメモ帳を起動すると、正常に働くので、メモ帳を立ち上げてそこへ入力して、コピーしてペーストをしたりして対処をしています・・。
常にメモ帳を立ち上げておけば解決とかの意味ではありません。
IEをアクティブウィンドウにした場合、IMEが働くなくのです。

Aベストアンサー

確かIEのバグだったと思います。

対処法のリンクを貼っておきますので、参考にしてください。
http://www.tku.ac.jp/~densan/local/ie7-ime/ie7-ime.html

QMDI:親フォームと子フォームを別EXEで実装するには

MDIでアプリケーションを作成したいと思っています。
その時に子フォームを親フォームとは別EXEで作りたいと思っています。
例えば
親フォームのボタンを押すと、子フォームEXEが起動し、親フォーム内に表示される。
このようなことは出来ますか?
出来るのでしたら、どうしたらよろしいでしょうか。
教えてください。

Aベストアンサー

手順的には
http://okweb.jp/kotaeru.php3?q=102408の#2
だと思います。
キーワードは「API関数:SetParent」
このAPIで、別EXEでもなんでも、内部に取り込むだけはできます。

しかしMDIを実現するためには、かなり制御を組み入れないといけません。
参考URLでも述べているように、最大領域だけならず終了時処理など、それ以外にも想像しえない本来のMDIとして用意されている標準制御を、実現しなければなりません。

かな~り手間だと思います。

QWebフォームのIMEモードを入力項目毎に自動切替

ある人と話していて、議論になったので質問します。世の中にはたくさんのウェブフォームがあって、名前や住所、電話番号などの登録情報を入力することが多々あります。あまり深く考えたことはなかったのですが、私はなんとなく、「名前や住所のテキスト入力時には自動的にIMEの入力モードが日本語(ひらがな)になり、電話番号やメールアドレスのテキスト入力時には英数になる」ものだと思っていました。自分でIMEを操作することなく、テキストフィールドにタブで移動したりもしくはマウスをクリックしたときにアプリケーション側で制御されるものが大半だと思っておりました。それを聞いてある人は「そんなことはない、世の中の大半のアプリはそんなことを制御していない、「普通」は自分でIMEで制御しながら入力するものだ」、と言っていたので議論になりました。これからウェブサイトを作ろうと思っているので、最終的にはこの議論はアプリ側にそのような実装をするかどうかというところに帰着するのですが、まずは「一般的にどうなのか」というところでご意見を頂きたいと思います。ちなみに、日本のメジャーなサイト(航空会社、ポータル、携帯電話、電気屋)10個でユーザ登録フォームを確認したところ、名前欄をクリックしてもいずれもIMEのモードはひらがなに変更されませんでした。そこで今は友人が正しくて、僕が間違っていたどころか、「そもそも、名前入力時に自動的にひらがなにモード変換されるようなサイトって本当にあるのだろうか。。」というような状態になっております。どなたか、教えてください。よろしくお願いします。

ある人と話していて、議論になったので質問します。世の中にはたくさんのウェブフォームがあって、名前や住所、電話番号などの登録情報を入力することが多々あります。あまり深く考えたことはなかったのですが、私はなんとなく、「名前や住所のテキスト入力時には自動的にIMEの入力モードが日本語(ひらがな)になり、電話番号やメールアドレスのテキスト入力時には英数になる」ものだと思っていました。自分でIMEを操作することなく、テキストフィールドにタブで移動したりもしくはマウスをクリックしたときにア...続きを読む

Aベストアンサー

IMEのON/OFFができるスタイルシート「ime-mode」は、Internet Explorerが独自に追加した仕様で、Internet Explorerでは入力モードが切り替わりますが、その他のブラウザでは保証されません。
http://www.htmq.com/style/ime-mode.shtml

今、確認したところ、IE8はもちろん切り替わり、Firefox 3.6も切り替わりましたが、Google Chromeは切り替わりませんでした。
Opera,Safari,Sleipnir…等は試してません。

大手のサイトでは「より多くのブラウザで表示できること」が求められますので、独自仕様の「ime-mode」を使っているところは少ないのではないでしょうか。
逆に「Internet Explorerしか表示できなくて良い」と割り切ってるサイトや、社内だけに公開するようなページは「ime-mode」が使われていると思います。

QMDI親フォームで子フォーム開放を知る

はじめまして。VB.NET2005でプログラミングをしている初心者です。
MDIフォームのAPを作成しています。
MDI親フォーム1つと子フォームが2つあるとします。

親フォームから子フォーム2つをShowします。
子フォーム1を閉じたときに、親フォーム内で子フォーム1が閉じられた事を知るすべは無いのでしょうか。
親フォーム内で起こるイベントでどの子フォームが閉じられたかを得たいと思っています。

どなたか分かる方いらっしゃいましたらご教授ください。
宜しくお願い致します。

Aベストアンサー

#1さんと同じw

ただ「Dispased」だとどちらが終了したのか分からないんじゃ…
で、すなおに「Form_Closing」か「Form_Closed」がいいのでは?

子フォームを開く前に下記追加
AddHandler ChildForm.FormClosing, AddressOf ChildForm_FormClosing

親フォームのどこかに下記追加
Private Sub ChildForm_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs)
  Dim frm As Form = DirectCast(sender, System.Windows.Forms.Form)
  MessageBox.Show(String.Format("formname=[{0}] frmtext=[{1}]", frm.Name, frm.Text))
End Sub

QACCESS フォーム上 テキストボックスを移動するごとに文字の入力モードが戻ってしまう

ACCESSでフォーム上で入力をしています。
テキストボックスを移動するごとに半角英数になってしまい非常に不便です。

テーブルではIME入力モード:ひらがな、IME返還モード:一般としています。
テーブルのデザインビューの状態では指定している通りのひらがなで入力できるのが、フォームになると半角英数の状態です。
フォームのプロパティから何か設定を変更しなければいけないのでしょうか?
よろしくお願い致します。

Aベストアンサー

maigo-no-konekoさん
ACCESS2000では次の機能があります。
テーブルの項目定義のIMEの設定内容が引き継がれる仕様なのか
否か不明ですが、フォームの定義画面でテキスト項目やコンボボックス
など入力項目毎に指定します。
(ただし、シフトキーを押しながらマウスクリックすることで
複数選択できます)

1)テキストポックスのプロパティ画面を呼び出します。
2)その他 タブにIME関連の項目があります。
  IME入力モード保持 直前に入力した項目のIMEの入力設定
  状態を引き継ぐ場合は「はい」にします。直前の入力項目の
  設定によらない場合は「いいえ」にします。
  IME入力モード オンまたはひらがな等にします。
           ここでご希望の入力方法を選択します。
  IME変換モード 一般(人名や地名などを入力す場合は
  人名/地名)にします。

QVB2010でMDI親フォームから子フォームを表示

VB2010でソフトを作っております。
MDI親フォームから子フォームを表示させたいのですが…。
過去に少しだけVB6を使っていたことがありますが、クラスという概念に苦労しております
インスタンスや初期化といったところをうまく扱えばとは思うのですが、よろしくご指導お願いいたします。

1.MDI親フォーム(Form1)のボタンを押し、子フォーム(Form2)を表示させる
2.子フォームが表示されていなかったら表示させる
3.子フォームが表示されていたら何もしない

これだけの事ですがずいぶん悩んでおります。
全コードがこれです。

Public Class Form1
Private f2 As New Form2

Private Sub Form1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.IsMdiContainer = True
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim fChild As Form() = Me.MdiChildren
For Each f As Form In fChild
If f.Text = "Form2" Then
Exit Sub
End If
Next


f2 = New Form2
f2.MdiParent = Me
f2.Show()
f2.Activate()

End Sub


Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

If f2 Is Nothing OrElse f2.IsDisposed Then
f2 = New Form2
f2.MdiParent = Me
End If
f2.Show()
f2.Activate()

End Sub

End Class


ボタン1でもボタン2でも、期待する動作はするのですが、

ボタン1ではアクティブになっているフォームの名前を力技で取得している気がして…
ボタン2では子フォーム(Form2)をすでに表示している状態でもさらにShowをしているのが気に入らなくて…

もっとスマートな方法がありましたら、ご指導お願いします。

VB2010でソフトを作っております。
MDI親フォームから子フォームを表示させたいのですが…。
過去に少しだけVB6を使っていたことがありますが、クラスという概念に苦労しております
インスタンスや初期化といったところをうまく扱えばとは思うのですが、よろしくご指導お願いいたします。

1.MDI親フォーム(Form1)のボタンを押し、子フォーム(Form2)を表示させる
2.子フォームが表示されていなかったら表示させる
3.子フォームが表示されていたら何もしない

これだけの事ですがずいぶん悩んでおります。
全コード...続きを読む

Aベストアンサー

Private f2 As New Form2

Private f2 As Form2
にして

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

If f2 Is Nothing OrElse f2.IsDisposed Then
f2 = New Form2
f2.MdiParent = Me
f2.Show()
End If
f2.Activate()

End Sub

としてみては?

QAccess フォームのテキストボックスに半角英字のみで入力する設定は

IME入力モードをテーブル・フォームともオフにしたのですがひらがな入力モードになってしまいます。
フォームのテキストボックスに半角英字のみで入力する設定としてプロパティのIME入力モードをオフにするやり方自体が間違っているのでしょうか。
それともATOKを使っているなど利用するパソコン側の問題でしょうか

Aベストアンサー

IME入力モードを「使用不可」にしましょう。

Qタブコントロールを含んだフォームのスクロール位置

フォームの中にタブコントロールを入れ、その中にさらにフォームを入れ込んであります。

タブをクリックすると、タブ内のフォームの中のサブフォームにフォーカスが行ってしまうので
メインフォームの中にある「見積番号」のフィールドにフォーカスが行くように
下記のVBAを書いてみたのですが、うまくフォーカスが行きません。

何が原因なのでしょうか。

----------------------------
Private Sub パターン1_Click()
Forms!F_C_1_☆新規作成_パターン.SetFocus
Forms!F_C_1_☆新規作成_パターン!見積番号.SetFocus
End Sub

Aベストアンサー

>タブをクリックすると、タブ内のフォームの中のサブフォームにフォーカスが行ってしまうので
サブフォームの、プロパティのタブストップを「いいえ」にするだけで十分では?


人気Q&Aランキング

おすすめ情報