月別: 2014年1月

肥満度判定プログラム

テキストの入出力にチャレンジしてみました。お馴染み肥満度プログラムです。
まず最初は準備です。
フォームに、「Label」を4つ、「Edit」を5つ、「RadioGroup」を1つ、「BitBtn」を1つ、貼り付け、位置を調整します。
LabelのCaptionには文字(下記イメージ)を入力し、Editの初期文字列は削除します。
BitBtnの「Kind」プロパティで「bkOK」を選択します。
RadioGroupは、Itemsプロパティをダブルクリックすると、文字列を設定するダイアログが出ますので、「男性」と入力し、Enterをクリック「女性」と入力し、Enterをクリックします。

text-1

実行結果

himando

プログラム(プロシジャーのみ)

procedure TfrmBMI.btnOKClick(Sender: TObject);

   Type
   //Gender型を宣言(maleかfemaleしかとらない)
   Gender = (male,female);
   var
   //変数の宣言
   //Extended型は10バイトの実数値
    height,
    weight,
    BMI,
    max,
    min :Extended;
    sex :Gender;

begin
     //性別をチェックする
     case RadioGroup1.ItemIndex of
      0 : sex := male;
      1 : sex := female;
      else
        ShowMessage('性別を入力してください');
     end;

     //データの取り込みと計算
     height := StrToFloat(Edit1.Text) / 100;
     weight := StrToFloat (Edit2.Text);

     BMI := weight / (height * height);
     Edit4.Text := FloatToStrF(BMI, ffFixed,4,2);
   //判定
     case sex of
       male: begin
          if (BMI >= 0 ) and (BMI <19 ) then
          begin
            Edit3.Text := '体重が少なすぎます'
          end;
          if (BMI >= 19) and (BMI <=24) then
          begin
            Edit3.Text := '体重は正常範囲です'
          end;
          if (BMI >= 24) and (BMI <=29.4) then
          begin
            Edit3.Text := '体重が多すぎます'
          end;
          if (BMI >=29.4) then begin
            Edit3.Text := '肥満傾向が顕著です。'
          end;
          //正常範囲の計算
          max := 24 * height * height;
          min := 19 * height * height;
          Edit5.Text := '正常範囲:' + IntToStr(Round(min)) +
                        'Kg ---' + IntToStr(Round(max)) + 'kg';
                        end;

       female: begin

                  if (BMI >= 0 ) and (BMI <18.2 ) then
          begin
            Edit3.Text := '体重が少なすぎます'
          end;
          if (BMI >= 18.2) and (BMI <=23) then
          begin
            Edit3.Text := '体重は正常範囲です'
          end;
          if (BMI >= 23) and (BMI <=29.4) then
          begin
            Edit3.Text := '体重が多すぎます'
          end;
          if (BMI >=29.4) then begin
            Edit3.Text := '肥満傾向が顕著です。'
          end;
          //正常範囲の計算
          max := 23 * height * height;
          min := 18.2 * height * height;
          Edit5.Text := '正常範囲:' + IntToStr(Round(min)) +
                        'Kg ---' + IntToStr(Round(max)) + 'kg';
                        end;
       end;

     end;

G2_フォームに円を描く

graph-1

graph-2フォームに、円を描くプログラムを作りました。
「Delphiの魔法」さんの記事を参考にさせてもらいました。
ツールバーの「Diarogs」から、「TcolorDialog」コンポーネントをフォームに貼り付けます。

あとは、左画像のイベント部分をダブルクリックして出てきたプロシージャに下記のコードを書きます。

実行すると、色のない円が描かれます。
フォームをクリックすると、ダイアログが現れて、色を選択して「OK」をクリックすると、円に色が塗られます。

そんだけ(^^;
なんせ、ド素人ですから・・・

プログラム


procedure TForm1.FormClick(Sender: TObject);
begin
  //フォームをクリックするとダイアログが現れる
  if ColorDialog1.Execute=True then
    begin
      Canvas.Brush.Color := ColorDialog1.Color;
      Repaint;
    end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  if Width >Height then
    Width := Height
  else
    Height := Width;
    Repaint;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
  //キャンバスに円を描く
  Canvas.Ellipse(2,2,Height-50,Height-50);
end;

procedure TForm1.FormResize(Sender: TObject);
begin
  //ウィンドウを正方形にする
  if Width >Height then
    Width := Height
  else
    Height := Width;
    Repaint;
end;

D1_データベースに接続

本当にうれしいです。
昔のDelphi(5)では、データベースがすぐに使えるようになっていました。
ところがインストールしたDelphi2006には、データベースがすぐに使えるようにはなっていません。
Interbaseというのがあったので、それに接続しようとしましたが、どうしてもできませんでした。
ライセンスが必要みたいです。

あきらめられずに、Webをうろつきましたが、驚くほど情報がないのです。
そんななかで見つけたのが、個人で使うなら無料というデータベースです。
解説も英語ページでしかなくて、半ばあきらめかけていたのですが、なんとかDelphiの中からデータベースを開くことができました。
超嬉しいです!やった!

まずこちらからDelphi2006用Absolute Database、をダウンロードしインストールしました。

その次にやったのは、ParadoxファイルをAbsoluteに変換する作業です。
こちらのページを参考にさせていただきました。

次に、Delphiのフォームに、ツールからコンポーネントを貼り付けました。
貼り付けたのは、「Absolute DB」から、ABSDatabase、ABSTable、
ツールパレットの「Data Access」から、DataSource、「Data Controls」からDBNavigator、DBGrid1 コントロールです。

lesson3-2

それぞれのコントロールには、データベースに接続するための情報を入れます。

lesson3-3

lesson3-4

db2

db1

G1_キャンバスを使う

lesson2-1

フォームに色を塗ってみました。
これも超簡単です。
「オブジェクトインスペクタ」の OnPaint をダブルクリックして、出てきた Begin~end; の間に、下記コードの色のついた部分を書くだけです。赤いフォームにアンダーライン付の文字が表示されました。
簡単すぎるだろって?
ま、アタシのレベルはそんなもんですから(^^;
動くというだけで、プログラミングは楽しいですね。
次回は、「Delphiの魔法」さんのサンプルを試してみる予定です。円を描きます。

【プログラム】


unit Circle;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;
type
  TForm1 = class(TForm)
    procedure FormPaint(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormPaint(Sender: TObject);
begin
  //太字とアンダーライン
  Form1.Canvas.Font.Style := [fsBold,fsUnderline];
  Form1.Canvas.Font.Size := 72; //サイズ72ポイント
  FOrm1.Color := clRed;//フォームの色
  Form1.Canvas.TextOut(10,10,'A');//文字の表示
end;
end.

B1_フォントを編集する

さっそく、10数年前に最後の更新されたサイトへ行ってきました。

ビギナーズの最初のプログラムは、フォントを編集するというものです。
インターフェースがだいぶ違うので、試行錯誤しながら手探りでやっております。
でもなんとか第1回目はクリア・・と思う

それにしてもこのブログの記事タイトル、大きすぎだわ
なおそう

lesson1-a

lesson1-b

どうでしょうか?
使用前、使用後です。

どうやったのかというと、コンポーネントから、ボタン2個、ラベル1個、フォントダイアログ1個をフォームに貼り付けました。
「フォント編集」というボタンをダブルクリックして、次のようなコード(プロシージャ)を書きました。

procedure TForm1.Button1Click(Sender: TObject);
begin
//フォントダイアログを開く
if FontDialog1.Execute=True then
begin
//ラベルに表示する
Label1.Font := FontDialog1.Font;
end;
end;

procedure TForm1.cmdExitClick(Sender: TObject);
//フォームを閉じる
begin
Close;
end;

BDS2006 を Windows7で使う

家にあったバージョン(Delphi2006)をWindows7にインストールしたのですが、起動すらできませんでした。
バージョンが古いので対応してないのかもしれません。
Borland Developer Studio 2006 が正しい呼び名のようです。

Webで検索したら、次のレジストリを削除したら動いたという記事を見つけました。

“HKEY_CURRENT_USER\Software\Borland\BDS\4.0\Known IDE Packages”
“$(BDS)\Bin\stide100.bpl”

3度目のインストール挑戦なので、ダメだったらアンインストールする気持ちで、レジストリをさわりました。
見事にDelphiが起動してくれました。超嬉しいっす。

書籍もDelphi2006のものは、まったく見つかりませんでした。出版されてない?
我が家にはDelphi使いが1名いるのですが、忙しすぎてまったく構ってはくれません。
一人さびしく、Delphiと遊びましょうか。