[リストへもどる]
一括表示

投稿時間:2004/04/12(Mon) 13:52
投稿者名:川島
URL :
タイトル:
マウスクリックでテキスト作成
フォーム上で左マウスクリックを押したら
テキストエリアを作るようにしたいのですが
マウス周りはなんとなくわかるんですが
どうやったらテキストエリアが作れるのかがわかりません。
OSは2000 verはVB6.0です。
よろしくお願いします。
pas:aaa

投稿時間:2004/04/12(Mon) 14:22
投稿者名:kamurin
Eメール:kamurin@hotmail.com
URL :
タイトル:
Re: マウスクリックでテキスト作成
> フォーム上で左マウスクリックを押したら
> テキストエリアを作るようにしたいのですが
> マウス周りはなんとなくわかるんですが
> どうやったらテキストエリアが作れるのかがわかりません。

テキストエリア=テキストボックスでしょうか?

Dim TextIndex As Integer'テキストボックスの数
form_Loadとかで初期化
TextIndex=1
Text(index-1).Visible = False

Private Sub Form_Click()'クリックした時に、テキストボックスを作成
    if TextIndex > 1 Then
        Load Text(TextIndex-1)'2つ目以降なら作る
    End If
    Text(index - 1).Visible = True
  TextIndex = TextIndex + 1
  クリック位置に移動
    Text(index - 1).Top=マウスのY座標
  Text(index - 1).Left=マウスのX座標
End Sub

でどうでしょう?

投稿時間:2004/04/12(Mon) 14:35
投稿者名:川島
URL :
タイトル:
Re^2: マウスクリックでテキスト作成
> テキストエリア=テキストボックスでしょうか?
>
> Dim TextIndex As Integer'テキストボックスの数
> form_Loadとかで初期化
> TextIndex=1
> Text(index-1).Visible = False
>
> Private Sub Form_Click()'クリックした時に、テキストボックスを作成
>     if TextIndex > 1 Then
>         Load Text(TextIndex-1)'2つ目以降なら作る
>     End If
>     Text(index - 1).Visible = True
>   TextIndex = TextIndex + 1
>   クリック位置に移動
>     Text(index - 1).Top=マウスのY座標
>   Text(index - 1).Left=マウスのX座標
> End Sub
>
> でどうでしょう?

Text(index-1).Visible = False
ここらへんで怒られます。(;_;)
先にテキストボックスを作って非表示にするべきでしょうか?
すいません、初歩的な質問で。

投稿時間:2004/04/12(Mon) 15:06
投稿者名:kamurin
Eメール:kamurin@hotmail.com
URL :
タイトル:
Re^3: マウスクリックでテキスト作成
> ここらへんで怒られます。(;_;)
> 先にテキストボックスを作って非表示にするべきでしょうか?
> すいません、初歩的な質問で。

すみません説明不足でした。
テキストボックスを配列で(プロパティのIndexを0)、で作って、
非表示にしておいて、実行してください。

投稿時間:2004/04/12(Mon) 15:14
投稿者名:サム
Eメール:
URL :
タイトル:
Re^3: マウスクリックでテキスト作成
Private Sub Form_Click()

    Form1.Controls.Add "VB.TextBox", "Text0"
    With Form1.Controls("Text0")
        .Visible = True
        .Height = 255
        .Width = 600
        .Top = マウスのY座標
        .Left = マウスのX座標
    End With
End Sub

で作れると思いますが、
私は、マウスのY座標、マウスのX座標の求め方がわかりません。
あとコントロール配列の作り方はよくわかりません。

投稿時間:2004/04/12(Mon) 15:33
投稿者名:kamurin
Eメール:kamurin@hotmail.com
URL :
タイトル:
Re^4: マウスクリックでテキスト作成
> 私は、マウスのY座標、マウスのX座標の求め方がわかりません。

これが一番簡単な求め方だと(求めるというか格納するだけ)
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
とか
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
等でマウスの座標(引数のX Y)をグローバル変数に格納
これで、Form上(上記イベントが起きる所)のマウス位置を取得

投稿時間:2004/04/12(Mon) 15:44
投稿者名:川島
URL :
タイトル:
Re^5: マウスクリックでテキスト作成
> > 私は、マウスのY座標、マウスのX座標の求め方がわかりません。
>
> これが一番簡単な求め方だと(求めるというか格納するだけ)
> Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
> とか
> Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
> 等でマウスの座標(引数のX Y)をグローバル変数に格納
> これで、Form上(上記イベントが起きる所)のマウス位置を取得

う〜ん、皆さんのおかげでだいぶできてきてるんだけどなぜか
1回クリックしたら「コントロール配列の1がありません。」
と警告が出てしまいました。
ちゃんとLoadで作ってあるのみたいなのになぜでしょう?

投稿時間:2004/04/12(Mon) 15:52
投稿者名:川島
URL :
タイトル:
Re^6: 解決しました。ありがとうございます。
kamurinさんサムさんご協力ありがとうございました。m(_ _)m
とりあえず完成いたしました。

Dim MusX As Single
Dim MusY As Single
Dim Index As Integer 'テキストボックスの数form_Loadとかで初期化
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
MusX = X
MusY = Y
End Sub
Private Sub Form_Load()
Index = 1
Text1(Index - 1).Visible = False
End Sub

Private Sub Form_Click() 'クリックした時に、テキストボックスを作成

    If Index > 1 Then
        Load Text1(Index - 1)
        '2つ目以降なら作る
    End If
    
    Text1(Index - 1).Visible = True
    'クリック位置に移動
    Text1(Index - 1).Top = MusY
    Text1(Index - 1).Left = MusX
    Index = Index + 1
End Sub

ほとんどkamurinさんの写しですが(笑)
本当に助かりました。