‘Delphi概要’ タグのついている投稿

4.1 コンポーネント

2019年3月6日 水曜日

1.コンポーネントとは

さて、2,3章でも登場しましたが「コンポーネント」って何でしょう??
簡単に、「アプリを作る為の部品」と解釈した方もいるかと思います。
まさにその通りだったりします。では、どんな部品なの?と言われると、難しいですよね。
コンポーネントとは、「プログラム(アプリ)を作る為の部品」に例えられます。

プログラマは、この部品「コンポーネント」を駆使して、くっつけたり、カスタムしたり、色々放り込んだり、伸ばしたり、縮めたり、サッと処理を書いたり、沢山処理を書いたりして、アプリを作っていく事になります。

このように書くと抽象的ですが、既存のコンポーネントをベースに、
拡張してオリジナルのコンポーネントを作ったり、
コンポーネントのプロパティを変えて、形を色々いじったり、
コンポーネントの中にコンポーネントを入れたり、
コンポーネント同士をくっつけて、連動させたり、
コンポーネントのイベントを巧みに利用し、処理を色々書いたり・・・。

本当にいろいろな事をします。

言うは易し、行うは難しですが、コンポーネントとは言っても、それは抽象的な表現ともいえて、
(基本となるコンポーネントのクラスは存在しますが)
大体、直接触れるのは、数百の種類がある機能も性格も千差万別な色とりどりのコンポーネントを扱わなくてはなりません。

これが判らないと、せっかくコンポーネントがあっても、使い方が判らず、
結局、自前でコードを書いては見たものの・・・。
終わってみれば、数百あるコンポーネント中のある機能の劣化コピーだったという事になりかねません。

そんな恥ずかしい事にならない様、コンポーネントの使い方を少しずつ学んでいきましょう。

□ コンポーネントの種類
 コンポーネントは大きく分けて2種類に分類できます。
  ・ビジュアルコンポーネント(実行時に目に見えて判るコンポーネント)
  ・非ビジュアルコンポーネント(実行時には目に見えないコンポーネント:ダイアログ関係のコンポーネントも含まれる:)
 
 ■ ビジュアルコンポーネント
  ・ユーザーインターフェースを構築する為のもの。(例えば、パネル、ボタン、リストボックスなど。)
 
 ■ 非ビジュアルコンポーネント
  ・設計時は、四角いアイコンで表示される。(しかし、実行時には、アイコンは表示されない。)
  ・主に、何かの動作を促したり、提供したりする。(ダイアログボックスを表示する、データベースに接続する、ジェスチャー等の特殊   な動作を認識させる等)

□ ツールパレット
 ■ 先ほども述べた通り、Delphiには数百のコンポーネントがあります。その為、ツールパレットと呼ばれるリストに機能別に分けて、
  判り易い様に配置されています。
 
 ■ それのみに留まらず、表示順序の変更や、コンポーネントの追加、別のグループにコンポーネントを移動したりできます。
  その為、自分が使いやすい様にカスタマイズできます。

3.1 Object Pascalの基礎知識

2019年1月31日 木曜日

はじめに

さて、本章ではDelphiプログラミングの本質、「Object Pascal」を使った実践的プログラミングに入っていきます。
ただ、Delphiプログラミングは大変奥が深く、仮に本章ですべての機能を網羅した場合、プロフェッショナル向けでこそあっても、初心者には到底理解し難い内容になってしまいます。そこで本章では、基礎の基礎を押さえた初歩的なプログラムを作ります。第2章で作ったメモ帳をベースに幾分機能を拡張したメモ帳を作ります。それでは始めましょう。

その前に、delphi のソースコードの構造化を説明していきましょう。
まず、第2章の計算プログラムは保存せずに閉じてしまって構いません。

メニューから、「ファイル」→「新規作成」→「その他」をクリックし、新規作成の際のダイアログを表示します。ダイアログ上でvclフォームアプリケーションを選択します。

次に、プロジェクトマネージャーから「新規プロジェクトを追加」ボタンを押します。
そして新規作成の際のダイアログを表示し、そこから 「マルチデバイスアプリケーション」を選択します。

さて、これで準備は整いました。
では説明に入っていきます。
まずは vclフォーム アプリケーションからです。
プロジェクトマネージャからProject1.EXEをダブルクリックしてから、 unit1.pasをダブルクリックし、Unit1にフォーカスを移します。

ソースコードの各部の意味

パスカルのソースコードの形式

unit Unit1;

unitキーワードの後ろにユニット名を記述します。 このユニット名はファイル名になりますが、自動的に設定されるため、手動で変更する必要は先ずありません。

Interface

インターフェース部と読みます。
各種の定義と宣言を記述します。
直接のプログラムコード(実行部分)は記述できません。

Uses

ファイル内で利用する、クラスを記述します。ここで言うクラスとはDelphiの関数やライブラリが記述された独立したファイルであり、別名「クラスライブラリ」とも呼びます。多くの場合、ここには自動でクラスが登録されていきます。手動で変更する必要がある場合は開発者(つまりあなた)が直接Delphiの機能を呼び出す場合などです。

Type

型の定義を記述します。
型名=型の定義、
といった形で型を定義していきます。

Private
    { Private 宣言 }
  Public
    { Public 宣言 }
  end;

【Private 宣言とPublic 宣言について】
Private 宣言とはプライベートの空間という意味です。
つまりこの例で言うと、Unit1.pas内部でのみ使えます。
外部のユニット、つまり、Unit2等はUnit1のプライベートに立ち入ることはできません。そのため、このプライベート空間に書かれた宣言はUnit 2は参照する事は出来ません。
対して、 Public 宣言は文字通りパブリックな空間という意味です。
当然ながら、パブリックは公共という意味ですので、ここに書かれた宣言はプロジェクト全体で共有されます。

注意が必要なのは宣言の管理です。ここで書かれた宣言は「グローバル」な宣言になります。 プライベートであれ、パブリックであれ、ユニット内もしくはプロジェクト内で共有されます。
例えば、この種の宣言をいたずらに多数行った場合、「名前空間が汚れる」 といった現象が起きます。
これはグローバル変数を多数宣言することにより、似たような名前、似たような機能の変数が宣言されることにより、変数管理が難しくなる現象のこと指します。そのため、無用のグローバル変数はなるべく避けた方が賢明でしょう。

var

変数の宣言を記述します。
これは大変よく使いますので、必ず覚えましょう。

Implementation

「実装部」とも呼びます。
関数や手続きなどの処理を記述します。
型の定義や変数宣言を行うこともできます。

Initialization

{初期化部}
この初期化部に記述されたコードはプログラム開始自動的に実行されます。
ただし、このコードは省略可能なため、使用時には宣言を入力する必要があります。
ソースコードの一番下、「end.」の上に記述します。

Finalization

{終了処理部}
この終了処理部に記述されたコードはプログラム終了直前に実行されます。
ただし、このコードは省略可能なため、使用時には専念を入力する必要があります。
ソースコードの一番下、「end.」の上に記述します。

{$R *.dfm}

この記号は「フォームが存在します」と言う IDE 内部が使う記号です。
この記号がないと、リンカがフォームファイル(*.dfm)を見つけられなくなってしまいます。


一つの宣言や処理を行う単位となります。
ちなみに、この1行当たりの文の事をステップと呼びます。
また、文には大文字、小文字の区別はありません。
(例:10行=10ステップ)

ブロック
Begin と end で囲まれた範囲のことを指します。
特徴として、複数の処理をまとめることができます。
また、このブロックとは処理のまとまりを示します。

コメント
ソースコード注釈のことを指します。
コメントの種類には、

//1ステップをコメント化します。

(*
この記号に挟まれた範囲は、
全てコメントとなります。
*)

{
この記号に挟まれた範囲は、
全てコメントとなります。
}

end.

ソースコードの終端記号です。
この記号より先にはソースコードがあってはいけません。

では、プロジェクトマネージャー から、 Project 2. EXE の下にあるunit2.pasをダブルクリックし、フォーカスを映します。

Fire Monkeyアプリケーションも、基本的な構文は同じです。

{$R *.fmx}

この記号が若干異なり、dfmからfmx になっています。
機能は全く同じです。

ここで、usesの宣言のところよく見てください。
先ほどのvcl アプリケーションのusesの宣言とはクラスの名前が若干異なることに気がついたかと思います。同じ delphi アプリケーションですが、vcl とマルチデバイス(Fire Monkey)では使用するコンポーネント全く異なります。 いくつかのクラスは vcl と共通のものはありますが、fmx で始まるクラス名はマルチデバイスアプリケーション(Fire Monkey)独自のクラスになります。

基本的な説明は以上になります

2.4 アプリケーションの実行とテスト

2019年1月31日 木曜日

アプリケーションの実行とテスト

コンパイル/ビルド/デバッグ/実行

これらの作業(コンパイル/ビルド/デバッグ/実行)は人間が理解できるPascal言語の記述をコンピュータが理解できる機械語に翻訳する作業になります。
Delphiを始め、Pascal系のすべての言語に共通する事であり、同じ作業を必要とする言語にC言語、C++言語が該当します。これらの言語を総称して「ネイティブコンパイラ」と呼びます。

似たような仕組みの言語に「インタプリタ」系の言語があります。有名どころとしては「Java」、「C#」、「VB.net(VB)」が存在します。但し、インタプリタ言語は「ネイティブコンパイラ」系の言語と異なり、アプリケーション単体では動かず、それぞれの言語に対応したライブラリをパソコンにインストールしておかないと、アプリケーションを起動する事が出来ません。逆に言うと、このライブラリさえインストールすればWindowsでも、Macでも、Linuxでも同じ実行ファイルで動いてしまう事になります。(特定のOS環境に依存した機能を使ったり、書き方をした場合は除く)

上記の言語と一線を画するのが「スクリプト」系言語です。「インタプリタ」系言語と同じでライブラリを必要とします。このスクリプト系言語の最大の特徴はただのテキストファイルが実行権限を持って動いてしまう事です。この最大の強みは特定の開発環境がなくとも、極端な話、メモ帳一つで作れてしまう事です。
では、早速作業に入りましょう。
先ず、拡張子を表示できるようにします。
Windows7なら、コントロールパネルを起動し、表示方法を「大きなアイコン」にして、「コントロールパネル」→「フォルダーオプション」→「表示」から、「登録されている拡張子を表示しない」のチェックボックスを外します。

Windows10なら適当なフォルダを開くか、エクスプローラを起動し、「表示」タブを選択、ファイル名拡張子のチェックボックスを入れます。

実行すると、今日の日時を表示してくれるプログラムをネイティブコンパイラ(Delphi)、スクリプト(Visual Basic Script)で作っていきます。

Delphiで実行した場合

コンソールアプリケーションを新規に作り、以下のコードをtryとexceptの間に記述し、実行します。
ソース7

writeln(DateTimeToStr(now));
sleep(4000);

実行結果:

メモ帳を起動します。(Windows7なら、スタートメニューのファイル名を指定して実行から、「notepad」と入力、Windows10なら、コルタナに「notepad」と入力し,Enterを押します)
Visual Basic Script:下記をメモ帳に記述し、「nowtime.vbs」という名前で保存します。完了したら、そのファイルをダブルクリックします。

ソース8

msgbox(now)


違いが判りましたでしょうか?Delphiで記述するには必ずDelphiが必要で、僅かでも変更をするには必ずDelphiで編集しないとなりません。
対して、スクリプトはメモ帳一つでも作れてしまいます。

コンパイル(ビルドも含む)が実行形式プログラム(*.exe)を出力する迄の動き

「Pascalソースファイル(*.pas)」

コンパイラ

「フォームファイル(*.dfm、又は*.fmx)」
「中間オブジェクト(*.dcu)」
「リソースファイル(*.rex)」

リンカ

「実行形式プログラム(*.exe)」

プログラムのテスト

コンパイラとリンカが動いて、実行形式プログラムが生成されても、これでプログラムが正しく動くとは限りません。
先ほどのプログラムを保存が完了したら、新しいプロジェクトを作ります。
メニューから「ファイル」→「新規作成」→「VCLフォームアプリケーション」を選ぶか、ツールバーから新規作成を選びます。
の中から、を選びます。
すると、見慣れた新規作成のダイアログが出るので「VCLアプリケーションを選びます」。
新しいフォームが表示されるので、以下の画面の様にコンポーネントを配置します。

配置するものは「Edit」コンポーネント2つ、「Button」コンポーネント1つです。
Editコンポーネント二つのTextプロパティを数字の「0」に、
ButtonコンポーネントのCaptionプロパティを「足す」にします。
Buttonのイベントハンドラを記述します。Buttonコンポーネントをダブルクリックします。
ソース9をイベントハンドラに貼り付けます。

 try
    ShowMessage(IntToStr(StrToInt(Edit1.Text) + StrToInt(Edit2.Text)));
  except
    //実行時例外の発生
    ShowMessage ('計算が出来ません、エラーです。');
  end;


ツールバーの中から、右の図のを押します。
すると、コンパイルが始まります。
正常な計算結果

論理エラーが発生した例

この論理エラーはプログラム設計時に想定された入力が数値と仮定していたものの、実際には数値ではなく、文字列が入力された事によって生じます。例示したものは単純ではありますが、このような事は実際に何かを作ってみると、よくある事で、細心の注意が必要です。今回は入力という見やすいものでしたが、これがインターフェースからは見えない内部的な処理だったりすると、とても厄介なものになります。

設計時エラーの例

今度は、設計時エラーを実践してみましょう。
ソース10を先ほどのイベントハンドラの記述と置き換えます。

 try
    ShowMessage({IntToStr}(StrToInt(Edit1.Text) + StrToInt(Edit2.Text)));
  except
    //実行時例外の発生
    Showmessage('計算が出来ません、エラーです。');
  end;


そして、を押すと、ビルドが始まり、コンパイルの段階でエラーが表示される筈です。

「OK」を押すと、以下の様に31行目が赤く表示される筈です。
イタリック表示にしたところが、エラーの原因箇所です。(IDEではこの様に表示はされません)
ShowMessage({IntToStr}(StrToInt(Edit1.Text) + StrToInt(Edit2.Text)));
では、エラーを修正しましょう。
{IntToStr}の、グリーンの箇所を削除しましょう。
IntToStrとなる筈です。
出来たら、を押して、ビルドをして実行しましょう。今度は実行できたはずです。
先ほどのエラーの意味は「文字列を期待したのに、数値が入っていたので、実行できませんでした」というエラー結果でした。
「IntToStr」はInteger(数値)をString(文字列)に、
「StrToInt」は「String」(文字列)をInteger(数値)に変える、
基本中の基本の型変換になります。次章で詳しく説明するかと思います。

この一連の作業を「デバッグ」と呼び、論理エラーや設計時エラーを修正していく作業になります。ではもう一回、細かくデバッグをしていきましょう。

2.3 ビジュアル設計ツールの使い方

2019年1月31日 木曜日

ビジュアル設計ツールの使い方~ツール紹介編~

ユーザーインターフェース

ユーザーインターフェースとはユーザー(アプリケーションを使う人)とアプリケーションとの対話の手段で、アプリケーションの目に見える表示要素と言えます。更にかみ砕いて書くと、ユーザーインターフェースとは「ユーザー(使う人)」との「インターフェース(接点又は接続部分)」であり、固い言い方をすると、「アプリケーションと人とを繋ぐ接続コネクタ」であると定義できます。
Delphiに例えるなら、画面真ん中にある「フォーム(ウインドウ)」がそれであり、エディット、リスト、ボタン等、限られた、しかし多くの要素(コンポーネント)の中からユーザーの使用目的に合致すると思われる要素を適切なサイズで、適切な場所に、適切な操作方法で、設置/設定する必要があります。そしてこれらの要素にはユーザーからの入力に応答し、他の要素に操作した結果、得た情報やメッセージ(これを値、又は返り値と呼びます)を表示させる事が出来ます。
ここで重要なことは、ユーザーが想像し得る適切な要素に値を渡す必要があるという事です。
例えば、これらが思いの外、時間が掛かったり、ユーザーが操作法を想像しにくかったり、手間暇のかかる操作だったとしましょう。一つの操作をする度に、5回の確認やマウス、キー操作を要すると仮定します。例えば、時間がないときに大急ぎで操作していたとしたら、ユーザーは何を思うでしょうか?答えは幾つか考えられます。そんな設計をした人が誰なのか、不条理な思いをしながら操作するか、あるいは直ぐに放り投げて、興味を失ってしまうかのどちらかと思われます。
操作する際の階層の深さや手数は3回迄、要素の配置には熟慮を重ねた上で、ルールを作ってグループ分けをしっかり定義して配置すべきでしょう。
以上が、ユーザーインターフェースを設計する上での、基本的で重要な考え方になります。

ビジュアル設計ツール

Delphiでは、ユーザーインターフェースを実際に動かした時と同じ状態で設計、作成する事が出来ます。
フォーム:実行時にウインドウとなり、アプリケーションの画面となる部分で、先ほど説明したユーザーインターフェースを設計し、作っていく土台となるものです。

ツールパレット(コンポーネントパレット):コンポーネントがグループ分けされて、パレットに収まっています。「検索」から、欲しいコンポーネント名を検索すると、全てのコンポーネントから検索して一覧を表示してくれます。検索したら、ダブルクリックか、ドラックアンドドロップで、フォーム上に配置していきます。

構造(オブジェクトツリー)
真ん中の画面が「デザイン」(フォーム)なら、コンポーネントの配置を「コード」なら、ソースコードのそれぞれのツリー構造(オブジェクト同士の上下関係)を表示します。

「デザイン」(フォームの場合)

「コード」(コードエディタ)の場合

オブジェクトインスペクタ

オブジェクトインスペクタはDelphiでアプリケーションを開発する上で、決して欠く事の出来ない、非常に重要なツール、又はオブジェクトリポジトリです。
このオブジェクトインスペクタはフォーム(ウインドウ)やコンポーネント(要素)のプロパティ(設定)を変えたり、又は、それらのイベントハンドラを設定して作成し、開発する人(つまりあなた)に、コードを記述する場所をナビゲートしてくれます。もし、このツールが使えなくなったら、オブジェクト指向での開発は不可能ないし、酷く効率の悪いもの(全て、1から自分で書く必要に迫られます)になってしまうでしょう。非常に重要なツールですので、必ず使いこなせるように頑張りましょう!

オブジェクトインスペクタ:プロパティエディタタブ

オブジェクトインスペクタ:イベントタブ

ビジュアル設計ツールの使い方~実践編~

1. 先ず、プロジェクトマネージャで「Project1.exe」をアクティブプロジェクトに設定します。判らなくなったら、プロジェクトマネージャの説明まで戻りましょう。
2. 選択出来たら、「Project1.exe」のツリー構造を展開し、更に「Unit1.pas」のツリー構造を展開、「Unit1.dfm」をダブルクリックします。

3. 次に、真ん中の画面で下にある「コード/デザイン」を、「デザイン」が選択されていることを確認してください。されていなかったら、デザインをクリックして選択します。
4. ツールパレット(画面の右下側)から、「検索」から「Panel」と入力します。Panelコンポーネントが検索で引っかかるので、これを、配置します。
5. 「構造」(オブジェクトツリー)から、「Form1」をクリックし選択します

6. 4.の手順で、「Memo」をForm1に配置します。
7. 5.の手順で、「Panel1」をクリックして選択します。
8. 4.の手順で、「Button」を3つ、Panelに配置します。
9. 4.の手順で、「OpenDialog」、「SaveDialog」を、何処でもいいので配置します(これを非ビジュアルコンポーネントと呼びます。実行時は見えないのが特徴です)。
10. 5.の手順で、「Panel1」を選択します。
11. オブジェクトインスペクタのプロパティタブを選択し、検索から「Caption」と入力します。「Caption」プロパティが見つかるので、右隣りのテキスト編集領域から、「Panel1」という文字を削除します。この文字を「プロパティの値」と言い、ここを変えてあげることで、コンポーネントの設定を変える事が出来ます。

12. 今度は、11.の手順で、「Align」と入力し、テキスト領域をクリック、パネルの図がドロップダウンして表示されるので、一番上の細長いパネルをクリックします。そして、値が「alTop」に変わったことを確認します。

13. 「Panel1」に配置した「Button」コンポーネントを左詰めで、バランスよく、Panel1上に並べます。
14. 11.の手順で、「Button」コンポーネントの表示されている名称を変えていきます。左端から、「新規」、「開く」、「保存」と入力していきます。
15. 5.の手順で、「Memo1」を選択し、「Align」を12.の手順で真ん中のパネルの設定をし「alClient」に変わったことを確認し、検索から「Lines」を探して、テキスト入力エリア(プロパティエディタと呼びます)の「(TString)」をダブルクリック、メモがあるポップアップダイアログが表示されるので、「Memo1」という文字を消して「OK」を押します。

16. 以下の様に、フォームが設定される筈です。

17. Button「新規」、「開く」、「保存」の「イベントハンドラ」を、設定していきます。
18. 新規Buttonをクリックするか、5.の手順で選択します。
19. オブジェクトインスペクタのイベントタブをクリックし、検索から「OnClick」を探し、右の空白をダブルクリックし、イベントハンドラを作成します。
20.
21. コードエディタと呼ばれるウインドウが出現し、以下の文言(コード)がある筈です。
ソース2

Procedure TForm1.Button1Click(Sender:TObject);
begin

end;

Beginとendの間に、以下の命令文を貼り付けます。
ソース3

//新規作成(メモ帳の初期化)
Memo1.Lines.Clear;

22.今度は、20.21.の手順で、「開く」、「保存」に、以下の命令文を貼り付けていきます。
「開く」Buttonのイベントハンドラ
ソース4

//テキストファイルを開く
//もし、ファイルが開かれなかったらイベントを終了
If not OpenDialog1.Execute then
exit;
try
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
except
//実行時例外の発生
Showmessage('ファイル:'+OpenDialog1.FileName+'は開けませんでした。');
end;

「保存」Buttonのイベントハンドラ
ソース5

//テキストファイルを保存
//もし、ファイルが選択されなかったらイベントを終了
If not SaveDialog1.Execute then
exit;
try
Memo1.Lines.SaveToFile(SaveDialog1.FileName);
except
//実行時例外の発生
Showmessage('ファイル:'+SaveDialog1.FileName+'は保存出来ませんでした。');
end;

全体を見ると、以下の様な形になる筈です。
ソース6

procedure TForm1.Button1Click(Sender: TObject);
begin
//新規作成(メモ帳の初期化)
  Memo1.Lines.Clear;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  //テキストファイルを開く
  //もし、ファイルが開かれなかったらイベントを終了
  if not OpenDialog1.Execute then
    exit;
  try
    Memo1.Lines.LoadFromFile( OpenDialog1.FileName );
  except
    //実行時例外の発生
    Showmessage('ファイル:'+ OpenDialog1.FileName + 'は開けませんでした。');
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  //テキストファイルを保存
  //もし、ファイルが選択されなかったらイベントを終了
  if not SaveDialog1.Execute then
    exit;
  try
    Memo1.Lines.SaveToFile( SaveDialog1.FileName );
  except
    //実行時例外の発生
    Showmessage('ファイル:'+ SaveDialog1.FileName + 'は保存出来ませんでした。');
  end;
end;

end.

23. 以上で、一つ目のアプリケーションのコーディングが完了しました。
今度は実行してみましょう。ツールバーから、以下のボタンを探します。

このボタンを探して押します。

もし、何か間違いがあれば、以下の画面が表示されます。
エラーの箇所はダイアログの「OK」を押した後、赤線が引かれて表示されます。(今は、そういうものだと思ってください)ここでは、エラーは出ない筈なので、イベントハンドラの記述をよく見比べてください。

成功すると、以下の画面が表示され、アプリケーションが動きます。

24. 今度は「Project2.exe」をアクティブプロジェクトにして、こちらも全く同じものを制作してみてください。
フォームの画面やコンポーネントの種類や数が若干変わりますが、作り方もイベントハンドラの記述も全く同じです。


25. 出来上がったら、名前を付けて保存しましょう。

今回作ったものは次回の章でも使いますのでご注意ください。
この先の章で、VCL、Fire Monkey双方で特徴がはっきりと分かれ、コードの書き方や、コンポーネントの設定が両者で大きく変わっていきます。
次はコンパイル、デバッグ、実行についてになります。

(保存の仕方)メニューから、「ファイル」→「すべてを保存」か、ツールバーから、

この二つのアイコンのうち、右のアイコンをクリックします。
ここで注意が必要なのは、
「C:\Users\(ユーザ名) \Documents\Embarcadero\Studio\Projects」
に保存してしまわない事。ここに保存してしまうと、後でいろいろと厄介なことになります。この「C:\Users\(ユーザ名) \Documents\Embarcadero\Studio\Projects」というフォルダは、Delphiがプロジェクトを新規作成する際に使用するデフォルトのフォルダになります。ここに保存してしまうと、後から新規作成した際にDelphiが既にProjectがあるのを察して、例えば、今回作った(二つのエディタ)ものだと、グループ名は「ProjectGroup1」ではなく「ProjectGroup2」(既に「ProjectGroup1」が保存されている為、1は使えない)、
プロジェクト名も「Project1,Project2」が保存されているので、「Project3」からになり、
ユニット名も、二つ保存されているので、「Unit3」からになります。
そして、フォルダ階層も結構深いので、ここに保存してしまうと、「あれ、あのファイル何処行った??」、「この前編集したプロジェクトは、この中のフォルダのどれだっけ??」という事になりかねません。

↓デフォルトの初期フォルダにプロジェクトを保存してしまった例

以上の事を気を付けたうえで、今回は「デスクトップ」に「エディター」というフォルダを作成してそこに保存します。まずユニットから保存することになります。今回は標準の名前でもいいでしょう。敢えて名前を付けるなら「unit1」が「vcl_edit」、「unit2」が「FireMonkey_Edit」が妥当でしょう。

次はプロジェクトの保存になります。これは実行ファイル名になるので、慎重に名前を付けましょう。今回だと、ユニット名と同じ名前で良いでしょう。但し、一つのプロジェクト(グループではなく)に複数のユニットがある場合はユニット名と名前を重ねてしまうと、命名管理に支障をきたす(何が何だか、名前の意味が分からなくなりかねない)ので、プロジェクト名にアプリの名前(日本語は避ける事)、ユニット名に、ユニット(フォーム)の機能名あるいは何をするユニット化を分り易く命名した方がいいでしょう。

2.2 ビジュアル設計ツールの基本

2019年1月31日 木曜日

ビジュアル設計ツールの基本

オブジェクトリポジトリの使い方の実践

ここからは、VCL、Fire Monkeyの二つを使います。全く同じ簡単なメモ帳アプリケーションを作りながら、オブジェクトリポジトリの使い方を実践的に学んでいきます。途中、コードの打ち込み作業もありますが、今は何も考えずにコピーアンドペーストして、指示通りの箇所に貼り付けていってください。
そして、この章で取り扱う事は、Delphiを扱ううえで、必要最低限の基本的なことです。そしてここを理解できないと、この先の章で間違いなく躓きます(交通規則への理解や車の運転免許証を持っていても、車の操作方法が判らないと、何もできないのと同じです)。
Delphiの操作方法が判らなかったら2章を、プログラミング(命令文の書き方)が判らなかったら3章を、
繰り返し読んでみて頑張りましょう。
初めて触る、慣れない道具を使うというのは、本人にしか判らない苦痛かと思いますが、めげずに頑張っていきましょう。頑張れば、半年から1年後、楽しみながらDelphiを使いこなすあなたが、そこにいる筈です!

プロジェクトの新規作成

メニューから、「ファイル」→「プロジェクト」→新規作成→「その他」を選択します。するとダイアログウインドウが現れます。これを「オブジェクトリポジトリダイアログ」と呼びます。そこから「VCLフォームアプリケーション」を選択します。

プロジェクトマネージャ

Delphiの画面右上に、「プロジェクトマネージャ」と表示されている枠がある筈です。無い、又は表示を間違って外してしまったならば、メニューから、「表示」→「ツールウインドウ」→「プロジェクトマネージャ」を選択すると、表示されます。この枠(又はウインドウ)を「プロジェクトマネージャ」と呼び、プロジェクト(これから作るアプリケーション)を管理したり、切り替えたり、呼び出したりと、頻繁に使う機能の一つです。是非とも覚えておきましょう。

プロジェクトの追加(新規作成)

「プロジェクトマネージャ」の「ツールバー」から、フォルダアイコンに+マークが付いたアイコンにマウスカーソルを合わせます。

1秒程待つと、「新規プロジェクトの追加」というポップアップヘルプが表示されますので、そのボタンを押します。すると、先ほど新規作成で表示された、「オブジェクトリポジトリダイアログ」が表示されます。そこから、「マルチデバイスアプリケーション」をダブルクリックするか、選択して「OK」を押します。すると、「プロジェクトマネージャ」に、「Project2.exe」という、新しいプロジェクトが表示されたはずです。

アクティブプロジェクト

アクティブプロジェクトとは、現在編集中(編集が有効になっている)のプロジェクトの事を指します。更にかみ砕くと、現在作業中(現在編集作業中)のプロジェクトの事を指します。
アクティブプロジェクトを調べるには、
プロジェクトマネージャのタイトルバーを見ます。
左詰めで、プロジェクト名が表示されているはずです。

又は、プロジェクトマネージャ内のプロジェクト名を見、
太字ならばアクティブプロジェクト、
細字ならば、非アクティブプロジェクト、
と判別する事が出来ます。

全体を見渡すとこんな感じ。アクティブプロジェクトを切り替えたい場合はこの場合の例で言うと、「ProjectGroup1」直下の「Project1.exe」又は「Project2.exe」をダブルクリックするか、それを右クリックし、右クリックメニューを出して、「アクティブ化」を押します。

2.1 Delphiアプリケーション作成についての基礎知識

2019年1月31日 木曜日

作る事が出来るアプリケーションの種類

Delphiを起動

メニューから、「ファイル」→「新規作成」→「その他」を選びます。
以下の画面が表示されます。以下の種類のアプリケーションを作成できます。

Androidサービス

Windowsで言うところの「常駐アプリ」の様なものです。見た目(ユーザーインターフェース又は画面)が無く、ずっと実行され続ける(バックグラウンドで動くとも言います)性質のアプリです。それを作る事が出来ます。画像はAndroid Serviceを新規作成した時の画面。見た目が無いので、フォームも当然表示されません。

Fire Monkey Metropolis UIアプリケーション

Fire Monkeyコンポーネントを使って、Windows8の見た目や動きにそっくりなアプリケーションを作る(Windows8のルックアンドフィールに準拠している、とも言います)事が出来ます。この機能の面白い点として、Windows8以外のWindowsであっても、Windows8の見た目になります。

VCL Metropolis UIアプリケーション

Delphiの伝統的なVCLコンポーネントを使って、Windows8の見た目や動きにそっくりなアプリケーションを作る事が出来ます。(Windows8のルックアンドフィールに準拠している、とも言います)
この機能の面白い点として、Windows8以外のWindowsであっても、Windows8の見た目になります。

VCLフォームアプリケーション

Delphiの伝統的なアプリケーションを作る手法。VCLとはVisual Component Libraryの略。初代Delphiから脈々と続く手法であるため、過去に発売されたDelphiの書籍やインターネット上の過去の資産を活用しやすいのが特徴。但し、このVCLは初代から現在のバージョンに至るまで、様々な改良や修正が加えられているので、過去のバージョンがそのまま直ぐに動くとは限りません。(余談ではありますが、これは他の言語にも言える事で、Delphiに限った事ではなく、セキュリティ上の対策や、機能向上の為に変更や改良、廃止があることは、珍しいことではありません)

MDIアプリケーション

論より証拠で、見た方が理解は早いと思います。下の画面を見てください。背景はDelphi、前面はMDIアプリケーションを新規作成して、実行したところです。因みに、一行も書いていないし、何の設定もいじっていません。でもこれだけの事が出来ます。この画面まで、まっさらなフォームからも作れますが、時間は当然消費するし、最初からあるのなら、当たり前ですが使った方がいいです。但し、勉強の為なら、このまっさらのMDIを調べて、自分で再現してみると、初歩のうちは大変勉強になります。

SDIアプリケーション

これも論より証拠で、見た方が理解は早いと思います。同じく下の画面を見てください。最初から、コンポーネントが配置してあり、お膳立てがされてあります。MDIの時程至れり尽くせりではないですが、この後やることは、フォームを新規に追加して、フォームを呼び出す処理を書いてあげるだけでいいのです。最初は、SDIから入るのは難しいかもしれないでしょう。しっかりお膳立てされたMDIをマスターして、そのMDIを再現できるようになり、意味も理解出来たら、SDIに進むといいでしょう。そうすれば、お膳立ての効いたDelphiの良さが判る様になると思います。

コンソールアプリケーション

下の画面を説明していきます。
以下のプログラムの文(命令文)を書きました。
そして実行したのが、下記の画面です。真っ黒い画面に、「Hello, World!」と表示されていると思います。
これがコンソールアプリケーションというものです。このコンソールアプリケーションには、特に意識してコードを書かない限り、オブジェクト指向ではなく、それ以前の時代の書き方になります。つまり、上から始まって、下に流れ、一番最後の命令文が終わると、有無を言わさず、アプリケーションは終了してしまいます。
この例でいうと、「sleep(50000);」が実行され、50000マイクロ秒経過したら、アプリケーションは終了してしまいます。
それがコンソールアプリケーションが持つ、他のアプリケーションとの最大の違いであり、特徴です。
ソース1

writeln('Hello,World!'); //※「Hello,World!」を表示して改行してね。
sleep(50000); //※50000マイクロ秒待機してね。

コントロールパネルアプリケーション

これはちょっと特殊かもしれません。平たく書くと、コントロールパネルの機能を作ります。初心者向けでは確実にないです。画面はコントロールパネルアプリケーションの初期状態のコードエディタの画面です。

サービスアプリケーション

バックグラウンドで(常駐して継続的に)実行されるアプリケーションを作成します。

ダイナミックリンクライブラリ

ダイナミックリンクライブラリ(DLL)を作ります。これ単体は実行可能アプリケーションではなく、拡張子も.dllになります。「ダイナミック」に、アプリケーションに「リンク」する「ライブラリ」と考えると分り易いかも。その名の通りです。アプリケーションの機能を拡張出来るライブラリを作れます。

パッケージ

コンポーネントをパッケージにします。作るよりも、恐らく使う事の方が多いかもしれません。今はそういう機能もある、といった程度に捉えて置くだけでいいかと思います。コントールパネルアプリケーション、サービスアプリケーション、ダイナミックリンクライブラリ、パッケージ、が作れるようになったら、立派な上級者の仲間入りでしょう。

マルチデバイスアプリケーション

これこそが、例のFire Monkeyです。

ある意味、XE2以降のDelphiの最大の売りといっても過言ではないでしょう。個人的意見で恐縮ではありますが、プライベートで使うならば、使わなければ損!と思っております。その最大の売りは、ユニークで個性的なコンポーネント群と美しくそして非常に強力な描画機能を持っている点でしょう。

Fire Monkeyの特筆すべき点はマルチデバイス対応もさることながら、「Shapes」グループ等に属する、風変わりで、そして強力なコンポーネント達です。Fire Monkeyは、VCLとは全く異なるアーキテクチャの様です。その顕著な証明として、2Dグラフィックスアプリケーションを、いとも簡単に作れてしまう事です。それもコーディング作業、つまりコードを殆ど書く事もなく(!)。これは驚異的なことであると考えております。Delphiは、C++と同列に分類できる、ネイティブコンパイラ(ソースコードをアプリケーションに変換すると、コンピュータが理解し易い機械語に翻訳され、高速に動作する仕組みのアプリの事)です。そして統合開発環境でもあり、潤沢な機能とコンポーネントを搭載しています。そこに非常に高機能な2Dや3Dの開発機能が(しかも標準で)備わっているのです。

1.5 Delphi開発の手法

2019年1月31日 木曜日

Delphi開発の手法

Delphiでは、コードの記述とビジュアルプログラミングと呼ばれる手法を組み合わせて開発を行います。

ビジュアルプログラミングとは?

➀ボタンやテキスト等のコンポーネントをマウス操作によってフォームに配置してプログラムを作成する手法。

➁最初からプログラムの流れを記述していくのではなく、ユーザーのインターフェースを設計し、それを構成するコンポーネントに行われた操作に対して、どの様な処理を実行するのか定義していく。基本的にはコーディングが必要になるのは、イベントが発生した時に呼び出される。イベントハンドラへの処理を記述するだけとなる。

Delphi開発の手順

Delphiでの開発手法を纏めると、次の様になる。
1.プロジェクトの作成
2.コンポーネントをフォームに配置
3.プロパティの設定
4.必要なイベントハンドラのコーディング
5.プロジェクトのコンパイル
6.記述ミスがあれば修正→5.
7.プログラムの実行、テスト
8.プログラムの修正→5.
9.完成

1.4 Dlephiプロジェクトの概要

2019年1月31日 木曜日

Delphiプロジェクトについて

プロジェクト

Delphiの開発はプロジェクト単位で進めていく形になっています。
プロジェクトとは一つのプログラムの開発に必要な複数の要素を管理する単位で、一つのプロジェクトが一つのプログラムとなります。

プロジェクトグループ

その名の通り、プロジェクトが複数集まったものです。
例:
「受注管理」→
「仕入管理」→ 「販売管理システム」
「在庫管理」→

Dlephiプロジェクトのファイルの種類

Delphiプロジェクトファイルの構成は以下になります。

「プロジェクト名.dprproj」及び「プロジェクト名.dpr」

Delphiで開発するアプリのプロジェクトです。(このファイルを開いてアプリを開発します)
「プロジェクト名」はそのままアプリの名前になります。慎重に命名しましょう。

「ユニット名.dfm(又は.fmx)」及び「ユニット名.pas」

この二つのファイルは対になっていると考えた方が良いでしょう。「.dfm(又は.fmx)」はフォーム(ウインドウ画面)を、「.pas」はそこに記述したソースコードが収まっています。
また、フォームを持たないユニット(ウインドウ画面の無い)を新規に追加した場合、「.dfm」ファイルは生成されず、「.pas」だけが生成されます。
【備考】「.dfm」VCLアプリケーションを開発した時のフォーム情報を格納したファイル。
    「.fmx」FireMonkeyアプリケーションを開発した時のフォーム情報を格納したファイル。

「ユニット名.dcu」

コンパイル済みユニットファイル。

「プロジェクト名.res」

リソースファイル。

「プロジェクト名.local」

ユーザ固有プロジェクトオプションファイル。プロジェクトオプションの情報を格納したファイル。

「プロジェクト名.exe」

Delphi構築し生成されたアプリケーションです。
「\Win32\debug\」ビルド時や実行時、デバッグ時に生成され、フォルダに格納されます。

Delphi開発の要素

デフォルトプロジェクトの場合、下記の様にファイルが作成され、それぞれ名前が付けられています。

「プロジェクト名.dproj」

プロジェクトファイル(新)。中身はXML。

「プロジェクト名.dpr」

プロジェクトファイル(旧)。プロジェクトの管理及び、プロジェクトのメインプログラムになります。

「プロジェクト名.res」

リソースファイル。

「ユニット名.dfm(又は.fmx)」

フォームのプロパティ等の情報が詰まったファイル。

1.2 Delphi Community Editionのインストール方法

2019年1月31日 木曜日

導入(ダウンロード、インストール)

先ずは、Delphi Community Editionのインストーラをダウンロードします。
ブラウザを開き、「Delphi Community Edition」と入力し検索します。
URLは以下になります。
https://www.embarcadero.com/jp/products/delphi/starter

「Delphi Community Edition」のダウンロードページ

初めて登録する場合、以下の情報を入力する必要があります。

名前
メールアドレス
パスワード
会社名
電話番号

一度、アカウントを登録した事がある場合は、「エンバカデロ製品のユーザーである場合には、こちらからログインしてください」を選択します、
下記の画面から、
登録ID(メールアドレス)
パスワード

を入力します。

「私はロボットではありません」を押すと、画像が出て生きて質問をしてくるので、
その質問に答えます。
正解出来たならば、「今すぐダウンロード」を押します。

ダウンロードが完了したら、ダウンロードフォルダを開くか、ブラウザ上からダウンロードアイコンダブルクリックして、インストーラーを起動させます。

インストーラーの初期画面
「使用許諾契約書」と「プライバシーに関する声明」を読んだら、「同意する」を押して次に進みます。

※インストール時の注意事項※

必ず、「製品のシリアルナンバーを既に入手している」を押します。
トライアル版を選択してしまうと、コミュニティエディションではなく、トライアル版がインストールされてしまいます。間違えた場合は、一旦アンインストールして、もう一度、インストールし直しましょう。

Community Editionの場合、シリアルナンバーだけの入力で大丈夫です。
なお、シリアルナンバーが記されたメールが、エンバカデロから届いているので、
それを開いてシリアルナンバーを取得します。

なお、再インストールの場合、3回インストールを行うと、登録回数の上限に達してしまう。
これは、不正コピー防止の為のライセンス保護の為にそのような制約があるようです。
上限に達したら、エンバカデロのサポートページから、上限更新を申請すれば、
翌営業日には登録回数が回復し、登録する事が出来ます。

再インストールする際、使用許諾ライセンスの更新は以下のページになります。
https://supportforms.embarcadero.com/

因みに、Delphi Community Editionは、他のどのバージョン(のプロフェッショナル版以上)とも、共存する事が出来ない。

競合している場合は、製品版とそのライセンス情報を消してからインストールするか、Community Editionを諦めるかのどちらかしか選択肢がありません。

その場合は(Community Editionをインストールする場合)、インストール完了後、以下のファイルを立ち上げ(64Bit版の場合)
「C:\Program Files (x86)\Embarcadero\Studio\19.0\bin\LicenseManager.exe」
※32Bit版だと以下
「C:\Program Files\Embarcadero\Studio\19.0\bin\LicenseManager.exe」

を実行し、ライセンスマネージャを立ち上げ、登録されたライセンスを消してから、Community Edition認証を行います。

以上で、インストールは終了です。

1.3 Delphiの起動と終了

2019年1月31日 木曜日

Delphiの起動と終了

Delphiを起動するにはスタートメニューから、「Embarcadero RAD Studio 10.2」→「Delphi 10.2」を
選択します。Windows7であればスタートメニューの検索ボックスから、Windows10であればColtanaから
「Delphi」と入力してEnterを押します。そうするとDelphiが起動する筈です。

初期起動画面ではテーマを選択できます。最近の流れでTokyoから、目に優しいとされるダーク調の外観が採用され、選択する事が出来る様になりました。これは後から変更する事も出来ます。
ツール→オプション→テーママネージャからライトかダークを選択する事が出来、カスタムで独自の設定も出来ます。

終了する場合は、タスクバーの×ボタンをクリックするか、ファイルメニューの「終了」をクリックします。プロジェクトを編集中だった場合、保存するかを聞いてくるので保存する必要があれば(何か作品を作っている途中であれば)、「はい」をクリックし、ファイル名を付けて保存します。既に一度保存されていれば上書き保存されます。

「ダーク」テーマを設定したところ

「ライト」テーマを設定したところ


Delphi統合開発環境

Delphiは統合開発環境(IDE)と呼ばれる膨大で潤沢な機能を惜しみなく詰め込んだ高機能な開発環境です。その機能の多くは、初めて触られる方や他の開発環境から移行した方には、余りに膨大だったり機能が全く異なったりで戸惑う事でしょう。しかし、Delphiに限らずEclipseやVisual Studio、その他のIDEを使い込んでいても、はじめからその全てを使いこなせる人は、そうそういないでしょう。問題は、如何に慣れ、如何に覚えるかです。

「ファイル」メニュー:

  プロジェクトやユニットの作成、追加、保存、終了等に使います。

「編集」メニュー:

  フォーム上のコンポーネントや、ソースコードの編集作業時に使います。

「検索」:

  ソースコードやファイルの検索の際に使います。

「表示」:

  IDEの機能の表示/非表示を操作する時に使います。

「リファクタリング」:

  リファクタリングに関する操作を行うときに使います。

「プロジェクト」:

  プロジェクトの操作(プロジェクトへの追加/削除、コンパイル、ビルド等)の際に使います。

「実行」:

  プロジェクトの実行やデバッグ、デバッグ操作の時に使います。

「コンポーネント」:

  コンポーネントの作成や追加、インポート(機能の取込)等に使います。

「ツール」:

  IDEの機能を操作する時に使います。

「ウインドウ」:

  レイアウトが「クラシックレイアウト」の時に、ウインドウを操作します。

「ヘルプ」:

  ヘルプとライセンス管理、バージョン情報について表示します。


ツールパレット

ツールパレットには沢山のコンポーネントが登録されています。機能別に登録されており、コンポーネントをダブルクリックするか、ドラッグアンドドロップをしてフォームの任意の場所に配置し、外観を作っていきます。

ツールバー(スピードバー)

ツールバーには、メニューにある、頻繁に使用する機能が登録されています。
ツールバーのアイコンの上にマウスカーソルを移すと、簡単なツールチップヘルプが表示されます。

フォーム

アプリケーションを作成する上で土台となるフォーム(ウィンドウ)です。このフォーム上にコンポーネントを配置して、外観を設計していきます。このフォームと呼ばれるウインドウは、通常のウインドウと同じく、マウス操作でサイズを変更出来ます。また、フォームのプロパティを変更する事でダイアログ等のウインドウに変える事も出来ます。プロジェクトの新規作成時は、一つのまっさらなフォームが表示されます。フォームは、任意でプロジェクトに追加していくことが出来ます。なお、フォームは上部のタブをクリックして切り替える事が出来ます。

コードエディタ

プログラムのコードを記述するウインドウ。イベントハンドラと呼ばれる動作に対するイベントを作成(フォームやコンポーネントのダブルクリック、オブジェクトインスペクタと呼ばれるIDEの機能からの操作で作成できます)することで、自動的にコードエディタ(コードが表示されるウインドウ)が前面に表示される。フォーム同様、上部のタブをクリックして、ページ(ユニット)を切り替える事が出来る。ページ(ユニット)とウインドウ(フォーム)の切り替えは、IDE下部真ん中の「コード」/「デザイン」をクリックする事で、切り替える事が出来ます。

オブジェクトインスペクタ

コンポーネントやフォームのプロパティの設定、イベントハンドラの作成を行うウインドウ。
プロパティはコンポーネントの各プロパティにより、Bool(TrueかFalse)、文字列(String)や文章(List)、数値等、様々なタイプがある。入力方法は、そのタイプによって自動的に変化し、選択したり、入力したりと、プロパティによって変わってくる。


3.1 Object Pascalの基礎知識~序章~

2018年12月11日 火曜日

はじめに

さて、本章ではDelphiプログラミングの本質、「Object Pascal」を使った実践的プログラミングに入っていきます。
ただ、Delphiプログラミングは大変奥が深く、仮に本章ですべての機能を網羅した場合、プロフェッショナル向けでこそあっても、初心者には到底理解し難い内容になってしまいます。そこで本章では、基礎の基礎を押さえた初歩的なプログラムを作ります。第2章で作ったメモ帳をベースに幾分機能を拡張したメモ帳を作ります。それでは始めましょう。

その前に、delphi のソースコードの構造化を説明していきましょう。
まず、第2章の計算プログラムは保存せずに閉じてしまって構いません。

メニューから、「ファイル」→「新規作成」→「その他」をクリックし、新規作成の際のダイアログを表示します。ダイアログ上でvclフォームアプリケーションを選択します。

次に、プロジェクトマネージャーから「新規プロジェクトを追加」ボタンを押します。
そして新規作成の際のダイアログを表示し、そこから 「マルチデバイスアプリケーション」を選択します。

さて、これで準備は整いました。
では説明に入っていきます。
まずは vclフォーム アプリケーションからです。
プロジェクトマネージャからProject1.EXEをダブルクリックしてから、 unit1.pasをダブルクリックし、Unit1にフォーカスを移します。

ソースコードの各部の意味

パスカルのソースコードの形式

unit Unit1;

unitキーワードの後ろにユニット名を記述します。 このユニット名はファイル名になりますが、自動的に設定されるため、手動で変更する必要は先ずありません。

Interface

インターフェース部と読みます。
各種の定義と宣言を記述します。
直接のプログラムコード(実行部分)は記述できません。

Uses

ファイル内で利用する、クラスを記述します。ここで言うクラスとはDelphiの関数やライブラリが記述された独立したファイルであり、別名「クラスライブラリ」とも呼びます。多くの場合、ここには自動でクラスが登録されていきます。手動で変更する必要がある場合は開発者(つまりあなた)が直接Delphiの機能を呼び出す場合などです。

Type

型の定義を記述します。
型名=型の定義、
といった形で型を定義していきます。

Private
    { Private 宣言 }
  Public
    { Public 宣言 }
  end;

【Private 宣言とPublic 宣言について】
Private 宣言とはプライベートの空間という意味です。
つまりこの例で言うと、Unit1.pas内部でのみ使えます。
外部のユニット、つまり、Unit2等はUnit1のプライベートに立ち入ることはできません。そのため、このプライベート空間に書かれた宣言はUnit 2は参照する事は出来ません。
対して、 Public 宣言は文字通りパブリックな空間という意味です。
当然ながら、パブリックは公共という意味ですので、ここに書かれた宣言はプロジェクト全体で共有されます。

注意が必要なのは宣言の管理です。ここで書かれた宣言は「グローバル」な宣言になります。 プライベートであれ、パブリックであれ、ユニット内もしくはプロジェクト内で共有されます。
例えば、この種の宣言をいたずらに多数行った場合、「名前空間が汚れる」 といった現象が起きます。
これはグローバル変数を多数宣言することにより、似たような名前、似たような機能の変数が宣言されることにより、変数管理が難しくなる現象のこと指します。そのため、無用のグローバル変数はなるべく避けた方が賢明でしょう。

var

変数の宣言を記述します。
これは大変よく使いますので、必ず覚えましょう。

Implementation

「実装部」とも呼びます。
関数や手続きなどの処理を記述します。
型の定義や変数宣言を行うこともできます。

Initialization

{初期化部}
この初期化部に記述されたコードはプログラム開始自動的に実行されます。
ただし、このコードは省略可能なため、使用時には宣言を入力する必要があります。
ソースコードの一番下、「end.」の上に記述します。

Finalization

{終了処理部}
この終了処理部に記述されたコードはプログラム終了直前に実行されます。
ただし、このコードは省略可能なため、使用時には専念を入力する必要があります。
ソースコードの一番下、「end.」の上に記述します。

{$R *.dfm}

この記号は「フォームが存在します」と言う IDE 内部が使う記号です。
この記号がないと、リンカがフォームファイル(*.dfm)を見つけられなくなってしまいます。


一つの宣言や処理を行う単位となります。
ちなみに、この1行当たりの文の事をステップと呼びます。
また、文には大文字、小文字の区別はありません。
(例:10行=10ステップ)

ブロック
Begin と end で囲まれた範囲のことを指します。
特徴として、複数の処理をまとめることができます。
また、このブロックとは処理のまとまりを示します。

コメント
ソースコード注釈のことを指します。
コメントの種類には、

//1ステップをコメント化します。

(*
この記号に挟まれた範囲は、
全てコメントとなります。
*)

{
この記号に挟まれた範囲は、
全てコメントとなります。
}

end.

ソースコードの終端記号です。
この記号より先にはソースコードがあってはいけません。

では、プロジェクトマネージャー から、 Project 2. EXE の下にあるunit2.pasをダブルクリックし、フォーカスを映します。

Fire Monkeyアプリケーションも、基本的な構文は同じです。

{$R *.fmx}

この記号が若干異なり、dfmからfmx になっています。
機能は全く同じです。

ここで、usesの宣言のところよく見てください。
先ほどのvcl アプリケーションのusesの宣言とはクラスの名前が若干異なることに気がついたかと思います。同じ delphi アプリケーションですが、vcl とマルチデバイス(Fire Monkey)では使用するコンポーネント全く異なります。 いくつかのクラスは vcl と共通のものはありますが、fmx で始まるクラス名はマルチデバイスアプリケーション(Fire Monkey)独自のクラスになります。

基本的な説明は以上になります

1.1 Delphi概要

2018年12月9日 日曜日

Delphiとは、Windows、Mac OS、(又はMac OS X)、iOS、Android向けのアプリケーションを開発出来る統合開発環境(IDE)です。この統合開発環境(IDE)は別名RAD(「Rapid Application Development」の略)と呼ばれており、ウサギのように素早くアプリケーションを作成するとの意味が込められています。

その開発手法は、先ず、フォームと呼ばれるウインドウにボタンやリストボックス、エディタにメモ等(Delphiではこれらをコンポーネントと総称しています)を配置し、ビジュアルに画面を設計します。設定もコンポーネントのプロパティをビジュアルに設定します。画面の設計が終わったら、コンポーネントのイベントハンドラ(ボタンを押した、エディタにキー入力がされた、リストボックスの値が変更された、などを感知する箇所)に記述し、ソースコードを書くといった開発手法になります。

当然ですが、ビジュアルな開発だけではなくソースコードからコンポーネントを動的に生成したり、プロパティ(設定)を実行時に変更するように記述する事も出来ます。

因みに、Delphiの歴史は浅い様で深く、Delphiと言う名称で登場したのは今から20年近く前の事になります。1995年、Windows3.1(Windows95の前身。DOSとWindowsの組み合わせから成るハイブリット型OSだった)用として、「Delphi For Windows」としてデビューしたのを皮切りに、今に至るまで紆余曲折を経ながら進化を続けています。

当時、Windows用開発環境としては、安易に開発出来るがパフォーマンスに劣るVB(Visual Basic)か、パフォーマンスに勝るが難解なC++か、実質二者択一の選択肢しかありませんでした。そこにDelphiは、VBの様に安易に開発が可能で、その上、C++の様にパフォーマンスに優れ且つ当時最先端だったオブジェクト指向を先駆けて搭載した言語仕様として登場しました。

Delphiは、2WayToolと呼ばれる機能やVCLと呼ばれるコンポーネント群を有しています。VCLはホワイトボックス化している為、そのソースコードを追い掛ける事が可能です。
(当時、例えばVBではコンポーネントはC++で開発されており、しかもブラックボックスなのでコンポーネントのソースコードを見る事は出来なかった。)

その為、Delphiは大変な衝撃をもってエンジニアに受け入れられ、2000年前後迄、爆発的にヒットしました。

現在のDelphiは、当時から脈々と続くVCLは勿論、ヴァージョンXE2から始まった、Fire Monkeyと呼ばれるフレームワークも搭載され、Windowsの枠を超えた開発が可能になりました。具体的には、インタプリタではなくネイティプコンパイラでクロスプラットフォームでの開発を実現した為、Mac OSやAndroid、及びiOSにも対応が可能です。また、Delphi Community Editionは無償版とはいえ、コンポーネントも豊富で、搭載された機能も潤沢である為、無償版だからと言って困る事はないでしょう。

2.4 アプリケーションの実行とテスト

2018年12月7日 金曜日

アプリケーションの実行とテスト

コンパイル/ビルド/デバッグ/実行

これらの作業(コンパイル/ビルド/デバッグ/実行)は人間が理解できるPascal言語の記述をコンピュータが理解できる機械語に翻訳する作業になります。
Delphiを始め、Pascal系のすべての言語に共通する事であり、同じ作業を必要とする言語にC言語、C++言語が該当します。これらの言語を総称して「ネイティブコンパイラ」と呼びます。

似たような仕組みの言語に「インタプリタ」系の言語があります。有名どころとしては「Java」、「C#」、「VB.net(VB)」が存在します。但し、インタプリタ言語は「ネイティブコンパイラ」系の言語と異なり、アプリケーション単体では動かず、それぞれの言語に対応したライブラリをパソコンにインストールしておかないと、アプリケーションを起動する事が出来ません。逆に言うと、このライブラリさえインストールすればWindowsでも、Macでも、Linuxでも同じ実行ファイルで動いてしまう事になります。(特定のOS環境に依存した機能を使ったり、書き方をした場合は除く)

上記の言語と一線を画するのが「スクリプト」系言語です。「インタプリタ」系言語と同じでライブラリを必要とします。このスクリプト系言語の最大の特徴はただのテキストファイルが実行権限を持って動いてしまう事です。この最大の強みは特定の開発環境がなくとも、極端な話、メモ帳一つで作れてしまう事です。
では、早速作業に入りましょう。
先ず、拡張子を表示できるようにします。
Windows7なら、コントロールパネルを起動し、表示方法を「大きなアイコン」にして、「コントロールパネル」→「フォルダーオプション」→「表示」から、「登録されている拡張子を表示しない」のチェックボックスを外します。

Windows10なら適当なフォルダを開くか、エクスプローラを起動し、「表示」タブを選択、ファイル名拡張子のチェックボックスを入れます。

実行すると、今日の日時を表示してくれるプログラムをネイティブコンパイラ(Delphi)、スクリプト(Visual Basic Script)で作っていきます。

Delphiで実行した場合

コンソールアプリケーションを新規に作り、以下のコードをtryとexceptの間に記述し、実行します。
ソース7

writeln(DateTimeToStr(now));
sleep(4000);

実行結果:

メモ帳を起動します。(Windows7なら、スタートメニューのファイル名を指定して実行から、「notepad」と入力、Windows10なら、コルタナに「notepad」と入力し,Enterを押します)
Visual Basic Script:下記をメモ帳に記述し、「nowtime.vbs」という名前で保存します。完了したら、そのファイルをダブルクリックします。

ソース8

msgbox(now)


違いが判りましたでしょうか?Delphiで記述するには必ずDelphiが必要で、僅かでも変更をするには必ずDelphiで編集しないとなりません。
対して、スクリプトはメモ帳一つでも作れてしまいます。

コンパイル(ビルドも含む)が実行形式プログラム(*.exe)を出力する迄の動き

「Pascalソースファイル(*.pas)」

コンパイラ

「フォームファイル(*.dfm、又は*.fmx)」
「中間オブジェクト(*.dcu)」
「リソースファイル(*.rex)」

リンカ

「実行形式プログラム(*.exe)」

プログラムのテスト

コンパイラとリンカが動いて、実行形式プログラムが生成されても、これでプログラムが正しく動くとは限りません。
先ほどのプログラムを保存が完了したら、新しいプロジェクトを作ります。
メニューから「ファイル」→「新規作成」→「VCLフォームアプリケーション」を選ぶか、ツールバーから新規作成を選びます。
の中から、を選びます。
すると、見慣れた新規作成のダイアログが出るので「VCLアプリケーションを選びます」。
新しいフォームが表示されるので、以下の画面の様にコンポーネントを配置します。

配置するものは「Edit」コンポーネント2つ、「Button」コンポーネント1つです。
Editコンポーネント二つのTextプロパティを数字の「0」に、
ButtonコンポーネントのCaptionプロパティを「足す」にします。
Buttonのイベントハンドラを記述します。Buttonコンポーネントをダブルクリックします。
ソース9をイベントハンドラに貼り付けます。

 try
    ShowMessage(IntToStr(StrToInt(Edit1.Text) + StrToInt(Edit2.Text)));
  except
    //実行時例外の発生
    ShowMessage ('計算が出来ません、エラーです。');
  end;


ツールバーの中から、右の図のを押します。
すると、コンパイルが始まります。
正常な計算結果

論理エラーが発生した例

この論理エラーはプログラム設計時に想定された入力が数値と仮定していたものの、実際には数値ではなく、文字列が入力された事によって生じます。例示したものは単純ではありますが、このような事は実際に何かを作ってみると、よくある事で、細心の注意が必要です。今回は入力という見やすいものでしたが、これがインターフェースからは見えない内部的な処理だったりすると、とても厄介なものになります。

設計時エラーの例

今度は、設計時エラーを実践してみましょう。
ソース10を先ほどのイベントハンドラの記述と置き換えます。

 try
    ShowMessage({IntToStr}(StrToInt(Edit1.Text) + StrToInt(Edit2.Text)));
  except
    //実行時例外の発生
    Showmessage('計算が出来ません、エラーです。');
  end;


そして、を押すと、ビルドが始まり、コンパイルの段階でエラーが表示される筈です。

「OK」を押すと、以下の様に31行目が赤く表示される筈です。
イタリック表示にしたところが、エラーの原因箇所です。(IDEではこの様に表示はされません)
ShowMessage({IntToStr}(StrToInt(Edit1.Text) + StrToInt(Edit2.Text)));
では、エラーを修正しましょう。
{IntToStr}の、グリーンの箇所を削除しましょう。
IntToStrとなる筈です。
出来たら、を押して、ビルドをして実行しましょう。今度は実行できたはずです。
先ほどのエラーの意味は「文字列を期待したのに、数値が入っていたので、実行できませんでした」というエラー結果でした。
「IntToStr」はInteger(数値)をString(文字列)に、
「StrToInt」は「String」(文字列)をInteger(数値)に変える、
基本中の基本の型変換になります。次章で詳しく説明するかと思います。

この一連の作業を「デバッグ」と呼び、論理エラーや設計時エラーを修正していく作業になります。ではもう一回、細かくデバッグをしていきましょう。

2.3 ビジュアル設計ツールの使い方

2018年11月28日 水曜日

ビジュアル設計ツールの使い方~ツール紹介編~

ユーザーインターフェース

ユーザーインターフェースとはユーザー(アプリケーションを使う人)とアプリケーションとの対話の手段で、アプリケーションの目に見える表示要素と言えます。更にかみ砕いて書くと、ユーザーインターフェースとは「ユーザー(使う人)」との「インターフェース(接点又は接続部分)」であり、固い言い方をすると、「アプリケーションと人とを繋ぐ接続コネクタ」であると定義できます。
Delphiに例えるなら、画面真ん中にある「フォーム(ウインドウ)」がそれであり、エディット、リスト、ボタン等、限られた、しかし多くの要素(コンポーネント)の中からユーザーの使用目的に合致すると思われる要素を適切なサイズで、適切な場所に、適切な操作方法で、設置/設定する必要があります。そしてこれらの要素にはユーザーからの入力に応答し、他の要素に操作した結果、得た情報やメッセージ(これを値、又は返り値と呼びます)を表示させる事が出来ます。
ここで重要なことは、ユーザーが想像し得る適切な要素に値を渡す必要があるという事です。
例えば、これらが思いの外、時間が掛かったり、ユーザーが操作法を想像しにくかったり、手間暇のかかる操作だったとしましょう。一つの操作をする度に、5回の確認やマウス、キー操作を要すると仮定します。例えば、時間がないときに大急ぎで操作していたとしたら、ユーザーは何を思うでしょうか?答えは幾つか考えられます。そんな設計をした人が誰なのか、不条理な思いをしながら操作するか、あるいは直ぐに放り投げて、興味を失ってしまうかのどちらかと思われます。
操作する際の階層の深さや手数は3回迄、要素の配置には熟慮を重ねた上で、ルールを作ってグループ分けをしっかり定義して配置すべきでしょう。
以上が、ユーザーインターフェースを設計する上での、基本的で重要な考え方になります。

ビジュアル設計ツール

Delphiでは、ユーザーインターフェースを実際に動かした時と同じ状態で設計、作成する事が出来ます。
フォーム:実行時にウインドウとなり、アプリケーションの画面となる部分で、先ほど説明したユーザーインターフェースを設計し、作っていく土台となるものです。

ツールパレット(コンポーネントパレット):コンポーネントがグループ分けされて、パレットに収まっています。「検索」から、欲しいコンポーネント名を検索すると、全てのコンポーネントから検索して一覧を表示してくれます。検索したら、ダブルクリックか、ドラックアンドドロップで、フォーム上に配置していきます。

構造(オブジェクトツリー)
真ん中の画面が「デザイン」(フォーム)なら、コンポーネントの配置を「コード」なら、ソースコードのそれぞれのツリー構造(オブジェクト同士の上下関係)を表示します。

「デザイン」(フォームの場合)

「コード」(コードエディタ)の場合

オブジェクトインスペクタ

オブジェクトインスペクタはDelphiでアプリケーションを開発する上で、決して欠く事の出来ない、非常に重要なツール、又はオブジェクトリポジトリです。
このオブジェクトインスペクタはフォーム(ウインドウ)やコンポーネント(要素)のプロパティ(設定)を変えたり、又は、それらのイベントハンドラを設定して作成し、開発する人(つまりあなた)に、コードを記述する場所をナビゲートしてくれます。もし、このツールが使えなくなったら、オブジェクト指向での開発は不可能ないし、酷く効率の悪いもの(全て、1から自分で書く必要に迫られます)になってしまうでしょう。非常に重要なツールですので、必ず使いこなせるように頑張りましょう!

オブジェクトインスペクタ:プロパティエディタタブ

オブジェクトインスペクタ:イベントタブ

ビジュアル設計ツールの使い方~実践編~

1. 先ず、プロジェクトマネージャで「Project1.exe」をアクティブプロジェクトに設定します。判らなくなったら、プロジェクトマネージャの説明まで戻りましょう。
2. 選択出来たら、「Project1.exe」のツリー構造を展開し、更に「Unit1.pas」のツリー構造を展開、「Unit1.dfm」をダブルクリックします。

3. 次に、真ん中の画面で下にある「コード/デザイン」を、「デザイン」が選択されていることを確認してください。されていなかったら、デザインをクリックして選択します。
4. ツールパレット(画面の右下側)から、「検索」から「Panel」と入力します。Panelコンポーネントが検索で引っかかるので、これを、配置します。
5. 「構造」(オブジェクトツリー)から、「Form1」をクリックし選択します

6. 4.の手順で、「Memo」をForm1に配置します。
7. 5.の手順で、「Panel1」をクリックして選択します。
8. 4.の手順で、「Button」を3つ、Panelに配置します。
9. 4.の手順で、「OpenDialog」、「SaveDialog」を、何処でもいいので配置します(これを非ビジュアルコンポーネントと呼びます。実行時は見えないのが特徴です)。
10. 5.の手順で、「Panel1」を選択します。
11. オブジェクトインスペクタのプロパティタブを選択し、検索から「Caption」と入力します。「Caption」プロパティが見つかるので、右隣りのテキスト編集領域から、「Panel1」という文字を削除します。この文字を「プロパティの値」と言い、ここを変えてあげることで、コンポーネントの設定を変える事が出来ます。

12. 今度は、11.の手順で、「Align」と入力し、テキスト領域をクリック、パネルの図がドロップダウンして表示されるので、一番上の細長いパネルをクリックします。そして、値が「alTop」に変わったことを確認します。

13. 「Panel1」に配置した「Button」コンポーネントを左詰めで、バランスよく、Panel1上に並べます。
14. 11.の手順で、「Button」コンポーネントの表示されている名称を変えていきます。左端から、「新規」、「開く」、「保存」と入力していきます。
15. 5.の手順で、「Memo1」を選択し、「Align」を12.の手順で真ん中のパネルの設定をし「alClient」に変わったことを確認し、検索から「Lines」を探して、テキスト入力エリア(プロパティエディタと呼びます)の「(TString)」をダブルクリック、メモがあるポップアップダイアログが表示されるので、「Memo1」という文字を消して「OK」を押します。

16. 以下の様に、フォームが設定される筈です。

17. Button「新規」、「開く」、「保存」の「イベントハンドラ」を、設定していきます。
18. 新規Buttonをクリックするか、5.の手順で選択します。
19. オブジェクトインスペクタのイベントタブをクリックし、検索から「OnClick」を探し、右の空白をダブルクリックし、イベントハンドラを作成します。
20.
21. コードエディタと呼ばれるウインドウが出現し、以下の文言(コード)がある筈です。
ソース2

Procedure TForm1.Button1Click(Sender:TObject);
begin

end;

Beginとendの間に、以下の命令文を貼り付けます。
ソース3

//新規作成(メモ帳の初期化)
Memo1.Lines.Clear;

22.今度は、20.21.の手順で、「開く」、「保存」に、以下の命令文を貼り付けていきます。
「開く」Buttonのイベントハンドラ
ソース4

//テキストファイルを開く
//もし、ファイルが開かれなかったらイベントを終了
If not OpenDialog1.Execute then
exit;
try
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
except
//実行時例外の発生
Showmessage('ファイル:'+OpenDialog1.FileName+'は開けませんでした。');
end;

「保存」Buttonのイベントハンドラ
ソース5

//テキストファイルを保存
//もし、ファイルが選択されなかったらイベントを終了
If not SaveDialog1.Execute then
exit;
try
Memo1.Lines.SaveToFile(SaveDialog1.FileName);
except
//実行時例外の発生
Showmessage('ファイル:'+SaveDialog1.FileName+'は保存出来ませんでした。');
end;

全体を見ると、以下の様な形になる筈です。
ソース6

procedure TForm1.Button1Click(Sender: TObject);
begin
//新規作成(メモ帳の初期化)
  Memo1.Lines.Clear;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  //テキストファイルを開く
  //もし、ファイルが開かれなかったらイベントを終了
  if not OpenDialog1.Execute then
    exit;
  try
    Memo1.Lines.LoadFromFile( OpenDialog1.FileName );
  except
    //実行時例外の発生
    Showmessage('ファイル:'+ OpenDialog1.FileName + 'は開けませんでした。');
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  //テキストファイルを保存
  //もし、ファイルが選択されなかったらイベントを終了
  if not SaveDialog1.Execute then
    exit;
  try
    Memo1.Lines.SaveToFile( SaveDialog1.FileName );
  except
    //実行時例外の発生
    Showmessage('ファイル:'+ SaveDialog1.FileName + 'は保存出来ませんでした。');
  end;
end;

end.

23. 以上で、一つ目のアプリケーションのコーディングが完了しました。
今度は実行してみましょう。ツールバーから、以下のボタンを探します。

このボタンを探して押します。

もし、何か間違いがあれば、以下の画面が表示されます。
エラーの箇所はダイアログの「OK」を押した後、赤線が引かれて表示されます。(今は、そういうものだと思ってください)ここでは、エラーは出ない筈なので、イベントハンドラの記述をよく見比べてください。

成功すると、以下の画面が表示され、アプリケーションが動きます。

24. 今度は「Project2.exe」をアクティブプロジェクトにして、こちらも全く同じものを制作してみてください。
フォームの画面やコンポーネントの種類や数が若干変わりますが、作り方もイベントハンドラの記述も全く同じです。


25. 出来上がったら、名前を付けて保存しましょう。

今回作ったものは次回の章でも使いますのでご注意ください。
この先の章で、VCL、Fire Monkey双方で特徴がはっきりと分かれ、コードの書き方や、コンポーネントの設定が両者で大きく変わっていきます。
次はコンパイル、デバッグ、実行についてになります。

(保存の仕方)メニューから、「ファイル」→「すべてを保存」か、ツールバーから、

この二つのアイコンのうち、右のアイコンをクリックします。
ここで注意が必要なのは、
「C:\Users\(ユーザ名) \Documents\Embarcadero\Studio\Projects」
に保存してしまわない事。ここに保存してしまうと、後でいろいろと厄介なことになります。この「C:\Users\(ユーザ名) \Documents\Embarcadero\Studio\Projects」というフォルダは、Delphiがプロジェクトを新規作成する際に使用するデフォルトのフォルダになります。ここに保存してしまうと、後から新規作成した際にDelphiが既にProjectがあるのを察して、例えば、今回作った(二つのエディタ)ものだと、グループ名は「ProjectGroup1」ではなく「ProjectGroup2」(既に「ProjectGroup1」が保存されている為、1は使えない)、
プロジェクト名も「Project1,Project2」が保存されているので、「Project3」からになり、
ユニット名も、二つ保存されているので、「Unit3」からになります。
そして、フォルダ階層も結構深いので、ここに保存してしまうと、「あれ、あのファイル何処行った??」、「この前編集したプロジェクトは、この中のフォルダのどれだっけ??」という事になりかねません。

↓デフォルトの初期フォルダにプロジェクトを保存してしまった例

以上の事を気を付けたうえで、今回は「デスクトップ」に「エディター」というフォルダを作成してそこに保存します。まずユニットから保存することになります。今回は標準の名前でもいいでしょう。敢えて名前を付けるなら「unit1」が「vcl_edit」、「unit2」が「FireMonkey_Edit」が妥当でしょう。

次はプロジェクトの保存になります。これは実行ファイル名になるので、慎重に名前を付けましょう。今回だと、ユニット名と同じ名前で良いでしょう。但し、一つのプロジェクト(グループではなく)に複数のユニットがある場合はユニット名と名前を重ねてしまうと、命名管理に支障をきたす(何が何だか、名前の意味が分からなくなりかねない)ので、プロジェクト名にアプリの名前(日本語は避ける事)、ユニット名に、ユニット(フォーム)の機能名あるいは何をするユニット化を分り易く命名した方がいいでしょう。

2.2 ビジュアル設計ツールの基本

2018年11月27日 火曜日

ビジュアル設計ツールの基本

オブジェクトリポジトリの使い方の実践

ここからは、VCL、Fire Monkeyの二つを使います。全く同じ簡単なメモ帳アプリケーションを作りながら、オブジェクトリポジトリの使い方を実践的に学んでいきます。途中、コードの打ち込み作業もありますが、今は何も考えずにコピーアンドペーストして、指示通りの箇所に貼り付けていってください。
そして、この章で取り扱う事は、Delphiを扱ううえで、必要最低限の基本的なことです。そしてここを理解できないと、この先の章で間違いなく躓きます(交通規則への理解や車の運転免許証を持っていても、車の操作方法が判らないと、何もできないのと同じです)。
Delphiの操作方法が判らなかったら2章を、プログラミング(命令文の書き方)が判らなかったら3章を、
繰り返し読んでみて頑張りましょう。
初めて触る、慣れない道具を使うというのは、本人にしか判らない苦痛かと思いますが、めげずに頑張っていきましょう。頑張れば、半年から1年後、楽しみながらDelphiを使いこなすあなたが、そこにいる筈です!

プロジェクトの新規作成

メニューから、「ファイル」→「プロジェクト」→新規作成→「その他」を選択します。するとダイアログウインドウが現れます。これを「オブジェクトリポジトリダイアログ」と呼びます。そこから「VCLフォームアプリケーション」を選択します。

プロジェクトマネージャ

Delphiの画面右上に、「プロジェクトマネージャ」と表示されている枠がある筈です。無い、又は表示を間違って外してしまったならば、メニューから、「表示」→「ツールウインドウ」→「プロジェクトマネージャ」を選択すると、表示されます。この枠(又はウインドウ)を「プロジェクトマネージャ」と呼び、プロジェクト(これから作るアプリケーション)を管理したり、切り替えたり、呼び出したりと、頻繁に使う機能の一つです。是非とも覚えておきましょう。

プロジェクトの追加(新規作成)

「プロジェクトマネージャ」の「ツールバー」から、フォルダアイコンに+マークが付いたアイコンにマウスカーソルを合わせます。

1秒程待つと、「新規プロジェクトの追加」というポップアップヘルプが表示されますので、そのボタンを押します。すると、先ほど新規作成で表示された、「オブジェクトリポジトリダイアログ」が表示されます。そこから、「マルチデバイスアプリケーション」をダブルクリックするか、選択して「OK」を押します。すると、「プロジェクトマネージャ」に、「Project2.exe」という、新しいプロジェクトが表示されたはずです。

アクティブプロジェクト

アクティブプロジェクトとは、現在編集中(編集が有効になっている)のプロジェクトの事を指します。更にかみ砕くと、現在作業中(現在編集作業中)のプロジェクトの事を指します。
アクティブプロジェクトを調べるには、
プロジェクトマネージャのタイトルバーを見ます。
左詰めで、プロジェクト名が表示されているはずです。

又は、プロジェクトマネージャ内のプロジェクト名を見、
太字ならばアクティブプロジェクト、
細字ならば、非アクティブプロジェクト、
と判別する事が出来ます。

全体を見渡すとこんな感じ。アクティブプロジェクトを切り替えたい場合はこの場合の例で言うと、「ProjectGroup1」直下の「Project1.exe」又は「Project2.exe」をダブルクリックするか、それを右クリックし、右クリックメニューを出して、「アクティブ化」を押します。

2.1 Delphiアプリケーション作成についての基礎知識

2018年11月26日 月曜日

作る事が出来るアプリケーションの種類

Delphiを起動

メニューから、「ファイル」→「新規作成」→「その他」を選びます。
以下の画面が表示されます。以下の種類のアプリケーションを作成できます。

Androidサービス

Windowsで言うところの「常駐アプリ」の様なものです。見た目(ユーザーインターフェース又は画面)が無く、ずっと実行され続ける(バックグラウンドで動くとも言います)性質のアプリです。それを作る事が出来ます。画像はAndroid Serviceを新規作成した時の画面。見た目が無いので、フォームも当然表示されません。

Fire Monkey Metropolis UIアプリケーション

Fire Monkeyコンポーネントを使って、Windows8の見た目や動きにそっくりなアプリケーションを作る(Windows8のルックアンドフィールに準拠している、とも言います)事が出来ます。この機能の面白い点として、Windows8以外のWindowsであっても、Windows8の見た目になります。

VCL Metropolis UIアプリケーション

Delphiの伝統的なVCLコンポーネントを使って、Windows8の見た目や動きにそっくりなアプリケーションを作る事が出来ます。(Windows8のルックアンドフィールに準拠している、とも言います)
この機能の面白い点として、Windows8以外のWindowsであっても、Windows8の見た目になります。

VCLフォームアプリケーション

Delphiの伝統的なアプリケーションを作る手法。VCLとはVisual Component Libraryの略。初代Delphiから脈々と続く手法であるため、過去に発売されたDelphiの書籍やインターネット上の過去の資産を活用しやすいのが特徴。但し、このVCLは初代から現在のバージョンに至るまで、様々な改良や修正が加えられているので、過去のバージョンがそのまま直ぐに動くとは限りません。(余談ではありますが、これは他の言語にも言える事で、Delphiに限った事ではなく、セキュリティ上の対策や、機能向上の為に変更や改良、廃止があることは、珍しいことではありません)

MDIアプリケーション

論より証拠で、見た方が理解は早いと思います。下の画面を見てください。背景はDelphi、前面はMDIアプリケーションを新規作成して、実行したところです。因みに、一行も書いていないし、何の設定もいじっていません。でもこれだけの事が出来ます。この画面まで、まっさらなフォームからも作れますが、時間は当然消費するし、最初からあるのなら、当たり前ですが使った方がいいです。但し、勉強の為なら、このまっさらのMDIを調べて、自分で再現してみると、初歩のうちは大変勉強になります。

SDIアプリケーション

これも論より証拠で、見た方が理解は早いと思います。同じく下の画面を見てください。最初から、コンポーネントが配置してあり、お膳立てがされてあります。MDIの時程至れり尽くせりではないですが、この後やることは、フォームを新規に追加して、フォームを呼び出す処理を書いてあげるだけでいいのです。最初は、SDIから入るのは難しいかもしれないでしょう。しっかりお膳立てされたMDIをマスターして、そのMDIを再現できるようになり、意味も理解出来たら、SDIに進むといいでしょう。そうすれば、お膳立ての効いたDelphiの良さが判る様になると思います。

コンソールアプリケーション

下の画面を説明していきます。
以下のプログラムの文(命令文)を書きました。
そして実行したのが、下記の画面です。真っ黒い画面に、「Hello, World!」と表示されていると思います。
これがコンソールアプリケーションというものです。このコンソールアプリケーションには、特に意識してコードを書かない限り、オブジェクト指向ではなく、それ以前の時代の書き方になります。つまり、上から始まって、下に流れ、一番最後の命令文が終わると、有無を言わさず、アプリケーションは終了してしまいます。
この例でいうと、「sleep(50000);」が実行され、50000マイクロ秒経過したら、アプリケーションは終了してしまいます。
それがコンソールアプリケーションが持つ、他のアプリケーションとの最大の違いであり、特徴です。
ソース1

writeln('Hello,World!'); //※「Hello,World!」を表示して改行してね。
sleep(50000); //※50000マイクロ秒待機してね。

コントロールパネルアプリケーション

これはちょっと特殊かもしれません。平たく書くと、コントロールパネルの機能を作ります。初心者向けでは確実にないです。画面はコントロールパネルアプリケーションの初期状態のコードエディタの画面です。

サービスアプリケーション

バックグラウンドで(常駐して継続的に)実行されるアプリケーションを作成します。

ダイナミックリンクライブラリ

ダイナミックリンクライブラリ(DLL)を作ります。これ単体は実行可能アプリケーションではなく、拡張子も.dllになります。「ダイナミック」に、アプリケーションに「リンク」する「ライブラリ」と考えると分り易いかも。その名の通りです。アプリケーションの機能を拡張出来るライブラリを作れます。

パッケージ

コンポーネントをパッケージにします。作るよりも、恐らく使う事の方が多いかもしれません。今はそういう機能もある、といった程度に捉えて置くだけでいいかと思います。コントールパネルアプリケーション、サービスアプリケーション、ダイナミックリンクライブラリ、パッケージ、が作れるようになったら、立派な上級者の仲間入りでしょう。

マルチデバイスアプリケーション

これこそが、例のFire Monkeyです。

ある意味、XE2以降のDelphiの最大の売りといっても過言ではないでしょう。個人的意見で恐縮ではありますが、プライベートで使うならば、使わなければ損!と思っております。その最大の売りは、ユニークで個性的なコンポーネント群と美しくそして非常に強力な描画機能を持っている点でしょう。

Fire Monkeyの特筆すべき点はマルチデバイス対応もさることながら、「Shapes」グループ等に属する、風変わりで、そして強力なコンポーネント達です。Fire Monkeyは、VCLとは全く異なるアーキテクチャの様です。その顕著な証明として、2Dグラフィックスアプリケーションを、いとも簡単に作れてしまう事です。それもコーディング作業、つまりコードを殆ど書く事もなく(!)。これは驚異的なことであると考えております。Delphiは、C++と同列に分類できる、ネイティブコンパイラ(ソースコードをアプリケーションに変換すると、コンピュータが理解し易い機械語に翻訳され、高速に動作する仕組みのアプリの事)です。そして統合開発環境でもあり、潤沢な機能とコンポーネントを搭載しています。そこに非常に高機能な2Dや3Dの開発機能が(しかも標準で)備わっているのです。

1.5 Delphi開発の手法

2018年11月26日 月曜日

Delphi開発の手法

Delphiでは、コードの記述とビジュアルプログラミングと呼ばれる手法を組み合わせて開発を行います。

ビジュアルプログラミングとは?

➀ボタンやテキスト等のコンポーネントをマウス操作によってフォームに配置してプログラムを作成する手法。

➁最初からプログラムの流れを記述していくのではなく、ユーザーのインターフェースを設計し、それを構成するコンポーネントに行われた操作に対して、どの様な処理を実行するのか定義していく。基本的にはコーディングが必要になるのは、イベントが発生した時に呼び出される。イベントハンドラへの処理を記述するだけとなる。

Delphi開発の手順

Delphiでの開発手法を纏めると、次の様になる。
1.プロジェクトの作成
2.コンポーネントをフォームに配置
3.プロパティの設定
4.必要なイベントハンドラのコーディング
5.プロジェクトのコンパイル
6.記述ミスがあれば修正→5.
7.プログラムの実行、テスト
8.プログラムの修正→5.
9.完成

1.4 Dlephiプロジェクトの概要

2018年11月21日 水曜日

Delphiプロジェクトについて

プロジェクト

Delphiの開発はプロジェクト単位で進めていく形になっています。
プロジェクトとは一つのプログラムの開発に必要な複数の要素を管理する単位で、一つのプロジェクトが一つのプログラムとなります。

プロジェクトグループ

その名の通り、プロジェクトが複数集まったものです。
例:
「受注管理」→
「仕入管理」→ 「販売管理システム」
「在庫管理」→

Dlephiプロジェクトのファイルの種類

Delphiプロジェクトファイルの構成は以下になります。

「プロジェクト名.dprproj」及び「プロジェクト名.dpr」

Delphiで開発するアプリのプロジェクトです。(このファイルを開いてアプリを開発します)
「プロジェクト名」はそのままアプリの名前になります。慎重に命名しましょう。

「ユニット名.dfm(又は.fmx)」及び「ユニット名.pas」

この二つのファイルは対になっていると考えた方が良いでしょう。「.dfm(又は.fmx)」はフォーム(ウインドウ画面)を、「.pas」はそこに記述したソースコードが収まっています。
また、フォームを持たないユニット(ウインドウ画面の無い)を新規に追加した場合、「.dfm」ファイルは生成されず、「.pas」だけが生成されます。
【備考】「.dfm」VCLアプリケーションを開発した時のフォーム情報を格納したファイル。
    「.fmx」FireMonkeyアプリケーションを開発した時のフォーム情報を格納したファイル。

「ユニット名.dcu」

コンパイル済みユニットファイル。

「プロジェクト名.res」

リソースファイル。

「プロジェクト名.local」

ユーザ固有プロジェクトオプションファイル。プロジェクトオプションの情報を格納したファイル。

「プロジェクト名.exe」

Delphi構築し生成されたアプリケーションです。
「\Win32\debug\」ビルド時や実行時、デバッグ時に生成され、フォルダに格納されます。

Delphi開発の要素

デフォルトプロジェクトの場合、下記の様にファイルが作成され、それぞれ名前が付けられています。

「プロジェクト名.dproj」

プロジェクトファイル(新)。中身はXML。

「プロジェクト名.dpr」

プロジェクトファイル(旧)。プロジェクトの管理及び、プロジェクトのメインプログラムになります。

「プロジェクト名.res」

リソースファイル。

「ユニット名.dfm(又は.fmx)」

フォームのプロパティ等の情報が詰まったファイル。

Delphi用語集

2018年11月20日 火曜日

あ行

iOS

iPhoneやiPadなどに用いられるOS。旧称はOS X iPhone及びiPhone OS。

アプリケーション

実行可能なソフトウェアの事で俗語に近く、最近ではアプリケーションを略して「アプリ」と呼ぶ風潮もある。例えば、WordやExcelも広義の意味ではアプリケーションであり、アプリと略す事も出来る。Delphi自体もOSから見れば、「アプリケーション」という事になる。
ややこしいが、Delphiを始めとした開発環境は「アプリを作る為のアプリ」という事になる。
また開発環境(Delphi等)でアプリを作る為のアプリを作る事すら出来る。
簡易的に表現する為に敢えて俗語に近いが、理解しやすい言葉を選んだ。

Andloid

Google社が開発したモバイル用途向けOS。
2005年にAndroid社がGoogle社によって買収した経緯があり、Andoroid社の社名がそのままOS名となっている。
世界で最も人気のあるモバイル用途向けOSでもあり、スマートフォンやタブレット端末向け(Android)、自動車用途向け(Andoroid Auto)、テレビ向け(Andoroid TV)、ウェアラブルデバイス向け(Wear OS)がある。

イベントハンドラ

「イベントハンドラ」とは「イベント(何かしらの動作によって起きた、又は起きる出来事)」の「ハンドル(イベントの動作を操作する為の機能を持つ)」のこと。例えば「ボタンを押したら(ハロー)と表示させたい」とする。それを実現するのが「イベントハンドラ」になる。イベントハンドラはコンポーネントによって複数の種類があり、動作するタイミングや動作の管理が異なったりする。以下の画面がイベントハンドラ。

Windows

Microsoft Windowsはマイクロソフトが開発・販売するOS。
Windowsには多数の商品ラインナップやヴァージョンがあり、大きな特徴としては、CUIを採用したDOS(MS-DOS)の操作の流れを残しつつ、伝統的にGUIを全面的に採用している。

Windows3.1

1994年当時のWindows3.1は一つの独立したOSではなく、DOSと呼ばれるOSの上で動作する。
いわゆるシェルを大きくした様な(DOSから見たら)DOSプログラムの様な形態をとっていた。
今の様な一つのOSとして纏まったのは、Windows3.1の後継となるWindows95になる。

オブジェクト指向

「object-oriented」の日本語訳。
Delphiに限らず、現代のプログラミングに於いては必須の考え方であり、重要なファクター(要素)ともいえる。

か行

開発

ソフトウェア開発とも呼ぶ。
ユーザ(又は開発者自身)の不満(ニーズ)を解決する手段を提供することである。作りたいものとユーザ受けするものは必ずしも一致せず、そこには緻密なニーズの調査と大胆或いはユニークな発想と柔軟な思考が求められる。

開発手法

ソフトウェア開発手法、又はソフトウェア開発方法とも言う。
様々な開発手法があり、ウォーターフォール、プロトタイピング、アジャイル、エクストリーム等がある。時代とともに開発手法は遷移していったが、それぞれに一長一短がある。

画面の設計

ソフトウェアを開発する上で、とても重要な工程でもある。
画面とはコンソールアプリケーションを除く、フォーム(ウインドウ)の設計がそれにあたる。その設計にはプログラミングと同じく明確なルールと基準があり、現在に至るまで既に研究され尽くした感がある。特に操作は3階層(3手)以上深くしてはいけない上に、部品の配置もユーザがコンピュータを操作する接点(マウス、キーボード、タッチディスプレイ等)の配置を考えたうえで画面を設計しないといけない。更にはボタンやリストボックス等の配置位置やどの機能のボタンがどの個所にグルーピング(纏めて配置すること)するかについても重要になる。どんなに優れたコーディングをしたとしても、そのポテンシャルを引き出せる割合が大きく変わってくる。これは専門的に勉強するか、プログラミングと同じく経験を積んで学んでいくしかない。

記述

「ソースコードを書く」とは言わずに、多くの場合「記述する」と表現します。

さ行

C++

Cを拡張したオブジェクト指向言語。
動作も速く、非常に強力で高機能だが、記述は難解で可読性にも劣る。また、その記述の自由性は驚異的でもあり、柔軟性に富む。しかし、その自由度が高すぎるが故に、コーディング(プログラミング)時にはコーディング規約、又はコーディングルールをしっかり決めておかないと、可読性の低さも相まって、後で手痛いしっぺ返しを受ける事になる。それ故に扱う人を非常に選ぶ言語ではある。しかし、扱う事が出来れば、Delphi以上に強力な開発言語である事は間違いない。特にデバイスの制御やOSの深いところを操作する局面では威力を発揮する。製品にはVisual C++(マイクロソフト社)とC++Builder(エンバカデロテクノロジーズ社)が有名どころでもある。

実行時に変更

アプリケーションを実行している時にプロパティ等を変更する事。

ソースコード

ソースと略す事もある。プログラミング(コーディング)作業によって記述された文章(本来であれば適切な表現ではないが)の事を指す。

た行

2WayTool

例えば、一つのVCLコンポーネントをフォームに配置する。そのコンポーネントをコピーし、コードエディタ上にペーストしたとすると、コンポーネントがコードエディタ上にソースコードで表現される。といった具合に、ソースコード上とフォーム上のコンポーネントが密接に連携している。Delphiがデビューした当時は画期的だった。

統合開発環境(IDE)

「Integrated Development Environment」の略。
多くの機能が統合された開発環境(アプリを作る為のアプリ)と考えると分り易いかもしれない。一つの開発環境(アプリケーション)上にコードエディタを始め、コンパイラにデバッガ等、多くの機能が纏まって入っている。現在の多くの有償、無償のIDEは数百の機能が使い切れないほどぎっしりと詰まっている。その為、扱いにはコードエディタより時間が掛かるが、慣れればコードエディタより効率良く開発ができるメリットがある。

動的

プログラミングをするうえで避けて通れない概念。動的があれば静的もある。敢えて語弊のある形で書くと、「能動的」か「受動的」か。「能動的」なのは動的。「受動的」なのは静的、と例える事が出来ると思う。静的な表現は簡単な部類に入る。画面設計時にコンポーネントのプロパティを設定したり、ボタン等のイベントハンドラ(動作実現部)に同じくコンポーネントのプロパティを設定する記述をすればいい。対して、動的とは(開発中のアプリ、例えばメモ帳)実行時に、コンポーネントのボタンをツールバーに追加したい、新しく文書を開くと新しくウインドウを表示して、又はタブを一つ増やしてテキストを開きたい、等。これを大雑把ですが、動的といいます。これが出来るようになると、プログラミングの幅が一気に広まります。

な行

は行

Fire Monkey

DelphiにヴァージョンXE2から搭載されたコンポーネント群の総称。
VCLとは互換性が無く、全く新しい仕様のもの。その特徴はWindows、Linux、MacOS(Mac OS X)、iOS(iPhonやiPod、iPod Touch)、Android(スマートフォン)迄、一つの開発環境で開発出来る。記述はVCLとは勝手が違うが、一つの開発環境で様々なOSやデバイスの開発が出来るのは大きな魅力。

VB(Visual Basic)

Microsoft社が開発したプログラミング言語。
Basic言語を拡張し、Windows向け開発環境としてVisual Basicが誕生した。

VCL

Delphiに搭載されているコンポーネント群の正式名称。「Visual Component Library」の略。
Microsoft Windowsの多くの機能をDelphiアプリケーションから安易に呼び出せるように開発されたもの。VCLはDelphi(Object Pascal)によって記述されている為、例えばプログラムを開発している時、あるVCLの機能を使う(コンポーネントを配置する)だけでなく、そのVCLの奥深くまで入って、その構造をDelphiから閲覧し、VCLの挙動を確かめながら、より強固なアプリケーションを作る。といった面白い開発手法を取る事が出来る。余談にはなるが、.Net Framework(基本クラスライブラリ)はVCLの派生ライブラリである。

ま行

Mac OS X

2000年~2015年迄の間のApple製Computerに搭載されたOSの名称。
初代の名称は「Mac OS X Public Beta (Siam)」、最後の名称は「OS X 10.11 El Capitan」。
後に「X」を取って、「Mac OS」と名称が変わる。

Mac OS

2016年~から現在まで続くApple製Computerに搭載されたOSの名称。
初代の名称は「macOS 10.12 Sierra」である。

や行

ら行

Linux

リーナス・トーバルズによって開発された「Linuxカーネル」を搭載したOSの事。
読み方は「リナックス」、「リヌックス」、「ライナックス」等の読み方があり、公式の読み方は定まっていない。LinuxはUnix系OSの一つとされ、元はPC/AT互換機向けに開発されたが、その後、史上最も多くのハードウェアプラットフォーム向けにリリースされたOSとなる。主にサーバ用途等のOSとして使用される。他用途では携帯電話、テレビ、ハードディスクレコーダ、カーナビゲーションシステムやゲーム機等にも使用される。その一方で、一般ユーザでも容易に使用できる環境が充実してきており、多くのLinux系OSは無償で入手が可能であり、一般用途としてはLinuxサーバを個人でもコンピュータにインストールして使用できる。外部ネットワーク(インターネット)に接続した場合、高度な知識が無ければリスクを伴う。

わ行

1.3 Delphiの起動と終了

2018年11月15日 木曜日

Delphiの起動と終了

Delphiを起動するにはスタートメニューから、「Embarcadero RAD Studio 10.2」→「Delphi 10.2」を
選択します。Windows7であればスタートメニューの検索ボックスから、Windows10であればColtanaから
「Delphi」と入力してEnterを押します。そうするとDelphiが起動する筈です。

初期起動画面ではテーマを選択できます。最近の流れでTokyoから、目に優しいとされるダーク調の外観が採用され、選択する事が出来る様になりました。これは後から変更する事も出来ます。
ツール→オプション→テーママネージャからライトかダークを選択する事が出来、カスタムで独自の設定も出来ます。

終了する場合は、タスクバーの×ボタンをクリックするか、ファイルメニューの「終了」をクリックします。プロジェクトを編集中だった場合、保存するかを聞いてくるので保存する必要があれば(何か作品を作っている途中であれば)、「はい」をクリックし、ファイル名を付けて保存します。既に一度保存されていれば上書き保存されます。

「ダーク」テーマを設定したところ

「ライト」テーマを設定したところ


Delphi統合開発環境

Delphiは統合開発環境(IDE)と呼ばれる膨大で潤沢な機能を惜しみなく詰め込んだ高機能な開発環境です。その機能の多くは、初めて触られる方や他の開発環境から移行した方には、余りに膨大だったり機能が全く異なったりで戸惑う事でしょう。しかし、Delphiに限らずEclipseやVisual Studio、その他のIDEを使い込んでいても、はじめからその全てを使いこなせる人は、そうそういないでしょう。問題は、如何に慣れ、如何に覚えるかです。

「ファイル」メニュー:

  プロジェクトやユニットの作成、追加、保存、終了等に使います。

「編集」メニュー:

  フォーム上のコンポーネントや、ソースコードの編集作業時に使います。

「検索」:

  ソースコードやファイルの検索の際に使います。

「表示」:

  IDEの機能の表示/非表示を操作する時に使います。

「リファクタリング」:

  リファクタリングに関する操作を行うときに使います。

「プロジェクト」:

  プロジェクトの操作(プロジェクトへの追加/削除、コンパイル、ビルド等)の際に使います。

「実行」:

  プロジェクトの実行やデバッグ、デバッグ操作の時に使います。

「コンポーネント」:

  コンポーネントの作成や追加、インポート(機能の取込)等に使います。

「ツール」:

  IDEの機能を操作する時に使います。

「ウインドウ」:

  レイアウトが「クラシックレイアウト」の時に、ウインドウを操作します。

「ヘルプ」:

  ヘルプとライセンス管理、バージョン情報について表示します。


ツールパレット

ツールパレットには沢山のコンポーネントが登録されています。機能別に登録されており、コンポーネントをダブルクリックするか、ドラッグアンドドロップをしてフォームの任意の場所に配置し、外観を作っていきます。

ツールバー(スピードバー)

ツールバーには、メニューにある、頻繁に使用する機能が登録されています。
ツールバーのアイコンの上にマウスカーソルを移すと、簡単なツールチップヘルプが表示されます。

フォーム

アプリケーションを作成する上で土台となるフォーム(ウィンドウ)です。このフォーム上にコンポーネントを配置して、外観を設計していきます。このフォームと呼ばれるウインドウは、通常のウインドウと同じく、マウス操作でサイズを変更出来ます。また、フォームのプロパティを変更する事でダイアログ等のウインドウに変える事も出来ます。プロジェクトの新規作成時は、一つのまっさらなフォームが表示されます。フォームは、任意でプロジェクトに追加していくことが出来ます。なお、フォームは上部のタブをクリックして切り替える事が出来ます。

コードエディタ

プログラムのコードを記述するウインドウ。イベントハンドラと呼ばれる動作に対するイベントを作成(フォームやコンポーネントのダブルクリック、オブジェクトインスペクタと呼ばれるIDEの機能からの操作で作成できます)することで、自動的にコードエディタ(コードが表示されるウインドウ)が前面に表示される。フォーム同様、上部のタブをクリックして、ページ(ユニット)を切り替える事が出来る。ページ(ユニット)とウインドウ(フォーム)の切り替えは、IDE下部真ん中の「コード」/「デザイン」をクリックする事で、切り替える事が出来ます。

オブジェクトインスペクタ

コンポーネントやフォームのプロパティの設定、イベントハンドラの作成を行うウインドウ。
プロパティはコンポーネントの各プロパティにより、Bool(TrueかFalse)、文字列(String)や文章(List)、数値等、様々なタイプがある。入力方法は、そのタイプによって自動的に変化し、選択したり、入力したりと、プロパティによって変わってくる。


1.2 Delphi Community Editionのインストール方法

2018年11月15日 木曜日

導入(ダウンロード、インストール)

先ずは、Delphi Community Editionのインストーラをダウンロードします。
ブラウザを開き、「Delphi Community Edition」と入力し検索します。
URLは以下になります。
https://www.embarcadero.com/jp/products/delphi/starter

「Delphi Community Edition」のダウンロードページ

初めて登録する場合、以下の情報を入力する必要があります。

名前
メールアドレス
パスワード
会社名
電話番号

一度、アカウントを登録した事がある場合は、「エンバカデロ製品のユーザーである場合には、こちらからログインしてください」を選択します、
下記の画面から、
登録ID(メールアドレス)
パスワード

を入力します。

「私はロボットではありません」を押すと、画像が出て生きて質問をしてくるので、
その質問に答えます。
正解出来たならば、「今すぐダウンロード」を押します。

ダウンロードが完了したら、ダウンロードフォルダを開くか、ブラウザ上からダウンロードアイコンダブルクリックして、インストーラーを起動させます。

インストーラーの初期画面
「使用許諾契約書」と「プライバシーに関する声明」を読んだら、「同意する」を押して次に進みます。

※インストール時の注意事項※

必ず、「製品のシリアルナンバーを既に入手している」を押します。
トライアル版を選択してしまうと、コミュニティエディションではなく、トライアル版がインストールされてしまいます。間違えた場合は、一旦アンインストールして、もう一度、インストールし直しましょう。

Community Editionの場合、シリアルナンバーだけの入力で大丈夫です。
なお、シリアルナンバーが記されたメールが、エンバカデロから届いているので、
それを開いてシリアルナンバーを取得します。

なお、再インストールの場合、3回インストールを行うと、登録回数の上限に達してしまう。
これは、不正コピー防止の為のライセンス保護の為にそのような制約があるようです。
上限に達したら、エンバカデロのサポートページから、上限更新を申請すれば、
翌営業日には登録回数が回復し、登録する事が出来ます。

再インストールする際、使用許諾ライセンスの更新は以下のページになります。
https://supportforms.embarcadero.com/

因みに、Delphi Community Editionは、他のどのバージョン(のプロフェッショナル版以上)とも、共存する事が出来ない。

競合している場合は、製品版とそのライセンス情報を消してからインストールするか、Community Editionを諦めるかのどちらかしか選択肢がありません。

その場合は(Community Editionをインストールする場合)、インストール完了後、以下のファイルを立ち上げ(64Bit版の場合)
「C:\Program Files (x86)\Embarcadero\Studio\19.0\bin\LicenseManager.exe」
※32Bit版だと以下
「C:\Program Files\Embarcadero\Studio\19.0\bin\LicenseManager.exe」

を実行し、ライセンスマネージャを立ち上げ、登録されたライセンスを消してから、Community Edition認証を行います。

以上で、インストールは終了です。