




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、delphi 安裝 cad 控件我下載的是使用版本,用的 Delphi 版本是 Delphi7 ,在下載的文件包目錄 CADImportVCLv6.1 產(chǎn)品試用版 cadimportvclDelphiLib7 有個(gè) sgGrpVw7.dpk 文件,用 Delphi 打開(kāi)后,先點(diǎn) compile , 然后再in stall就可以了,操作的時(shí)候貌似會(huì)出現(xiàn)message提示有warni ng,不過(guò)貌似不影響安裝。下面附加 Delphi 安裝第三方控件的方法供參考:由于組件提供的方式不同, 所以安裝的方法也是不一樣的, 下面就目前常見(jiàn)的各種形式的組 件的安裝方法介紹一下。1 只有一個(gè) DCU 文件的組
2、件。 DCU 文件是編譯好的單元文件,這樣的組件是作者不想把源 碼公布。一般來(lái)說(shuō),作者必須說(shuō)明此組件適合 Delphi 的哪種版本,如果版本不對(duì),在安裝時(shí)就 會(huì)出現(xiàn)錯(cuò)誤。也正是因?yàn)闆](méi)有源碼,給使用者帶來(lái)了不便,那就是一旦Delphi 版本升級(jí),此組件就不能再使用了,當(dāng)然有的作者給出了幾種版本的 DCU 文件,用戶(hù)根據(jù)需要選擇使用。 這樣的組件的安裝方法是:在 Component 菜單中,選擇 install component ,在對(duì)話(huà)框中的into existing package頁(yè)中,單擊Unit file name ” 后的Browse”按鈕,在打開(kāi)的文件對(duì)話(huà)框中,將“文件類(lèi)型”設(shè)定為
3、*.dcu,找到要安裝的 DCU文件,按OK按鈕返回into existing package頁(yè)后再按OK按鈕就可以安裝了。注意,此時(shí) Delphi會(huì)提示 dclusr40.dpk將被重建,是否繼續(xù),OK就可以了。這里是將組件安裝到dclusr40.dpk包中,此包從文件名上可以看出是用戶(hù)自定義組件包,先安裝到這個(gè)包中吧,下面再講有關(guān)注意 事項(xiàng)。安裝完畢會(huì)有已經(jīng)將組件注冊(cè)完的提示信息以及安裝到哪個(gè)組件頁(yè)中的信息等,到 組件面板上看看,一般會(huì)出現(xiàn)一個(gè)新的組件頁(yè),其中有剛安裝的組件。2、 只有PAS文件或既有PAS又有DCU文件的組件。這種組件因?yàn)橛蠵AS文件,也就是說(shuō)作 者提供了源碼,這就好辦多
4、了。安裝的方法和上面是一樣的,在文件類(lèi)型中可以設(shè)定為DCU也可以設(shè)定為PAS建議設(shè)定為 PAS這樣可用你的 Delphi重新編譯一下,看是否會(huì)出現(xiàn)問(wèn)題。 Delphi升級(jí)后只能選擇 PAS文件安裝,這樣才能重新編譯,使得組件能適應(yīng)新Delphi版本。這樣的組件是很值得使用的,根據(jù)心鈴的經(jīng)驗(yàn),沒(méi)有源碼的組件最好不要使用,一是存在 Delphi 版本升級(jí)后無(wú)法使用的問(wèn)題,再者當(dāng)程序出現(xiàn)問(wèn)題后用戶(hù)無(wú)法調(diào)試組件來(lái)判斷是否 是組件中存在 BUG。3、有 dpk 文件的組件包。帶有 dpk 文件的組件包一般是有多個(gè)組件構(gòu)成的,也就是說(shuō)安裝 后會(huì)有多個(gè)組件供使用,如果只有一個(gè)組件作者一般不會(huì)制成DPK 文件
5、,使用上面的方式發(fā)布就可以了。對(duì)于這樣的組件包,一般來(lái)說(shuō)會(huì)有詳細(xì)的安裝說(shuō)明文件,如上面提到的RXLIB, 由于組件復(fù)雜且安裝時(shí)有先后順序,作者不提供安裝說(shuō)明用戶(hù)根本無(wú)法正確安裝。如果沒(méi)有安裝說(shuō)明文件,那么用下面的方法安裝:在File菜單下,選擇”O(jiān)PEN”打開(kāi)dpk文件(文件類(lèi)型列表框中選*.dpk),在出現(xiàn)的Package窗口中,工具欄上有In stall按鈕,按此 按鈕即可進(jìn)行安裝。如果 Install 按鈕處于無(wú)效狀態(tài),那么先按 Compile 按鈕編譯,一般 來(lái)說(shuō)編譯之后 Install 按鈕就會(huì)處于有效狀態(tài),此時(shí)再按 Install 按鈕就可以了。4、帶有 Bpl 文件的組件包。一般
6、來(lái)說(shuō)這也是由多種組件構(gòu)成的組件包,它其實(shí)是一個(gè)動(dòng)態(tài)連接庫(kù)文件(DLL)。對(duì)于這種組件包的安裝方法是:在component菜單下選擇“ in stall packages ”,然后單擊Add按鈕,在打開(kāi)的文件對(duì)話(huà)框中找到相應(yīng)的bpl文件打開(kāi)返回后,再單擊 Ok按鈕就可以了。5、 ActiveX 控件的安裝。要安裝這類(lèi)控件,需要先用regsvr32.exe 注冊(cè),然后選擇Component 菜單中 Import ActiveX Control 項(xiàng)。在 Import ActiveX Control 打開(kāi)的窗口中, 只有已經(jīng)注冊(cè)的 ActiveX控件才出現(xiàn)在列表中,選中一個(gè)然后按In stall按鈕就
7、可以安裝了。如果事先沒(méi)有用regsvr32.exe注冊(cè)也可以按 ADD按鈕找到OCX文件即時(shí)注冊(cè),注冊(cè)后再進(jìn) 行 安裝。幾點(diǎn)說(shuō)明: 1 在拿到組件后先看是否有說(shuō)明文件,一般來(lái)說(shuō)在說(shuō)明文件中有如何安裝的 指導(dǎo),有些還會(huì)有組件的屬性、事件、方法的使用說(shuō)明,這些在使用時(shí)是非常重要的。2 在上面的組件(包)安裝操作之前,最好將 *.bpl 拷貝到你的 System 目錄中,將 *.pas、*.dcu、*.dcr、*.dp?拷貝到Delphi的Lib目錄中再進(jìn)行。3前面我們提到安 裝DCU組件時(shí),選用的是已經(jīng)存在的dclusr40.dpk,當(dāng)然也可以選擇安裝到一個(gè)新的包中,如果選擇新包,需要先取一個(gè)名字
8、比如DEMO,事實(shí)上安裝完畢后用戶(hù)可以找到的是Demo.bpl,而找不到 DEMO.DPK。假如你已經(jīng)將一個(gè)組件安裝到dclusr40.dpk中了,還想再安裝一個(gè)組件,如果再安裝到 dclusr40.dpk 中,安裝后你得到提示,原來(lái)安裝的那個(gè)組件 已經(jīng)被取消注冊(cè),你將無(wú)法使用了。這樣不就成了只能安裝一個(gè)組件了嗎?除非你再安裝 到一個(gè)新的包中才可以?xún)蓚€(gè)組件同時(shí)使用。當(dāng)然每安裝一個(gè)組件生成一個(gè)新的BPL文件也未償不可,但BPL文件就增加許多。能否在 dclusr40.dpk中多安裝幾個(gè)組件呢?當(dāng)然是可 以的。方法如下:用File菜單下的OPEN打開(kāi)dclusr40.dpk文件,單擊 ADD按鈕,
9、在打開(kāi)的對(duì)話(huà)框中選擇 ADD UNIT頁(yè)面,按Unit file name后的Browse”按鈕打開(kāi)組件單元文件, OK 即可,用此種方法這樣可添加多個(gè)組件的單元文件,添加完畢,按一下編譯按鈕,然后 再按In stall按鈕即可,如果單元文件是編譯好的(DCU)可以直接按安裝按鈕。4組件的刪除。光會(huì)安裝可不行,還要會(huì)刪除呀。很簡(jiǎn)單,在 component 菜單下,選擇 in stall packages,在列表中找到安裝所在的Bpl,按Remove按鈕,ok!再把Bpl文件刪掉就徹底了,如果不刪除BPL文件,下次可以按安裝BPL組件的方法再安裝使用。上一篇: Delphi 連接 AutoCA.
10、下一篇:Object Pascal 的| 返回日志列表 用 Delphi 實(shí)現(xiàn)對(duì) AutoCAD 的操作 圖片 分享 復(fù)制地址 日志地址 : 請(qǐng)用Ctrl+C復(fù)制后貼給好友。雨蒙蒙的天空 2009 年 11月 05 日 18:33 閱讀(4) 評(píng)論(0) 分類(lèi):個(gè)人日記 權(quán)限: 公開(kāi)字體:大 小 中 大 更多 設(shè)置置頂 權(quán)限設(shè)置 推薦日志 轉(zhuǎn)為私密日志 刪除 編輯一、概述AutoCAD? ActiveX?使用戶(hù)能夠從 AutoCAD的內(nèi)部或外部以編程方式來(lái)操作AutoCAD。它是通過(guò)將 AutoCAD 對(duì)象顯示到“外部世界”來(lái)做到這一點(diǎn)的。這些對(duì)象被顯示后,許多不同的編程語(yǔ)言和環(huán)境以及其他應(yīng)用
11、程序(例如 Microsoft? Word VBA 或Excel VBA)就可以 訪(fǎng)問(wèn)它們。在 AutoCAD 中實(shí)現(xiàn) ActiveX 接口有兩大優(yōu)點(diǎn):更多的編程環(huán)境可以編程訪(fǎng)問(wèn) AutoCAD 圖形。 在 ActiveX Automation 出現(xiàn)以前,開(kāi)發(fā)人員 只能使用 AutoLISP? 或 C+ 接口。與其他 Windows?應(yīng)用程序(如 Microsoft Excel和 Word)共享數(shù)據(jù)變得更加容易。二、在 Delphi中導(dǎo)入 AutoCAD類(lèi)型庫(kù)AutoCAD 2005 Automation 工程與 AutoCAD 2004 Automation 工程使用同一類(lèi)型庫(kù) (acax1
12、6enu.tlb) 。類(lèi)型庫(kù)位于 C:Program FilesCommon FilesAutodesk Shared 目錄下。在 Delphi 中按下述步驟導(dǎo)入類(lèi)型庫(kù): Project 菜單 Import Type LibraryAdd.選擇類(lèi)型庫(kù)(acax16e nu.tlb) 1 nstall.然后就會(huì)生成一個(gè) AutoCAD_TLB.pas 文件。在Unit單元中引用 AutoCAD_TLB,然后就可以按照 CAD自帶的幫助文件ActiveX和VBA開(kāi) 發(fā)人員指南中的相關(guān)說(shuō)明使用了。三、簡(jiǎn)單的一個(gè)例子:(新建一個(gè)圖形文件,輸入文字,并全部顯示)新建一個(gè)工程,添加一個(gè)按鈕。下面為全部代碼
13、。unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls,ComObj,autocad_tlb;typeTForm1 = class(TForm)Button1: TButton;procedure Button1Click(Sender: TObject);private Private declarations public Public declarations end;varForm1: TForm1;imple
14、mentation$R *.dfmprocedure TForm1.Button1Click(Sender: TObject);var cad,CADDOC,inpoint:variant;textheight:integer;begin/form1.Visible:=false;trycad:=GetActiveOleObject(AutoCAD.Application);exceptcad:=createOleObject(AutoCAD.Application);end;cad.WindowState := $00000003; / 最大化/(acmax-$00000003,acmin-
15、$00000002,acnorm-$00000001) cad.Visible := true;/ 設(shè)置為可視trycaddoc:=cad.activedocument;/ 選擇當(dāng)前活動(dòng)文檔 exceptcaddoc:=cad.documents.add();/ 如果沒(méi)有打開(kāi)文檔則新建一個(gè) end;inpoint:=varArraycreate(0,2,5);inpoint0:=strtoint(30);inpoint1:=strtoint(40);inpoint2:=strtoint(30);textheight:=strtoint(5);caddoc.ModelSpace.addtext(
16、Hello , World! ,inpoint,textheight); cad.Application.ZoomExtents;end;end.unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, ADODB, StdCtrls, Grids, DBGrids;typeTForm1 = class(TForm)ADOConnection1: TADOConnection;ADOConnection2: TADOConnect
17、ion;Button1: TButton;OpenDialog2: TOpenDialog;ADOQuery1: TADOQuery;ADOQuery2: TADOQuery;DBGrid1: TDBGrid;DataSource1: TDataSource;Button2: TButton;Label1: TLabel;SaveDialog1: TSaveDialog;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TOb
18、ject);private Private declarations public Public declarations end;varForm1: TForm1;implementation$R *.dfmprocedure TForm1.Button1Click(Sender: TObject); 將 Excel 導(dǎo)入 access varsFileName, sTableName: string;sl: TStringList;i: integer;beginif not OpenDialog2.Execute then Exit;if not ADOConnection1.Conne
19、cted then ADOConnection1.Connected:=True; / 判斷是否連 接trysFileName := OpenDialog2.FileName;ADOConnection2.Connected := False; / 注 意 這 里 連 接 EXCEL 的 參 數(shù) / 關(guān)鍵是這里ADOConnection2.ConnectionString := Provider=Microsoft.Jet.OLEDB.4.0;Password=;Data Source= + sFileName + ;Extended Properties=Excel 8.0;IMEX=1;P
20、ersist Security Info=False;ADOConnection2.Connected := True;/sl := TStringList.Create;ADOConnection2.GetTableNames(sl); / 記住 Excel 文件的 底部 必須是 sheet1 否則不 能導(dǎo)入sTableName := sl0;if Pos($, sTableName) 0 then sTableName := + sTableName + ;ADOquery2.Close;ADOquery2.SQL.Clear;ADOquery2.SQL.Text := SELECT *
21、FROM + sTableName;ADOquery2.Open;sl.Free;ADOquery1.Close;ADOquery1.Sql.Text := SELECT top 1 * FROM shiyan where 1=0; / 打開(kāi) 空記錄表 這里可以用 insert, 不用 appendADOquery1.Open; / 根據(jù)自己習(xí)慣 做吧 .if ADOquery2.RecordCount 0 thenbeginADOquery2.First;for i := 1 to ADOquery2.RecordCount do / beginADOquery1.Append;ADOque
22、ry1.FieldValues 孔號(hào) :=ADOquery2.FieldValueskonghao;ADOquery1.FieldValues 圖號(hào) :=ADOquery2.FieldValuestuhao;ADOquery1.FieldValues 層號(hào) :=ADOquery2.FieldValuescenghao;AD0query1.FieldValues深度:=AD0query2.FieldValuesshendu;AD0query1.FieldValues巖土名稱(chēng):=AD0query2.FieldValuesytmc;ADOqueryl. Post;ADOquery2.Next;en
23、d;en d;MessageBox(Ha ndle,導(dǎo)入完成!,完成! ,MB_OK+MB_ICONINFORMATION); exceptMessageBox(Ha ndle,失??!,信息! ,MB_OK+MB_ICONINFORMATION);en d;en d;procedure TForm1.Button2Click(Sender: TObject); 打開(kāi) access -SP 表 begin/判斷是否連if n ot ADOCo nn ectio n1.Co nn ected the nADOCo nn ectio n1.Co nn ected:=True;接ADOquery1.C
24、lose;ADOquery1.Sql.Text := SELECT * FROM shiya n;ADOquery1.Ope n;en d;procedure TForm1.FormCreate(Sender: TObject);beginen d;en d.DBGrid1 圖為:i-F屮4Yi-“聰明的程序員用 Delphi !”現(xiàn)在,真是有越來(lái)越多的人開(kāi)始用Delphi 了。不過(guò),高手畢竟是少數(shù),像我這樣的菜鳥(niǎo)可謂遍地都是, 哈哈。既然是菜鳥(niǎo)自然就有一大堆很菜的問(wèn)題,什 么這個(gè)怎么設(shè)置、那個(gè)怎么寫(xiě)的所以,以下我就以我所積累的那一點(diǎn)點(diǎn)經(jīng)驗(yàn)和論壇上常見(jiàn)的小問(wèn)題作一個(gè)總結(jié)性發(fā)言(全場(chǎng)熱烈鼓掌!哎
25、, 這鮮花我就收下了, 那個(gè)什么爛番茄就 不要扔上來(lái)了嘛)=系統(tǒng)應(yīng)用篇=A. Delphi自代了大量的常用控件,女口 Delphi5就有一百多了,而今年出的 Delphi6更是Delphi5 的 1.5 倍。這么多控件,就是在 1024*768 的分辨率下也無(wú)法全部顯示他們的組件面板,而 每次要按那兩顆小按鈕來(lái)顯示更多的面板, 真是非常不方便! 但通過(guò)添加下面那一個(gè)注冊(cè)表 鍵值就能實(shí)現(xiàn)組件面板自動(dòng)展開(kāi):HKEY_CURRENT_USERSoftwareBorlandDelphiX.0ExtrasAutoPaletteSelect=1(注:X.0表示你的Delphi的版本號(hào);如果沒(méi)有 Extra
26、s主鍵則新建即可,下同)E.每次新建窗體,然后設(shè)置其字體、大小真是好麻煩的!那就再添加一個(gè)以下的鍵值,讓系統(tǒng)自動(dòng)來(lái)設(shè)置吧:HKEY_CURRENT_USERSoftwareBorlandDelphiX.0FormDesignDefaultFont= 宋體,9,_(注:_表示空格,也可以用Bold(粗體)等代替)C. 自定義工作環(huán)境,讓它更加適合自己。?設(shè)置工具欄。在Delphi的工具欄右鍵單擊,選Customize,然后挑選需要的按鈕拖到工具上,把不要的拖出來(lái)。 我常用的是: Standard 工具欄下的 Open、 Open Project 、 Save、 Save All、 Un do、R
27、edo; Debug 工具欄下的 Pause、Add Watch、Program Reset、Ru n; Desktop 工具欄 下的 Save Current Desktop、 Set Debug Desktop; Component Palette 工具欄。?設(shè)置窗口布局。為了能跟高效的編寫(xiě)程序,合理的布置各個(gè)窗口是很重要的。我常用的窗口有: Object Inspector 、 Project Manager(View|Project Manager) 、 Watch List(Run|AddWatch.) ,具體的停放位置如圖 1。設(shè)置好各個(gè)窗體后按 Desktop 工具欄上的 Sav
28、e Current Desktop 按鈕保存。?設(shè)置顯示顏色。 讓代碼的顏色更符合自己的習(xí)慣, 有利于編寫(xiě)時(shí)思維的清晰。 Tools|Editor Options打開(kāi)Editor Properties,選Color標(biāo)簽頁(yè),設(shè)置代碼顏色。以下僅解釋一下幾個(gè)常用 的:Whitespace :空白處,即背景;Comment :注釋?zhuān)籖eserved word :保留字;String :字符串;Number :數(shù)字;Execution Point :正在執(zhí)行的當(dāng)前行(即F7步入時(shí)所到達(dá)的那一行);Enabled break :斷點(diǎn);Error line :錯(cuò)誤發(fā)生行;D. 掌握一些Delphi編程中的
29、快捷鍵,能夠極大程度的提高效率,還不會(huì)讓你因?yàn)檫^(guò)多無(wú)聊的設(shè)置等而感到厭煩, 現(xiàn)在如果不用這些快捷鍵, 我會(huì)很不適應(yīng)這樣的編程的! 以下我就 介紹一下我常用的幾個(gè)快捷鍵:Esc :選擇當(dāng)前選中組件的容器(通常是Panel,GroupBox或Form等);Ctrl+方向鍵:將所選組件移動(dòng)一個(gè)像素;Ctrl+Shift+方向鍵:將所選組件移動(dòng)一大格(類(lèi)似 Fireworks中按住Shift再用方向鍵移動(dòng)時(shí) 的效果);Shift+方向鍵:調(diào)整選中組件的大小,每次一像素;Shift+選中組件:按住Shift鍵再用鼠標(biāo)點(diǎn)擊組件,可以同時(shí)選擇多個(gè)組件;Ctrl+鼠標(biāo)左鍵:在procedure中掉用其他的函數(shù)
30、(如一個(gè)自定義的過(guò)程),在這個(gè)調(diào)用處按住 Ctrl 會(huì)發(fā)現(xiàn)當(dāng)鼠標(biāo)移上去的時(shí)候變成了一個(gè)類(lèi)似超鏈接的格式,鼠標(biāo)單擊就能直接轉(zhuǎn)到所調(diào)用的此函數(shù)的實(shí)現(xiàn)部分。這個(gè)功能我可是用的最多了,讓我找模塊變得非常方便!Ctrl+Shift+C :在一個(gè)對(duì)象中聲明了一個(gè)方法,然后把光標(biāo)放到它的上面,按下Ctrl+Shift+C就可以為他的實(shí)現(xiàn)建立一個(gè)基本框架,如:TForm1 = class(TForm)private Private declarations public Public declarations procedure Mine;end;把光標(biāo)放到procedure Mine這行,按下 Ctrl+S
31、hift+C,下面這段代碼將自動(dòng)插入到單元中: procedure TForm1.Mine;beginend;=窗體操作篇=在有多個(gè)窗體的程序中, Delphi 默認(rèn)是將它們?cè)诔绦騿?dòng)時(shí)全部創(chuàng)建(只是都隱藏了, 只顯示一個(gè)主窗體) ,這樣,那些暫時(shí)不必要啟動(dòng)的窗體就占用了許多內(nèi)存空間。所以我們 需要在菜單 Project|Options. 的 Forms 標(biāo)簽頁(yè)下, 將那些暫時(shí)不要啟動(dòng)的窗體從 “Auto-create forms ”下轉(zhuǎn)移到“Available forms ”中。這樣,這些窗體的創(chuàng)建和釋放就需要代碼來(lái)實(shí)現(xiàn)了。A.兩種創(chuàng)建窗體方法之比較。對(duì)于這些非自動(dòng)創(chuàng)建的窗體,我們必須在Sh
32、ow之前Creat(Self)或 Create(Application),將其創(chuàng)建。如 Form2.Creat(Self)和 Form2.Create(Application),可是, 它們兩個(gè)到底有什么區(qū)別呢?其實(shí)兩者區(qū)別不大, 但如果 Owner 是屬于別的窗口或控件的話(huà),當(dāng)它的 Owner 被釋放的時(shí)候,該 Owner 所擁有 的也會(huì)被釋放。 關(guān)鍵的區(qū)別是由誰(shuí)來(lái)管理該窗體的資源。用第一種方法創(chuàng)建, 該窗體的資源由編程者來(lái)負(fù)責(zé)管理;用第二種方法創(chuàng)建,該窗體的資源由 Application 來(lái)管理。E. 幾種窗體的釋放方法。既然是為了節(jié)約內(nèi)存,那么用完了的窗體就應(yīng)該“搬出”內(nèi)存。 在這里我列
33、舉幾個(gè)大同小異的方法:(1)procedure TForm1.Button1Click(Sender :TObject);begin if Form2 = nil thenForm2:=TForm2.Create(Application);Form2.ShowModal;end;procedure TForm2.close(Sender: TObject; var Action: TCloseAction); beginModalResult := mrNone;Action := caFree;Form2 := nil;end;(2)procedure TForm1.Button1Click
34、(Sender :TObject);beginif not Assigned(Form2) thenbeginApplication.CreateForm(TForm2,Form2);tryForm2.ShowModal;finallyForm2.Free;Form2 := nil;end;endelseForm2.ShowModal;end;(3)procedure TForm2.Button1Click(Sender :TObject);beginForm2.Close;Form2.Release;end;=控件使用篇=A.大名鼎鼎的RXLib控件包是由三位俄羅斯高手編寫(xiě)的,非常的出色!不
35、過(guò),內(nèi)容太多了,要用好也不容易。我在此拿 RxRichEdit 簡(jiǎn)單地說(shuō)幾點(diǎn)。?好多人都問(wèn)RxLib怎么安裝,似乎的確有點(diǎn)復(fù)雜,呵呵,所以我也順便說(shuō)一下:運(yùn)行 rxinst.exe 將 RxLib 先安裝到 Program FilesBorlandDelphi5 (或 6) RX 文件夾下, 然后打開(kāi) Delphi,選 FileOpen.,將 RXCTL5.DPK RXDB5.DPK RXBDE5.DPK分別打開(kāi)后按 compile,繼續(xù)打開(kāi):DCLRX5.DPK DCLRXDB5.DPK和 DCLRXBD5.DPK 將這三個(gè)分別按 compile 后按 install 就可以了 :-)?Al
36、lowObjects屬性。Win98下默認(rèn)設(shè)置為 True,右鍵菜單沒(méi)有問(wèn)題,但設(shè)為 False時(shí)快捷 菜單會(huì)連續(xù)出現(xiàn)兩次; Win2000下,設(shè)為T(mén)rue時(shí)會(huì)使右鍵菜單無(wú)法彈出,而 False時(shí)卻顯示 正常。所以,為了系統(tǒng)的兼容性,需要判斷當(dāng)前OS版本:procedure TFormMain.FormCreate(Sender: TObject);varOSVI:OSVERSIONINFO;beginOSVI.dwOSVersionInfoSize:=sizeof(OSVERSIONINFO);GetVersionEx(OSVI);case OSVI.dwPlatformId of1:RxR
37、ichEdit1.AllowObjects:=true;2:RxRichEdit1.AllowObjects:=false;end;end;但我不知這個(gè)屬性為什么會(huì)有這么一個(gè)問(wèn)題,還望高手指點(diǎn)。?0nURLCIick事件。RXRichEdit有自動(dòng)將網(wǎng)頁(yè)地址轉(zhuǎn)為超鏈接格式,但具體的行為還是要自己寫(xiě)代碼的,不然這些地址就成了個(gè)空殼了:procedure TFormMain.RXRichEdit1URLCIick(Sender: T0bject; const URLText: String; Button: TMouseButton);beginif Button = mbLeft thenShe
38、IIExecute(HandIe, niI, PChar(URLText), niI, niI, SW_SH0W);end;E.為了節(jié)約內(nèi)存,優(yōu)化運(yùn)行,我們總是動(dòng)態(tài)創(chuàng)建組件??僧?dāng)用完之后,如果不及時(shí)徹底的 將其從內(nèi)存中清理出去,那就有違我們的初衷了。可怎么“殺死”所創(chuàng)建的組件 ? 比如創(chuàng)建 了一個(gè)Edit控件,現(xiàn)在想讓它消失,但用Edit.Free后,調(diào)用Edit.Text卻仍然存在我們知道,光Free是不行的,這只是將Edit所指向的內(nèi)存空間釋放了,但是指針并沒(méi)有設(shè)定為nil ,當(dāng)調(diào)用Edit.Text時(shí),Delphi仍然會(huì)根據(jù)Edit提供的指針訪(fǎng)問(wèn)已經(jīng)釋放的內(nèi)存區(qū)域,所以會(huì)產(chǎn)生 Acces
39、s Violation .錯(cuò)誤。所以我們需要在Free 后 Edit:=nil 或者 FreeAndNil (只在 Delphi5下有效)將指針 nil 掉,才能保證以后的正常運(yùn)行。C.將各控件的提示文本顯示于狀態(tài)行上。這個(gè)可用Application的On Hi nt事件,但由于Application 為不可件對(duì)象,因此可以采用如下方法:publicprocedure DisplayHint(Sender: TObject); / 聲明一個(gè)方法用于顯示提示文本 end;procedure TForm1.DisplayHint(Sender: TObject); / 實(shí)現(xiàn)部分beginStatu
40、sBar1.SimpleText := GetLongHint(Application.Hint);end;procedure TForm1.FormCreate(Sender: TObject);beginApplication.OnHint := DisplayHint;end;這樣顯示在狀態(tài)欄里的文本和提示框 (就是那個(gè)自動(dòng)出現(xiàn)的黃色小框) 里的是一樣的。 如果 想要在狀態(tài)欄里的提示文本更加詳細(xì)怎么辦?其實(shí),只要控件的Hint 屬性這樣寫(xiě):MyHint|Its just a MyHint! ,就可以讓“ |”前的內(nèi)容顯示在提示框( Help Hint box )里,“|” 的后面的內(nèi)容顯
41、示在狀態(tài)欄里了。D. ListView使用中的一些要點(diǎn)。以下以一個(gè)兩列的ListView為例。T增加一行:with ListView1 dobeginListItem:=Items.Add;ListItem.Caption:= 第一列內(nèi)容 ;ListItem.SubItems.Add( 第二列內(nèi)容 );end;t清空 ListViewl :ListView1.Items.Clear;t得到當(dāng)前被選中行的行的行號(hào)以及刪除當(dāng)前行:For i:=0 to ListView1.Items.Count-1 DoIf ListView1.Itemsi.Selected then /i=ListView1.
42、Selected.indexbeginListView1.Items.Delete(i); / 刪除當(dāng)前選中行end;當(dāng)然, ListView 有 OnSelectItem 事件 ,可以判斷選擇了哪行 ,用個(gè)全局變量把它賦值出來(lái)。T讀某行某列的操作:Edit1.Text := listview1.Itemsi.Caption; / 讀第 i 行第 1 列Edit2.Text := listview1.Itemsi.SubItems.strings0;/ 讀第 i 行第 2 列Edit3.Text := listview1.Itemsi.SubItems.strings1;/ 讀第 i 行第 3
43、 列以次類(lèi)推,可以用循環(huán)讀出整列。T將焦點(diǎn)上移一行:For i:=0 to ListView1.Items.Count-1 DoIf (ListView1.Itemsi.Selected) and (i0) thenbeginListView1.SetFocus;ListView1.Items.Itemi-1.Selected := True;end;不過(guò)在 Delphi6 中, ListView 多了一個(gè) ItemIndex 屬性,所以只要ListView1.SetFocus;ListView1.ItemIndex:=3;就能設(shè)定焦點(diǎn)了。=其他=?為了優(yōu)化軟件, 使其精益求精, 當(dāng)用到數(shù)組時(shí)
44、經(jīng)常采用動(dòng)態(tài)數(shù)組。 在聲明時(shí), 如: A : array of string,然后在使用數(shù)組之前,SetLength(A,3)設(shè)置數(shù)組長(zhǎng)度為 3,即A0,A1,A2,這樣就可以了。當(dāng)需要擴(kuò)大數(shù)組長(zhǎng)度時(shí),再一次:SecLength(A,5),那么,就增加了 A3和A4,而前面的A0,A1,A2里的值不會(huì)清空;同樣,如果SecLength(A,3)后再SecLength(A,1)的話(huà),就只剩 A0 了,A1和A2自動(dòng)被清除內(nèi)存。注意:動(dòng)態(tài)數(shù)組是從“0”開(kāi)始的,所以SetLength(A,1)后 High(A)=0 的! !最后當(dāng)不再用這個(gè)動(dòng)態(tài)數(shù)組了,而程序還沒(méi)有要退出,那為了節(jié)省內(nèi)存用:A:=ni
45、l 來(lái)釋放掉這個(gè)數(shù)組,這下真正達(dá)到了“綠色環(huán)?!?:)?“怎么獲取當(dāng)前程序運(yùn)行的路徑”這個(gè)問(wèn)題經(jīng)常能夠在論壇上看到。的確,這個(gè)函數(shù)在編程中不時(shí)的要用到的。其實(shí)有好幾個(gè)函數(shù)都能達(dá)到這個(gè)效果: t GetCurre ntDirectory() : Win API 函數(shù),具體用法如下:varMyCurrentDir:Array0.144 of Char; / 存儲(chǔ)當(dāng)前絕對(duì)路徑beginGetCurrentDirectory(SizeOf(MyCurrentDir),MyCurrentDir); / 取得當(dāng)前絕對(duì)路徑 ,最 后得到的格式如: C:WINDOWSSYSTEMMyCurrentDir:=M
46、yCurrentDir+MySoftName.exe;end;t GetCurrentDir() : GetCurrentDirectory 經(jīng)過(guò) Delphi 封裝后的 一個(gè)函 數(shù), 用 法簡(jiǎn)單 : MyCurrentDir:=GetCurrentDir 。最后得到的格式如: C:WINDOWSSYSTEM還有就是可以直接得到路徑的函數(shù): ExtractFilePath(ParamStr(0) 、ExtractFilePath(Application.exename) 等。?系統(tǒng)的關(guān)機(jī)、重新啟動(dòng)等操作的消息。這也是一個(gè)常有人問(wèn)的問(wèn)題,在此我也順便在提一下:關(guān)機(jī): ExitWindowsEx(
47、EWX_SHUTDOWN,32); 重新啟動(dòng): ExitWindowsEx(EWX_REBOOT,32);注銷(xiāo): ExitWindowsEx(EWX_LOGOFF,32);關(guān)閉電源: ExitWindowsEx(EWX_POWEROFF,32);?在 Delphi 中,除了使用 #39 外,要在程序中(如 ShowMessage 中)顯示“單個(gè)單引號(hào)” 要如何處理? 和 都會(huì)出現(xiàn)編譯錯(cuò)誤。 其實(shí),是四個(gè)單引號(hào)表示一個(gè)單引號(hào), 也就是是 , 第二個(gè)和第三表明這是一個(gè) “ ”,第一個(gè)和第四個(gè)是表明這是一個(gè)字符型。呵呵,很有趣哦: )?ShowMessage 中的漢化問(wèn)題。 ShowMessage
48、中的按鈕都是 E 文的,讓人很不舒服。其實(shí) 經(jīng)過(guò)我們的一番 DIY,也能把它們都弄成中文的。首先要保存當(dāng)前的工程,然后選Project|Languages|Add. ,出現(xiàn) Add Language 對(duì)話(huà)框,選擇你要漢化的工程(也可以自定義文件夾),Next;選最后一項(xiàng)“中文(中國(guó))”,Next ;Next ; Next ; Fi nish; OK;然后就出現(xiàn)了 Tran slation Ma nager對(duì)話(huà)框,在左邊選“中文(中 國(guó)) |Resource Scripts|Projet1_DRC (這個(gè)具體要看你的工程文件名) ”,然后右邊的列表里找 到“Const_SMsgDlgOK項(xiàng),將其
49、的“中文(中國(guó))(translated) ”格改為“確定”(原為OK), 保存后退出。這下,再運(yùn)行一下程序,哈哈,是不是就是中文按鈕啦!不過(guò),ShowMessage這種類(lèi)型的信息對(duì)話(huà)框非常簡(jiǎn)單了,可以在系統(tǒng)調(diào)試期間顯示給開(kāi)發(fā)人員一些過(guò)程信息。 但由于過(guò)于簡(jiǎn)單, 所以我建議在軟件的正式版中不要使用這樣的對(duì)話(huà) 框。而且,最好用 MessageBox代替ShowMessage以減小軟件的體積,例如,同樣一個(gè)DLL文件,采用 MessageBox編譯后的 DLL文件大小為 58K,而ShowMessage后就變成了 301K! !語(yǔ)言: Delphi方法一:api 函數(shù): shfileoperatio
50、n procedureCopyDirTree(Ahdl:THandle;SourceDir,TargetDir:String); varSHFileOpStruct:TSHFileOpStruct;FromDir,ToDir:PChar;beginGetMem(fromdir,length(sourcedir)+2);GetMem(todir,length(targetdir)+2);tryfillchar(fromdirA,le ngth(sourcedir)+2,0);fillchar(todirA,le ngth(targetdir)+2,0);strcopy(fromdir,Pchar
51、(sourcedir);strcopy(todir,Pchar(targetdir);withSHFileOpStructdobeginwnd:=ahdl;wfunc:=FO_COPY;pfrom:=fromdir;pto:=todir;fflags:=FOF_NOCONFIRMATIONorFOF_RENAMEONCOLLISION;fAnyOperationsAborted:=false;hnamemappings:=nil;lpszprogresstitle:=nil;ifshfileoperation(shfileopstruct)0thenraiselastwin32error;en
52、d;finallyFreeMem(fromdir,length(sourcedir)+2);FreeMem(todir,length(targetdir)+2);end;end;方法二:functionDoCopyDir(sDirName:String;sToDirName:String):Boolean;varhFindFile:Cardinal;t,tfile:String;sCurDir:String255;FindFileData:WIN32_FIND_DATA;begin/ 先保存當(dāng)前目錄sCurDir:=GetCurrentDir;ChDir(sDirName);hFindFile
53、:=FindFirstFile(*.*,FindFileData);ifhFindFileINVALID_HANDLE_VALUEthen begin ifnotDirectoryExists(sToDirName)then ForceDirectories(sToDirName);repeattfile:=FindFileData.cFileName;if(tfile=.)or(tfile=.)thenContinue;ifFindFileData.dwFileAttributes=FILE_ATTRIBUTE_DIRECTORYthenbegint:=sToDirName+tfile;if
54、 notDirectoryExists(t)thenForceDirectories(t);ifsDirNameLength(sDirName)thenDoCopyDir(sDirName+tfile,t)elseDoCopyDir(sDirName+tfile,sToDirName+tfile);endelsebegint:=sToDirName+tFile;CopyFile(PChar(tfile),PChar(t),True);end;untilFindNextFile(hFindFile,FindFileData)=false;Windows.FindClose(hFindFile);endelsebeginChDir(sCurDir);result:=false;exit;end;/ 回到原來(lái)的目錄下ChDir(sCurDir);result:=true;end;語(yǔ)言: VC方法一:#define_WIN32_WINNT0x0400#includewindows.hvoidcopydir(char*src,char*dst)WIN32_FIND_DATAFindFileData;HANDLEhFind;chartmpsrc256;strcpy(tmpsrc,src);strcat(tmpsrc,*.*);hFind=FindFirstFile
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能門(mén)禁系統(tǒng)安裝合同
- 教師職稱(chēng)評(píng)定育人工作證明
- Tricyclohexylphosphine-Tricyclohexylphosphane-生命科學(xué)試劑-MCE
- 影視劇制作投資拍攝協(xié)議
- Actein-Standard-生命科學(xué)試劑-MCE
- 寓言故事愚公移山的教育意義深度解讀
- 美容美發(fā)產(chǎn)品使用效果免責(zé)承諾書(shū)
- 水電站落水孔清洗施工方案
- 蘇州玻璃鋼化糞池施工方案
- 2025年滁州c1貨運(yùn)上崗證模擬考試
- 江蘇省邳州市2021-2022學(xué)年人教版四年級(jí)上冊(cè)期末數(shù)學(xué)試卷(含答案)
- 大數(shù)據(jù)分析及應(yīng)用實(shí)踐全書(shū)課件匯總整本書(shū)電子教案(最新)
- 教練技術(shù)一階段講義(共59頁(yè))
- 第3章-系統(tǒng)模型與模型化
- 精品課程建設(shè)驗(yàn)收自評(píng)報(bào)告
- 福建省義務(wù)教育課程設(shè)置及比例(修訂)
- 未成年人需辦銀行卡證明(模板)
- 員工考勤流程圖
- 出口加工區(qū)外匯管理培訓(xùn)(ppt49)
- 彩色英文書(shū)寫(xiě)紙(共9頁(yè))
- 初中學(xué)生綜合素質(zhì)評(píng)價(jià)填寫(xiě)示例
評(píng)論
0/150
提交評(píng)論