• ベストアンサー

C++Builder6.0 Memoの表示内容を1つのButtonをクリックごとに表示内容を変える

Form上のMemoコンポーネントにButtonを1度クリックすると Memo1->Lines->LoadFromFile->(\"a.txt\"); a.txtをMemoに表示し、(ここまでは表示できています) 同じButtonをクリック(2回目)すると a.txtとは違う内容をLoadFromFileを使って表示したいのですが、どのように表記したらよいのでしょうか。 ちなみにクリック3回目も違う内容の.txtを読み込みたいと思っているのですが… アドバイスございましたら宜しくお願いします。

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

  • ベストアンサー
  • yasuch
  • ベストアンサー率41% (27/65)
回答No.4

void __fastcall TForm1::Button1Click(TObject *Sender) { static int cnt = 0; switch(cnt) { case 0: Memo1->Lines->LoadFromFile("a.txt"); break; case 1: Memo1->Lines->LoadFromFile("b.txt"); break; case 2: Memo1->Lines->LoadFromFile("c.txt"); break; } cnt = (cnt + 1) % 3; }

その他の回答 (4)

  • yasuch
  • ベストアンサー率41% (27/65)
回答No.5

void __fastcall TForm1::Button1Click(TObject *Sender) { static int cnt = 0; char fname[][10] = {"a.txt", "b.txt", "c.txt"}; Memo1->Lines->LoadFromFile(fname[cnt++ % 3]); }

makefile
質問者

お礼

#4の御礼もご一緒にさせていただきます。 私の考えと、それよりもっと短い表現の両方から書いて下さり、ご親切にありがとうございました。 以前にも私の質問にyasuchさんがお答えしくれたのをおぼえております。 こんな初心者にもかかわらず、お答えを下さり、ありがとうございます。 大変参考になりました。

回答No.3

> 1回目はa.txt > 2回目はb.txt > を読みこむということがSwitch~Caseでできないかなと私が考えたまでです。 …なにが問題なのかわからんです。 const char* files[N] = { "a.txt", "b.txt", ... }; int count; // 0..N-1 の範囲 を用意し、ボタンが押されるたびに ++count して files[count] を LoadFromFile に与えればいいと思うけど。

makefile
質問者

お礼

お返事ありがとうございます。 私の知識の乏しさから、お話が上手くできなかったみたいですみませんでした。お答えありがとうございました。

回答No.2

> ButtonのClickをカウントするなんてことは可能でしょうか。 …何が問題なのかしら? カウンタとなる変数を用意して、ボタンが押されるたびにインクリメントすればいい。

makefile
質問者

お礼

Buttonをカウントすることによって 1回目はa.txt 2回目はb.txt を読みこむということがSwitch~Caseでできないかなと私が考えたまでです。 まったく初心者なものですみません…。 参考書にLoadFromFileを見つけたのですが、 epistemeさんのはじめにおっしゃった文字列に置き換えるというのを、よろしければ教えて頂けませんか。 ネットでもヘルプ読んでも書き方が理解できなくて… すみません。具体的に書いて頂けたらありがたいです。

回答No.1

"a.txt"改め適当な文字列型の変数にしておいて、クリックされるたびにその内容を書き換えれば。

makefile
質問者

お礼

お早くお返事ありがとうございます。 >クリックされるたびにその内容を書き換えれば。 変数の内容はどのように書けばいいのでしょうか。 私が考えた案ではButtonClickをカウントして、Switch~Caseでできないかと考えたのですが、ButtonのClickをカウントするなんてことは可能でしょうか。

関連するQ&A

  • C#でプログラミング リストボックスの内容を違うフォームのコンボボックスに呼び込みたいのですが

    Form1とform2がある。 form1には、combobox1とbutton1がある。 form2には、listbox1とbutton2がある。(ほかにも追加や削除ボタンあり) form1は実行されたときに表示されるフォームです。 form2はcombobox1の項目(リスト)を編集するフォームです。 項目を変更可能にしているので、txtファイルに書き込んだり、読み込んだりさせています。 プログラムを実行したときにcombobox1にテキストファイルが読み込まれます。 button1を押すと、Form2が表示され、listbox1に同じテキストファイルが読み込まれます。(form2では項目を追加したり、削除が可能です。)button2を押すとlistbox1の内容がテキストファイルに書き込まれ、form1に戻ります。ここまではできています。 しかし、combobox1には最初に実行させたときにしか、テキストファイルが読み込まれないので、form2で変更しても反映されません。 button2を押した時に、form1を更新したりできないのでしょうか?? どなたかわかる方はいませんか?? お願いします。

  • DelphiのTMemoのテキスト末尾の改行削除

    Delphiで付箋ソフトを作ろうとしています。 それで、Memoコンポーネント(TMemo)に入力されたテキストの末尾に改行があったら、それを削除したいのですが、改行があるかどうかを検知することすらできません。 Memo1.Lines.Strings[Memo1.Lines.Count-1] が最後の行の文字列の内容になるはずなのですが、末尾に改行があってもなくても、これ↑には同じ文字列(末尾に改行なし)が入っています。でも、表示上は異なっているんです。 どなたか、わかる方いらっしゃいましたら教えてください。

  • TRichEditコンポーネントに図形の描画方法

    画像データを含むRichTextをTRichEditコンポーネントのLoadFromFileメソッド(正確にはTRichEdit->Lines->LoadFromFileメソッド)で読みこんだときに画像が表示されません。どうしたらよいのでしょうか。 TRichEdit->LinesはTStringsクラスです。 使用言語はC++Builder 5.0、OSはWindows98です。

  • AVIファイルをロードする方法

    こんにちわ。 C++でファイルをロードするとき、LoadFromFileメソッドを使用しますよね? BitmapやTextならロードできるのですが、AVIファイルはどうやってロードすればよいのでしょうか? * 一般的なファイルをロードする例   if(OpenDialog1->Execute()){   Memo1->Lines->LoadFromFile(OpenDialog1->FileName); } これではAVIファイルをロードしてPanelなどのコンポーネントに表示させることができないのです。  どうか、ヒントでもアドバイスでもください!!!!  よろしくお願いします。

  • いままでbuttonが押された回数をリアルタイムで表示したい

    タイトル通りです。 <INPUT type="button" value="どうぞ"> が押されたとき、そのボタンの下に(どこでもいいけど)いままでそれがクリックされた回数をリアルタイムで表示したいんです。 例えば、今までボタンはAさん、Bさん、Cさんに合計100回押されていて、Dさんがbuttonをクリックすると、直後に[100]というのが[101]になってほしいんです。 なにかそういうタグはないでしょうか? (他のユーザにも継続するタグだから、CGIって感じがしたのでここに書きました)

    • 締切済み
    • CGI
  • HTMLとJSでtxet内容を表示したい

    下記のコードで質問があります。 仕様としてはtextに何かを書き込んで追加ボタンでテキストボックスの下に書き込んだ内容が表示され保存されるという風にしたいですが途中から何を書けばいいかわからなくなってしまいました。 ご指導お願いいたします <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <head> <body> <input type="text" id="form_txt"> <input type="button" width="50" value="追加" onclick="add_txt()"> <script> function add_txt() { var result = document.getElementById('form_txt'); /*ここからが何を書けばいいかわかりません・・・。*/ } </script> </body> </html>

  • デスクトップに常時表示されるカレンダー+メモのソフトありますか?

    スタートアップから常時表示され、日付には簡単なメモ(クリックして表示されるタイプではなく常にメモの内容が見えてるのが理想です)が書ける。 こんなソフトもしありましたら教えてください! 少し探したのですがどれも日付をクリックしてメモを表示するタイプしか見つけれませんでした。

  • クリックしたら内容を表示させたい(Excel)

    以下のような図をExcelに文字として書いています。 A ├B │├C │└D └C AにはB、Cがあり、CにはC、Dがあり…というような)。 内容が増えてくると、非常に見づらく、また、内容がかぶる ものも多いため(E、Fは両方とも中にC、Dを含む、とか)、 なんとか見やすくまとめられないかと考えています。 最初、Bの内容は非表示で、クリックしたら、C、Dが表示されるとか、 何か上手い方法がありましたら教えていただけないでしょうか?

  • テキストをAnsiStringに一括して読む

    C++BuliderXE2です。 テキストファイル(改行はない)をAnsiString にファイルサイズに関係なくC++で一括して読み込みたいのです。 fopen()、fread()などを使えばもちろんできるのですが、今回はC++でやってみようとしています。 下記の3通りを試したところ#1、#3は文法エラーはありませが、やりたいのは#2のような使い方で、 [BCC32 エラー] getratehtmlfile.cpp(445): E2288 -> か ->* の左には構造体のポインタが必要 となります。これはAnsiStringのメンバーのLoadFromFileがないということになるのでしょうか。 もちろん、可能な形式で読んだあと、AnsiStringに変換することは考えられますが、 #2のようなやりかたはできないのか教えて下さい。KoadFromFile以外ではどうでしょうか。 newの使い方も自信がありません。 AnsiString *astr=new AnsiString; TStringList *slist=new TSringList; slist->LoadFromFile("file.txt"); // #1 astr->LoadFromFile("file.txt"); // #2 Memo1->Lines->LoadFromFile("file.txt"); //#3 delete(astr); delete(slist);

  • delphiで、検索システムつくりたい

    今、delphiでこんなプログラミングをしようと思っているのですが行き詰ってしまっています。 詳しい方、もしよろしければ力をお貸しいただければと思います。 バイトで、スタッフの能力をできることの文章を複数チェックすることで登録し、 またそのできる事の内容や多さによって点数を算出しデータとして保存 また、逆にできることを複数チェックした時に当てはまる人を表示させる こういうプログラムを作りたいと思っています。 たとえば コンビニであれば 「レジ会計を一通りメモ及び指導を受けながらやることができる(5点)」 「5点までのレジ会計を50秒で行うことができる(5点)」 「5点までのレジ会計を40秒で行うことができる(5点)」 「5点までのレジ会計を30秒で行うことができる(5点)」 「品出しができる()」 ・・・ といった文章及び点数が並んでいます。 これをできるところを複数チェックさせることで人材を登録します 検索画面で できる事を複数チェックするとそれを満たした人の名前が出る仕組みとなっています。 現在でできているのが ・人材登録 できることを複数チェックして登録ボタンを押すと、 ※仮にスタッフ山田さんを登録する場合 (1)山田.txtファイルが生成されそこにできることが保存される Memo1.Lines.Add(Edit1.text + '.txt'); Memo1.Lines.SaveToFile(Edit1.text + '.txt'); という感じで (2)チェックされたできることの名前.txtファイルに名前が追加される(5点までのレジ会計を30秒で行うことができる.txt) Memo2.Lines.LoadFromFile(ComboBox1.text + '.txt'); Memo2.Lines.Add(Edit1.text); Memo2.Lines.SaveToFile(ComboBox1.text + '.txt'); ここまではできているので、 「5点までのレジ会計を30秒で行うことのできる人」が誰かはわかっても 「5点までのレジ会計を30秒で行うことのできる人」かつ「品出しができる人」を表示させる方法がよく わかりません この作ったtxtファイルを使いできる事があったら教えてほしいです。 最初に挙げた (1)人材をできることを述べた文章を複数チェックして登録し (2)できること複数チェックでほしい人材が探せる のによいプログラミングの方法があったら教えてほしいと思います。 よろしくお願いいたします。

専門家に質問してみよう