Tips - Delphi 基本的にDelphi 6 Personalの個人メモ。ヴァージョン違うと使えないかも。
Trunc(x) | x の小数点以下を切捨てる |
Trunc(x + 0.5) | x の小数点以下を四捨五入 |
ExtractFilePath(Application.ExeName) | 実行中のアプリのディレクトリを取得 |
ExtractFilePath(ParamStr(0)) |
#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;
こちらのページを参照。
: : var STR : String; FLT : Single; ERR : Integer; : : begin : : Val(STR, FLT, ERR); // STR → FLT ERRは変換エラー箇所(エラーがなければ0) if ERR = 0 then // 変換エラーがなければ : : else // 変換エラーがあれば : :
おまけ:
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 : :
外部アプリケーションを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関数の使い方は他にもいろいろあるが、ここでは省略。
ヴァージョン情報や作者URLなどを表示する「Aboutフォーム」を表示させる方法。
Button.ModalResult := mrOK; // 変更の必要はないので、オブジェクト インスペクタで設定して構わない。 // ボタンが押されたことが分かれば良いので、mrNone 以外なら何でも良い。
procedure TMain.ViewAboutBox(Sender: TObject); begin AboutBox.ShowModal; // AboutBoxは、呼び出すフォーム名。この場合、表示させたいAboutフォーム。 // ShowModalは、フォームをダイアログ表示させるメソッド。ボタンを押すとフォームを閉じ、 // 押されたボタンのModalResult(mrNone以外)を返し値にするので、 // 特にボタンイベントを設定しなくても良い。 end;
デフォルトで準備されているDialogの場合、Executeメソッド(型はBoolean)で判定可能。
if OpenDialog.Execute then Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
自前でDialogFormを作成する場合、設置したボタンにModalResultプロパティを設定し、DialogFormのModalResultプロパティの値(型はInteger)で判定(FormのModalResultプロパティは、押されたボタンのModalResultの値になる)。
ModalResultの値はTModalResult型を参照。
DialogForm.Button1.ModalResult := mrYes; DialogForm.Button2.ModalResult := mrNo; if DialogForm.ModalResult := mrYes then Memo1.Lines.LoadFromFile(DialogForm.FileName);
TStringList, TMemo, TRichEditで、複数の文字列を一行化する方法。
Sample := TStringList.Create; Sample.Add('Line0'); Sample.Add('Line 1'); Sample.Add('Line,2'); Sample.Add('Line"3'); :
TMemo, TRichEditで、自動でカーソルが最下行へ移動しないときに、手動で移動させる方法。
Memo1.SelStart := Length(Memo1.Lines.Text);//キャレット位置を最後に Memo1.Perform(EM_SCROLLCARET, 0, 0); //キャレット位置までスクロール
こちらのページを参照。