Delphi Tips

私がプログラムを作るときによく使うものを集めました。思いついた順に書いています。

1.コード補完機能を使う(2000.2.13)
2.実行中プログラムと同一フォルダーにある関連付けされたファイルを立ち上げる(2000.2.13)
3.プログラムを終了する(2000.2.13)
4.メッセージを表示する(2000.2.13)
5.Labelに複数行文字を表示する(2000.2.13)
6.Delphiがハングアップしたり、動作が異常に遅いんですが(プログラムに関係ないですけど)(2000.2.14)
7.スコアーを表示する(TextOut)(2000.3.1)
8.押されたキーの種類判定(2000.3.5)
9.イメージコンポーネントの絵を別のイメージコンポーネントにコピーする(2000.5.7)
10.コードを複数行に分ける(2000.6.11)
11.変数の宣言(2000.6.25)
12.現在日時時刻を表示する(2000.7.24)
13.フォームの最小化、最大化ボタンを消す(2000.7.24)

1.コード補完機能を使う

コードを入力しているとき、Ctrl+Spaceでその時点での入力候補をリストアップしてくれます。
オブジェクトや変数にピリオドをつけた場合は自動的にコード補完機能が働き入力候補がリストアップされます。
2.実行中プログラムと同一フォルダーにある関連付けされたファイルを立ち上げる
たとえば、実行中のプログラムと同一フォルダーにあるreadme.txtを見るときは

uses節にShellAPIを追加して下記のようにします。

var
PathName:String; //パス名
begin
PathName:=ExtractFilePath(Application.ExeName);//実行中プログラムのパス名取得
ShellExecute(Handle,'OPEN',PChar(PathName+'readme.txt'),'','',SW_SHOW);//readme.txtを立ち上げる
end;
3.プログラムを終了する

procedure TForm1.Exit1Click(Sender: TObject);
begin
close;//終了します
end;
4.メッセージを表示する

ShowMessage('Game Over!!');
5.Labelに複数行文字を表示する

プログラムコード内で
Label1.Caption:='1行目'+#13+'2行目'+#13+'3行目';//改行したいところに+#13+を挿入
とします
オブジェクトインスペクタ内ではできません。
6.Delphiがハングアップしたり、動作が異常に遅いんですが

インプライズのHPにも出ているんですが、一部のビデオカードでこの現象がでるそうです。
私のも動作が異常に遅かったです。知らなかったので汗かきました。
とりあえずの対応策は、
「画面のプロパティ」の「設定」ページで「詳細」ボタンを押して表示される ビデオカードの設定ダイアログの「パフォーマンス」ページで「ハードウェアアクセラレータ」の 設定を「基本」または「なし」にすることで回避できる場合があります。
恒久対策として
ビデオカードの最新ドライバーをメーカーのHPからダウンロードしてインストールすると解決します。私もこれで解決しました。
7.スコアーを表示する(TextOut)

ゲームのスコアー(得点)を表示するとき、LabelのCaptionで表示してもいいんですがこれだと文字のちらつきが気になります。
そこでTextOutを使ってゲーム画面のImageBoxに描くと文字のちらつきがありません。
var
Your_score:Integer;

Your_score:=100;
Image1.Canvas.Brush.Style := bsClear;//文字の背景を透過させる
Image1.Canvas.font.Color:=clWhite;//文字の色を白にする
Image1.Canvas.font.Height:=16;//文字の高さを16ピクセルにする
Image1.Canvas.TextOut(50,50,'Your Score: '+IntToStr(Your_score));//Image1の座標(50,50)のところに'Your Score: 100'と表示
8.押されたキーの種類判定

定義済みの定数として扱うことができます。
テンキーの'0'〜'9'    VK_NUMPAD0〜VK_NUMPAD9
↑キー           VK_UP
↓キー           VK_DOWN
→キー           VK_RIGHT
←キー           VK_LEFT
9.イメージコンポーネントの絵を別のイメージコンポーネントにコピーする(2000.5.7)

ゲーム設計時、裏画面に描かれた内容を表画面にコピーするには次のようにします。
//裏画面を表画面にコピー
Image_Omote.Canvas.CopyRect(Image_Omote.Canvas.ClipRect,Image_Ura.Canvas,Image_Omote.Canvas.ClipRect);
10.コードを複数行に分ける(2000.6.11)

プログラムコードが長すぎてコードエディターで横スクロールをしなければならないので作業がやりずらいことがある。
そういうときは改行して1文を複数行に書くことができます。ただし、どこでも改行できるのではないので注意。
Button1.Caption:='ボタン';
これは次のように書けます。
Button1.Caption:=
'ボタン';
11.変数の宣言(2000.6.25)

プログラム中に使用する変数は必ず前もって宣言します。
Var x:Integer; //変数xを整数型として使います
Var y:Integer; //変数yを整数型として使います

たくさん変数があり一度に書きたいときは
Var a,b,c,d,e:Integer; //変数a,b,c,d,eを整数型として使います
としてもOKです。

12.現在日時時刻を表示する(2000.7.24)

たとえば
Label1.Caption := DateTimeToStr(Now);
とすれば
2000/07/24 23:10:20
と表示されます。
また、
Label1.Caption :=FormatDateTime('yyyy"年"m"月"d"日" (aaaa) hh:nn:ss', Now );
とすれば
2000年7月24日(月曜日) 23:10:20
と表示されます。
くわしくはFormatDateTimeでヘルプを見ましょう。
13.フォームの最小化、最大化ボタンを消す(2000.7.24)

フォームのプロパティのBorderStyleをbsDialogにかえるだけです。
プログラムコードで書くときは
Form1.BorderStyle:=bsDialog;
とすればOKです。