&font(b,144%){Tips - Delphi} #contents ---- ***よく使うキーコード |#00|キー入力無視| |#08|BackSpace/Delete| |#13|Enter 改行| ***キー入力を制限する 制限したいコンポーネントのOnKeyPressイベントに、特定のキー以外を無視するルーチンを設定する。 procedure TForm1.KeyPressLimit(Sender: TObject; var Key: Char); begin if not (Key in ['0'..'9', #08]) then // 入力キーが'0'~'9',BackSpace/Delete 以外なら begin beep; // ビープ音による警告 Key := #0; // 入力を無視 end; end; ***メニューバーとツールバーで共通の処理をしたい [[こちらのページ>Tips - Delphi メニューバーとツールバーの処理共通化]]を参照。 ***文字列を数値に変換する +Val関数を使う。整数、実数のいずれも可。 : : var STR : String; FLT : Single; ERR : Integer; : : begin : : Val(STR, FLT, ERR); // STR → FLT ERRは変換エラー箇所(エラーがなければ0) if ERR = 0 then // 変換エラーがなければ : : else // 変換エラーがあれば : : +StrToCurr関数を使う。 +StrToInt関数を使う。 +StrToIntDef関数を使う。 こちらは「10進数と16進数を示す文字列」を整数値に変換する関数。変換エラー時に返す数値を指定できるため、指定の数値が返されたときにエラー処理へ分岐する。 ***JPEG画像を扱う Jpeg画像を扱うためのユニット「Jpeg」が標準添付されているので、pasファイルのuses節に、手入力で「Jpeg」を追加するだけ。~ Jpegユニットを追加すると、Jpegデータを格納するための TJPEGImage が使えるようになり、これを経由して内部でビットマップに変換できるようになる。 : : uses Windows, ‥‥, Jpeg; : : var JPG : TJPEGImage; BMP : TBitmap; : : begin JPG := TJPEGImage.Create; BMP := TBitmap.Create; : : JPG.Assign(BMP); // BMP → JPG : : BMP.Assign(JPG); // JPG → BMP : : ***指定URLへのリンクを埋め込む 外部アプリケーションをWindows経由でコントロールする「ShellAPI」関数群の中から、「ShellExecute」関数を使うと、指定URLを規定のブラウザで開いてくれる。~ 最初に、pasファイルのuses節に、手入力で「ShellAPI」を追加する。後はボタンやラベルをクリックしたときのイベントに、指定URLを呼び出すShellExecute関数を設定すればOK。 : : uses Windows, ‥‥, ShellAPI; : : procedure TForm1.Label1Click(Sender: TObject); begin // ShellExecute(Handle, 'OPEN', 'http://www39.atwiki.jp/kgh07155/', '', '', SW_SHOWNORMAL); // ShellExecute(NULL, 'OPEN', 'http://www39.atwiki.jp/kgh07155/', NULL, NULL, SW_SHOWNORMAL); //どちらの書式でもOK。引数の'OPEN'とURL、SW_SHOWNORMALがポイント。 ShellExecute(Handle, 'OPEN', PChar(TLabel(Sender).Caption), '', '', SW_SHOWNORMAL); // URLとして指定する文字列はPChar型のみ有効。PChar(String)のように型変換すると良い。 // この例の場合、Labelに表示された文字列を引数として適宜実行する。 // つまりLabelの文字列がURLなら、自動でブラウザを起動し指定URLを呼び出す。 end; : : ShellExecute関数の使い方は他にもいろいろあるが、ここでは省略。 ***Aboutフォーム表示 ヴァージョン情報や作者URLなどを表示する「Aboutフォーム」を表示させる方法。 +Aboutフォームを作成。 --OKボタンを置くと良い。フォームを閉じるためのボタンイベントは不要。 +メインフォームにAboutフォームを呼び出すイベントを追加。 procedure TMain.ViewAboutBox(Sender: TObject); begin AboutBox.ShowModal; // AboutBoxは、呼び出すフォーム名。この場合、表示させたいAboutフォーム。 // ShowModalは、フォームをダイアログ表示させるメソッド。ボタンを押すとフォームを閉じ、 // 押されたボタンを返し値にするので、特にボタンイベントを設定しなくても良い。 end;