プロが教えるわが家の防犯対策術!

Private Sub Form_Load()

Form1.ScaleMode = 0
Form1.Scale (-10, 10)-(10, -10)

Form1.Line (-10, 0)-(10, 0)
Form1.Line (0, -10)-(0, 10)

End Sub

とやって座標画面を作ろうとしましたが
Lineが表示されません。
仕方が無いので
Private Sub Form_Load()

Form1.ScaleMode = 0
Form1.Scale (-10, 10)-(10, -10)

End Sub

Private Sub Form_Activate()

Form1.Line (-10, 0)-(10, 0)
Form1.Line (0, -10)-(0, 10)

End Sub

とやりました。
そういうものだとあきらめるしかないのでしょうか?

A 回答 (5件)

仕様です。


loadされた時点ではformそのものはまだメモリ内にしかなく、描画されていません。
ですのでformが描画された後にユーザ描画を行うようコーディングします。
    • good
    • 0

No.4ですが、すみませんねー。


Form1.Scaleを見過ごしてました。よく見ればすぐわかるんですけどね。(^^;
画面中央部を通る縦横一杯の直線が表示されますね。
フォームの大きさを変えても、下記のように変数を使ってフォームのサイズを取得し表示すれば、常に中央に線を引いてくれるようにもできます。
MeはForm1と同じ自身のフォームのことなのでForm1でもOKです。

Private Sub Form_Load()
  Me.ScaleMode = 0
End Sub
Private Sub Form_Resize()
  Dim xx As Long, yy As Long
  Me.Cls
  xx = Me.ScaleWidth / 2: yy = Me.ScaleHeight / 2
  Me.Scale (-xx, yy)-(xx, -yy)
  Me.Show
  Me.Line (-xx, 0)-(xx, 0)
  Me.Line (0, -yy)-(0, yy)
End Sub
 
    • good
    • 0

Form1.ScaleMode=0 ・・・ユーザー定義の単位なので、単位がどうなってるの?


それによっては、画面領域外に描画しているのでは。
定義を=3(ピクセル)とか、=6(mm)とかに変えて見た場合は?
Line文の前に Me.Show を入れForm表示にしてから描画。
 
    • good
    • 0

No1さんの言ってる事と同じになるんだけど・・・


ウィンドウが隠れた時に書いているのが問題じゃないかと思うので、Form1.Line以前に
Form1.Visible = True
または
Form1.Show
を入れるでは?
または、
Form1.AutoRedraw = True
にしておけば他のウィンドウに隠れた場合の再描画を考える必要も無いので、手っ取り早いのでは?
    • good
    • 0

Loadの時点ではフォームが表示されていないので、描画内容は実質無効になってしまっているのでは?



Paintイベントで描画するのが普通かと思います。
あるいは描画内容を保存するプロパティがあったような気もしなくもないですが…
    • good
    • 0

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