• ベストアンサー

簡単なチャットを作るにあたって

テクストボックスを2個用意して(Text1、Text2)Text2で文を書いてエンターキーを押すとText1にその文を表示させたいのですがどうしたらできるのでしょうか? 書いた文が自動的に改行されたものをつくってるんですが、なぜか1行しかかけず新たに書いても改行がされませんでした。 初心者質問ですみません^^;

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

  • ベストアンサー
  • don_cha
  • ベストアンサー率34% (139/407)
回答No.4

度々です。 Text1で次のような表示 -------------------------------------- 太郎:こんにちは 次郎:こんにちは -------------------------------------- 「太郎:こんにちは」この場合「太郎:」は自動的に付け加えられるもの、「こんにちは」が入力されたテキスト、太郎さんはText2で入力、次郎さんはText3で入力し、それらをText1に表示させると言う前提であれば、テキストボックスText3を追加し、先ほどのコードを改造&追加で・・・ Private Sub Text2_KeyPress(KeyAscii As Integer)   If (KeyAscii = 13) Then     Text1.Text = Text1.Text + vbCrLf + "太郎:" + Text2.Text     Text2.Text = ""     KeyAscii = 0   End If End Sub Private Sub Text3_KeyPress(KeyAscii As Integer)   If (KeyAscii = 13) Then     Text1.Text = Text1.Text + vbCrLf + "次郎:" + Text3.Text     Text3.Text = ""     KeyAscii = 0   End If End Sub ってな感じで実現可能です。

1kou
質問者

お礼

大変参考になります^^!!v お返事遅れてすみませんでした。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • craftsman
  • ベストアンサー率49% (166/336)
回答No.3

 ええっと・・・とりあえず一つのフォーム上にText1、Text2が並んでいる状態を前提でよいでしょうか?  VBのプログラムは、イベントドリブンで動作します。  つまり、Text2に文字列を入力し、エンターを押した時、それをイベントとして検出しなければなりません。  VBのTextBoxコントロールには、Changeと言うイベントがあります。  従って・・・ Private Sub Text2_Change() End Sub  の中に、Text2に入力された文字列をText1に複写するコードを記述すれば良いでしょう。  TextBoxコントロールに入力された文字列は、Textと言うプロパティーに格納されています。  Textプロパティーは、読み書き可能なプロパティーです。  ですから・・・。 Private Sub Text2_Change() Text1.Text = Text2.Text End Sub  このように記述すれば、Text2のTextを変更する度にText1のTextも同じ内容に書き換わります。  ところが・・・ここで問題が発生します。  TextBox2.Changeイベントを使うと、Enterを押す前にどんどんText1の内容も書き換わって行ってしまいます。  そこで・・・。 Private Sub Text1_KeyPress(KeyAscii As Integer) End Sub  TextBoxのイベントを調べて見ると、おあつらえ向きなKeyPressと言うのがあります。  これはTextBox上で何らかのキーボードを押すと発生するイベント。  KeyAsciiと言う変数の中に、押されたキーのキーコードが格納されています。  従って・・・。 Private Sub Text2_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text1.Text = Text2.Text End If End Sub  このように記述すれば、Text2上でEnterを押した時のみ、Text2.TextがText1.Textに複写されます。 >書いた文が自動的に改行されたものをつくってるんですが、なぜか1行しかかけず新たに書いても改行がされませんでした。  TextBoxのMultiLineプロパティーをTrueにして下さい。  デフォルトのFalseの状態では、1行しか記入/表示できません。  この例では、単純にText2.TextをText1.Textに複写しているだけなので、このままチャットって訳には行きませんが。  一応使えそうなTextBoxのイベントとプロパティーの使い方のサンプルって事で。

全文を見る
すると、全ての回答が全文表示されます。
  • don_cha
  • ベストアンサー率34% (139/407)
回答No.2

Text1のMultiLineプロパティを「True」、ScrollBarsプロパティに「2 - 垂直」を設定し、フォームのコードに次のコードを書けば実現できます。 Private Sub Text2_KeyPress(KeyAscii As Integer)   If (KeyAscii = 13) Then     Text1.Text = Text1.Text + vbCrLf + Text2.Text     Text2.Text = ""     KeyAscii = 0   End If End Sub 不明な点が有れば、補足します。

1kou
質問者

補足

ありがとうございます!!感動です!!できました。 もう少し聞きたいのですが、たとえば  太郎:こんにちは 等のように名前つきで文章を書くにはどうしたらいのですか?

全文を見る
すると、全ての回答が全文表示されます。
  • HUTABA
  • ベストアンサー率27% (436/1611)
回答No.1

改行の文字コードは13です。 Text2の方は、入力されるたびに文字コードを確認して、改行が入力されたらText1の方に表示させると良いと思いますよ。 Text1の方は、MultiLineがTrueになっているかを確認してください。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • パワーポイントの行間隔設定について

    パワーポイントのテキスト入力で行間隔設定について質問がございます。 改行方法としてエンターキーを押しての改行と何もしないで右端までくると自動で折り返す改行と二通りあるかと思いますが、 自動で折り返した際の行間隔を指定することは可能なのでしょうか。 お手数かけますがどうぞよろしくお願いいたします。

  • VB6 TextBoxの先頭が自動改行されてしまう

    中を見ていただき、ありがとうございます。 Visual Basic 6.0 をWinXP SP3で使って、メモを作っています。 機能としては非常に単純で、書き込み用のテキストボックス(以下Text1とします)と記録用のテキストボックス(つまりLocked=Trueとして書き込めないようにしている:以下Text2とします)があって、(1)Text1にメモを書いてEnterを押せば、(2)その内容がText2に転写され、(3)Text1の内容は消える、というものです。 ところが、以下のプログラムによってこれを実装しようとしたところ、Text1からText2への転写はうまくいくものの、2回目以降はText1の1行目が自動的に改行された状態になってしまい、必ず2行目から文章を打たなくてはいけないようになってしまいます。 Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then Text2.Text = Text2.Text & vbclrf & Text1.Text Text1.Text = "" End If End Sub 使用する上では特に問題無いのですが、見た目が少し悪いので、この1行目の「自動改行」をキャンセルする方法をご存知の方がいらっしゃいましたら、ご教授くださいますようお願い致します。

  • 複数行のエディットボックスで改行入力

    複数行のエディットボックスで改行入力 MFC ダイアログベースで、簡単なテキストエディタを作成しています。 エディットボックスは固定サイズで、縦横スクロール無しにしています。 上記エディットボックスに、改行の無い2行分の文字列を出力すると自動的に折り返され、 2行で表示されるのですが、そのとき、2行目の行頭でEnterキーを押すと、 カーソル位置で改行し、空行が挿入されます。(計3行分の表示となる) 10文字文の幅のエディットボックスにて、 文字列 "12345678901234567890" をエディットボックスに出力 エディットボックスでは下記の用に表示。 1234567890 1234567890 2行目の先頭でEnterキー押下で3行表示となる 1234567890 (空行) 1234567890 実際には、1行目の終わりに改行コードが挿入されているので 空行ではなく、改行された状態の2行表示としたいのですが、 どのようにすれば、よいでしょうか? よろしくお願いします。

  • エクセルのテキストボックスで幅を固定、縦方向自動にできますか

    エクセルで、多くの文字列を入力する場所が必要で、普通にエンターキーで改行するために、テキストボックスの使用を考えています。 サイズを自動にしておくと最初は小さなボックスが表示されていて、改行せずに文字を入れていくと横幅がどんどん広がってしまいます。 これを、横幅は決まったサイズにしておいて、文字数に応じて下にボックスが伸びていくようにできますでしょうか。 ご教示よろしくお願いいたします。

  • 別ファイルからテキストを抽出

    お世話になっています。 タイトルにあるように、別ファイルに記述のあるテキスト(改行あり)から、そのテキストを1行で変数に代入したく、以下のようにしています。 $file = "http://~"; $text = file($file); for($i=0: $i<count($text); $i++){  $text_data .= $text[$i]; } #上記スクリプトはコピペじゃなく、今手元で記述したもなので、間違っていたらすみません。 上記スクリプトにより変数に代入された1行テキストを他のスクリプトに利用したいのですが、上手くいかず、色々と試しているなかで、$text_dataを出力してメモ帳にコピペしてみると、何箇所かに改行されているところが確認できました。 改行されているところとは、元のファイルを作成する際、エンターキーにより改行されているところなのですが、改行されている前後をコピペする分には問題ないものの、テキスト全文(文字数は1万文字を数える)をコピペすると、エンターキーによる改行箇所(全てじゃないです)が、メモ帳において改行されてしまいます。(普段使っているterapadでは全てがコピペできていない) このような状況なのですが、別ファイルからテキストを1行として取得するには、どのようにしたら良いのでしょうか? 勉強不足でfile()を利用していますが、他の方法が思いつかず利用しているので、別の方法でも構いません。ご教示のほど宜しくお願い致します。

    • ベストアンサー
    • PHP
  • VBテキストの折り返し

    いつもお世話になります。 複数行の入るテキストボックスがあります。 ああああああああああ と入れるとテキストボックスの大きさの関係で ああああ ああああ ああ となります。この自動で改行されている部分は どんな変数が割り当てられているのでしょうか? chr(13) chr(10)は改行ですが、それとは 違いますよね?

  • Excel2003で作成したファイルをExcel2007で開くとテキストボックスの不具合

    Excel2003で作成したファイルをExcel2007で編集しています。 ファイル内にテキストボックスがあるのですが、2003の場合、文字数が多くなれば自動で改行されてテキストボックス内に表示されています。 ところが同じExcelファイルを2007で開いて編集しようとした場合、改行されずに全て1行で表示しようとしているため、文字列が途中で途切れてしまいます。 テキストボックス自体を2007で新しく作り直すしかないのでしょうか? なお、このファイルを2003で開いた場合、なにか問題はありますか?

  • テキストボックスに改行を含む値を表示する場合

    テキストファイルより1行ずつ値を改行「chr(13)」でつなげて取得し、それを テキストボックスに表示させたいのですが、そのまま値をテキストボックスの textプロパティに設定すると、改行が「・」で表示され改行されていません。 テキストボックスのプロパティでMultiLineもTrueにしてあるのですが、これは 無理なことなのでしょうか? 一行ずつ取得してテキストボックスに表示する際に改行を設定していくしかない のでしょうか? 詳しい方いらっしゃいましたらご教示ください。 よろしくお願いいたします。

  • テキストボックスでの行の認識

    テキストボックスで2行以上入力不可にしたいんですが、方法が分かりません。 単に改行を含むのならEnterキーの2回目を押せなくすればいいのですが、テキストボックスって端までいくと自動的に2行になりますよね。この場合は改行コードが入ってないんです。だから単純にEnterキーの制御だけでは出来ないんです。 なにか良き方法が有れば教えていただけないでしょうか?

  • パワーポイントのテキストボックス

    パワーボイント2002のテキストボックスで質問があります。 テキストボックスを作成し、文章を入力したら、長ければ自動的に改行になりますが、2行目の頭にスペースを入れたいんです。 例えば 1.文章・・・・・・ ・・・・・文章 を 1.文章・・・・・・   ・・・・・文章 と、したいんです。 でも、スペースを受けつけてくれません。 よろしくお願いいたします。

奥さんを中身で選んだ有名人
このQ&Aのポイント
  • 奥さんを中身で選ぶ有名人について知りたいです。
  • 中身の美しさを重視して奥さんを選んだ有名人はいますか?
  • マークザッカーバーグ氏は中身を重視して奥さんを選びました。
回答を見る