■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#11404-0カーソルって??浜ちゃん1999-12-10(金) 15:17
     #11426-0RE#11404:カーソルって??Rei1999-12-10(金) 17:03
     #11427-0RE#11426:カーソルって??浜ちゃん1999-12-10(金) 17:11
     #11428-0RE#11427:カーソルって??もと1999-12-10(金) 17:24
     #11441-0RE#11428:カーソルって??匿名114411999-12-10(金) 19:15
     #11442-0やってみましたが・・・。浜ちゃん1999-12-10(金) 19:16
     #11444-0RE#11441:カーソルって??もと1999-12-10(金) 19:27
     #11451-0ホントすみませんが・・・。浜ちゃん1999-12-10(金) 21:17
     #11452-0RE#11451:ホントすみませんが・・・。もと1999-12-10(金) 21:28
     #11454-0RE#11451:ホントすみませんが・・・。追加でこんなのでも…邪道ですがもと1999-12-10(金) 21:41
     #11472-0本当にありがとうございました!!浜ちゃん1999-12-11(土) 01:02
     #11545-0RE#11404:カーソルって??DAO1999-12-13(月) 14:29
#11404-0
カーソルって??
こんにちは。はじめてメール出します。ちょっと困ったことがあるので質問します。
今、カーソルを動かして、動いた分だけカウントさせるプログラミングを作成したいのですが、
(例えば右に1回なら、R1とか)・・・。カーソルを表す関数が解らず、困っています。
なにかいい情報を持っている方は教えてください。お願いします。
#11426-0
RE#11404:カーソルって??
> 今、カーソルを動かして、動いた分だけカウントさせるプログラミングを作成したいのですが、
> (例えば右に1回なら、R1とか)・・・。カーソルを表す関数が解らず、困っています。
> なにかいい情報を持っている方は教えてください。お願いします。

TextBoxでの話でいいのでしょうか?
KeyPressかKeyDownあたりで、何のKeyを押されたかチェックしてカウントする
って方法ではダメなんでしょうか。
#11427-0
RE#11426:カーソルって??
> > 今、カーソルを動かして、動いた分だけカウントさせるプログラミングを作成したいのですが、
> > (例えば右に1回なら、R1とか)・・・。カーソルを表す関数が解らず、困っています。
> > なにかいい情報を持っている方は教えてください。お願いします。
> 
> TextBoxでの話でいいのでしょうか?
> KeyPressかKeyDownあたりで、何のKeyを押されたかチェックしてカウントする
> って方法ではダメなんでしょうか。

  はい。Textなんですが、KEYDOWNで、カウントする方法がわかりません。
 実際やってみたら、ずっと1のままで、カウントされませんでした。
 なにかいい方法ありませんか?? 
#11428-0
RE#11427:カーソルって??
>   はい。Textなんですが、KEYDOWNで、カウントする方法がわかりません。
>  実際やってみたら、ずっと1のままで、カウントされませんでした。
>  なにかいい方法ありませんか?? 

 横槍で済みません。たまたま通りかかって目に付いたもので…

こんな感じでしょうか?
まずFormを作ってそこにTextを貼ります(Text1が出来ます)。
Textは何文字も入る大きさにして下さい。(height=615,width=1455くらい)
次にコードに以下のように書きます

Dim x As Integer
Private Sub Form_Load()
    x = 1000
    Text1.Text = x
End Sub
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 37 Then x = x - 1
    If KeyCode = 39 Then x = x + 1
    Text1.Text = x
End Sub

矢印キー ←で数字が減って、→で数字が増えていくでしょう…

上に書いたDim x As Integerは標準モジュールに書かないとフォームを閉じると消えてしまいます。
標準モジュールに変数宣言しておけば書き換えが継続できます。
#11441-0
RE#11428:カーソルって??
> こんな感じでしょうか?
> まずFormを作ってそこにTextを貼ります(Text1が出来ます)。
> Textは何文字も入る大きさにして下さい。(height=615,width=1455くらい)
> 次にコードに以下のように書きます
> 
> Dim x As Integer
> Private Sub Form_Load()
>     x = 1000
>     Text1.Text = x
> End Sub
> Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
>     If KeyCode = 37 Then x = x - 1
>     If KeyCode = 39 Then x = x + 1
>     Text1.Text = x
> End Sub
> 
> 矢印キー ←で数字が減って、→で数字が増えていくでしょう…
> 
> 上に書いたDim x As Integerは標準モジュールに書かないとフォームを閉じると消えてしまいます。
> 標準モジュールに変数宣言しておけば書き換えが継続できます。


やってみました。でも、カウントはされませんでした。
ずっと、1ばかりで・・・。
足された数が次のイベント時には消えてるみたいです。
なにかいい方法ありませんか??
#11442-0
やってみましたが・・・。
> > こんな感じでしょうか?
> > まずFormを作ってそこにTextを貼ります(Text1が出来ます)。
> > Textは何文字も入る大きさにして下さい。(height=615,width=1455くらい)
> > 次にコードに以下のように書きます
> > 
> > Dim x As Integer
> > Private Sub Form_Load()
> >     x = 1000
> >     Text1.Text = x
> > End Sub
> > Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
> >     If KeyCode = 37 Then x = x - 1
> >     If KeyCode = 39 Then x = x + 1
> >     Text1.Text = x
> > End Sub
> > 
> > 矢印キー ←で数字が減って、→で数字が増えていくでしょう…
> > 
> > 上に書いたDim x As Integerは標準モジュールに書かないとフォームを閉じると消えてしまいます。
> > 標準モジュールに変数宣言しておけば書き換えが継続できます。
> 
> 
> やってみました。でも、カウントはされませんでした。
> ずっと、1ばかりで・・・。
> 足された数が次のイベント時には消えてるみたいです。
> なにかいい方法ありませんか??
#11444-0
RE#11441:カーソルって??
> やってみました。でも、カウントはされませんでした。
> ずっと、1ばかりで・・・。
> 足された数が次のイベント時には消えてるみたいです。
> なにかいい方法ありませんか??

へ? 上のサンプルを実行しましたか?
必ず矢印キーでテキスト内の数字が 1000を境に増減しますが???
”1になる事自体ありえません。”

もしこのサンプルじゃなくて御自分のルーチンでしたらその一部抜粋して載せていただけませんか?
全く新規にプロジェクトを作成して先程のサンプルを実行してみてください。
テキストボックスに1000と言う数字が表示されてその後 矢印キーで1000から増減します。
右矢印が何回押されたか左矢印が何回おされたかをやりたいのでしたら変数宣言で
Dim R1 as Integer
Dim L1 as Integer
(・・・できば標準モジュールを作ってそこで宣言させてください。)

として
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
    'ここに変数宣言したらいつまでたっても増えませんから気をつけて
    If KeyCode = 37 Then L1 = L1 + 1
    If KeyCode = 39 Then R1 = R1 + 1
    Text1.Text = "L=" & L1 & "  R=" & R1 
End Sub

でキーボードの←キーを押した回数と→キーを押した回数が表示されます。
まさかとは思いますがテキストがアクティブになっていないとキー検出が出来ません
(このサンプルの場合ですが…)

まず 忠実にサンプルを実行して(必ず新規で作ってください)、動作が理解できるように
して下さい。
#11451-0
ホントすみませんが・・・。
実行してみたのは、

Dim x As Integer
      Private Sub Form_Load()
          x = 1000
          Text1.Text = x
      End Sub
      Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
          If KeyCode = 37 Then x = x - 1
          If KeyCode = 39 Then x = x + 1
          Text1.Text = x
      End Sub

これでいいんですよね。一番上の行を標準モジュールで、書いて。
やってみましたら、"1000"だったのが、→キーを押すと"1"になり、
←キーを押すと"−1"になりました。何回押してもおんなじです。
どうすれば良いんでしょうか?すみません。ホントに解らないので考えていただけるのが
とても嬉しいです。ありがとうございます。
#11452-0
RE#11451:ホントすみませんが・・・。
> 実行してみたのは、
> 
> Dim x As Integer
>       Private Sub Form_Load()
>           x = 1000
>           Text1.Text = x
>       End Sub
>       Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
>           If KeyCode = 37 Then x = x - 1
>           If KeyCode = 39 Then x = x + 1
>           Text1.Text = x
>       End Sub
> 
> これでいいんですよね。一番上の行を標準モジュールで、書いて。

 あぁ 説明不足でしたごめんなさい 本当にごめんなさい
 えっと 上の

 Dim x As Integer     は 標準モジュールに置く場合は

 Public x As Integer    と 書き換えてください。

 そうしないとグローバルな変数として処理されません。
 同じモジュール内で有ったときにはそのフォーム内では継続しているのですが…

> やってみましたら、"1000"だったのが、→キーを押すと"1"になり、
> ←キーを押すと"−1"になりました。何回押してもおんなじです。
> どうすれば良いんでしょうか?すみません。ホントに解らないので考えていただけるのが
> とても嬉しいです。ありがとうございます。
 
本当に説明不足でごめんなさい。
#11454-0
RE#11451:ホントすみませんが・・・。追加でこんなのでも…邪道ですが
先程は大変失礼致しました。私の説明不足でした。(反省しております)

> これでいいんですよね。一番上の行を標準モジュールで、書いて。

他には変数を使わず(標準モージュールも使わず)
Formを作ってTextBoxだけ貼って(サイズはさっきのサイズくらい)

Private Sub Form_Load()
    Text1.Text = 1000
    Text1.Locked = True
End Sub
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
    Dim x As Integer
    x = Val(Text1.Text)
    If KeyCode = 37 Then x = x - 1
    If KeyCode = 39 Then x = x + 1
    Text1.Text = Str(x)
End Sub

とすれば変数無くても結果が同じになりますね?
でもこれじゃ邪道ですか…ただこう言う手も有りますと言うことで…はい。
でわ頑張ってください。
#11472-0
本当にありがとうございました!!
> 先程は大変失礼致しました。私の説明不足でした。(反省しております)
> 
> > これでいいんですよね。一番上の行を標準モジュールで、書いて。
> 
> 他には変数を使わず(標準モージュールも使わず)
> Formを作ってTextBoxだけ貼って(サイズはさっきのサイズくらい)
> 
> Private Sub Form_Load()
>     Text1.Text = 1000
>     Text1.Locked = True
> End Sub
> Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
>     Dim x As Integer
>     x = Val(Text1.Text)
>     If KeyCode = 37 Then x = x - 1
>     If KeyCode = 39 Then x = x + 1
>     Text1.Text = Str(x)
> End Sub
> 
> とすれば変数無くても結果が同じになりますね?
> でもこれじゃ邪道ですか…ただこう言う手も有りますと言うことで…はい。
> でわ頑張ってください。


やってみました!結果は勿論OKでした。
ありがとうございました。お陰でだいぶ進むことが出来そうです。
良いものを作りたいです。
本当に有難うございました。
#11545-0
RE#11404:カーソルって??
>浜ちゃん

いまさらなんですけど・・・
今回の問題は、「変数をどこに定義したか、どの変数を使用しているのか」が
曖昧だったことから始まっています。

「オプション」の中にある「変数の宣言を強制する」にチェックを付けて、
全てのモジュールの先頭で「Option Explicit」の宣言をするように
しましょう。
こうすると、曖昧な変数定義ができなくなります。

「変数の定義」を略すクセを付けておくと、後々でまた痛い目にあいますよ。
えてください。お願いします。
このページと関連する記事:
#17431-0キーイベント2001-08-27(月) 11:34
#29237-0タブキーの入力チェック2002-06-07(金) 09:15
#2144-0テキストボックスで「エンターキー」を押した事を判定するには?1999-09-26(日) 10:29
#5512-0TextBox で INSERTキーで上書きモードを切替えたい1999-09-20(月) 16:51
#20091-0フォームのキーアップイベントが2回発生するのですが・・。2001-04-06(金) 11:07
#8987-010キーを押したときの内容変更2000-03-27(月) 12:43
#27736-0Form_LoadでのSetFocus2002-03-20(水) 15:41
#44956-0できると思うんですが。2001-07-13(金) 11:30
#36915-0よく分からないです2001-01-15(月) 14:08
#19780-0TextBoxで改行するには2001-03-25(日) 18:25
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)