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.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Visual Basic(VBA) 九九の答えの計算 3 2022/12/20 22:13
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスVBA フォームのス...
-
Accessでフォームから別フォー...
-
サブフォームの新規レコードに...
-
フォーム上の全てのコントロー...
-
PDFフォームに本日の日付を自動...
-
VB.net(VB)で、フォームにExcel...
-
Googleフォーム・複数人の申し...
-
accessで2つ以上のフォームを起...
-
VBAでフォームのスクロールバー...
-
C# 別なフォームへ値を渡す (...
-
サブフォームの行ごとにコンボ...
-
VBAにてメッセージボックスを最...
-
VBのEXEファイルのサイズを小さ...
-
リストボックスをクリックする...
-
ExcelVBAでユーザーフォーム内...
-
フォームを1つだけ閉じる方法は?
-
アクセス フォームが存在する...
-
リストボックスの選択解除
-
タブコントロールを含んだフォ...
-
Access:ストアドプロシージャ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAにてメッセージボックスを最...
-
Accessでフォームから別フォー...
-
サブフォームの新規レコードに...
-
リストボックスの選択解除
-
Googleフォーム・複数人の申し...
-
ユーザーフォーム上にアイコン...
-
PDFフォームに本日の日付を自動...
-
accessで2つ以上のフォームを起...
-
VBプログラムの終了
-
アクセスVBA フォームのス...
-
メッセージボックスの背景色
-
サブフォームの行ごとにコンボ...
-
ExcelVBAでフォーム内でブック...
-
フォーム上の全てのコントロー...
-
ディスプレイ解像度より大きな...
-
メインフォームからサブフォー...
-
VBAでフォームのスクロールバー...
-
PDFフォーム内で日付計算したい...
-
Access 無操作の場合、自動で閉...
-
C# 別なフォームへ値を渡す (...
おすすめ情報