C +ビルダーを使用して最初のアプリケーションを構築する(パート2)


ようこそC++Builderにアラームアプリケーションを作成することについての我々のシリーズにようこそ!
私たちの最後の記事はhow to set up C++Builderについて説明し、コンポーネントをドラッグ&ドロップして、ユーザーインターフェイスをデザインし、いくつかのコンポーネントを制御するコードを記述します.
読んでいないなら
この部分は、SQLiteをアプリケーションに統合し、リマインダをデータベースにユーザーに追加しようとします.
データベースにアラームを追加した後、我々は、彼らが要求されているユーザーに通知を表示します.

第4ステップ:データベースの作成
C++BuilderあなたはFiredacライブラリを使用して1つのプログラムでいくつかのデータベースを使用することができます.我々は、このアプリケーションにSQLiteデータベースを統合します.
これを達成するためには、SQLiteデータベースのダウンロードとインストールが必要です.あなたが使用したいデータベースを選択してください.
FireRacを使用すると、アプリケーションに複数のデータベースを統合することができます.一度ダウンロードしてデータベースを設定すると、データベースの種類を選択し、アプリケーションにリンクする必要があります.
デザインフォームのFDConnectionをダブルクリックします.このアクションはFiredac接続エディタを開きます.ここでは、使用するデータベースの名前を選択し、データベースに関する詳細情報を提供できます.

我々は、この単純なアプリケーションのために変更する必要があるすべては、ドライバのIDとは、デスクトップ(データベースタグの横に作成されたデータベースの場所)です.
この手順を完了したら、データベースからデータを取得し、ユーザーから収集したデータをデータベースに格納するコードを書き始めることができます.
次のパスにあるデスクトップにデータベースを作成しました
C:\\Users\\uk\\OneDrive\\Desktop\\reminderdb.db

第5ステップ:データベースへの書き込み
をクリックすると、アラームを追加ボタンをクリックすると、我々は、ユーザーの現在時刻を取得し、日付と時刻をdatetimeピッカーを使用して選択し、データベースに格納します.
OnClickイベントが起動されるたびに、データベースにリマインダテーブルを作成するためにSQLステートメントを記述する必要があります.
また、データベースからのアラームを取得し、メモでそれらを表示する“ショーリマインダー”ボタンを追加しました.

“アラームを追加”ボタンをダブルクリックして' AddReimder 'ボタンのための空のFastcall機能を作成します.この関数では、FDTD接続を使用してデータベースに接続します.
ドライバ名とデータベースへのパスを指定する必要があります.これは、プログラムがそれと通信されるデータベースの場所を識別するのに役立ちます.
FDConnection1->DriverName = "SQLite";
FDConnection1->Params->Values["Database"] = "C:\\Users\\uk\\OneDrive\\Desktop\\reminderdb.db";
これが完了すると、データベースからデータを変更、挿入、更新、削除、またはデータを取得するコードを記述できます.このコマンドを使用してデータベースへの接続を開始します.
FDConnection1→Open();
このコマンドは、closeデータベースコマンドを手元に置き、全てのクエリを実行したら、データベースへの接続を閉じる必要があります.
FDConnection1→Close();
通信ポータルを確立して、開いた後に、それがリマインダデータベースに存在しないならば、我々は思い出させるテーブルをつくるためにSQL声明を実行します.
idフィールドとdatetimeフィールドの2つのフィールドだけを文字列形式で格納する必要があります.
テーブルを作成するには、ExecSQLステートメントを呼び出してSQLクエリを実行できます.
このExecSQL関数は、テーブルを作成したり、データを挿入したり削除したりするときはいつでも呼び出すことができますが、データをデータベースから取得する場合には使用できません.
データベースに存在しない場合は、次のステートメントを追加してテーブルを作成します.
FDConnection1->ExecSQL("CREATE TABLE IF NOT EXISTS Reminder (Id int, time TEXT NOT NULL)");
次に、データベースに時間を挿入します.この記事の前の部分で書いたコードを使用して、DateTime値を取得した後にExecSQL関数を使用することもできます.
String date =  dateTime.FormatString("dd/mm/yyyy HH:mm");
FDConnection1->ExecSQL("INSERT INTO Reminder (time) VALUES ('"+date+"')");


第6ステップ:データベースからの読み取り
データベースからの追加のアラームを取得するには、アラームを取得するための空のfastcall機能を作成するには、“ショーリマインダー”ボタンをダブルクリックします.
tfdqueryを使用します.TfdQueryを使用してクエリを実行し、結果セットを使用することができます.
TfdQueryを使用する方法を示すサンプルコードです.ここでは、リマインダーテーブルからすべてのアラームを選択し、ユーザーに表示します.
TFDQuery *query;
query = new TFDQuery(this);
query->Connection = FDConnection1;
query->SQL->Text = "SELECT * FROM Reminder";
query→Open();
TfdQueryを使用するには、次のヘッダーをコードに追加する必要があります.
#include <FireDAC.DApt.hpp>
取得したデータを出力するコード
TVarRec args[1] = {"time"};
Memo1->Lines->Add(System::UnicodeString::Format("|%25s |", args,ARRAYSIZE(args) - 1));
while (!query->Eof) {
TVarRec arguments[1] = { query->FieldByName("time")->AsString};
    Memo1->Lines->Add(System::UnicodeString::Format("|%-25s |", arguments, ARRAYSIZE(arguments) - 1));
    query->Next();
}

コード共有のすべての異なるセクションを一緒に追加すると、次のプログラムを取得します.
#include <FireDAC.DApt.hpp> 
void __fastcall TForm2::buttonAddReminderOnClick(TObject *Sender)
{
    TDateTime dateTime;
    ReplaceDate(dateTime, DateTimePicker1->Date);
    ReplaceTime(dateTime, TimePicker1->Time);
    Memo1->Text = "";
    FDConnection1->DriverName = "SQLite";
    FDConnection1->Params->Values["Database"] =  "C:\\Users\\k_umm\\OneDrive\\Desktop\\reminderdb.db";
    try
    {
        FDConnection1->Open();
        FDConnection1->ExecSQL("CREATE TABLE IF NOT EXISTS Reminder (id INTEGER PRIMARY KEY AUTOINCREMENT, time TEXT NOT NULL)");
        String date =  dateTime.FormatString("dd/mm/yyyy HH:mm");
        FDConnection1->ExecSQL("INSERT INTO Reminder (time) VALUES ('"+date+"')");
        FDConnection1->Close();
    }
    catch (Exception& E)
    {
        Memo1->Text = E.Message;
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm2::buttonShowReminderOnClick(TObject *Sender)
{
    FDConnection1->DriverName = "SQLite";
    FDConnection1->Params->Values["Database"] =  "C:\\Users\\k_umm\\OneDrive\\Desktop\\reminderdb.db";
    try
    {
        FDConnection1->Open();
        TFDQuery *query;
        query = new TFDQuery(this);
        query->Connection = FDConnection1;
        query->SQL->Text = "SELECT * FROM Reminder";
        query->Open();
        TVarRec args[1] = {"time"};
        Memo1->Lines->Add(System::UnicodeString::Format("|%25s |", args, ARRAYSIZE(args) - 1));
        while (!query->Eof) {
          TVarRec arguments[1] = { query->FieldByName("time")->AsString};
          Memo1->Lines->Add(System::UnicodeString::Format("|%-25s |", arguments, ARRAYSIZE(arguments) - 1));
          query->Next();
        }
        query->Close();
        FDConnection1->Close();
    }
    catch (Exception& E)
    {
        Memo1->Text = E.Message;
    }
}

第七段階
これまで、我々はユーザーから入力を取得し、データベースに格納ミニリマインダーアプリを構築している.
我々のユーザーは、指定された期間中に通知を受け取ることを期待します.
FireDateは、Android、MacOS、およびIOSによってサポートされています.これは、通知するときに日付と時刻についての情報を渡すことによって使用することができます.
MyNotification->FireDate = System::Dateutils::EncodeDateTime(2015, 12, 16, 17, 30, 00, 00);
あなたのアプリケーションhereで通知の使用方法についての詳細情報を見つけることができます.
を参照してください.