如何寫一個沒有form的unit |
尚未結案
|
seedbcc
高階會員 發表:232 回覆:272 積分:105 註冊:2003-12-10 發送簡訊給我 |
|
aquarius
資深會員 發表:3 回覆:347 積分:330 註冊:2003-05-21 發送簡訊給我 |
引言: 小弟不斷的嘗試 但都試不出如何寫 要寫一個沒有form的unit 讓其它有form的unit來共用它 可否有人寫個簡單範例 教教小弟選 File / New / Unit 然後在裏頭加上你的程式碼就好了呀. 記得要給其他 UNIT 叫用的 Function 要在 implement 之前宣告就是了. ////////////////////////////////////////////// // Main Form // Unit1.pas unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} uses Unit2 ; procedure TForm1.Button1Click(Sender: TObject); begin MsgBox(handle,'Test','info',MB_OK) ; end; end. //////////////////////////// // Unit2.pas unit Unit2; interface uses Windows ; function MsgBox(h:THandle;sMsg,sCap:string;dwMode:DWORD):DWORD ; implementation function MsgBox(h:THandle;sMsg,sCap:string;dwMode:DWORD):DWORD ; begin Result:=MessageBox(h,pchar(sMsg),pchar(sCap),dwMode) ; end ; end....Aquarius
------
水瓶男的blog: http://791909.blogspot.com |
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
file-->new-->unit 建一個沒有form的unit unit Unit2; //一個沒有form的unit
interface
procedure getmessage(var s:string);
implementation
uses QDialogs;
procedure getmessage(var s:string);
begin
showmessage(s);
end;
end. uses unit2; procedure TForm1.Button1Click(Sender: TObject);
var
s1:string;
begin
s1:='are you ready?';
getmessage(s1);
end; end. ——行径窄处,留一步与人行——
|
seedbcc
高階會員 發表:232 回覆:272 積分:105 註冊:2003-12-10 發送簡訊給我 |
|
seedbcc
高階會員 發表:232 回覆:272 積分:105 註冊:2003-12-10 發送簡訊給我 |
小弟的程式是用一個form去call一個unit
完成select 資料表格的動作
然後顯示在dbgrid中 unit frm_testdbm; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, DBGrids, DB, ADODB; type
Ttest_sqlm = class(TForm)
ADOConnection1: TADOConnection;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
btn_test: TButton;
test_dbmodule: TButton;
Site_Data: TADOQuery;
procedure test_dbmoduleClick(Sender: TObject);
procedure btn_testClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
test_sqlm: Ttest_sqlm; implementation {$R *.dfm}
uses udbupdate; procedure Ttest_sqlm.test_dbmoduleClick(Sender: TObject);
begin
close;
end; procedure Ttest_sqlm.btn_testClick(Sender: TObject);
var
s1:string;
s2:string;
begin
s2:='test_sqlm.Site_Data';
s1:='Site_Data';
getmessage(s1,s2);
end; end. ================================================================
unit Udbupdate; interface uses
Classes, Windows, SysUtils, Forms, Messages,Dialogs; procedure getmessage(var s,s1:string);
implementation { TLogFile } procedure getmessage(var s,s1:string);
var
qry:string;
begin
qry:=s1;
with qry do ------>發生錯誤
begin
close;
sql.clear;
sql.add('select * from '' s ''');
open;
end;
// showmessage(s);
end; end. 錯誤訊息如下:
[Error] Udbupdate.pas(33): Record, object or class type required 不知這個錯誤如何解決
|
aquarius
資深會員 發表:3 回覆:347 積分:330 註冊:2003-05-21 發送簡訊給我 |
加上紅字的部份即可.
引言: 小弟的程式是用一個form去call一個unit 完成select 資料表格的動作 然後顯示在dbgrid中 unit frm_testdbm; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, DBGrids, DB, ADODB; type Ttest_sqlm = class(TForm) ADOConnection1: TADOConnection; DataSource1: TDataSource; DBGrid1: TDBGrid; btn_test: TButton; test_dbmodule: TButton; Site_Data: TADOQuery; procedure test_dbmoduleClick(Sender: TObject); procedure btn_testClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var test_sqlm: Ttest_sqlm; implementation {$R *.dfm} uses udbupdate; procedure Ttest_sqlm.test_dbmoduleClick(Sender: TObject); begin close; end; procedure Ttest_sqlm.btn_testClick(Sender: TObject); var s1:string; s2:string; begin s2:='test_sqlm.Site_Data'; s1:='Site_Data'; getmessage(s1,s2); end; end. ================================================================ unit Udbupdate; interface uses Classes, Windows, SysUtils, Forms, Messages,Dialogs; procedure getmessage(var s,s1:string); implementation uses frm_testdbm; { TLogFile } procedure getmessage(var s,s1:string); var qry:string; begin qry:=s1; with qry do ------>發生錯誤 begin close; sql.clear; sql.add('select * from '' s '''); open; end; // showmessage(s); end; end. 錯誤訊息如下: [Error] Udbupdate.pas(33): Record, object or class type required 不知這個錯誤如何解決...Aquarius
------
水瓶男的blog: http://791909.blogspot.com |
seedbcc
高階會員 發表:232 回覆:272 積分:105 註冊:2003-12-10 發送簡訊給我 |
|
jch
中階會員 發表:111 回覆:224 積分:66 註冊:2003-12-01 發送簡訊給我 |
|
aquarius
資深會員 發表:3 回覆:347 積分:330 註冊:2003-05-21 發送簡訊給我 |
引言: 錯誤還是一樣 沒有變 Vunit Udbupdate; interface uses Classes, Windows, SysUtils, Forms, Messages,Dialogs; procedure getmessage(var s,s1:string); implementation uses frm_testdbm; { TLogFile } procedure getmessage(var s,s1:string); var qry:string; // <- 這是字串型態 begin qry:=s1; with qry do ------>發生錯誤, 當然會錯, 你把 String 當 TQuery 用 begin close; sql.clear; sql.add('select * from '' s '''); open; end; // showmessage(s); end; end.基本上你的錯誤和有沒有 Form 的 Unit 一點關係也沒有. 從觀念上就錯了. 請先確認各資料型態旳轉換規則. ...Aquarius
------
水瓶男的blog: http://791909.blogspot.com |
seedbcc
高階會員 發表:232 回覆:272 積分:105 註冊:2003-12-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |