<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    konhon

    忘掉過(guò)去,展望未來(lái)。找回自我,超越自我。
    逃避不一定躲的過(guò), 面對(duì)不一定最難過(guò), 孤單不一定不快樂(lè), 得到不一定能長(zhǎng)久, 失去不一定不再擁有, 可能因?yàn)槟硞€(gè)理由而傷心難過(guò), 但我卻能找個(gè)理由讓自己快樂(lè).

    Google

    BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
      203 Posts :: 0 Stories :: 61 Comments :: 0 Trackbacks

    #

    MenuItem1.ShortCut := ShortCut(Word(VK_RIGHT), [ssCtrl])
    posted @ 2005-08-26 21:29 konhon 優(yōu)華 閱讀(440) | 評(píng)論 (0)編輯 收藏

    Struts安裝:
    首先請(qǐng)到http://jakarta.apache.org/Struts下載Struts,建議使用release版,現(xiàn)在最高版本為1.1,下載后得到的是一個(gè)ZIP文件。
    將ZIP包解開(kāi),可以看到這個(gè)目錄:lib和webapps,webapps下有一些WAR文件。假設(shè)你的Tomcat裝在c:\Tomcat下,則將那些WAR文件拷貝到C:\Tomcat\webapps,重新啟動(dòng)Tomcat即可。打開(kāi)瀏覽器,在地址欄中輸入:http://localhost:8080/Struts-example/index.jsp,若能見(jiàn)到“powered by Struts”的深藍(lán)色圖標(biāo),即說(shuō)明成功了。這是Struts自帶的一個(gè)例子,附有詳細(xì)的說(shuō)明文檔,可以做為初學(xué)者的入門(mén)教程。另外,Struts還提供了一系統(tǒng)實(shí)用對(duì)象:XML處理、通過(guò)Java reflection APIs自動(dòng)處理JavaBeans屬性、國(guó)際化的提示和消息等

    一個(gè)實(shí)例:
    一個(gè)用戶注冊(cè)系統(tǒng),用戶通過(guò)網(wǎng)頁(yè)輸入相關(guān)信息:注冊(cè)ID號(hào),密碼,EMAIL,若注冊(cè)成功,則返回成功提示信息,反之出現(xiàn)注冊(cè)失敗提示信息。
    以下是相關(guān)文件的部分核心代碼。

    項(xiàng)目建立:
    正式開(kāi)發(fā)前,需要在Tocmat(我的tomcat裝在c:\tomcat)中建立此項(xiàng)目。比較快的一種建立方式為:在C:\tomcat\webapps下新建目錄test,再將C:\tomcat\webapps\struts-example下的
    WEB-INF目錄拷貝到test目錄下,然后將test\WEB-INF下的src和classes目錄清空,以及struts-config.xml文件中內(nèi)容清空即可。這樣,我們需要的Struts類包及相關(guān)的配置文件就都齊了。
    開(kāi)發(fā)時(shí),將JSP文件放在test目錄下,Java原文件放在test\WEB-INF\src下,編譯后的類文件放在test\WEB-INF\classes下。

    注冊(cè)頁(yè)面:reguser.jsp
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ taglib uri="/WEB-INF/Struts-bean.tld" prefix="bean" %>
    <%@ taglib uri="/WEB-INF/Struts-html.tld" prefix="html" %>
    <html:html locale="true">
    <head>
    <title>RegUser</title>
    <html:base/>
    </head>
    <body bgcolor="white">
    <html:errors/>
    <html:form action="/regUserAction" focus="logname">
    <table border="0" width="100%">
    <tr>
    <th align="right">
    Logname:
    </th>
    <td align="left">
    <html:text property="logname" size="20" maxlength="20"/>
    </td>
    </tr>
    <tr>
    <th align="right">
    Password:
    </th>
    <td align="left">
    <html:password property="password" size="20" maxlength="20"/>
    </td>
    </tr> 
    <tr>
    <th align="right">
    E-mail:
    </th>
    <td align="left">
    <html:password property="email" size="30" maxlength="50"/>
    </td>
    </tr>
    <tr>
    <td align="right">
    <html:submit property="submit" value="Submit"/>
    </td>
    <td align="left">
    <html:reset/>
    </td>
    </tr>
    </table>
    </html:form>
    </body>
    </html:html>


    此JSP頁(yè)面不同于普通的JSP頁(yè),因?yàn)樗罅窟\(yùn)用了taglib,這些taglib對(duì)初學(xué)者而言,可能難于掌握,可這卻是Struts的精華之一。靈活運(yùn)用,將大大提高開(kāi)發(fā)效率。

    Struts-config.xml:

    <Struts-config> 
    <form-beans>
    <form-bean name="regUserForm"
    type
    ="org.cjea.Struts.example. RegUserForm "/> 
    </form-beans>
    <action-mappings>
    <action path="/regUserAction"
    type
    =" org.cjea.Struts.example.RegUserAction "
    attribute
    =" regUserForm "
    scope
    ="request"
    validate
    ="false">
    <forward name="failure" path="/ messageFailure.jsp"/>
    <forward name="success" path="/ messageSuccess.jsp"/>
    </action>
    </action-mappings>
    </Struts-config>

    Struts的核心是Controller,即ActionServlet,而ActionServlet的核心就是Struts-config.xml,Struts-config.xml集中了所有頁(yè)面的導(dǎo)航定義。對(duì)于大型的WEB項(xiàng)目,通過(guò)此配置文件即可迅速把握其脈絡(luò),這不管是對(duì)于前期的開(kāi)發(fā),還是后期的維護(hù)或升級(jí)都是大有裨益的。掌握Struts-config.xml是掌握Struts的關(guān)鍵所在。

    FormBean:RegUserForm

    package org.cjea.Struts.example;

    import javax.Servlet.http.HttpServletRequest;
    import org.apache.Struts.action.ActionForm;
    import org.apache.Struts.action.ActionMapping;

    public final class RegUserForm extends ActionForm{

    private String logname;
    private String password;
    private String email;

    public RegUserForm(){
    logname 
    = null;
    password 
    = null;
    email 
    = null;
    }


    public String getLogName() {
    return this.logname;
    }

    public void setLogName(String logname) {
    this.logname = logname;
    }

    public void setPassWord(String password) {
    this.password = password;
    }

    public String getPassWord() {
    return this.password;
    }

    public void setEmail(String email) {
    this.email = email;
    }

    public String getEmail() {
    return this.email;
    }


    public void reset(ActionMapping mapping, HttpServletRequest request)
    {
    logname 
    = null;
    password 
    = null;
    email 
    = null;
    }

    }


    每一個(gè)FormBean 都必須繼承ActionForm類,F(xiàn)ormBean是對(duì)頁(yè)面請(qǐng)求的封裝。即把HTTP request 封裝在一個(gè)對(duì)象中,需要說(shuō)明的一點(diǎn)就是多個(gè)HTTP request可以共用一個(gè)FormBean,便于維護(hù)和重用。

    ActionBean:RegUserAction

    package org.cjea.Struts.example;

    import javax.Servlet.http.
    *;
    import org.apache.Struts.action.
    *;

    public final class RegUserAction extends Action
    {

    public ActionForward perform(ActionMapping mapping,
    ActionForm form, HttpServletRequest req,
    HttpServletResponse res)

    String title 
    = req.getParameter("title");
    String password 
    = req.getParameter("password");
    String email 
    = req.getParameter("email");
    /*
    取得用戶請(qǐng)求,做相應(yīng)數(shù)據(jù)庫(kù)操作,略
    */
     
    }

    }


    FormBean的產(chǎn)生是為了提供數(shù)據(jù)給ActionBean,在ActionBean中可以取得FormBean中封裝的數(shù)據(jù),經(jīng)相應(yīng)的邏輯處理后,調(diào)用業(yè)務(wù)方法完成相應(yīng)業(yè)務(wù)要求。

    Servlet的演變:在常規(guī)的 JSP,Servlet,JavaBean三層結(jié)構(gòu)中,JSP實(shí)現(xiàn)View的功能,Servlet實(shí)現(xiàn)Controller的功能,JavaBean實(shí)現(xiàn)Model的實(shí)現(xiàn)。

    在Struts中,將常規(guī)情況下的Servlet拆分與ActionServlet、FormBean、ActionBean三個(gè)部分。ActionServlet配合Struts-config.xml,專職完成頁(yè)面導(dǎo)航,而不再負(fù)責(zé)具體的數(shù)據(jù)獲取與相應(yīng)邏輯,這兩部分功能由FormBean和ActionBean來(lái)完成。

    Struts優(yōu)缺點(diǎn)
    優(yōu)點(diǎn):
    Struts跟Tomcat、Turbine等諸多Apache項(xiàng)目一樣,是開(kāi)源軟件,這是它的一大優(yōu)點(diǎn)。使開(kāi)發(fā)者能更深入的了解其內(nèi)部實(shí)現(xiàn)機(jī)制。
    除此之外,Struts的優(yōu)點(diǎn)主要集中體現(xiàn)在兩個(gè)方面:Taglib和頁(yè)面導(dǎo)航。Taglib是Struts的標(biāo)記庫(kù),靈活動(dòng)用,能大大提高開(kāi)發(fā)效率。另外,就目前國(guó)內(nèi)的JSP開(kāi)發(fā)者而言,除了使用JSP自帶的常用標(biāo)記外,很少開(kāi)發(fā)自己的標(biāo)記,或許Struts是一個(gè)很好的起點(diǎn)。
    關(guān)于頁(yè)面導(dǎo)航,我認(rèn)為那將是今后的一個(gè)發(fā)展方向,事實(shí)上,這樣做,使系統(tǒng)的脈絡(luò)更加清晰。通過(guò)一個(gè)配置文件,即可把握整個(gè)系統(tǒng)各部分之間的聯(lián)系,這對(duì)于后期的維護(hù)有著莫大的好處。尤其是當(dāng)另一批開(kāi)發(fā)者接手這個(gè)項(xiàng)目時(shí),這種優(yōu)勢(shì)體現(xiàn)得更加明顯。
    缺點(diǎn):
    Taglib是Struts的一大優(yōu)勢(shì),但對(duì)于初學(xué)者而言,卻需要一個(gè)持續(xù)學(xué)習(xí)的過(guò)程,甚至還會(huì)打亂你網(wǎng)頁(yè)編寫(xiě)的習(xí)慣,但是,當(dāng)你習(xí)慣了它時(shí),你會(huì)覺(jué)得它真的很棒。
    Struts將MVC的Controller一分為三,在獲得結(jié)構(gòu)更加清晰的同時(shí),也增加了系統(tǒng)的復(fù)雜度。
    Struts從產(chǎn)生到現(xiàn)在還不到半年,但已逐步越來(lái)越多運(yùn)用于商業(yè)軟件。雖然它現(xiàn)在還有不少缺點(diǎn),但它是一種非常優(yōu)秀的J2EE MVC實(shí)現(xiàn)方式,如果你的系統(tǒng)準(zhǔn)備采用J2EE MVC架構(gòu),那么,不妨考慮一下Struts。

    Struts實(shí)施經(jīng)驗(yàn):
    1、基于Struts架構(gòu)的項(xiàng)目開(kāi)發(fā),首先需要有一個(gè)很好的整體規(guī)劃,整個(gè)系統(tǒng)中包括哪幾個(gè)模塊,每個(gè)模塊各需要多少FormBean和ActionBean等,而且最好有專人負(fù)責(zé)Struts-config.xml的管理。開(kāi)發(fā)基于Struts的項(xiàng)目的難點(diǎn)在于配置管理,尤其是對(duì)Struts-config.xml的管理

    2、如果你的項(xiàng)目非常緊,并且項(xiàng)目組中又沒(méi)有富有經(jīng)驗(yàn)的Struts開(kāi)發(fā)人員,建議不要冒然采用Struts。Struts的掌握需要一個(gè)過(guò)程,對(duì)于一個(gè)熟練的JSP程序員,自學(xué)大概需要半個(gè)月左右的時(shí)間。如果結(jié)合titls,則需要更長(zhǎng)的時(shí)間

    3、如果你在網(wǎng)頁(yè)中大量運(yùn)用taglib,那么你的美工將做出部分犧牲。當(dāng)你結(jié)合Tiles,功能增強(qiáng)的同時(shí),這種犧牲尤為明顯。當(dāng)然,你對(duì)功能和美觀的取舍由你自己決定

    4、Taglib是一個(gè)好東西,但靈活運(yùn)用它卻需要一個(gè)過(guò)程,如果你不想在Taglib上花太多的時(shí)間,那么只需理解與FORM有關(guān)的幾個(gè)標(biāo)記,其它的標(biāo)記就放著吧,以后再看,先去研究ActionServlet和Struts-config.xml,你會(huì)覺(jué)得很有成就感

    5、Struts是否只適合于大型項(xiàng)目呢?No!Struts適合于各種大小的項(xiàng)目,當(dāng)然,對(duì)于大型項(xiàng)目,它所體現(xiàn)出來(lái)的優(yōu)勢(shì)更加明顯。

    posted @ 2005-08-26 20:53 konhon 優(yōu)華 閱讀(404) | 評(píng)論 (0)編輯 收藏

    J2EE體系結(jié)構(gòu)簡(jiǎn)單介紹
    一、J2EE提出的背景
    1、 企業(yè)級(jí)應(yīng)用框架的需求
    在許多企業(yè)級(jí)應(yīng)用中,例如數(shù)據(jù)庫(kù)連接、郵件服務(wù)、事務(wù)處理等都是一些通用企業(yè)需求模塊,這些模塊如果每次再開(kāi)發(fā)中都由開(kāi)發(fā)人員來(lái)完成的話,將會(huì)造成開(kāi)發(fā)周期長(zhǎng)和代碼可靠性差等問(wèn)題。于是許多大公司開(kāi)發(fā)了自己的通用模塊服務(wù)。這些服務(wù)性的軟件系列同陳為中間件。
    2、 為了通用必須要提出規(guī)范,不然無(wú)法達(dá)到通用
    在上面的需求基礎(chǔ)之上,許多公司都開(kāi)發(fā)了自己的中間件,但其與用戶的溝通都各有不同,從而導(dǎo)致用戶無(wú)法將各個(gè)公司不同的中間件組裝在一塊為自己服務(wù)。從而產(chǎn)生瓶頸。于是提出標(biāo)準(zhǔn)的概念。其實(shí)J2EE就是基于JAVA技術(shù)的一系列標(biāo)準(zhǔn)。
    注:中間件的解釋 中間件處在操作系統(tǒng)和更高一級(jí)應(yīng)用程序之間。他充當(dāng)?shù)墓δ苁牵簩?yīng)用程序運(yùn)行環(huán)境與操作系統(tǒng)隔離,從而實(shí)現(xiàn)應(yīng)用程序開(kāi)發(fā)者不必為更多系統(tǒng)問(wèn)題憂慮,而直接關(guān)注該應(yīng)用程序在解決問(wèn)題上的能力 。我們后面說(shuō)到的容器的概念就是中間件的一種。
    二、相關(guān)名詞解釋
    容器:充當(dāng)中間件的角色
    WEB容器:給處于其中的應(yīng)用程序組件(JSP,SERVLET)提供一個(gè)環(huán)境,使JSP,SERVLET直接更容器中的環(huán)境變量接口交互,不必關(guān)注其它系統(tǒng)問(wèn)題。主要有WEB服務(wù)器來(lái)實(shí)現(xiàn)。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。該容器提供的接口嚴(yán)格遵守J2EE規(guī)范中的WEB APPLICATION 標(biāo)準(zhǔn)。我們把遵守以上標(biāo)準(zhǔn)的WEB服務(wù)器就叫做J2EE中的WEB容器。
    EJB容器:Enterprise java bean 容器。更具有行業(yè)領(lǐng)域特色。他提供給運(yùn)行在其中的組件EJB各種管理功能。只要滿足J2EE規(guī)范的EJB放入該容器,馬上就會(huì)被容器進(jìn)行高效率的管理。并且可以通過(guò)現(xiàn)成的接口來(lái)獲得系統(tǒng)級(jí)別的服務(wù)。例如郵件服務(wù)、事務(wù)管理。
    WEB容器和EJB容器在原理上是大體相同的,更多的區(qū)別是被隔離的外界環(huán)境。WEB容器更多的是跟基于HTTP的請(qǐng)求打交道。而EJB容器不是。它是更多的跟數(shù)據(jù)庫(kù)、其它服務(wù)打交道。但他們都是把與外界的交互實(shí)現(xiàn)從而減輕應(yīng)用程序的負(fù)擔(dān)。例如SERVLET不用關(guān)心HTTP的細(xì)節(jié),直接引用環(huán)境變量session,request,response就行、EJB不用關(guān)心數(shù)據(jù)庫(kù)連接速度、各種事務(wù)控制,直接由容器來(lái)完成。
    RMI/IIOP:遠(yuǎn)程方法調(diào)用/internet對(duì)象請(qǐng)求中介協(xié)議,他們主要用于通過(guò)遠(yuǎn)程調(diào)用服務(wù)。例如,遠(yuǎn)程有一臺(tái)計(jì)算機(jī)上運(yùn)行一個(gè)程序,它提供股票分析服務(wù),我們可以在本地計(jì)算機(jī)上實(shí)現(xiàn)對(duì)其直接調(diào)用。當(dāng)然這是要通過(guò)一定的規(guī)范才能在異構(gòu)的系統(tǒng)之間進(jìn)行通信。RMI是JAVA特有的。
    JNDI:JAVA命名目錄服務(wù)。主要提供的功能是:提供一個(gè)目錄系統(tǒng),讓其它各地的應(yīng)用程序在其上面留下自己的索引,從而滿足快速查找和定位分布式應(yīng)用程序的功能。
    JMS:JAVA消息服務(wù)。主要實(shí)現(xiàn)各個(gè)應(yīng)用程序之間的通訊。包括點(diǎn)對(duì)點(diǎn)和廣播。
    JAVAMAIL:JAVA郵件服務(wù)。提供郵件的存儲(chǔ)、傳輸功能。他是JAVA編程中實(shí)現(xiàn)郵件功能的核心。相當(dāng)MS中的EXCHANGE開(kāi)發(fā)包。
    JTA:JAVA事務(wù)服務(wù)。提供各種分布式事務(wù)服務(wù)。應(yīng)用程序只需調(diào)用其提供的接口即可。
    JAF:JAVA安全認(rèn)證框架。提供一些安全控制方面的框架。讓開(kāi)發(fā)者通過(guò)各種部署和自定義實(shí)現(xiàn)自己的個(gè)性安全控制策略。
    EAI:企業(yè)應(yīng)用集成。是一種概念,從而牽涉到好多技術(shù)。J2EE技術(shù)是一種很好的集成實(shí)現(xiàn)。
    三、J2EE的優(yōu)越性
    1、 基于JAVA 技術(shù),平臺(tái)無(wú)關(guān)性表現(xiàn)突出
    2、 開(kāi)放的標(biāo)準(zhǔn),許多大型公司已經(jīng)實(shí)現(xiàn)了對(duì)該規(guī)范支持的應(yīng)用服務(wù)器。如BEA ,IBM,ORACLE等。
    3、 提供相當(dāng)專業(yè)的通用軟件服務(wù)。
    4、 提供了一個(gè)優(yōu)秀的企業(yè)級(jí)應(yīng)用程序框架,對(duì)快速高質(zhì)量開(kāi)發(fā)打下基礎(chǔ)
    四、體系結(jié)構(gòu)圖
    mailto:luopc@edu-edu.com.cn了解更詳細(xì)的通俗體系內(nèi)容,請(qǐng)給我來(lái)信。
    五、現(xiàn)狀
    J2EE是由SUN 公司開(kāi)發(fā)的一套企業(yè)級(jí)應(yīng)用規(guī)范?,F(xiàn)在最高版本是1.4。支持J2EE的應(yīng)用服務(wù)器有IBM WEBSPHERE APPLICATION SERVER,BEA WEBLOGIC SERVER,JBOSS,ORACLE APPLICATION SERVER,SUN ONE APPLICATION SERVER 等。.
    posted @ 2005-08-26 20:48 konhon 優(yōu)華 閱讀(350) | 評(píng)論 (0)編輯 收藏

    http://m.tkk7.com/Files/konhon/EnableNetCard.rar

    在Delphi中選Project Import Type Library命令,在對(duì)話框中選Import Microsoft Shell Controls And Automation類型庫(kù),點(diǎn)Install后,在Delphi的ActiveX控件板上就多了TShellFolderItem,TShellLinkObject,TShellFolderView,TShell,TSearchCommand等幾個(gè)組件

    const
       discVerb = '禁用(&B)';
       connVerb = '啟用(&A)';

    function TForm1.DisableEthernet(const EthName,State: String): Boolean;
    var
      cpFolder: Folder;
      nwFolder: Folder;
      nVerbs: FolderItemVerbs;
      i,j,k: integer;
      aItem: TListItem;
    begin
      result := false;
      cpFolder := Form1.shell1.NameSpace(3);
      if cpFolder <> nil then
      begin
        for i := 0 to cpFolder.items.Count-1 do
        begin
          if cpFolder.Items.Item(i).Name = '網(wǎng)絡(luò)和撥號(hào)連接' then
          begin
            nwFolder := cpFolder.items.item(i).GetFolder as Folder;
            if nwFolder <> nil then
            begin
              for j :=0 to nwFolder.items.Count-1 do
              begin
                if nwFolder.Items.Item(j).Name = EthName then
                begin
                  nVerbs := nwFolder.Items.Item(j).Verbs;
                  for k := 0 to  nVerbs.Count-1 do
                 begin
                    if nVerbs.Item(k).Name = State then
                    begin
                      nVerbs.Item(k).DoIt;
                      aItem := Form1.lvLog.Items.Add;
                      aItem.Caption := FormatDateTime('yyyy-mm-dd hh:mm:ss',now);
                      aItem.SubItems.Add(EthName);
                      aItem.SubItems.Add(State);
                      Result := True;
                    end;
                  end;
                end;
              end;
            end;
          end;
        end;
        if nwFolder = nil then
           showmessage('Network and Dial-up Connections not found');
      end
      else
        showmessage('control panel not found');

    end;


    procedure TForm1.Button1Click(Sender: TObject);
    begin
      DisableEthernet('本地連接',discVerb);
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    begin
      DisableEthernet('本地連接',connVerb);
    end;

    posted @ 2005-08-26 04:11 konhon 優(yōu)華 閱讀(452) | 評(píng)論 (0)編輯 收藏

    procedure TForm1.Button1Click(Sender: TObject);
    var
      lUrl: string;
      lParams: TStrings;
      lHtml: string;
    begin
      lUrl := 'http://snixxx.co.uk/cgi-bin/mt-comments.cgi';
      lParams := TStringList.Create;
      try
        lParams.Add('entry_id=1302');
        lParams.Add('author=dqxhyy');
        lParams.Add('dqxhyy@sina.com');
        lParams.Add('dqxhyydqxhyydqxhyydqxhyy');
        try
          lHtml := IdHttp1.Post(lUrl, lParams);
        except
          showmessage(lhtml);
        end;
        showmessage(lhtml);
      finally
        lParams.Free;
      end;
    end;
    posted @ 2005-08-25 22:13 konhon 優(yōu)華 閱讀(392) | 評(píng)論 (0)編輯 收藏


    procedure TForm1.Button1Click(Sender: TObject);
    var
       h,m,s,s1:hwnd;
    begin
      h:=FindWindow('notepad',nil);
       if h<>0 then
       begin
         m:=GetMenu(h);
         s:=GetSubMenu(m,1);
         s1:=GetSubMenu(s,7);
         SendMessage(h,WM_COMMAND,MakeLong(GetMenuItemId(s,7),0),s1);
      end;
    end;
    posted @ 2005-08-25 21:05 konhon 優(yōu)華 閱讀(2703) | 評(píng)論 (0)編輯 收藏

    procedure TForm1.Label1Click(Sender: TObject);
    var
      lPoint: TPoint;
    begin
      lPoint.X := TLabel(Sender).Left;
      lPoint.Y := TLabel(Sender).Top + TLabel(Sender).Height;
      lPoint:=ClientToScreen(lPoint);
      PopupMenu1.Popup(lPoint.X, lPoint.Y);
    end;
    posted @ 2005-08-25 06:58 konhon 優(yōu)華 閱讀(610) | 評(píng)論 (0)編輯 收藏

    procedure TForm1.ADODataSet1MaterielNameGetText(Sender: TField;
      var Text: string; DisplayText: Boolean);
    var
      lSingleWidth: integer;
      lDBGridWidth: integer;
    begin
      lSingleWidth := DBGrid1.Canvas.TextWidth('壹');
      lDBGridWidth := DBGrid1.Columns[1].Width;
      if DBGrid1.Canvas.TextWidth(Sender.AsString) <= lDBGridWidth then
        Text := Sender.AsString
      else if DBGrid1.Canvas.TextWidth(Sender.AsString) > lDBGridWidth then
      begin
        lSingleWidth := lDBGridWidth div lSingleWidth - 1;
        if lSingleWidth mod 2 = 1 then
          lSingleWidth := lSingleWidth + 1;
        Text := Copy(Sender.AsString, 1, lSingleWidth) + '...';
      end
    end;
    posted @ 2005-08-25 06:57 konhon 優(yōu)華 閱讀(401) | 評(píng)論 (0)編輯 收藏

    uses CommCtrl;

    procedure TForm1.ListView1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    var
      item: TListItem;
      lvhti: LV_HITTESTINFO;
    begin
      item := ListView1.GetItemAt(X, Y);
      if (item <> nil) then
        Caption := 'Mouse at: ' + item.Caption
      else
      begin
        lvhti.pt.X := X;
        lvhti.pt.Y := Y;
        ListView_SubItemHitTest(ListView1.Handle, @lvhti);
        if Assigned(ListView1.Items[lvhti.iItem])
          and (ListView1.Items[lvhti.iItem].SubItems.Count >= lvhti.iSubItem) then
          Caption := 'Mouse at:' + ListView1.Items[lvhti.iItem].SubItems[lvhti.iSubItem - 1];
      end;
    end;

    posted @ 2005-08-25 06:45 konhon 優(yōu)華 閱讀(1107) | 評(píng)論 (0)編輯 收藏

         摘要:   學(xué)習(xí)sql有一段時(shí)間了,發(fā)現(xiàn)在我建了一個(gè)用來(lái)測(cè)試的表(沒(méi)有建索引)中出現(xiàn)了許多的重復(fù)記錄。后來(lái)總結(jié)了一些刪除重復(fù)記錄的方法,在Oracle中,可以通過(guò)唯一rowid實(shí)現(xiàn)刪除重復(fù)記錄;還可以建臨時(shí)表來(lái)實(shí)現(xiàn)...這個(gè)只提到其中的幾種簡(jiǎn)單實(shí)用的方法,希望可以和大家分享(以表employee為例)。 SQL> desc employee  Name&nb...  閱讀全文
    posted @ 2005-08-25 02:40 konhon 優(yōu)華 閱讀(748) | 評(píng)論 (0)編輯 收藏

    僅列出標(biāo)題
    共21頁(yè): First 上一頁(yè) 13 14 15 16 17 18 19 20 21 下一頁(yè) 
    主站蜘蛛池模板: 久久国产乱子伦精品免费午夜| 麻豆一区二区三区蜜桃免费| 亚洲中文字幕无码mv| 亚洲乱妇老熟女爽到高潮的片| 国产成人+综合亚洲+天堂| 91免费在线视频| 69av免费视频| 一级毛片直播亚洲| 久久精品亚洲综合一品| 亚洲国产日韩在线人成下载| 亚洲av纯肉无码精品动漫| 国产精品免费一区二区三区| 9277手机在线视频观看免费| 天天拍拍天天爽免费视频| 国产成人综合亚洲AV第一页| 亚洲一级毛片免观看| 黄色片网站在线免费观看| 免费高清国产视频| 成人性生免费视频| 久久影视综合亚洲| 亚洲黄色激情视频| 国产免费人成视频尤勿视频| 91精品视频免费| 亚洲一区二区精品视频| 亚洲成在人线电影天堂色| 免费人人潮人人爽一区二区| 9277手机在线视频观看免费| 免费吃奶摸下激烈视频| 亚洲欧洲国产成人精品| www成人免费观看网站| 无码国产精品一区二区免费| 亚洲国产成人久久综合野外| 亚洲成aⅴ人片在线影院八| 国产AV无码专区亚洲AV琪琪| 91麻豆国产免费观看| 亚洲精品综合久久| 亚洲人成网站999久久久综合| 你懂的在线免费观看| 日本一区二区三区日本免费| 亚洲AV日韩AV天堂久久 | 久久亚洲精品成人无码网站|