「スマートプログラマーはDelphiを使用しています!」しかし、結局のところ、数人の専門家がいて、私のような初心者がどこにでもいます、ハハ。私はルーキーなので、これをセットアップする方法やそれを書く方法など、当然、非常に良い質問がたくさんあります。フォーラムでの一般的な小さな質問。
==システムアプリケーション==
A. Delphiは、Delphi5などの一般的に使用される多数のコントロールを交換しており、今年リリースされたDelphi6はDelphi5の1.5倍です。 1024*768の解像度でさえ、非常に多くのコントロールがあるため、すべてのコンポーネントパネルを表示することはできません。また、これらの2つの小さなボタンを押して毎回より多くのパネルを表示するのは本当に不便です。ただし、次のレジストリキー値を追加することにより、コンポーネントパネルを自動的に拡張できます。
[hkey_current_user/software/borland/delphi/x.0/extras]
「autopaletteselect」= "1"
(注:X.0はDelphiのバージョン番号を示します。エクストラプライマリキーがない場合は、以下と同じ新しいものを作成するだけです)
b.新しいフォームを作成して、そのフォントとサイズを設定するたびに...それは本当に面倒です!次に、次のキー値を追加し、システムを自動的に設定します。
[hkey_current_user/software/borland/delphi/x.0/formdesign]
「defaultfont」= "宋体、9、_"
(注:_はスペースを表し、太字(太字)などに置き換えることもできます。)
C.作業環境をカスタマイズして、より適したものにします。
•設定ツールバー。 Delphiツールバーを右クリックし、カスタマイズし、必要なボタンを選択して選択し、ツールをドラッグし、不要なツールをドラッグします。私がよく使用するのは、オープン、オープンプロジェクト、すべてを保存、元に戻し、標準のツールバーの下でやり直し、プログラムリセット、デバッグツールバーの下でデバッグを設定します。コンポーネントパレットツールバー。
•ウィンドウレイアウトを設定します。プログラムを効率的に作成できるようにするには、各ウィンドウを合理的に配置することが重要です。私の一般的に使用されるWindowsは、Object Inspector、Project Manager(View | Project Manager)、Watch List(run | add watch ...)です。
各フォームを設定した後、デスクトップツールバーの保存電流デスクトップボタンを押して保存します。
•表示色を設定します。コードの色をあなたの習慣に沿ってより一致させます。これは、書く際の明確な思考を助長します。ツール|エディターオプションエディタープロパティを開き、[色]タブを選択し、コードカラーを設定します。一般的に使用されているもののほんの一部しかありません。
Whitespace:空白スペース、つまり背景。
コメント:コメント;
予約済みの単語:予約された単語。
文字列:文字列;
番号:番号;
実行ポイント:実行中の現在の行(つまり、F7が介入したときに到着する行)。
有効なブレーク:ブレークポイント。
エラーライン:エラーが発生しました。
d. Delphiプログラミングでいくつかのショートカットキーをマスターすると、効率が大幅に向上し、これらのショートカットキーを使用しないと、あまりにも多くの退屈な設定に飽きません。ここに私がよく使用するいくつかのショートカットキーは次のとおりです。
ESC:現在選択されているコンポーネントのコンテナ(通常はパネル、グループボックス、フォームなど)を選択します。
Ctrl+矢印キー:選択したコンポーネントを1つのピクセルで移動します。
Ctrl+Shift+矢印キー:選択したコンポーネントを大きなグリッドで移動します(花火のシフトを保持してから矢印キーで移動する効果と同様)。
Shift+Dragon Keys:選択したコンポーネントのサイズを一度に1ピクセルに調整します。
シフト+選択:シフトキーを押し、マウスでコンポーネントをクリックします。
Ctrl+左マウスボタン:この呼び出しでCtrlを押し続け、マウスが上昇すると、ハイパーリンクに似た形式になります呼び出されたこの関数の実装部分に直接移動します。私はこの機能を最も使用しているので、モジュールを見つけるのに非常に便利です!
Ctrl+Shift+C:オブジェクトにメソッドを宣言し、カーソルを上に置き、Ctrl+Shift+Cを押して、次のような実装の基本的なフレームワークを確立します。
tform1 = class(tform)
プライベート
{プライベート宣言}
公共
{公開宣言}
手順鉱山;
終わり;
プロシージャマインラインにカーソルを置き、Ctrl+Shift+Cを押します。次のコードがユニットに自動的に挿入されます。
手順tform1.mine;
始める
終わり;
==フォーム操作==
複数のフォームを持つプログラムでは、Delphiがデフォルトでそれらをすべて作成すると、プログラムが開始されたときにそれらをすべて作成します(単に非表示、1つのメインフォームのみが表示されます)。したがって、メニュープロジェクトのフォームタブの下で「オートクリートフォーム」から「利用可能なフォーム」に当面が開始されないフォームを転送する必要があります|オプション...このようにして、これらのフォームの作成とリリースでは、コードを実装する必要があります。
A.フォームを作成するための2つの方法の比較。これらの非自動化されたフォームの場合、ショー(自己)または作成(アプリケーション)の前にそれらを作成する必要があります。たとえば、form2.creat(self)and form2.create(application)が、それらの違いは何ですか?実際、2つの間に大きな違いはありません。
しかし、所有者が別のウィンドウまたはコントロールに属している場合、所有者が解放されると、所有者がリリースされます。重要な違いは、フォームのリソースを管理する人です。最初の方法で作成されたフォームのリソースは、2番目のメソッドで作成され、フォームのリソースはアプリケーションによって管理されます。
b.フォームをリリースするいくつかの方法。メモリを保存するためであるため、使用済みフォームはメモリを「移動」する必要があります。ここでは、いくつかの同様の方法をリストします。
(1)
手順tform1.button1click(sender:tobject);
始める
......
form2 = nilの場合
form2:= tform2.create(application);
form2.showmodal;
......
終わり;
手順tform2.close(sender:tobject; var action:tcloseaction);
始める
ModalResult:= mrnone;
アクション:= Cafree;
form2:= nil;
終わり;
(2)
手順tform1.button1click(sender:tobject);
始める
割り当てられていない場合(form2)
始める
application.createform(tform2、form2);
試す
form2.showmodal;
ついに
form2.free;
form2:= nil;
終わり;
終わり
それ以外
form2.showmodal;
終わり;
(3)
手順tform2.button1click(sender:tobject);
始める
form2.close;
form2.release;
終わり;
controlコントロールの使用
A.有名なRXLIBコントロールパッケージは、3人のロシアの専門家によって書かれており、非常に優れています!ただし、コンテンツが多すぎて、うまく使用するのは簡単ではありません。ここでrxricheditにいくつかのポイントを言うだけです。
•多くの人がrxlibのインストール方法を尋ねてきましたが、それは少し複雑なようです、ハハなので、私もそれを言います:
rxinst.exeを実行してRxlibを/プログラムファイル/borland/delphi5(or 6)/rxフォルダーにインストールしてから、Delphiを開き、ファイル/オープンを選択...、rxctl5.dpk、rxdb5.dpk、rxbde5.dpkを開いた後のrxbde5.dpk 、コンパイルを押すと、dclrx5.dpk、dclrxdb5.dpk、dclrxbd5.dpkを押してインストールします。
•AllowObjectsプロパティ。 win98のデフォルト設定は、右クリックメニューに問題はありませんが、falseに設定すると、ショートカットメニューが2回表示されると、右クリックメニューが表示されます。しかし、falseの場合、それは正常に表示されます。したがって、システムの互換性のために、現在のOSバージョンを決定する必要があります。
手順tformmain.formcreate(sender:tobject);
var
OSVI:OsversionInfo;
......
始める
osvi.dwosversioninfosize:= sizeof(osversioninfo);
getVersionEx(OSVI);
ケースosvi.dwplatformidの
1:rxrichedit1.allowobjects:= true;
2:rxrichedit1.allowobjects:= false;
終わり;
.........
終わり;
しかし、なぜこの属性にそのような問題があるのかわからないので、専門家が私にアドバイスを与えることを願っています。
•OnurlClickイベント。 rxricheditは、Webページアドレスをハイパーリンク形式に自動的に変換しますが、特定の動作はそれ自体でコードを作成する必要があります。そうしないと、これらのアドレスは空のシェルになります。
手順tformmain.rxrichedit1urlclick(sender:tobject; const urltext:string; button:tmousebutton);
始める
ボタン= mbleftの場合
shellexecute(ハンドル、nil、pchar(urltext)、nil、nil、sw_show);
終わり;
b.メモリを保存して操作を最適化するために、常にコンポーネントを動的に作成します。しかし、それを使用した後、それが時間内に記憶からクリアされていない場合、それは私たちの元の意図に反します。しかし、作成したコンポーネントを「殺す」方法は、編集コントロールを作成しましたが、編集を使用した後、編集を呼び出しています。これは、編集によって指されたメモリスペースを解放するだけですが、ポインターが編集されていない場合、Delphiは編集によって提供されるポインターに従ってリリースされたメモリ領域にアクセスするため、アクセス違反は生成された... .mistake。したがって、将来の通常の動作を確保するには、無料編集の後にポインターを使用する必要があります。
C.ステータス行に各コントロールのプロンプトテキストを表示します。このアプリケーションのオンヒントイベントを使用できますが、アプリケーションは互換性のないオブジェクトであるため、次の方法を使用できます。
......
公共
手順DisplayShint(送信者:tobject);
終わり;
......
手順tform1.displayhint(sender:tobject);
始める
statusbar1.simpletext:= getLonghint(application.hint);
終わり;
手順tform1.formcreate(sender:tobject);
始める
application.onhint:= displayhint;
終わり;
このようにして、ステータスバーに表示されるテキストは、プロンプトボックス(自動的に表示される小さな黄色のボックス)と同じです。ステータスバーのプロンプトテキストをより詳細にしたい場合はどうなりますか?実際、コントロールのヒントプロパティが次のように書かれている限り、それは単なるmyhintです! 「ステータスバーに表示されます。今。
d. ListViewの使用におけるいくつかの重要なポイント。以下は、例として2列のリストビューです。
→行を追加:
ListView1を使用してください
始める
listitem:= items.add;
listitem.caption:= '最初の列コンテンツ';
listitem.subitems.add( '2番目の列コンテンツ');
終わり;
→Clear ListView1:
ListView1.Items.Clear;
→現在選択している行の行番号を取得し、現在の行を削除します。
i:= 0からlistview1.items.count-1の場合
listView1.items [i] .selected then //i = listview1.selected.index
始める
ListView1.Items.Delete(i);
終わり;
もちろん、ListViewにはOnSelectItemイベントがあり、選択した行を決定してグローバル変数に割り当てることができます。
→列と列を読む操作:
edit1.text:= listview1.items [i] .caption;
edit2.text:= listview1.items [i] .subitems.strings [0];
edit3.text:= listview1.items [i] .subitems.strings [1];
類推により、列全体をループを使用して読み取ることができます。
→フォーカスを1行上に移動します。
i:= 0からlistview1.items.count-1の場合
if(listview1.items [i] .selected)および(i> 0)then
始める
listView1.setfocus;
ListView1.Items.Item [i-1] .selected:= true;
終わり;
ただし、delphi6では、listViewにはitemindex属性があるため、
listView1.setfocus;
ListView1.ItemIndex:= 3;
焦点を設定できます。
othersその他==
•ソフトウェアを最適化し、アレイを使用するときに、より完璧で動的な配列がよく使用されるようにするために使用されます。次のような宣言の場合:a:文字列の配列、および配列を使用する前に、setLength(a、3)は配列の長さを3に設定します。つまり、[0]、a [1]、a [2]、それだけです。再び配列の長さを拡張する必要がある場合:seclength(a、5)、次に[3]とa [4]が追加され、以前のa [0]、a [1]、a [2]が追加されます。の値は、断固として(a、1)seclength(a、1)が残り、[0]と[1]と[ 2]メモリから自動的にクリアされます。注:動的配列は「0」で始まるため、setLength(a、1)high(a)= 0の後! !
最後に、この動的配列がもはや使用されなくなり、メモリを保存するためにプログラムがまだ終了していない場合、次のことを使用して、この配列をリリースして、「グリーンと環境保護」を本当に実現します:)
•「現在のプログラムの実行への道を実行する方法」という質問は、フォーラムでしばしば見ることができます。実際、この機能はプログラミングで随時使用されます。実際、この効果を達成できるいくつかの機能があります。
→getCurrentDirectory():winapi関数、特定の使用法は次のとおりです。
var
MyCurrentDir:charの配列[0..144]
始める
getCurrentDirectory(sizeof(mycurrentdir)、mycurrentdir);
myCurrentDir:= myCurrentdir+'/mysoftname.exe';
終わり;
→getCurrentDir():DelphiがGetCurrentDirectoryによってカプセル化された関数、使用法は簡単です:myCurrentDir:= getCurrentDir。最終形式は次のとおりです。C:/Windows/システム
また、パスを直接取得できる関数:extractfilepath(paramstr(0))、extractfilepath(application.exename)など。
•システムのシャットダウン、再起動などのメッセージ。これは人々が尋ねる質問でもあり、私はここでそれについて言及します:
シャットダウン:ExitWindowSex(EWX_SHUTDOWN、32);
再起動:ExitWindowSex(EWX_REBOOT、32);
logout:Exitwindowsex(ewx_logoff、32);
電源オフ:ExitWindowSex(EWX_POWEROFF、32);
•Delphiでは、#39を使用することに加えて、プログラム(Showmessageなど)で「単一のシングル引用」を扱う方法は? Both ''' and ''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''' '' '' '' '' '' '' '' '' '' '' '' '' '実際、4つの単一の引用は単一の引用、つまり「 '' '」を表し、2番目と3番目はこれが「'」であることを示し、最初と4番目はこれが文字型であることを示します。ハハ、とても面白い:)
•Showmessageの中国の問題。 ShowMessageのボタンはすべて電子テキストにあり、人々は不快に感じます。実際、DIYの後、私たちはそれらをすべて中国語にすることができます。
まず、現在のプロジェクトを保存してから、プロジェクトを選択します|言語|追加ダイアログボックスが表示されます。中国)、次に終了します。リスト内の「const_smsgdlgok」項目を見つけ、「中国語(翻訳)」パターンを「ok」(オリジナル)に変更し、保存後に終了します。さて、プログラムをもう一度実行してください、ハハ、それは単なる中国のボタンですか?
ただし、ShowMessageのメッセージダイアログボックスは非常にシンプルで、システムのデバッグ中に開発者に表示できます。しかし、それは単純すぎるので、ソフトウェアの公式バージョンでこのようなダイアログボックスを使用しないことをお勧めします。さらに、ShowMessageの代わりにメッセージボックスを使用してソフトウェアのサイズを削減することをお勧めします。 !