DLLサンプルプログラムが動きません
Delphi XE5 starter で、
http://www39.atwiki.jp/kgh07155/pages/28.html
を参考にして以下のようなプログラムを作りました。
コンパイルはできたのですが、Button1をクリックすると「TDllFormリソースが見つかりません」というエラーメッセージが出ます。
どういう風に修正すればいいのでしょうか?
//*****************************
//SamoleUnit2.pasの内容
unit Unit_Sample2;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function ShowDLLForm(hOwner: HWND): TModalResult; stdcall;
external 'DLLSample.dll';
procedure ShowDLLForm2;
external 'DLLSample.dll';
// ここまで、DLLを呼び出すための記述。
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowDLLForm(Application.Handle);
// DLL側でフォームを作成した後、
// 通常のフォームのShowModalメソッドと同じ動作をして
// 作成したフォームを破棄。
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ShowDLLForm2;
// DLL側でフォームを作成した後、
// 作成したフォームを表示。
end;
end.
//********************************
//DllSample.dprの内容
library DLLSample;
uses
System.SysUtils,
System.Classes,
Windows,
Forms,
Controls,
Unit_DLLForm in 'Unit_DLLForm.pas' {Form1},
Unit_Sample2 in 'Unit_Sample2.pas' {Form2};
type
TDllForm = class(TForm)
end;
{$R *.res}
function ShowDLLForm(hOwner: HWND): TModalResult; stdcall;
var
DllForm:TDllForm;
begin
Application.Handle := hOwner; // 呼び出し元の情報をDLL側が受け取る。
DllForm := TDllForm.Create(Application); // DLL側でフォームを作成する。
// フォームに配置された各オブジェクトも、自動で作成される。
Result := DllForm.ShowModal; // 返し値を設定。
DllForm.Free; // DLL側で作成したフォームを破棄。
Application.Handle := 0; // 呼び出し元の情報を破棄。
end;
procedure ShowDLLForm2;
var
DllForm:TDllForm;
begin
DllForm := TDllForm.Create(Application); // DLL側でフォームを作成する。
DllForm.Show; // 作成したフォームを表示。
end;
exports
ShowDLLForm,
ShowDLLForm2;
begin
end.
//********************************
//unit_DLLForm.pasの内容
unit Unit_DLLForm;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
end.
お礼
申し訳ありませんFindAndSelは自分で設定したものでした。 おっしゃる通り、完全一致での検索は出来なかったので部分一致で結果が表示されるようにしました。自己解決で申し訳ありません。 考えていましたプログラムは顧客名簿を作り、それぞれにIDを付与して検索できるようにするというものです。 要領の掴めない質問をしてしまい、申し訳ありませんでした。 回答頂きありがとうございました。