Delphi は真に完全なオブジェクト指向のアプローチ、現在世界最速のコンパイラ、最先端のデータベース テクノロジ、特に Windows API との完全な互換性、および優れたコード自動生成機能を採用しているため、人々はそれをほんの短期間で理解しました。ここ数年、Delphi は数ある開発ツールの中でも際立っています。 Delphi の多くの優れた特性により、プログラマーは、ほとんど作業を行わずに、短期間でプロ レベルのアプリケーション ソフトウェアを開発できます。
良く言われるように、より速くプログラムを設計するには、Delphi の利点を最大限に活用するにはどうすればよいでしょうか。
1. 完全なコード共有 (Jubang) を最大限に活用します。
この目的は単に「怠惰」にすることではなく、プログラム コードを最適化する方法でもあります。もちろん、最初に考慮すべきことは共有できるかどうかです (これは非常に簡単です。イベントのドロップダウン コレクションに含まれているかどうかを確認してください)。そして 2 番目に注意すべきことは、「」があるかどうかです。正しいことが最初のステップであるため、正しいことが保証されている場合にのみ最適化を追求する必要があります。
例: ユーザーがデータを削除する前に確認メッセージを表示します。
手順 TForm1.Table1BeforeDelete(DataSet: TDataSet);
始める
//削除記録を確認
if MessageBox(handle,'現在のレコードを削除してもよろしいですか?','確認',MB_IconQuestion+MB_YesNo)=IDNO then
アボート;
終わり;
その後、データ レコードを削除する前にユーザーに確認させたい限り、TDataSet.BeforeDelete イベント (Table2 の BeforeDelete、Table3 の BeforeDelete...) でこのコードを完全に共有できます。幸運は毎日起こるわけではありませんし、それほど直接的で単純なものでもないこともあります...
「As」という単語は英語だけでなく、Delphi でも非常に便利です。これは、複数の「類似した」コンポーネントのコードを共有したい場合に役立ちます。そのうちの 1 つのコンポーネントに対してコードを記述するだけで済みます。
たとえば、入力フォーカスを受け取ったときにテキスト編集ボックスのグループの背景色を茶色に変更し、フォーカスを失ったときにシステムの色を復元したい場合は、次のようなコードを共有できます(それぞれのイベントをテキスト編集ボックスは次のコードを共有します):
プロシージャ TForm1.Edit1Enter(送信者: TObject);
始める
(送信者は TEdit です).color:=ClTeal; // 入力フォーカスを取得します。
終わり;
プロシージャ TForm1.Edit1Exit(送信者: TObject);
始める
(送信者は TEdit です).color:=ClWindow; //入力フォーカスを失いました。
終わり;
上の例は少し具体的すぎるように思えますが、一部のコンポーネントだけに特別な注意を払うとどうなるでしょうか。上記の例で、たとえば、ユーザーの注意を引くために数字を入力する必要があるテキスト入力ボックスが 2 つありますが、フォーカスを受け取ると色が青に変わります。各コンポーネントのコードを個別に作成します。
この問題を解決するには、コンポーネントの Tag 属性を使用します。まず、特別に処理するコンポーネントにゼロ以外のタグを割り当てます (Delphi はタグの値が等しいかどうかをチェックしないことに注意してください)。設計中に自分で制御する必要があります)。その後、次のようにコードを記述します。それでも共有できます。
プロシージャ TForm1.Edit1Enter(送信者: TObject);
始める
ケース (TEdit として送信).タグの
10,20:(Sender as TEdit).Color:=clBlue //数字を入力するためのテキストボックス
それ以外
(送信者は TEdit です).Color:=clTeal; //その他のテキスト ボックス
終わり;
終わり;
(以下の注意事項はDelphiのデフォルト状態を前提としています)
1. Self キーワードを使用します。
もしかしたら誰かが私が間違っていると思っているかもしれません!実はここで紹介したいのは、(記憶力が悪いため)筆者の「常習犯」のもう一つの「手口」です。場合によっては、コンポーネントの正確な名前を思い出せない場合があります。このとき、もう一度フォームに戻って確認すると (私の友人のほとんどはそうであるはずです)、それはあまりにも残念です。 Delphi の Self はコンポーネントが配置されているフォームを明示的に参照するため、Self を使用すると特に手間が省けます。したがって、Self に続けてカンマを入力すると、Delphi のコードをアクティブにすることができます。完了すると、フォームのすべてのコンポーネントとフォーム自体のプロパティを含むドロップダウン リストがすぐに表示され、そこから必要なコンポーネントを選択できます。このようにして、フォームとテーブルを行き来する作業負荷が回避されます。
2. コード補完 (コード補完) を使用します。
Delphi のコード埋め込み機能のおかげで、パラメータの詳細をあまり覚えておく必要がなくなりました。詳細を説明する前に、少しくどくど言っておきますが、Delphi のコード補完のデフォルトのショートカット キーは、これまでに使用してきたショートカット キーの一部と競合します (たとえば、Ctrl+Space は開くおよび閉じるためのショートカット キーと競合します)。漢字の入力方法)ので、まずこの問題を解決してください。
もちろん、コード補完は通常は自動的に有効になりますが、このテクノロジについては、Delphi が VB から学ぶべきだとは思いません。例: StrToint(edit1. と入力しても、Delphi は edit1 のプロパティを自動的に表示しません。このとき、Ctrl+Space を使用してコード補完を有効にします。特にネストが深い場合、Delphi は混乱するようです。
3. コードパラメータを使用します。
アクティベーションのショートカット キーは Ctrl+Shift+Space です。この関数も Delphi によって自動的に実装されます。前後に切り替えたり、カーソルを移動すると、この関数は消えます。関数の特定のパラメーターを確認する必要がある場合は、このショートカット キーで開くことができます。 。
4. コード テンプレートを使用します。
このテクノロジーには、Inprise の Delphi 開発チームのエンジニアの優れた技術と、常にユーザーのことを考える崇高な人柄が改めて反映されています。 (マイクロソフトに引き抜かれた人がいるという話は聞きたくないだけです)
アクティベーションのショートカット キーは Ctrl+J です。この関数の実装メカニズムはコード入力のメカニズムと似ていますが、もちろん、最も魅力的な点は、ユーザーが独自のテンプレートを定義できることです。たとえば、作成者によって定義されたテンプレート: ショートカット -> "msg" コード -> "MessageboxMessageBox(
handle,'|',',MB_Icon...+MB_...);"、msg を入力して Ctrl+J を押すとすぐに、コード全体が「目立つ」ようになり、カーソルが次の場所に移動します。入力を追加する必要があります。とてもクールです!
注: 自分用にかわいいテンプレートをたくさん定義していて、それらを捨てるのには抵抗がある場合は、Delphi4Bin ディレクトリにある Delphi32.dci ファイルをバックアップし、Delphi を再インストールした後にこのファイルで上書きすることをお勧めします。
この話題はここに書くべきではないのですが、仕方ないので…
1. オブジェクト オブザーバーを使用して、プログラムの通常の動作に影響を与えることなく直接設定できる場合は、コードを記述する必要はありません。
このトピックは広すぎるため、ここでは 1 つの例だけを示します。 たとえば、あまり「過酷」にせずに、Delphi4 のステータス バーに自動プロンプトを実装したいとします。
「ヒント」条件では、以前のようにプロセス (ShowMyHint(...)) を定義して、プログラムの場所でプロセスを初期化する必要がなくなりました。
彼女の値を Tapplication の OnHin イベントに割り当てます。ステータス バーの AutoHint プロパティを True に設定するだけです。もちろん、彼女にはそれしかできないようです
最初のパネルに表示されます (これは、あまりにも「厳しい」条件がない場合です)。もちろん、くどいのは私を責めてください、Delphi のヒントを知らない友達もいます
属性については 2 つの部分で構成されています。ここは話す場所ではありません。興味のある方は、作者の個人ホームページ www.zg169.net/~delphiok をご覧ください。
張さん、まだあまり多くはありません)。
2. コードを保存します。
記述できるコードが少なくても、コードを改良できれば、冗長にする必要はありません。
たとえば、次の 2 つのコードはまったく同じ機能を実装しています。どちらを使用したいですか?
コード スニペット 1:
ToolButton1.Down=true の場合
始める
Dbgrid1.show;
DelBtn.Enabled:=true;
終わり
それ以外
始める
Dbgrid1.非表示;
DelBtn.Enabled:=false;
終わり;
コード スニペット 2:
Dbgrid1.Visible:=ToolButton1.Down;
DelBtn.Enabled:=ToolButton1.Down;
したがって、プログラムを書き終えた後は、プログラムの調整だけを追求するのではなく、プログラムコードを炒める必要があります。
3. 変数を保存します。
プログラマの中には、変数が必要ないところに変数を定義し、変数が必要なところに冗長な変数を定義する人がいますが、これはよくないと個人的には思います。
習慣、特に毎回グローバル変数を定義する習慣はさらに疑わしいものです。読者の中には、私がケチだと思う人もいるかもしれません。
いつの時代でしょう...しかし、コードの一部を示すだけで、次のことが理解できるでしょう。
プロシージャ TForm1.Button1Click(送信者: TObject);
変数 s1,s2:文字列;
始める
s1:=Inputbox('data','ユーザー名を入力してください',');
if s1<>' then
始める
Btn_Name.Enabled:=True;
s2:=Inputbox('data','ユーザーのアドレスを入力してください',');
if s2<>' then
Btn_Adress.Enabled:=True;
終わり;
終わり;