Delphi(Object Pascal)でcaseを式にする

Rubyのcaseは最後に評価した式の結果を返します。

次のRubyのコードでは、caseの返した値を変数iに代入しています。

i = case something
  when FOO
    1
  when BAR
    2
  else
    3
  end

Delphi(Object Pascal)でも、caseで値を返したい。

無名メソッドを使えば、次のようにできました。

i := (function(): Integer
  begin
    case something of
      FOO: Exit(1);
      BAR: Exit(2);
      else Exit(3);
    end;
  end)();

Delphi XE6で確認しました。

C++の場合は次のようになります。(switchを式にする in C++11 – Faith and Brave – C++で遊ぼうを参考にしました。)

auto i = [&]{ switch (something) {
    case FOO: return 1;
    case BAR: return 2;
    default:  return 3;
}}();

Delphi XE6のFireMonkeyモバイルアプリケーションでTWebBrowserのHTMLページにJavaScriptを実行する

Delphi XE6のFireMonkeyモバイルアプリケーションで、TWebBrowserで表示しているHTMLページに対して、JavaScriptを実行する方法を紹介します。

今回作成するアプリケーションは、ボタン(TButton)を押すと、ブラウザ(TWebBrowser)に表示している文字を入力欄(TEdit)に入力した文字に書き換えます。

フォームにTWebBrowserとTEdit、TButtonを配置します。

01

フォームを作成するときに、サンプルのHTMLを表示します。

フォームのOnCreateイベントに次のコードを記述します。

procedure TForm1.FormCreate(Sender: TObject);
const
  HTML = '<!DOCTYPE html><html lang="ja"><head><meta charset="utf-8"></head><body><span id="test">テスト</span></body></html>';
begin
  WebBrowser1.LoadFromStrings(HTML, '');
end;

TWebBrowserのLoadFromStringsは、引数のHTML文字列をTWebBrowserのコンテンツとして表示します。

ボタンのOnClickイベントに次のコードを記述します。

procedure TForm1.Button1Click(Sender: TObject);
var
  JavaScript: string;
begin
  JavaScript := Format('document.getElementById(''test'').innerHTML = %s;',
    [AnsiQuotedStr(Edit1.Text, '''')]);
  WebBrowser1.EvaluateJavaScript(JavaScript);
end;

TWebBrowserのEvaluateJavaScriptメソッドは、引数のJavaScriptを実行します。

上のコードでは、ボタンを押すとJavaScriptでHTMLを変更します。

アプリケーションを実行します。

02

入力欄に入力します。

03

ボタンを押すと、HTMLが更新されました。

04

Delphi/C++BuilderのIDEの色設定を新バージョンに引き継ぐには

Delphi/C++BuilderではIDEをこだわりの配色を設定しても、新バージョンをインストールしたらその設定は引き継がれません。
新しいバージョンをインストールするたびに、同じ設定をするのは手間がかかります。

Delphi IDE Theme Editorを使用すると、設定の引き継ぎを簡単にできます。

IDEの配色設定を保存する

01

(1) 引き継ぎ元のIDEを選択する

Delphi IDE Theme Editorを起動したら、「Installed IDEs」欄から配色の設定をしているIDEを選択します。

選択すると、画面中央のプレビューが更新されます。

(2) 配色設定を名前をつけて保存する

「Import current IDE theme from registry」ボタンを押します。

02

設定名を入力して「OK」ボタンを押すと、配色設定が保存されます。

新バージョンのIDEの配色設定を更新する

03

(1)引き継ぎ先のIDEを選択する

「Installed IDEs」欄から配色設定を更新するIDEを選択します。

選択すると、画面中央のプレビューが選択したIDEの配色設定に更新されます。

(2)Themes欄から、先ほど保存した設定を選択します。

選択すると、画面中央のプレビューが保存した配色設定に更新されます。

(3)テーマを適用する

「Apply Theme」ボタンを押すと、配色設定が適用されます。

フォントの設定を変更する

上記の方法では、フォントの設定は更新されません。

フォントの設定は、個別に設定する必要があります。

Global Editor Fontからフォント名とフォントサイズを選択します。
「Apply Font」ボタンを押すと、フォントの設定が適用されます。

04

Delphiで変数の宣言を簡単に行う

Delphi(Pascal)では使用する変数は、var句で宣言する必要があります。

procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer; // <= 変数を宣言する必要がある
begin
  I := Func;

IDEが持つリファクタリングの機能を使うと変数の宣言を簡単に行うことができます。

変数を使用したコードを記述します。

function TForm1.Func: Integer;
begin
  Result := 1;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  I := Func; // <= 変数Iの宣言が必要

カーソルを変数の位置に移動して、[Shift]+[Ctrl]+[V]キーまたはメニューから「リファクタリング」→「変数の宣言」を選択します。
(上のコードでは変数Iのところにカーソルを移動して、[Shift]+[Ctrl]+[V]キーを押します。)

「新規変数の宣言」ダイアログが表示されます。

新規変数の宣言ダイアログ

種類の欄には、ソースコードから変数の型が推論されて、適切な型が自動的に設定されます。
(上のコードでは関数FuncはInteger型を返すため、変数IはInteger型になっています。)

「OK」ボタンを押すと、var句に変数の宣言が追加されます。

procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer; // <= 追加された
begin
  I := Func;

Delphiで変数を宣言するときは、「[Shift]+[Ctrl]+[V]→[Enter]」と入力すると、クラス名などを入力する必要がありません。