概要:StringGridを用い、sin関数を計算、結果をStringGridする。
<作業>
・ボタン配置 ・プログラム終了用にビットマップボタン1つ配置。プロパティーはbkClose。 ・StringGridを置く。 ・fixedcols=0とすると、列の固定型セルが消える。 ・ColCountを3に設定。列が3列になる。 ・列の見出しを付ける。左端から、回数・x・f(x)と表示させる。 これはフォーム生成時に書き込めばよいのでOnCreateイベントハンドラにソースを書く。 OnCreateイベントハンドラは、フォームそのもののダブルクリックでよい。 void __fastcall TForm1::FormCreate(TObject *Sender) { StringGrid1->RowCount = 1; // 見出し表示のために1行確保 StringGrid1->Cells[0][0]="回数"; StringGrid1->Cells[1][0]="x"; StringGrid1->Cells[2][0]="sin(x)"; } ・計算の繰り返し回数入力用にEditを配置。Textプロパティーをとりあえず1にする。 ・Labelを用い、Edit1が「繰り返し回数入力用フィールド」であることを示す。 ・xの刻み幅入力用にEditを配置。Textプロパティーをとりあえず45にする。 ・Labelを用い、Edit2が「刻み幅[deg]入力用フィールド」であることを示す。 ・ボタン1を押すと計算し、表示するようする。ボタン1のイベントハンドラの記述。 ボタン1をダブルクリック。 ・sin関数を使用するので、をインクルードしておく。 ・フォームのCaptionを”StringGrid”に。 以下、ソース。
/**************************************************************************** StringGridの使用 sin計算による ****************************************************************************/ //--------------------------------------------------------------------------- #include
#include #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { StringGrid1->RowCount = 1; // 見出し表示のために1行確保 StringGrid1->Cells[0][0]="回数"; StringGrid1->Cells[1][0]="x"; StringGrid1->Cells[2][0]="sin(x)"; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { int i,max; float kizami; float x = 0.0; // [rad] max = StrToInt (Edit1->Text); // 繰り返し回数を取得 kizami = StrToFloat ( Edit2->Text )*3.14159/180.0; // [rad] StringGrid1->RowCount = max+1; // 何行表示するかを決定 // max+1行 for ( i=1; i<=max; i++ ) { StringGrid1->Cells[0][i]=IntToStr(i); // 繰り返し回数 StringGrid1->Cells[1][i]=FloatToStr(x*180.0/3.14159);// 角度を表示 StringGrid1->Cells[2][i]=FloatToStr(sin(x)); // sin値を表示 x += kizami; } }