- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB6.0でフォームをずらして表示したいのですが)
VB6.0でフォームをずらして表示したいのですが
このQ&Aのポイント
- 以下のコードを実行すると、メッセージボックスに10としか表示されません。同じ場所にフォームが追加されていきます。
- 複数表示されているフォームを数える方法はないでしょうか?
- ご存知の方教えてください。よろしくお願いします。
- みんなの回答 (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
お礼
回答ありがとうございます。 言葉足らずですみません。 グラフの表示場所ですが、画面の中央より下に表示をさせようと思っていますので、座標指定をしたいのです。 今、スクリーン座標の取り方を調べているところです。 グラフは描画したあとに閉じたりするので、 現在画面上にでているForm2の数をカウントして、 10個まで表示できるようにしようと思っています。 Form2.Countは使えないみたいですね。 うまいこと動作してくれません。
補足
とりあえず、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