本文为【一个C++程序员的Delphi学习笔记】的汉字拼音对照版显示拼音
一yi个geC++程cheng序xu员yuan的deDelphi学xue习xi笔bi记ji
一yi个geC++程cheng序xu员yuan的deDelphi学xue习xi笔bi记ji 一yi个geC++程cheng序xu员yuan的deDelphi学xue习xi笔bi记ji
说shuo心xin里li话hua,站zhan在zai一yi个geC++程cheng序xu员yuan的de立li场chang,是shi有you那na么me一yi点dian看kan不bu上shang用yongDelphi的de开kai发fa者zhe的de。就jiu几ji周zhou前qian,我wo还huan撰zhuan文wen维wei护hu过guoC++的de尊zun严yan。种zhong种zhong原yuan因yin,今jin天tian我wo却que须xu学xue习xiDelphi、熟shu悉xiDelphi,不bu由you兴xing起qi人ren生sheng无wu常chang的de感gan慨kai。
我wo给gei了le自zi己ji十shi五wu天tian的de时shi间jian,不bu知zhi够gou否fou掌zhang握wo一yi门men语yu言yan?我wo选xuan择ze了leMarco cantu的de《Delphi从cong入ru门men到dao精jing通tong》及ji《Delphi高gao级ji开kai发fa指zhi南nan》作zuo为wei学xue习xi用yong书shu。第di一yi本ben书shu名ming叫jiao《从cong入ru门men到dao精jing通tong》,但dan如ru果guo你ni不bu熟shu悉xi一yi门menOOP语yu言yan,那na这zhe本ben书shu不bu合he适shi你ni。对dui我wo,则ze正zheng合he适shi。二er书shu总zong厚hou度du共gong一yi千qian五wu百bai页ye,嗯en,一yi天tian一yi百bai页ye就jiu差cha不bu多duo了le,希xi望wang自zi己ji能neng做zuo到dao吧ba。
我wo决jue定ding如ru实shi记ji下xia自zi己ji的de思si考kao与yu困kun惑huo,做zuo为wei自zi己ji进jin军jun新xin领ling域yu的de记ji念nian,也ye希xi望wang能neng为wei后hou行xing的de同tong路lu者zhe提ti供gong一yi点dian帮bang助zhu。
一yi 环huan境jing
"工gong欲yu善shan其qi事shi,必bi先xian利li其qi器qi",对dui开kai发fa环huan境jing的de熟shu悉xi是shi非fei常chang重chong要yao的de。不bu同tong于yuVC的deMDI界jie面mian,Delphi采cai用yong了le多duo个ge独du立li窗chuang体ti设she计ji。这zhe是shi否fou预yu示shiBorland更geng提ti倡chang组zu件jian间jian进jin行xing对dui等deng的de交jiao互hu?我wo暗an暗an猜cai测ce着zhe。
1.Desktop设she置zhi是shi可ke以yi与yuProject分fen离li的de,而er且qieDesktop设she置zhi优you先xian于yuProject设she置zhi。
2.To-Do列lie表biao无wu论lun是shi用yong于yu提ti醒xing自zi己ji还huan是shi别bie人ren,都dou是shi好hao工gong具ju。
3.AppBrowser感gan觉jiao上shang很hen相xiang似si于yuVC的de主zhu界jie面mian。也ye提ti供gong了le符fu号hao提ti示shi,Code Completiont等deng功gong能neng。嗯en,还huan有youVC所suo没mei有you的deClass Completion,可ke以yi在zai声sheng明ming和he实shi现xian间jian双shuang向xiang自zi动dong补bu完wan。
4.Project Group的de概gai念nian,有you点dian像xiang.net平ping台tai中zhong的deSolution,不bu过guo.net是shi多duo语yu言yan协xie作zuo的de。
二er 语yu言yan
Delphi的de核gai心xin是shiVCL库ku,其qi基ji础chu是shiObject Pascal。《从cong入ru门men到dao精jing通tong》用yong两liang章zhang的de篇pian幅fu细xi说shuo"Object",却que只zhi字zi没mei有you提ti到dao"Pascal"。嗯en,还huan好hao,我wo隐yin隐yin记ji得de。
1.Use用yong于yu引yin用yong外wai部bu单dan元yuan。与yu头tou文wen件jian不bu同tong,Use没mei有you传chuan递di性xing。
2.Delphi使shi用yong引yin用yong对dui象xiang模mo型xing,对dui象xiang变bian量liang只zhi持chi有you对dui象xiang引yin用yong,不bu再zai持chi有you对dui象xiang本ben身shen,所suo有you对dui象xiang手shou动dong自zi堆dui中zhong分fen配pei。
3.Delphi的de封feng装zhuang很hen奇qi怪guai,类lei成cheng员yuan访fang问wen权quan限xian的de设she定ding,只zhi对dui单dan元yuan外wai部bu起qi作zuo用yong。在zai单dan元yuan内nei,可ke以yi自zi对dui象xiang外wai部bu任ren意yi访fang问wen类lei私si有you成cheng员yuan。朋peng友you解jie释shi说shuo相xiang当dang于yuC++的de友you元yuan,细xi想xiang其qi实shi差cha异yi很hen大da--友you谊yi一yi定ding是shi双shuang向xiang的de吗ma?(将jiangUnit方fang式shi用yong作zuo友you元yuan,A能neng访fang问wenB,B一yi定ding能neng访fang问wenA)友you谊yi有you传chuan递di性xing吗ma?(将jiangUnit方fang式shi用yong作zuo友you元yuan,A能neng访fang问wenB,B能neng访fang问wenC,A一yi定ding能neng访fang问wenC)。在zai我wo看kan来lai,这zhe和he友you员yuan的de概gai念nian是shi不bu相xiang容rong的de。希xi望wang某mou天tian我wo能neng明ming白baiDelphi如ru此ci设she计ji的de考kao量liang。
4.在zai声sheng明ming对dui象xiang变bian量liang后hou,Delphi对dui象xiang的de实shi际ji生sheng成cheng需xu调tiao用yong构gou造zao器qi。构gou造zao器qi是shi特te殊shu的de类lei方fang法fa,自ziTObject继ji承cheng并bing可ke重chong载zai。不bu使shi用yong关guan键jian字zi而er用yong类lei方fang法fa构gou造zao对dui象xiang,我wo认ren为wei这zhe是shi单dan根gen继ji承cheng的de特te有you用yong法fa。
5.书shu中zhong有you一yi段duan动dong态tai创chuang建jianTButton的de例li子zi,使shi用yongCreat创chuang建jian了le对dui象xiang,却que没mei用yongFree显xian式shi的de释shi放fang
。我wo疑yi心xin会hui发fa生sheng内nei存cun泄xie漏lou,细xi细xi想xiang来lai,该gai是shi由you持chi有youTButton的de容rong器qiTForm来lai负fu责ze释shi放fang,朋peng友you证zheng实shi了le我wo的de想xiang法fa。Delphi以yi此ci避bi免mian了le手shou动dong释shi放fang内nei存cun的de麻ma烦fan。
6.Delphi的de关guan键jian字zi很hen烦fan,长chang而er多duo,要yao键jian入ru的de地di方fang也ye多duo。好hao处chu是shi能neng为wei编bian译yi器qi提ti供gong更geng多duo的de信xin息xi,用yong以yi查cha错cuo和he加jia快kuai编bian译yi速su度du。
7.因yin着zhe引yin用yong对dui象xiang模mo型xing,不bu再zai有youC++中zhong直zhi接jie对dui象xiang访fang问wen无wu多duo态tai,只zhi在zai指zhi针zhen和he引yin用yong下xia多duo态tai机ji制zhi才cai起qi作zuo用yong的de问wen题ti。
8.用yongmessage直zhi接jie指zhi出chu方fang法fa可ke以yi处chu理li的de事shi件jian,唉ai,让rang我wo想xiang起qiOWL时shiBorland对duiC++语yu言yan的de相xiang似si扩kuo展zhan,真zhen是shi怀fu念nian。
9.大da量liang使shi用yong动dong态tai类lei型xing转zhuan换huan,该gai是shiPascal本ben就jiu具ju有you的de特te点dian吧ba?
10.窗chuang体ti继ji承cheng,好hao像xiang连lian控kong件jian的de属shu性xing都dou可ke以yi继ji承cheng呢ne。
11.很hen奇qi怪guai的de设she计ji。有you类lei方fang法fa,却que不bu提ti供gong类lei变bian量liang,需xu用yongUnit级ji的de变bian量liang来lai模mo拟ni。
12.如ru果guo我wo的de猜cai想xiang不bu错cuo,控kong件jian的deEvents应ying该gai就jiu是shi"对dui象xiang方fang法fa指zhi针zhen"。
13.极ji强qiang有you力li的de机ji制zhi:类lei引yin用yong,可ke用yong相xiang同tong的de形xing式shi动dong态tai建jian立li不bu同tong的de数shu据ju类lei型xing。C++中zhong相xiang似si的de能neng力li,怕pa要yao用yongBuilder模mo式shi才cai行xing。
14.参shen数shu对dui象xiang按an引yin用yong传chuan递di,按an引yin用yong赋fu值zhi,只zhi有you部bu分fen类lei提ti供gongAssign方fang法fa复fu制zhi对dui像xiang。唉ai,C++的de值zhi语yu意yi,好hao怀fu念nian。
15.Finally块kuai!解jie决jue了leC++中zhong好hao些xie需xu高gao度du技ji巧qiao的de资zi源yuan释shi放fang问wen题ti。但dan为wei什shen么me不bu能neng和heexcept一yi起qi使shi用yong?不bu太tai明ming白bai。
16.属shu性xing和he事shi件jian??真zhen是shi为weiVCL量liang身shen定ding制zhi的de语yu言yan啊a。其qi实shi属shu性xing和he事shi件jian并bing非fei面mian向xiang对dui象xiang的de必bi要yao元yuan素su。
17.我wo想xiangVCL事shi件jian处chu理li的de委wei托tuo模mo型xing,该gai是shi与yuJAVA相xiang似si的de。只zhi是shiJava的deListener可ke以yi处chu理li多duo
个geListener的de存cun在zai,Delphi的de事shi件jian属shu性xing好hao像xiang只zhi能neng处chu理li一yi个ge吧ba?不bu过guo处chu理li速su度du上shang要yao快kuai多duo了le。
18.a)从congTComponent类lei继ji承cheng,b)新xin构gou造zao程cheng序xu,c)例li行xing的deRegister,d)安an装zhuang。VCL组zu件jian创chuang建jian的de方fang便bian,真zhen让rang人ren感gan动dong。
19.书shu上shang说shuoVCL优you于yuActiveX,因yin为weiActiveX没mei有you完wan全quan的de继ji承cheng机ji制zhi,我wo不bu敢gan苟gou同tong。聚ju合he该gai是shi先xian于yu继ji承cheng选xuan用yong的de机ji制zhi。
20.Interface,丑chou死si了le!!我wo甚shen至zhi怀fu疑yi这zhe是shi否fouHejlsberg的de设she计ji。完wan全quan像xiang是shi为weiCom支zhi持chi临lin时shi拼pin凑cou的de语yu言yan成cheng份fen,与yu整zheng体ti毫hao不bu协xie调tiao,像xiang个ge外wai来lai户hu。接jie口kou本ben身shen是shi强qiang大da的de东dong西xi,但dan糟zao糕gao的de设she计ji会hui让rang它ta的de使shi用yong成cheng为wei一yi种zhong痛tong苦ku。除chu了leCOM和he多duo重chong继ji承cheng没mei有you选xuan择ze外wai,我wo想xiang是shi没mei人ren愿yuan意yi用yong它ta的de。
整zheng个ge来lai说shuo,Object pascal给gei我wo很hen深shen的de映yang象xiang。接jie下xia来lai就jiu该gai学xue习xiVCL了le,且qie看kanBorland是shi如ru何he将jiang这zhe种zhong种zhong语yu言yan的de成cheng份fen,组zu装zhuang成cheng为wei开kai发fa的de利li器qi。
三san VCL
《从cong入ru门men到dao精jing通tong》,作zuo者zhe的de安an排pai可ke真zhen大da胆dan。不bu先xian讲jiang如ru何he在zaiForm上shang摆bai控kong件jian,倒dao自ziVCL讲jiang起qi。我wo佩pei服fu作zuo者zhe的de气qi魄po,直zhi直zhi的de深shen入ru到dao问wen题ti的de核gai心xin,剔ti筋jin去qu肉rou,先xian将jiang脉mai络luo端duan到dao你ni的de面mian前qian。要yao知zhi道dao,这zhe有you着zhe失shi去qu很hen多duo读du者zhe的de危wei险xian。
1.TObject,万wan类lei之zhi源yuan。RTTI信xin息xi就jiu放fang在zai这zhe里li了le,这zhe算suan是shi单dan根gen单dan继ji承cheng实shi现xian上shang的de便bian利li吧ba。
2.一yi个ge细xi节jie:TButton.InstanceSize=504!真zhen够gou浪lang费fei的de。算suan法fa分fen析xi中zhong常chang讲jiang以yi空kong间jian换huan时shi间jian,这zhe该gai算suan以yi空kong间jian换huan宜yi用yong性xing吧ba。
3.作zuo为weiTPersisitent的de子zi类lei,TComponet拥yong有you流liu化hua能neng力li。IDE就jiu用yong其qi将jiang属shu性xing写xie入ruDFM文wen件jian中zhong。
4.TPersisitent委wei托tuoTFiler和heTStream两liang个ge辅fu助zhu类lei来lai具ju体ti实shi现xian流liu化hua。具ju体ti实shi现xian中zhong包bao括kuo自ziRTTI中zhong读du出chu子zi类lei所suo有you拥yong有you的de属shu性xing,使shi流liu化hua对dui程cheng序xu员yuan透tou明ming。
5.非fei窗chuang口kou控kong件jian?相xiang信xin是shi对dui效xiao率lv低di的de一yi种zhong补bu偿chang。
6.Componentsk中zhong包bao含han窗chuang体ti所suo有you上shang的de控kong件jian,即ji使shi他ta们men的deParent为wei别bie的de组zu件jian容rong器qi,其qiOwner也ye是shiForm.
7.Owner和heParent,两liang个ge易yi混hun淆xiao的de概gai念nian。我wo的de理li解jie:Owner是shi对dui象xiang的de持chi有you者zhe,Parent是shi对dui象xiang的de呈cheng现xian者zhe。
8.窗chuang体ti元yuan素su没mei有you进jin行xing封feng装zhuang!带dai来lai访fang问wen的de便bian利li性xing的de同tong时shi,也ye留liu下xia混hun乱luan的de隐yin患huan,特te别bie在zai大da型xing工gong程cheng中zhong。
9.控kong件jian位wei置zhi的de坐zuo标biao原yuan点dian对dui应yingParent的de客ke户hu区qu,这zhe加jia强qiang了le我wo的de信xin心xin:Parent是shi对dui象xiang的de呈cheng现xian者zhe。
10.Frames,窗chuang体ti继ji承cheng的de有you力li竞jing争zheng者zhe。其qi本ben质zhi是shi以yi聚ju合he代dai替ti继ji承cheng。昨zuo天tian有you朋peng友you提ti出chu:"我wo觉jiao得de聚ju合he是shi不bu可ke以yi取qu代dai继ji承cheng的de"。的de确que,聚ju合he不bu可ke能neng完wan全quan代dai替ti继ji承cheng,但dan在zai两liang者zhe同tong时shi适shi用yong的de条tiao件jian下xia,应ying该gai选xuan择ze耦ou合he较jiao为wei松song散san、封feng装zhuang更geng为wei完wan全quan的de聚ju合he。具ju体ti到daoFrames和he窗chuang体ti继ji承cheng来lai说shuo,我wo感gan觉jiao在zai不bu涉she及ji多duo态tai时shi,是shi应ying该gai选xuan用yongFrames的de。
11.Delphi提ti供gong的de容rong器qi类lei,与yuC++的deSTL相xiang比bi,从cong弹tan性xing到dao效xiao率lv可ke就jiu差cha远yuan了le,还huan容rong易yi出chu现xian类lei型xing安an全quan问wen题ti。还huan好haoDelphi的deRTTI机ji制zhi强qiang大da,可ke以yi略lue补bu不bu足zu。这zhe该gai是shi没mei有you模mo板ban机ji制zhi的de副fu作zuo用yong:整zheng个ge的de泛fan型xing思si想xiang都dou用yong不bu上shang。
其qi实shi作zuo者zhe还huan是shi很hen为wei初chu学xue者zhe着zhe想xiang的de:并bing没mei有you深shen入ruVCL。虽sui有you点dian意yi犹you未wei尽jin,但dan作zuo为wei初chu学xue的de我wo,也ye该gai是shi知zhi足zu了le。 四si:标biao准zhun组zu件jian
其qi实shi很hen多duoDelphi的de使shi用yong者zhe,都dou是shi看kan中zhong众zhong多duo的deVCL组zu件jian支zhi持chi。有you朋peng友you对dui我wo前qian文wen所suo说shuo"其qi实shi属shu性xing和he事shi件jian并bing非fei面mian向xiang对dui象xiang的de必bi要yao元yuan素su"表biao示shi不bu敢gan苟gou同tong,我wo相xiang信xin他ta是shi混hun淆xiao面mian向xiang对dui象xiang和he面mian向xiang组zu件jian了le。在zai我wo的de记ji忆yi中zhong,面mian向xiang组zu件jian是shi面mian对dui对dui象xiang的de扩kuo展zhan,其qi本ben质zhi虽sui仍reng是shi面mian向xiang对dui象xiang,但dan为wei之zhi添tian加jia了le众zhong多duo的de辅fu助zhu特te性xing,其qi中zhong就jiu包bao括kuo属shu性xing(不bu是shiC++的de"属shu性xing")和he事shi件jian。
1.Form的deComponents,GroupBox的deControls,ListBox的deItems,Delphi还huan真zhen是shi喜xi欢huan用yong数shu组zu容rong器qi来lai表biao达da组zu织zhi结jie构gou。
2.还huan有yousleected数shu组zu,ItemEnabled数shu组zu,哦o,值zhi也ye是shi通tong过guoItems数shu组zu的de对dui应ying项xiang来lai存cun储chu的de。
3.Drag-Drop。看kan到dao书shu的de标biao题ti,不bu由you的de就jiu想xiang到daoIDataObject、IDropSource、IDropTarget几ji个ge接jie口kou。其qi实shiDelphi的de拖tuo放fang要yao简jian单dan很hen多duo。就jiu我wo的de了le解jie,本ben质zhi是shi一yi个geDrop通tong知zhi,不bu像xiangCom会hui将jiang数shu据ju本ben身shen包bao装zhuang好hao传chuan送song。这zhe该gai是shi不bu需xu支zhi持chi跨kua进jin程chengDrag-Drop的de原yuan因yin吧ba。
4.菜cai单dan不bu再zai做zuo为wei资zi源yuan出chu现xian,呈cheng现xian给gei应ying用yong程cheng序xu员yuan的de,是shi其qi包bao装zhuang后hou的deTMenuItem和he组zu织zhi成cheng嵌qian套tao形xing式shi的deItems。两liang个ge优you点dian:a)纯chun一yi,不bu再zai有you菜cai单dan资zi源yuan需xu程cheng序xu员yuan理li解jie。2)在zai包bao装zhuang层ceng中zhong括kuo展zhan菜cai单dan功gong能neng极ji为wei方fang便bian,并bing对dui程cheng序xu员yuan透tou明ming。为wei此ci,ImageList也ye进jin行xing相xiang应ying包bao装zhuang。
5.Action,其qi实shi质zhi为wei双shuang向xiang事shi件jian转zhuan发fa:各ge客ke户hu控kong件jian->Action->OnExecute,OnUpdata->Action属shu性xing改gai变bian->各ge客ke户hu控kong件jian。
6.Owner-draw,还huan是shi定ding制zhi控kong件jian画hua出chu自zi身shen?一yi个ge两liang难nan的de选xuan择ze。从cong一yi个geOO纯chun化hua论lun者zhe的de角jiao度du看kan,Owner-draw实shi在zai是shi对dui封feng装zhuang的de一yi种zhong破po坏huai。定ding制zhi控kong件jian画hua出chu自zi身shen,却que又you未wei免mian劳lao民min伤shang财cai,浪lang费fei资zi源yuan。
7.TreeView,树shu状zhuang视shi图tu。XML不bu正zheng是shi擅shan长chang树shu的de表biao达da吗ma?干gan嘛ma不bu给gei他ta们men结jie合he结jie合he?
唉ai,操cao作zuo性xing的de东dong西xi,能neng想xiang的de能neng写xie的de实shi在zai不bu多duo,对dui吧ba?希xi望wang接jie下xia来lai的de几ji章zhang,能neng激ji荡dang起qi脑nao力li才cai是shi。
------------------------------------
E-mail:Dream_soft@263.net
HomePagewww.hisee.net
QQ:80512698
本ben文wen为weiDreamer(Dream_soft)原yuan创chuang,版ban权quan归guiDreamer(Dream_soft)所suo有you,欢huan迎ying各ge网wang站zhan转zhuan载zai。转zhuan载zai时shi请qing保bao持chi原yuan文wen完wan整zheng并bing保bao留liu版ban权quan信xin息xi。
【原文】