概要: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;
}
}