今更Delphiですが何か? -2ページ目

プロジェクトファイルを修正する

こんにちは。Nです。

僕の場合アプリケーションを作成する際は、
プロジェクトファイルを修正することから始めます。

まずはメモリリークチェックで以下のコードを。


{$WARN SYMBOL_PLATFORM OFF}
ReportMemoryLeaksOnShutdown := DebugHook <> 0;
{$WARN SYMBOL_PLATFORM ON}




で、よく分かりませんが、TWebBrowserでたまにエラーがでるので、
その対策としてこちらのコードを。


Set8087CW($133F);



その後、スタートアップチェックを行い問題がなければ
アプリケーションを起動させます。問題があればメッセージを
表示させるなどしてアプリケーションを終了させます。


基本の形としては、

if GP_StartUpCheck then begin
 //フォームを生成
 Application.CreateForm(TMainForm, MainForm);

 //アプリケーション開始処理
 GP_Init;

 //アプリケーション実行
 Application.Run;

 //アプリケーション終了処理
 GP_Fin;

end else begin
 //起動時エラーを表示
end;

 //アプリケーション終了処理2
 GP_Finalize;


こんな感じです。

GP_StartUpCheckでアプリケーション起動のチェックを行います。
試用期間の処理だったり、諸々の起動チェックを行います。

チェックを通過したら全フォームを生成します。

次に、GP_Initで全フォーム生成後に実行される処理を呼び出します。
iniファイルからフォーム位置データを読み込んで設定するなどの
処理や、各コンポーネントの初期化処理などを行います。

そして、Application.Runでアプリケーションを実行します。

アプリケーションを実行し終わったら、GP_Finでアプリケーション
終了の処理を行います。フォームの位置やサイズを保存したり
するのはここで行います。


アプリケーション起動チェックに通過しなかった場合、else以下で
アプリケーションの起動エラーメッセージを出します。

この際、GP_StartUpCheckを実行した際に引っかかったチェックに
応じてエラーコードを設定し、エラーコードに応じたメッセージを
表示するということを行います。

そして最後に、GP_Finalizeでアプリケーションが起動に成功しても
失敗しても実行される最終処理を呼んでアプリケーション終了です。


基本的にはこんな感じです。このほかには、アプリケーションの
タイトルを設定したりすることも、必要に応じて行います。

仮想ListViewの準備

こんにちは。Nです。

TListViewコンポーネントの使用法としては、
今ではほとんど仮想ListViewで使用しています。

表示内容をリストで持っておいて、OnDataイベントで
表示するという至って簡単な仕組みです。

ただし現段階では、毎回毎回アプリケーション開始時に
OnCreateイベント当たりで、リストを生成しているという
状態です。

これって結構面倒くさいんですよね。

どうせ仮想ListViewを使用するのであれば、必ず使用する
ものなので、共通の仕組みを作ってここら辺を簡単に出来ればと
思っています。

例えば、対象となるListViewを引数として渡すことで、
これらのリストの初期化を出来るようにするとか、
複数のListViewを格納できるようにするとか。

このあたりをクラス化できればと思っています。

プロジェクトソースの表示

こんにちは。Nです。

プロジェクトソースに手を加えることは良くやることで、
というか必ず手を加えるわけですが、TurboDelphiの時は、
.bdsprojファイルを開けばプロジェクトソースは表示できた
訳です。

しかし、同じようにDelphi2010でやっても、プロジェクト
ソースは表示されないわけです。

はじめはビビりました。

どうやってプロジェクトソースを編集せいっちゅうんじゃ!

と唸ったもんです。が、よくメニューを見ると、

「プロジェクト-ソース表示」

ってメニューがあるじゃありませんか。
これで一件落着。


いやいや、お恥ずかしい。

TWebBrowserコンポーネントエラーの件

こんにちは。Nです。

TWebBrowserコンポーネントををタイプライブラリから
インストールするとエラーが出るということで、前回、
記事に書いたんですが、どんなエラーが出ていたかというと、

同じコンポーネント名が登録されています。

というエラーでした。ということで、同名のコンポーネントを
外すということをやりました。

具体的には、メニューの「コンポーネント-パッケージのインストール」
で、Embacadero C++Builder Internet Explorerコンポーネント
パッケージというところのチェックを外しました。

あとは、追加したコンポーネントパッケージのチェックが
外れていたので、そこにチェックを入れて色々と。

本当に色々いじったのでよく分かりません。

上記のようにして、保存して再起動をかけても
チェックの状態が戻っていたりと訳が分からない状況が
続いたんですが、何とか使えるようになりました。


【TWebBrowserコンポーネント】

こんにちは。Nです。

自作アプリケーション内にブラウザを組み込むために
TWebBrowserを使用しています。

TWebBrowser以外にも色々便利なコンポーネントが
あるんですが、どうも使い方が分からなかったりするので、
長いことTWebBrowserを使っています。

過去の資産を利用するのにもTWebBrowserは便利で、
分からないことでも、色々検索すると見つかります。

インターネットって便利ですね。

僕の使用しているのはDelphi2010ですが、
このバージョンについているTWebBrowserには
OnNewWindow3イベントがありませんでした。

なので一端、TWebBrowserコンポーネントを削除して
新たにタイプライブラリの取り込みをして、
TWebBrowserコンポーネントをインストールしました。

余計なコンポーネントもついてきましたが。
何か起動時にエラーが出るというトラブルに見舞われました。

今もって奮闘中。


OnNewWindow3イベントがないために余計なギミックを
使用してその場しのぎをしていたんですが、これで、
余計なことをせずに済むはず。

リンクを別窓で表示したいときに、一端TWebBrowserを
動的に作って、そこで一端ppDispを設定した後、
OnNavigate2イベントでURLを取得するという
まどろっこしいやり方をしておりました。

OnNewEvent3には既にURLが引数として与えられているので
こんなことはしなくて良いということですね。


エラー処理が終わればってことですけど。