• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB6.0でフォームをずらして表示したいのですが)

VB6.0でフォームをずらして表示したいのですが

このQ&Aのポイント
  • 以下のコードを実行すると、メッセージボックスに10としか表示されません。同じ場所にフォームが追加されていきます。
  • 複数表示されているフォームを数える方法はないでしょうか?
  • ご存知の方教えてください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • OMEGAT
  • ベストアンサー率70% (455/642)
回答No.1

以下のようにして起動したフォームを数えればできると思います。 自動的に少しずつずらすのであれば、Form2のStartUpPositionプロパティを3にしておけばWindowsが勝手に制御しますが、それでは機能的に問題があるのでしょうか。 Dim GraphNumber As Integer Private Sub CMD_drow_Click() Dim GraphForm As New Form2 'グラフカウント GraphNumber = GraphNumber + 1 'MsgBox GraphNumber 'グラフ表示 GraphForm.Show '表示位置の設定 With GraphForm If GraphNumber <= 5 Then ' .StartUpPosition = 0 .Top = GraphNumber * 100 .Left = 0 Else ' .StartPosition = 0 .Top = (GraphNumber - 5) * 100 .Left = 300 End If End With End Sub

ddtqp
質問者

お礼

回答ありがとうございます。 言葉足らずですみません。 グラフの表示場所ですが、画面の中央より下に表示をさせようと思っていますので、座標指定をしたいのです。 今、スクリーン座標の取り方を調べているところです。 グラフは描画したあとに閉じたりするので、 現在画面上にでているForm2の数をカウントして、 10個まで表示できるようにしようと思っています。 Form2.Countは使えないみたいですね。 うまいこと動作してくれません。

ddtqp
質問者

補足

とりあえず、Froms.Countを見つけたので、それで対処しました。 ありがとうございます。 Private Sub CMD_drow_Click() Dim tRectangle As Rectangle ' Rectangle 構造体宣言 Dim GraphForm As New Form2 Dim intGraphNumber As Integer GraphForm.Picture2.BackColor = vbWhite 'グラフ背景色:白 GraphForm.Show 'グラフ表示 intGraphNumber = Forms.Count - 1 'グラフカウント ' ワークエリアを取得する Call SystemParametersInfo(SPI_GETWORKAREA, ByVal 0&, tRectangle, ByVal 0&) 'スクリーン座標設定 ピクセルから Twip(VBの座標) に変換 With tRectangle .Left = .Left * Screen.TwipsPerPixelX .Width = .Width * Screen.TwipsPerPixelX .Top = .Top * Screen.TwipsPerPixelY .Height = .Height * Screen.TwipsPerPixelY 'グラフ移動 Call GraphForm.Move(intGraphNumber * 500, Form1.Height) End With 'Call graph_drow End Sub

関連するQ&A