全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3013
推到 Plurk!
推到 Facebook!

流程及設計DELPHI 7 & Active X

答題得分者是:pcplayer99
chenmoneta
一般會員


發表:3
回覆:2
積分:1
註冊:2007-07-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-07-26 15:49:43 IP:59.127.xxx.xxx 訂閱
各位高手,目前要開發一個元件,使用DELPHI讀取RFID後,取得帳號密碼然後可以登入網站
如到奇摩的電子信箱他會先判別Active 元件是否存在,不存在就詢問使用者下載,
之後可以透過讀卡機感應直接做登入的動作,請問有這方面的文件可以參考嗎?
------
moneta
編輯記錄
chenmoneta 重新編輯於 2007-07-26 17:54:55, 註解 無‧
chenmoneta 重新編輯於 2007-07-27 10:03:37, 註解 無‧
pcplayer99
尊榮會員


發表:146
回覆:790
積分:632
註冊:2003-01-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-07-27 23:32:09 IP:218.18.xxx.xxx 訂閱
你的问题其实应该是这样的:

1. 你要在一个 HTTP 的网页里,读 RFID;
2. HTML java-scr-ipt 是肯定没办法读到 RFID的,因为涉及到和 hardware 通讯。So, 你要做一个 ActiveX 插件放到网页里,由插件去读 hardware.

3. 如何用 delphi 去做这个插件;
4. 一个插件如何放到网页上;
5. 网页上的插件读到 RFID 后,如何提交给 Server 端;
5.1. 可以让插件直接和 Server 端通讯;
5.2. 可以让插件把读到的 RFID 写到页面上的一个 HTML 的 input 元素中去,然后提交 html 页面给 web server。

你自己究竟是哪一步搞不定?问问题之前,请先想清楚自己有什么问题。能正确地提出问题,问题就已经解决了一半。
chenmoneta
一般會員


發表:3
回覆:2
積分:1
註冊:2007-07-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-07-30 10:58:56 IP:59.127.xxx.xxx 訂閱
多謝高手的解答與詳細的解釋,
我目前的問題是要做一個

ActiveX 插件放到網頁裡,由插件去讀 hardware.


如何用 運用 delphi 去做這個插件;



感謝

------
moneta
編輯記錄
chenmoneta 重新編輯於 2007-07-30 11:15:17, 註解 無‧
pcplayer99
尊榮會員


發表:146
回覆:790
積分:632
註冊:2003-01-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-07-30 23:38:48 IP:219.133.xxx.xxx 訂閱
以下是我自己写了试验 code 后写的心得,我贴在我开的 google 的 group 里的。

1. 用 Delphi 写一个网页插件;
2. 写页面的 JavaScript 和该插件交互。比如用 JavaScript
向插件输入数据。
1. 在 Delphi IDE 菜单:New / Other 进入要 New
什么项目的选择窗口,选择 AcitveX 页,选择 Active
Form。创建了一个 Acitve Form 新工程。保存它。
1.1. New Active Form
的时候要求命名,这里命名为:JSActiveX.
2. 在这个工程的 Form 上放一个 Edit1: TEdit; 放一个 Label1:
TLabel; 放一个 Btn1: TButton
3. 在 IDE 菜单 View/Type Library,出现 DCOM
接口的定义窗口。在 ITestJS
一节上,鼠标右点,选择菜单:new /
property,然后填入:SayHello。按IDE的保存后,有了个
Property 叫做 SayHello.在代码里 IDE 自动生成了:function
TTestJS.Get_SayHello: WideString; 和 procedure
TTestJS.Set_SayHello(const Value: WideString);

4. 填写代码:
function TTestJS.Get_SayHello: WideString;
begin
Result := Edit1.Text;
end;

procedure TTestJS.Set_SayHello(const Value: WideString);
begin
Edit1.Text := Value;
end;

5. 编译,发布。Delphi 自动生成的 htm 文件大概是:

<HTML>

Delphi 7

</OBJECT>
</HTML>
6. 手工为该 html 文件增加:

<HTML>




注意,代码里的 document.JSActivex 这个 JSActivex
代表我们的那个插件。但是,就这样运行是不行的。因为
Delphi 自动生成的 htm
里没有为这个插件命名。因此,要增加一个
ID="JSActivex" 的项目在 htm 里,变成:

<OBJECT <br /> classid="clsid:632C1FA1-CBF0-4DDE-A66B-548BE1880E56"
id="JSActivex" //<----注意,这行是手工加上去的。
codebase="http://LocalHost/JSActiveX/JSActiveX.cab#version=1,0,3,0"
width=350
height=250
align=center
hspace=0
vspace=0


</OBJECT>
然后,用浏览器访问,在浏览器里可以看到插件。看不到的话,检查路径和浏览器的安全设置。

然后,向页面上的那个文本输入框输入几个字符,那个输入框就是手工加入到 htm 文件里的 id="TextBox1" 那个东西。然后点 htm 上的按钮,触发 "document.JSActivex.SayHello=TextBox1.value" ,可以看到,插件上的那个 Edit1.Text 的确立及变成了在 TextBox1 里面输入的内容,也就是说,JavaScr-ipt 通过写那个插件的属性,的确把数据传到插件里去了。

至于插件如果要用事件来通知页面上的 JavaScr-ipt,需要在 Type library 的 IJSTestEvents 节上鼠标右点,选择 new/Event,输入 Event 的名字,就让插件拥有了可以让 JavaScr-ipt 来用的事件了。具体如何让 js 可以和 Delphi 的 ActiveX 的事件绑定到一起,让 Delphi 的 ActiveX 的事件去驱动 JS 的 function,你可以查一下我最近回复的别人的贴。

重点:
1. Delphi: 在 Active Form 的 Type library 中,为接口 new/property,然后再自动生成的 get/set 方法里写代码;
2. 在 delphi 自动生成的 html 关于插件描述的地方,增加 id="MyForm",这个 id 随便命名。没有这个 id 则无法用 Javascr-ipt 通过字符串的代码去调用到这个插件。
3. JS 里读页面文本框的内容,要为页面文本框增加 id="TextBox1" 这样的命名,否则无法读到它的内容。另外,JS 区分大小写,因此,读文本框的内容是: TextBox1.value 而不是 TextBox1.Value.
chenmoneta
一般會員


發表:3
回覆:2
積分:1
註冊:2007-07-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-07-31 11:48:31 IP:59.127.xxx.xxx 訂閱
關於第三點
在 ITestJS 一節上
請問 ITestJS 是?
如圖片
多謝
------
moneta
編輯記錄
chenmoneta 重新編輯於 2007-07-31 11:50:13, 註解 無‧
系統時間:2024-04-28 5:04:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!