線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1071
推到 Plurk!
推到 Facebook!

如何寫一個沒有form的unit

尚未結案
seedbcc
高階會員


發表:232
回覆:272
積分:105
註冊:2003-12-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-30 15:33:48 IP:221.169.xxx.xxx 未訂閱
小弟不斷的嘗試 但都試不出如何寫 要寫一個沒有form的unit 讓其它有form的unit來共用它 可否有人寫個簡單範例 教教小弟
aquarius
資深會員


發表:3
回覆:347
積分:330
註冊:2003-05-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-30 16:17:15 IP:61.230.xxx.xxx 未訂閱
引言: 小弟不斷的嘗試 但都試不出如何寫 要寫一個沒有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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-30 16:31:15 IP:218.15.xxx.xxx 未訂閱
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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-30 16:56:20 IP:221.169.xxx.xxx 未訂閱
上面兩位大大 thanks you But 我希望給的範例是有class的 因為,我想要變數、及程式執行分別傳值 能否麻煩再給個範例 因為,我接下來,要寫的無form unit 是用來處理 資料表的讀寫存取 所以,一定會用到class及其public private..................
seedbcc
高階會員


發表:232
回覆:272
積分:105
註冊:2003-12-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-03-30 17:10:18 IP:221.169.xxx.xxx 未訂閱
小弟的程式是用一個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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-30 17:20:02 IP:61.230.xxx.xxx 未訂閱
加上紅字的部份即可.    
引言: 小弟的程式是用一個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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-03-30 20:34:23 IP:211.76.xxx.xxx 未訂閱
錯誤還是一樣 沒有變
jch
中階會員


發表:111
回覆:224
積分:66
註冊:2003-12-01

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-03-30 20:44:35 IP:61.70.xxx.xxx 未訂閱
要寫一個沒有form的unit 讓其它有form的unit來共用它 是否該改用DATA Modlue呢?? ======================== 我是DELPHI5的初學者
aquarius
資深會員


發表:3
回覆:347
積分:330
註冊:2003-05-21

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-03-30 21:32:31 IP:61.230.xxx.xxx 未訂閱
引言: 錯誤還是一樣 沒有變
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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-03-31 09:35:17 IP:221.169.xxx.xxx 未訂閱
那麼tquery要如何傳送??
系統時間:2024-11-05 5:34:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!