«á¤@­¶
«e¤@­¶
¦^¥Ø¿ý
¦^­º­¶
²Ä¤Q¤E³¹¡@Delphi¦Û©w¸q³¡¥ó¶}µo¡]¤@¡^

¡@¡@¡@Delphi°£¤F¤ä´©¨Ï¥Î¥iµø¤Æ³¡¥ó©Ò¨£§Y©Ò±o¦a«Ø¥ßÀ³¥Îµ{¦¡¥~¡AÁ٤䴩¬°¶}µoÀ³¥Î¦Ó³]­p¦Û¤vªº³¡¥ó¡C

¡@¡@¦b¥»³¹¤¤±NÄÄ­z¦p¦ó¬°DelphiÀ³¥Îµ{¦¡½s¼g³¡¥ó¡C³o¤@³¹±N¹F¨ì¨â­Ó¥Øªº¡G

¡@¡@¡´ ±Ð§A¦p¦ó¦Û©w¸q³¡¥ó

¡@¡@¡´ ¨Ï§Aªº³¡¥ó¦¨¬°DelphiÀô¹Òªº¦³¾÷¸s¸s²Õ¦X³¡¤À

¡@

19.1 Delphi³¡¥ó­ì²z

¡@

19.1.1 ¤°»ò¬O³¡¥ó

¡@

¡@¡@³¡¥ó¬ODelphiÀ³¥Îµ{¦¡ªºµ{¦¡ºc¥ó¡C¾¨ºÞ¤j¦h¼Æ³¡¥ó¥Nªí¥Î¤á¤¶­±ªº¥i¨£¤¸¯À¡A¦ý³¡¥ó¤]¥i¥H¬Oµ{¦¡¤¤ªº¤£¥i¨£¤¸¯À¡A¦p¸ê®Æ®w³¡¥ó¡C¬°§Ë²M¤°»ò¬O³¡¥ó¥i¥H±q¤T­Ó¤è­±¨Ó¦Ò¹î¥¦¡G¥\¯à©w¸q¡B§Þ³N©w¸q©M¸gÅç©w¸q¡C

¡@¡@1. ³¡¥óªº¥\¯à©w¸q

¡@¡@±q³Ì²×¥Î¤á¨¤«×¡A³¡¥ó¬O¦bComponent Palette¤W¿ï¾Üªº¡A¨Ã¦bµ¡Åé³]­pµøµ¡©M¥N½Xµøµ¡¤¤¾Þ§@ªº¤¸¯À¡C±q³¡¥ó½s¼gªÌ¨¤«×¡A³¡¥ó¬O¥N½X¤¤ªºª«¥ó¡C¦b½s¼g³¡¥ó¤§«e¡A§AÀ³¥Î¬Û·í¼ô±x¤w¦³ªºDelphi³¡¥ó¡A³o¼Ë¤~¯à¨Ï§Aªº³¡¥ó¾A¦X¥Î¤áªº»Ý­n¡C½s¼g³¡¥óªº¥Ø¼Ð¤§¤@¬O¨Ï³¡¥óºÉ¥i¯àªºÃþ¦ü¨ä¥¦³¡¥ó¡C

¡@¡@2. ³¡¥óªº§Þ³N©w¸q

¡@¡@±q³Ì²³æªº¨¤«×¬Ý¡A³¡¥ó¬O¥ô¦ó±qTComponentÄ~©Óªºª«¥ó¡CTComponent©w¸q¤F©Ò¦³³¡¥ó¥²¶·­nªº¡B³Ì°ò¥»ªº¦æ¬°¡C¨Ò¦p¡A¥X²{¦bComponent Palette¤W©M¦bµ¡Åé³]­pµøµ¡¤¤½s¿èªº¥\¯à¡C¦ý¬OTComponent¨Ã¤£ª¾¦p¦ó³B²z§Aªº³¡¥óªº¨ãÅé¥\¯à¡A¦]¦¹¡A§A¥²¶·¦Û¤v´y­z¥¦¡C

¡@¡@3. ³¡¥ó½s¼gªÌ¦Û¤vªº©w¸q¡C

¡@¡@¦b¹ê»Úµ{¦¡³]­p¤¤¡A³¡¥ó¬O¯à´¡¤JDelphi¶}µoÀô¹Òªº¥ô¦ó¤¸¯À¡C¥¦¥i¯à¨ã¦³µ{¦¡ªº¦UºØ½ÆÂø©Ê¡C²¦Ó¨¥¤§¡A¥u­n¯à¿Ä¤J³¡¥ó®Ø¬[¡A³¡¥ó´N¬O§A¥Î¥N½X½s¼gªº¤@¤Á¡C³¡¥ó©w¸q¥u¬O±µ¤f´y­z¡A¥»³¹±N¸Ô²ÓÄÄ­z³¡¥ó®Ø¬[¡A±Ô­z³¡¥óªº¦³­­©Ê¡A¥¿¦p±Ô­zµ{¦¡³]­pªº¦³­­©Ê¡C¥»³¹¤£·Ç³Æ±Ð§A¥Î©Òµ¹»y¨¥½s¼g¨C¤@ºØ³¡¥ó¡A¥u¯à§i¶D½s©w¥N½Xªº¤èªk©M«ç¼Ë¨Ï³¡¥ó¿Ä¤JDelphiÀô¹Ò¡C

¡@¡@

19.1.2 ½s¼g³¡¥óªº¤£¦P¤§³B

¡@

¡@¡@¦bDelphiÀô¹Ò¤¤«Ø¥ß³¡¥ó©M¦bÀ³¥Îµ{¦¡¤¤¨Ï¥Î³¡¥ó¦³¤T­Ó­«­n®t§O¡G

¡@¡@¡´ ½s¼g³¡¥óªº¹Lµ{¬O«D¥iµø¤Æªº

¡@¡@¡´ ½s¼g³¡¥ó»Ý­n§ó²`¤JªºÃö©óª«¥óªºª¾ÃÑ

¡@¡@¡´ ½s¼g³¡¥ó»Ý­n¿í´`§ó¦hªº³W«h

¡@

¡@¡@1. ½s¼g³¡¥ó¬O«D¥iµø¤Æªº

¡@¡@½s¼g³¡¥ó»P«Ø¥ßDelphiÀ³¥Î³Ì©úÅ㪺°Ï§O¬O³¡¥ó½s¼g§¹¥þ¥H¥N½Xªº§Î¦¡¶i¦æ¡A§Y«D¥iµø¤Æªº ¡C¦]¬°DelphiÀ³¥Îªº¥iµø¤Æ³]­p»Ý­n¤w§¹¦¨ªº³¡¥ó¡A¦Ó«Ø¥ß³o¨Ç³¡¥ó´N»Ý­n¥ÎObject Pascal ¥N½X½s¼g¡C

¡@¡@ÁöµM§AµLªk¨Ï¥Î¥iµø¤Æ¤u¨ã¨Ó«Ø¥ß³¡¥ó¡A¦ý§A¯à¹B¥Î Delphi¶}µoÀô¹Òªº©Ò¦³µ{¦¡³]­p¯S©Ê¦p¥N½X½s¿è¾¹¡B¾ã¦X¤Æ°»¿ù©Mª«¥óÂsÄý¡C

¡@¡@2. ½s¼g³¡¥ó»Ý­n§ó²`ªº¦³Ãöª«¥óªºª¾ÃÑ

¡@¡@°£¤F«D¥iµø¤Æµ{¦¡³]­p¤§¥~¡A«Ø¥ß³¡¥ó©M¨Ï¥Î¥¦­Ìªº³Ì¤j°Ï§O¬O¡G·í«Ø¥ß·s³¡¥ó®É¡A»Ý­n±q¤w¦s³¡¥ó¤¤Ä~©Ó²£¥Í¤@­Ó·sª«¥ó«¬¦¡¡A¨Ã¼W¥[·sªºÄÝ©Ê©M¤èªk¡C¥t¤@¤è­±¡A³¡¥ó¨Ï¥ÎªÌ¡A¦b«Ø¥ßDelphiÀ³¥Î®É¡A¥u¬O¨Ï¥Î¤w¦³³¡¥ó¡C¦b³]­p¶¥¬q³q¹L§ïÅܳ¡¥óÄÝ©Ê©M´y­zÅTÀ³¨Æ¥óªº¤èªk¨Ó©w¨î¥¦­Ìªº¦æ¬°¡C

¡@¡@·íÄ~©Ó²£¥Í¤@­Ó·sª«¥ó®É¡A§A¦³Åv¦s¨ú¯ª¥ýª«¥ó¤¤¹ï³Ì²×¥Î¤á¤£¥i¨£ªº³¡¤À¡C³o¨Ç³¡¤À³QºÙ¬°protected¤¶­±ªº¡C¦b«Ü¤j³¡¤Àªº¹ê²{¤W¡A«á¥Nª«¥ó¤]»Ý­n©I¥s¥L­Ìªº¯ª¥ýª«¥óªº¤èªk¡A¦]¦¹¡A½s¼g³¡¥óªÌÀ³¬Û·í¼ô±x­±¦Vª«¥óµ{¦¡³]­p¯S©Ê¡C

¡@¡@3. ½s¼g³¡¥ó­n¿í´`§ó¦hªº³W«h

¡@¡@½s¼g³¡¥ó¹Lµ{¤ñ¥iµø¤ÆÀ³¥Î²£¥Í±Ä¥Î§ó¶Ç²Îªºµ{¦¡³]­p¤èªk¡A»P¨Ï¥Î¤w¦³³¡¥ó¬Û¤ñ¡A¦³§ó¦hªº³W«h­n¿í´`¡C¦b¶}©l½s¼g¦Û¤vªº³¡¥ó¤§«e¡A³Ì­«­nªº¨Æ²ö¹L©ó¼ô½mÀ³¥ÎDelphi¦Û±aªº³¡¥ó¡A¥H±o¨ì¹ï©R¦W³W«h¥H¤Î³¡¥ó¥Î¤á©Ò´Á±æ¥\¯àµ¥ªºª½Æ[»{ÃÑ¡C³¡¥ó¥Î¤á´Á±æ³¡¥ó°µ¨ìªº³Ì­«­nªº¨Æ±¡²ö¹L©ó¥L­Ì¦b¥ô¦ó®É­Ô¯à¹ï³¡¥ó°µ¥ô¦ó¨Æ¡C½s¼gº¡¨¬³o¨Ç´Á±æªº³¡¥ó¨Ã¤£Ãø¡A¥u­n¹w¥ý·Q¨ì©M¿í´`³W«h¡C

¡@

19.1.3 «Ø¥ß³¡¥ó¹Lµ{·§²¤

¡@

¡@¡@²¦Ó¨¥¤§¡A«Ø¥ß¦Û©w¸q³¡¥óªº¹Lµ{¥]§t¤U¦C´X¨B¡G¡@

¡´ «Ø¥ß¥]§t·s³¡¥óªº®w³æ¤¸

¡@¡@¡´ ±q¤w¦³³¡¥ó«¬¦¡¤¤Ä~©Ó±o¨ì·sªº³¡¥ó«¬¦¡

¡@¡@¡´ ¼W¥[ÄÝ©Ê¡B¤èªk©M¨Æ¥ó

¡@¡@¡´ ¥ÎDelphiµù¥U³¡¥ó

¡@¡@¡´ ¬°³¡¥óªºÄݩʤèªk©M¨Æ¥ó«Ø¥ßHelp¤å¥ó

¡@

¡@¡@¦pªG§¹¦¨³o¨Ç¤u§@¡A§¹¾ãªº³¡¥ó¥]§t¤U¦C4­Ó¤å¥ó

¡@¡@¡´ ½sĶªº®w³æ¤¸¡@¡@ ( .DCU¤å¥ó)

¡´ ¿ï¾ÜªOÂI°}¹Ï¡@¡@¡@ (.DCR¤å¥ó)

¡´ Help¤å¥ó¡@¡@¡@¡@ (.HLP¤å¥ó)

¡´ Help-keyword¤å¥ó (.KWF¤å¥ó)

¡@

19.2 Delphi³¡¥óµ{¦¡³]­p¤èªk

¡@

19.2.1 Delphi³¡¥óµ{¦¡³]­p·§­z

¡@

19.2.1.1 Delphi¥iµø³¡¥óÃþ®w

¡@

¡@¡@ Delphiªº³¡¥ó³£¬O¥iµø³¡¥óÃþ®w¡]VCL¡^ªºª«¥óÄ~©Ó¾ðªº¤@³¡¤À¡A¤U­±¦C¥X¸s¸s²Õ¦¨VCLªºª«¥óªºÃö«Y¡CTComponent¬OVCL¤¤¨C¤@­Ó³¡¥óªº¦@¦P¯ª¥ý¡CTComponent´£¨Ñ¤FDelphi³¡¥ó¥¿±`¤u§@ªº³Ì°ò¥»ªºÄÝ©Ê©M¨Æ¥ó¡C®w¤¤ªº¦U±ø¤À¤ä´£¨Ñ¤F¨ä¥¦ªº§ó±M¤@ªº¥\¯à¡C¡@

·í«Ø¥ß³¡¥ó®É¡A³q¹L±qª«¥ó¾ð¤¤¤w¦³ªºª«¥óÄ~©ÓÀò±o·sª«¥ó¡A¨Ã±N¨ä¥[¤JVCL¤¤¡C¡@

19.2.1.2 «Ø¥ß³¡¥óªº°_ÂI¡@

¡@¡@³¡¥ó¬O§A¦b³]­p®É·Q¾Þ§@ªº¥ô·Nµ{¦¡¤¸¯À¡C«Ø¥ß·s³¡¥ó·N¨ýµÛ±q¤w¦³«¬¦¡¤¤Ä~©Ó±o¨ì·sªº³¡¥óª«¥óÃþ¡C

«Ø¥ß·s³¡¥óªº¥D­n³~®|¦p¤U¡G

¡@ ¡´ ­×§ï¤w¦³ªº±±¨î

¡@¡@¡´ «Ø¥ß­ì©l±±¨î

¡@¡´ «Ø¥ß¹Ï§Î±±¨î

¡@ ¡´ «Ø¥ßWindows±±¨îªº¤lÃþ

¡@¡@¡´ «Ø¥ß«D¥iµø³¡¥ó

¡@

¡@¡@¤Uªí¦C¥X¤F¤£¦P«Ø¥ß³~®|ªº°_©lÃþ

¡@

ªí19.1 ©w¸q³¡¥óªº°_©lÂI

¡@¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w

¡@³~ ®|¡@¡@¡@¡@¡@ °_ ©l Ãþ

¡@ ¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X

­×§ï¤w¦³³¡¥ó ¡@ ¥ô¦ó¤w¦³³¡¥ó¡A¦pTButton¡BTListBox

©Î©â¶H³¡¥óª«¥ó¦pTCustomListBox

«Ø¥ß­ì©l±±¨î¡@¡@¡@ TCustomControl

«Ø¥ß¹Ï§Î±±¨î TGraphicControl

«Ø¥ßµøµ¡±±¨îªº¤lÃþ TWinControl

«Ø¥ß«D¥iµø³¡¥ó¡@¡@ TComponent

¡@¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w

¡@

¡@¡@¤]¥i¥HÄ~©Ó«D³¡¥óªº¨ä¥¦ª«¥ó¡A¦ýµLªk¦bµ¡Åé³]­pµøµ¡¤¤¾Þ§@¥¦­Ì¡CDelphi¥]¬A³\¦h³oºØª«¥ó¡A¦pTINIFile¡BTFontµ¥¡C

¡@¡@1. ­×§ï¤w¦³±±¨î

¡@¡@«Ø¥ß³¡¥óªº³Ì²³æªº¤èªk¬OÄ~©Ó¤@­Ó¤w¦³ªº¡B¥i¥Îªº³¡¥ó¨Ã©w¨î¥¦¡C¥i¥H±qDelphi´£¨Ñªº¥ô¦ó³¡¥ó¤¤Ä~©Ó¡C¨Ò¦p¡A¥i¥H§ïÅܼзDZ±¨îªº¯Ê¬ÙÄÝ©Ê­È¡A¦pTButton¡C

¡@¡@¦³¨Ç±±¨î¡A¦pListbox©MGridµ¥¦³³\¦h¬Û¦PÅܼơA¦b³oºØ±¡ªp¤U¡ADelphi´£¨Ñ¤F©â¶H±±¨î«¬¦¡¡A±q¸Ó«¬¦¡¥Xµo¥i©w¨î¥X³\¦hªº«¬¦¡¡C¨Ò¦p¡A§A¤]³\·Q«Ø¥ßTListBoxªº¯S®í«¬¦¡¡A³oºØ³¡¥ó¨S¦³¼Ð·ÇTListBoxªº¬Y¨ÇÄÝ©Ê¡A§A¤£¯à±NÄݩʱq¤@­Ó¯ª¥ý«¬¦¡¤¤²¾¥h¡A¦]¦¹§A»Ý­n±q¤ñTListBox§ó°ª¼h¦¸ªº³¡¥óÄ~©Ó¡C¨Ò¦pTCustomListBox¡A¸Ó³¡¥ó¹ê²{¤FTCustomListBoxªº©Ò¦³Äݩʦý¨S¦³¤½§G(Publishing)¥¦­Ì¡C·í±q¤@­Ó½Ñ¦pTCustomListBoxªº©â¶HÃþ¤¤Ä~©Ó®É¡A§A¤½§G¨º¨Ç§A·Q¨Ï¤§¥iÀò±oªºÄݩʦÓÅý¨ä¥¦ªº«OÅ@°_¨Ó(protected)¡C

¡@¡@2. «Ø¥ß­ì©l±±¨î

¡@¡@¼Ð·Ç±±¨î¬O¦b°õ¦æ®É¥i¨£ªº¡C³o¨Ç¼Ð·Ç±±¨î³£±qTWinControl¡AÄ~©Ó¨Óªº¡A·í§A«Ø¥ß­ì©l±±¨î®É¡A§A¨Ï¥ÎTCustomControl§@¬°°_©lÂI¡C¼Ð·Ç±±¨îªºÃöÁä¯S©º¬O¥¦¨ã¦³µøµ¡¥y¬`¡A¥y¬`¦sÀɦbÄÝ©ÊHandle¤¤¡A³oºØ±±¨î¡G

¡@ ¡´ ¯à±µ¨ü¿é¤JµJÂI

¡@ ¡´ ¯à±N¥y¬`Âà°eµ¹Windows API¨ç¼Æ

¡@

¡@¡@¦pªG±±¨î¤£»Ý­n±µ¨ü¿é¤JµJÂI¡A§A¥i§â¥¦°µ¦¨¹Ï§Î±±¨î¡A³o¥i¯à¸`¬Ù¨t²Î¸ê·½¡C

¡@¡@3. «Ø¥ß¹Ï§Î±±¨î

¡@¡@¹Ï§Î±±¨î«D±`Ãþ¦ü©w¨îªº±±¨î¡A¦ý¥¦­Ì¨S¦³µøµ¡¥y¬`¡A¦]¦¹¤£¦û¦³¨t²Î¸ê·½¡C¹ï¹Ï§Î±±¨î³Ì¤jªº­­¨î¬O¥¦­Ì¤£¯à±µ¦¬¿é¤JµJÂI¡C§A»Ý­n±qTGraphicControlÄ~©Ó¡A¥¦´£¨Ñ¤F§@¹ÏªºCanvas©M¯à³B²zWM_PAINT°T®§¡A§A»Ý­nÂл\Paint¤èªk¡C

¡@¡@4. Ä~©Óµøµ¡±±¨î

Windows¤¤¦³¤@ºØºÙ¤§¬°µøµ¡Ãþªº·§©À¡AÃþ¦ü©ó­±¦Vª«¥óªºª«¥ó©MÃþªº·§©À¡Cµøµ¡Ãþ¬OWindows¤¤¬Û¦Pµøµ¡©Î±±¨îªº¤£¦P¹ê¨Ò¤§¶¡¦@¨Éªº¸ê°T¶°¦X¡C·í§A¥Î¶Ç²ÎªºWindowsµ{¦¡³]­p¤èªk«Ø¥ß¤@ºØ·sªº±±¨î¡A§A­n©w¸q¤@­Ó·sªºµøµ¡Ãþ¡A¨Ã¦bWindows¤¤µù¥U¡C§A¤]¯à°ò©ó¤w¦³ªºµøµ¡Ãþ«Ø¥ß·sªºµøµ¡Ãþ¡C³o´NºÙ¬°±qµøµ¡ÃþÄ~©Ó¡C¦b¶Ç²ÎªºWindowsµ{¦¡³]­p¤¤¡A¦pªG§A·Q«Ø¥ß¥Î¤á¤Æªº±±¨î¡A§A´N¥²¶·±N¨ä°µ¦b°ÊºAÁåµ²®wùØ¡A´N¶H¼Ð·ÇWindows±±¨î¡A¨Ã¥B´£¨Ñ¤@­Ó¦s¨ú¤¶­±¡C¨Ï¥ÎDelphi¡A§A¯à«Ø¥ß¤@­Ó³¡¥ó¥]¸Ë¦b¤w¦³µøµ¡Ãþ¤§¤W¡C¦pªG§A¤w¦³¥Î¤á¤Æ±±¨îªº®w¡A¨Ã·Q¨Ï¨ä°õ¦æ¦b§AªºDelphiÀ³¥Î¤¤¡A¨º§A´N¯à«Ø¥ß¤@­Ó¨Ï§A¯à¨Ï¥Î¤w¦³±±¨î©MÀò±o·sªº±±¨îªº³¡¥ó¡C¦b®w³æ¤¸StdCtrls¤¤¦³³\¦h³o¼Ëªº¨Ò¤l¡C

¡@¡@5. «Ø¥ß«D¥iµø¤Æªº³¡¥ó

¡@¡@©â¶Hª«¥ó«¬¦¡TComponent¬O©Ò¦³³¡¥óªº°ò¦«¬¦¡¡C±qTComponentª½±µÄ~©Ó©Ò«Ø¥ßªº³¡¥ó´N¬O«D¥iµø¤Æ³¡¥ó¡C§A½s¼gªº¤j¦h¼Æ³¡¥ó³£¬O¥iµø±±¨î¡CTComponent©w¸q¤F³¡¥ó¦bFormDesigner¤¤©Ò»Ýªº°ò¥»ªºÄÝ©Ê©M¤èªk¡C¦]¦¹¡A±qTComponentÄ~©Ó¨Óªº¥ô¦ó³¡¥ó³£¨ã³Æ³]­p¯à¤O¡C

¡@¡@«D¥iµø³¡¥ó¬Û·í¤Ö¡A¥D­n¥Î¥¦­Ì§@¬°«D¥iµøµ{¦¡³æ¤¸¡]¦p¸ê®Æ®w³æ¤¸¡^©M¹ï¸Ü¤è¶ôªº¤¶­±¡C

¡@

19.2.1.3 «Ø¥ß·s³¡¥óªº¤èªk

¡@

¡@¡@«Ø¥ß·s³¡¥óªº¤èªk¦³¨âºØ¡G

¡@¡@¡´ ¤â¤u«Ø¥ß³¡¥ó

¡@¡´ ¨Ï¥ÎComponent Expert

¡@

¡@¤@¥¹§¹¦¨«Ø¥ß«á¡A´N±o¨ì©Ò»Ýªº³Ì¤p¥\¯à³æ¦ìªº³¡¥ó¡A¨Ã¥i¥H¸Ë³]¦bComponent Palette¤W¡C¸Ë³]§¹«á¡A§A´N¯à±N·s³¡¥ó©ñ¸m¦bµ¡Åéµøµ¡¡A¨Ã¥i¦b³]­p¶¥¬q©M°õ¦æ¶¥¬q¶i¦æ´ú¸Õ¡C§AÁٯର³¡¥ó¼W¥[·sªº¯S©º¡B§ó·s¿ï¾ÜªO¡B­«·s´ú¸Õ¡C

¡@¡@1. ¤â¤u«Ø¥ß³¡¥ó

ÅãµM«Ø¥ß³¡¥ó³Ì®e©öªº¤èªk¬O¨Ï¥ÎComponent Expert¡CµM¦Ó¡A§A¤]¯à³q¹L¤â¤u¨Ó§¹¦¨¬Û¦P¨BÆJ¡C

¡@¡@¤â¤u«Ø¥ß³¡¥ó»Ý­n¤U¦C¤T¨B¡G

¡@ ¡´ «Ø¥ß·sªº®w³æ¤¸

¡@¡@¡´ Ä~©Ó¤@­Ó³¡¥óª«¥ó

¡@¡´ µù¥U³¡¥ó

¡@

¡@¡@Æ« «Ø¥ß·sªº®w³æ¤¸

¡@¡@®w³æ¤¸¬OObject Pascal¥N½Xªº¿W¥ß½sĶ³æ¦ì¡C¨C¤@­Óµ¡Å馳¦Û¤vªº®w³æ¤¸¡C¤j¦h¼Æ³¡¥ó¡]¦bÅÞ¿è¤W¬O¤@¸s¸s²Õ¡^¤]¦³¦Û¤vªº®w³æ¤¸¡C

¡@¡@·í§A«Ø¥ß³¡¥ó®É¡A§A¥i¥H¬°³¡¥ó«Ø¥ß¤@­Ó®w³æ¤¸¡A¤]¥i±N·sªº³¡¥ó¥[¦b¤w¦³ªº®w³æ¤¸¤¤¡C

¡@Æ¡ ¬°³¡¥ó«Ø¥ß®w³æ¤¸¡A¥i¿ï¾ÜFile/New... ¡A¦bNew Items¹ï¸Ü¤è¶ô¤¤¿ï¾ÜUnit¡ADelphi±N«Ø¥ß¤@­Ó·s¤å¥ó¡A¨Ã¦b¥N½X½s¿è¾¹¤¤¥´¶}¥¦

¡@Æ¢ ¦b¤w¦³®w³æ¤¸¤¤¼W¥[³¡¥ó¡A¥u¶·¿ï¾ÜFile/OPen¬°¤w¦³®w³æ¤¸¿ï¾Ü·½¥N½X¡C¦b¸Ó®w³æ¤¸¤¤¥u¯à¥]§t³¡¥ó¥N½X¡A¦pªG¸Ó®w³æ¤¸¤¤¦³¤@­Óµ¡Åé¡A±N²£¥Í¿ù»~

¡@

¡@¡@Ƭ Ä~©Ó¤@­Ó³¡¥óª«¥ó

¡@¡@¨C­Ó³¡¥ó³£¬OTComponentªº«á¥Nª«¥ó¡C¤]¥i±qTControl¡BTGraphicControlµ¥Ä~©Ó¡C

¡@¡@¬°Ä~©Ó¤@­Ó³¡¥óª«¥ó¡A­n±Nª«¥ó«¬¦¡Án©ú¥[¦b®w³æ¤¸ªºinterface³¡¤À¡C

¡@¡@¨Ò¦p¡A«Ø¥ß¤@­Ó³Ì²³æªº±qTComponentª½±µÄ~©Ó«D¥iµøªº³¡¥ó¡A±N¤U¦Cªº«¬¦¡©w¸q¥[¦b³¡¥ó³æ¤¸ªºinterface³¡¤À¡C

¡@

¡@¡@type

TNewComponent=class(TComponent)

¡K¡K

end;

¡@

¡@²{¦b§A¯àµù¥UTNewComponent¡C¦ý¬O·s³¡¥ó»PTComponent¨S¤°»ò¤£¦P¡A§A¥u«Ø¥ß¤F¦Û¤v³¡¥óªº®Ø¬[¡C

¡@¡@Æ­ µù¥U³¡¥ó

¡@¡@µù¥U³¡¥ó¬O¬°¤F§i¶DDelphi¤°»ò³¡¥ó³Q¥[¤J³¡¥ó®w©M¥[¤JComponent Paletteªº­þ¤@­¶¡C

¡@¡@¬°¤Fµù¥U¤@­Ó³¡¥ó¡G

¡@¡@Æ¡ ¦b³¡¥ó³æ¤¸ªºinterface³¡¤À¼W¥[¤@­ÓRegister¹Lµ{¡CRegister¤£±a¥ô¦ó°Ñ¼Æ¡A¦]¦¹Án©ú«Ü²³æ¡G

¡@

procedure Register;

¡@

¦pªG§A¦b¤w¦³³¡¥óªº®w³æ¤¸¤¤¼W¥[³¡¥ó¡A¦]¬°¤w¦³Register ¹Lµ{¡A¦]¦¹¤£¶·­n­×§ïÁn©ú¡C

¡@¡@Æ¢ ¦b®w³æ¦ìªºimplementation³¡¥ó½s¼gRegister¹Lµ{¬°¨C¤@­Ó§A·Qµù¥Uªº³¡¥ó©I¥s¹Lµ{RegisterComponents¡A¹Lµ{RegisterComponents±a¨â­Ó°Ñ¼Æ¡GComponent Paletteªº­¶¦W©M³¡¥ó«¬¦¡¶°¡C¨Ò¦p¡Aµù¥U¦W¬°TNewComponentªº³¡¥ó¡A¨Ã±N¨ä¸m©óComponent PaletteªºSamples­¶¡A¦bµ{¦¡¤¤¨Ï¥Î¤U¦C¹Lµ{¡G

¡@

procedure Register;

begin

RegisterComponents('Samples', [TNewComponent]);

end;

¡@

¡@¤@¥¹µù¥U§¹²¦¡ADelphi¦Û°Ê±N³¡¥ó¹Ï¥ÜÅã¥Ü¦bComponent Palette¤W¡C

¡@¡@2. ¨Ï¥ÎComponent Expert¡]³¡¥ó±M®a¡^

¡@¡@§A¯à¨Ï¥ÎComponent Expert«Ø¥ß·s³¡¥ó¡C¨Ï¥ÎComponent Expert²¤Æ¤F«Ø¥ß·s³¡¥ó³Ìªì¶¥¬qªº¤u§@¡A¦]¬°§A¥u»Ý´y­z¤T¥ó¨Æ¡G

¡@ ¡´ ·s³¡¥óªº¦W¦r

¡@ ¡´ ¯ª¥ý«¬¦¡

¡@ ¡´ ·s³¡¥ó­n¥[¤JªºComponent Palette­¶¦W

¡@

¡@ Component Expert°õ¦æ¤F¤â¤u¤è¦¡ªº¬Û¦P¤u§@¡G

¡@¡@¡´ «Ø¥ß·sªº®w³æ¤¸

¡@¡´ Ä~©Ó±o¨ì·s³¡¥óª«¥ó

¡@ ¡´ µù¥U³¡¥ó

¡@

¡@¡@¦ýComponent Expert¤£¯à¦b¤w¦³³æ¤¸¤¤¼W¥[³¡¥ó¡C

¥i¿ï¾ÜFile/New... ¡A¦bNew Items¹ï¸Ü¤è¶ô¤¤¿ï¾ÜComponent¡A´N¥´¶}Component Expert¹ï¸Ü¤è¶ô¡C¡@

¡@¡@¶ñ§¹Component Expert¹ï¸Ü¤è¶ôªº¨C¤@­ÓÄæ¦ì«á¡A¿ï¾ÜOK¡CDelphi«Ø¥ß¥]¬A·s³¡¥ó©MRegister¹Lµ{ªº®w³æ¤¸¡A¨Ã¦Û°Ê¼W¥[uses»y¥y¡C

¡@¡@§AÀ³¸Ó¥ß¨è¦sÀÉ®w³æ¤¸¡A¨Ãµ¹¤©¨ä¦³·N¸qªº¦W¦r¡C

¡@

19.2.1.4. ´ú¸Õ¥¼¸Ë³]ªº³¡¥ó

¡@

¡@¡@¦b±N·s³¡¥ó¸Ë³]¦bComponent Palette¤§«e´N¯à´ú¸Õ³¡¥ó°õ¦æ®Éªº°Ê§@¡C³o¹ï©ó°»¿ù·s³¡¥ó¯S§O¦³¥Î¡A¦Ó¥BÁÙ¯à¥Î¦P¼Ëªº§Þ³N´ú¸Õ¥ô·N³¡¥ó¡AµL½×¸Ó³¡¥ó¬O§_¥X²{¦bComponent Palette¤W¡C

¡@ ±q¥»½è¤W»¡¡A§A³q¹L¼Ò¥é¥Î¤á±N³¡¥ó©ñ¸m¦bµ¡Å餤ªºDelphiªº°Ê§@¨Ó´ú¸Õ¤@­Ó¥¼¸Ë³]ªº³¡¥ó¡C

¡@¡@¥i«ö¤U¦C¨BÆJ¨Ó´ú¸Õ¥¼¸Ë³]ªº³¡¥ó

¡@¡@1. ¦bµ¡Åé³æ¤¸ªºuses»y¥y¤¤¥[¤J³¡¥ó©Ò¦b³æ¤¸ªº¦W¦r

2. ¦bµ¡Å餤¼W¥[¤@­Óª«¥óÄæ¦ì¨Óªí¥Ü³¡¥ó

¡@¡@³o¬O¦Û¤v¼W¥[³¡¥ó©MDelphi¼W¥[³¡¥óªº¤èªkªº¥D­n¤£¦PÂI¡C

¡@¡@§A±Nª«¥óÄæ¦ì¥[¦bµ¡Å髬¦¡Án©ú©³³¡ªºpublic³¡¤À¡CDelphi«h·|±Nª«¥óÄæ¦ì¥[¦b©³³¡Án©úªº¤W­±¡C

¡@¡@§A¤£¯à±NÄæ¦ì¥[¦bDelphiºÞ²zªºµ¡Å髬¦¡ªºÁn©úªº¤W³¡¡C¦b³o¤@³¡¤ÀÁn©úªºª«¥óÄæ¦ì±N¬ÛÀ³¦b¦sÀx¦bDFM¤å¥ó¤¤¡C¼W¥[¤£¦bµ¡Å餤¦s¦bªº³¡¥ó¦W±N²£¥ÍDFM¤å¥óµL®Äªº¿ù»~¡C

¡@3. ªþ¤Wµ¡Å骺OnCreate¨Æ¥ó³B²z¹Lµ{

¡@¡@4. ¦bµ¡Å骺OnCreate³B²z¹Lµ{¤¤ºc³y¸Ó³¡¥ó

¡@¡@·í©I¥s³¡¥óªººc³y¹Lµ{®É¡A¥²¶·¶Ç»¼Owner°Ñ¼Æ¡]¥ÑOwner­t³dªRºc¸Ó³¡¥ó¡^¤@¯ë»¡¨ÓÁ`¬O±NSelf§@¬°Ownerªº¶Ç¤J°Ñ¼Æ¡C¦bOnCreate¤¤¡ASelf¬O«üµ¡Åé¡C

¡@ 5. µ¹ComponentªºParentÄݩʽá­È

¡@¡@³]©wParentÄÝ©Ê©¹©¹¬Oºc³y³¡¥ó«á­n°µªº²Ä¤@¥ó¨Æ®É¡CParent¦b§Î¦¡¤W¥]§t³¡¥ó¡A¤@¯ë¨Ó»¡Parent¬Oµ¡Åé©ÎªÌGoupBox¡BPanel¡C³q±`µ¹Parent½á»PSelf¡A§Yµ¡Åé¡C¦b³]©w³¡¥óªº¨ä¥¦Äݩʤ§«e³Ì¦n¥ýµ¹Parent½á­È¡C

¡@ 6. «ö»Ý­nµ¹³¡¥óªº¨ä¥¦Äݩʽá­È

¡@¡@°²³]§A·Q´ú¸Õ¦W¬°TNewComponent«¬¦¡ªº·s³¡¥ó¡A®w³æ¤¸¦W¬°NewTest¡Cµ¡Åé®w³æ¤¸À³¸Ó¬O³o¼Ëªº¡F

¡@

unit Unitl;

¡@

interface

¡@

uses SysUtils, Windows, Messages, Classes, Grophics, Controls, Forms, Dialogs,

Newtest;

type

Tforml = class(TForm)

procedure FormCreate(Sender: TObject);

private

{ private¥Ó ©ú }

public

{ public¥Ó ©ú }

NewComponent: TNewComponent;

end;

¡@

var

Forml: TForml;

¡@

implementation

¡@

{$R *.DFM }

¡@

procedure TForml.FormCreate ( Sender: TObject ) ;

begin

NewComponent := TNewComponent.Create ( Self );

NewCompanent.Parent := Self;

NewCompanent.Left := 12;

end;

¡@

end.

¡@

19.2.1.5 ½s¼g³¡¥óªº­±¦Vª«¥ó§Þ³N

¡@

¡@¡@³¡¥ó¨Ï¥ÎªÌ¦bDelphiÀô¹Ò¤¤¶}µo¡A±N¹J¨ì¦b¥]§t¼Æ¾Ú©M¤èªkªºª«¥ó¡C¥L­Ì±N¦b³]­p¶¥¬q©M°õ¦æ¶¥¬q¾Þ§@ª«¥ó¡A¦Ó½s¼g³¡¥ó±N¤ñ¥L­Ì»Ý­n§ó¦hªºÃö©óª«¥óªºª¾ÃÑ¡A¦]¦¹¡A§AÀ³·í¼ô±xDelphiªº­±¦Vª«¥óªºµ{¦¡³]­p¡C

¡@¡@1. «Ø¥ß³¡¥ó

¡@¡@³¡¥ó¥Î¤á©M³¡¥ó½s¼gªÌ³Ì°ò¥»ªº°Ï§O¬O¥Î¤á³B²zª«¥óªº¹ê¨Ò¡A¦Ó½s¼gªÌ«Ø¥ß·sªºª«¥ó«¬¦¡¡C³o­Ó·§©À¬O­±¦Vª«¥óµ{¦¡³]­pªº°ò¦¡C¨Ò¦p¡A¥Î¤á«Ø¥ß¤F¤@­Ó¥]§t¨â­Ó«ö¶sªºµ¡Åé¡A¤@­Ó¼Ð¬°OK¡A¥t¤@­Ó¼Ð¬°Cancel¡A¨C­Ó³£¬OTButtonªº¹ê¨Ò¡A³q¹Lµ¹Text¡Bdefault©MCancelµ¥Äݩʽᤣ¦Pªº­È¡Aµ¹OnClick¨Æ¥ó½á¤©¤£¦Pªº³B²z¹Lµ{¡A¥Î¤á²£¥Í¤F¨â­Ó¤£¦Pªº¹ê¨Ò¡C

«Ø¥ß·s³¡¥ó¤@¯ë¦³¨â­Ó²z¥Ñ

¡@ ¡´ §ïÅÜ«¬¦¡ªº¯Ê¬Ù±¡ªp¡AÁקK¤Ï´_

¡@ ¡´ ¬°³¡¥ó¼W¥[·sªº¥\¯à

¡@

¡@¡@¥Øªº³£¬O¬°¤F«Ø¥ß¥i­«¥Îª«¥ó¡C¦pªG±q±N¨Ó­«¥Îªº¨¤«×¹w¥ý­p¹º©M³]­p¡A¯à¸`¬Ù¤@¤j°ï±N¨Óªº¤u§@¡C

¡@¡@¦bµ{¦¡³]­p¤¤¡AÁקK¤£¥²­nªº­«½Æ¬O«Ü­«­nªº¡C¦pªGµo²{¦b¥N½X¤¤¤@¹M¤S¤@¹M­«¼g¬Û¦Pªº¦æ¡A´NÀ³·í¦Ò¼{±N¥N½X©ñ¦b¤l¹Lµ{©Î¨ç¼Æ¤¤¡A©Î°®¯Ü«Ø¥ß¤@­Ó¨ç¼Æ®w¡C

¡@¡@³]­p³¡¥ó¤]¬O³o­Ó¹D²z¡A¦pªGÁ`¬O§ïÅܬۦPªºÄݩʩάۦPªº¤èªk©I¥s¡A¨ºÀ³«Ø¥ß·s³¡¥ó¡C

¡@¡@«Ø¥ß·s³¡¥óªº¥t¤@­Ó­ì¦]¬O·Qµ¹¤w¦³ªº³¡¥ó¼W¥[·sªº¥\¯à¡C§A¥i¥H±q¤w¦³³¡¥óª½±µÄ~©Ó¡]¦pListBox¡^©Î±q©â¶Hª«¥ó«¬¦¡Ä~©Ó¡]¦pTComponent¡ATControl¡^¡C§AÁöµM¯à¬°³¡¥ó¼W¥[·s¥\¯à¡A¦ý¤£¯à±N­ì¦³³¡¥óªºÄݩʲ¾¨«¡A¦pªG­n³o¼Ë°µªº¸Ü¡A´N±q¸Ó¤÷ª«¥óªº¯ª¥ýª«¥óÄ~©Ó¡C

¡@¡@2. ±±¨î³¡¥óªº³X¦V

¡@¡@Object Pascal»y¨¥¬°ª«¥óªº¦U³¡¤À´£¨Ñ¤F¥|­Ó¯Å§Oªº¦s¨ú±±¨î¡C¦s¨ú±±¨îÅý§A©w¸q¤°»ò¥N½X¯à¦s¨úª«¥óªº­þ¤@³¡¤À¡C³q¹L´y­z¦s¨ú¯Å§O¡A©w¸q¤F³¡¥óªº±µ¤f¡C¦pªG¦X²z¦w±Æ±µ¤f¡A±N´£°ª³¡¥óªº¥i¥Î©Ê©M­«¥Î©Ê¡C

¡@¡@°£«D¯S¦a´y­z¡A§_«h¥[¦bª«¥óùتºÄæ¦ì¡B¤èªk©MÄݩʪº±±¨î¯Å§O¬Opublished¡A³o·N¨ýµÛ¥ô¦ó¥N½X¥i¥H¦s¨ú¾ã­Óª«¥ó¡C

¡@¡@¤Uªí¦C¥X¦U«OÅ@¯Å§O¡G

¡@

¡@

ªí19.2 ª«¥ó©w¸q¤¤ªº«OÅ@¯Å§O

¡@ ¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w

¡@«OÅ@¯Å¡@¡@¡@¡@¡@¡@ ¥Î³B

¡@¡@ ¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X

private ÁôÂùê²{²Ó¸`

protected¡@¡@¡@¡@ ©w¸q¶}µoªÌ±µ¤f

public ©w¸q°õ¦æ®É±µ¤f

published ©w¸q³]­p®É±µ¤f

¡@ ¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w

¡@

©Ò¦³ªº«OÅ@¯Å³£¦b³æ¤¸¯Å°_§@¥Î¡C¦pªGª«¥óªº¬Y¤@³¡¤À¦b®w³æ¤¸¤¤ªº¤@³B¥i³X¦V¡A«h¦b¸Ó®w³æ¤¸¥ô·N³B³£¥i³X¦V¡C

¡@¡@Æ« ÁôÂùê²{²Ó¸`

¡@¡@¦pªGª«¥óªº¬Y³¡¤À³QÁn©ú¬°private¡A±N¨Ï¨ä¥¦®w³æ¤¸ªº¥N½XµLªk¦s¨ú¸Ó³¡¤À¡A¦ý¥]§tÁn©úªº®w³æ¤¸¤¤ªº¥N½X¥i¥H¦s¨ú¡A´N¦n¶H¦s¨úpublic¤@¼Ë¡A³o¬O©MC++¤£¦Pªº¡C

¡@¡@ª«¥ó«¬¦¡ªºprivate³¡¤À¹ï©óÁôÂøԲӹê²{¬O«Ü­«­nªº¡C¬JµMª«¥óªº¥Î¤á¤£¯à¦s¨ú¡Aprivate³¡¤À¡A§A´N¯à§ïÅܪ«¥óªº¹ê²{¦Ó¤£¼vÅT¥Î¤á¥N½X¡C

¡@¡@¤U­±¬O¤@­Óºt¥Ü¨¾¤î¥Î¤á¦s¨úprivateÄæ¦ìªº¨Ò¤l¡G

¡@

unit HideInfo;

¡@

interface

¡@

uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms,

Dialogs;

¡@

type

TSecretForm = class(TForm) { Án©ú·sªºµ¡Åéµøµ¡ }

procedure FormCreate(Sender: TObject);

private { declare private part }

FSecretCode: Integer; { Án©úprivateÄæ¦ì }

end;

¡@

var

SecretForm: TSecretForm;

¡@

implementation

¡@

procedure TSecretForm.FormCreate(Sender: TObject);

begin

FSecretCode := 42;

end;

¡@

end.

¡@

unit TestHide; { ³o¬O¥Dµ¡Åé®w³æ¤¸ }

¡@

interface

¡@

uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms,

Dialogs, HideInfo; { ¨Ï¥Î±aTSecretFormÁn©úªº®w³æ¤¸ }

type

TTestForm = class(TForm)

procedure FormCreate(Sender: TObject);

end;

¡@

var

TestForm: TTestForm;

¡@

implementation

¡@

procedure TTestForm.FormCreate(Sender: TObject);

begin

SecretForm.FSecretCode := 13; {½sĶ¹Lµ{±N¥H"Field identifier expected"¿ù»~°±¤î}

end;

¡@

end.

¡@

¡@¡@Ƭ ©w¸q¶}µoªÌ±µ¤f

¡@¡@±Nª«¥ó¬Y³¡¤ÀÁn©ú¬°protected¡A¥i¨Ï¦b¥]§t¸Ó³¡¥óÁn©úªº®w³æ¤¸¤§¥~ªº¥N½XµLªk¦s¨ú¡A´N¶Hprivate³¡¤À¡Cprotected³¡¤Àªº¤£¦P¤§³B¬O¡A¬Yª«¥óÄ~©Ó¸Óª«¥ó¡A«h¥]§t·sª«¥óªº®w³æ¤¸¥i¥H¦s¨úprotected³¡¤À¡A§A¯à¨Ï¥ÎprotectedÁn©ú©w¸q¶}µoªÌªº±µ¤f¡C¤]´N¬O»¡¡Cª«¥óªº¥Î¤á¤£¯à³X¦Vprotected³¡¤À¡A¦ý¶}µoªÌ³q¹LÄ~©Ó´N¥i¯à°µ¨ì¡A³o·N¨ýµÛ§A¯à³q¹Lprotected³¡¤Àªº¥i¦s¨ú©Ê¨Ï³¡¥ó½s¼gªÌ§ïÅܪ«¥ó¤u§@¤è¦¡¡A¦Ó¤S¤£¨Ï¥Î¤á¨£¨ì³o¨Ç²Ó¸`¡C

¡@¡@Æ­ ©w¸q°õ¦æ®É±µ¤f

¡@¡@±Nª«¥óªº¬Y¤@³¡¤À©w¸q¬°public¥i¨Ï¥ô¦ó¥N½X¦s¨ú¸Ó³¡¤À¡C¦pªG§A¨S¦³¹ïÄæ¦ì¤èªk©ÎÄÝ©Ê¥[¥Hprivate¡Bprotected¡Bpublicªº¦s¨ú±±¨î´y­z¡C¨º»ò¸Ó³¡¤À´N¬Opublished¡C

¡@¡@¦]¬°ª«¥óªºpublic³¡¤À¥i¦b°õ¦æ®É¬°¥ô¦ó¥N½X¦s¨ú¡A¦]¦¹ª«¥óªºpublic³¡¤À³QºÙ¬°°õ¦æ±µ¤f¡C°õ¦æ®É±µ¤f¹ï¨º¨Ç¦b³]­p®É¨S¦³·N¸qªº¶µ¥Ø¡A¦p¨Ì¾a°õ¦æ®É¸ê°Tªº©M°ßŪªºÄÝ©Ê¡A¬O«Ü¦³¥Îªº¡C¨º¨Ç³]­p¥Î¨Ó¨Ñ¥Î¤á©I¥sªº¤èªk¤]À³©ñ¦b°õ¦æ®É±µ¤f¤¤¡C

¡@¡@¤U¨Ò¬O¤@­ÓÅã¥Ü¨â­Ó©w¸q¦b°õ¦æ®É±µ¤fªº°ßŪÄݩʪº¨Ò¤l¡G

¡@

type

TSampleComponent = class(TComponent)

private

FTempCelsius: Integer; { ¨ãÅé¹ê²{¬Oprivate }

function GetTempFahrenheit: Integer;

public

property TempCelsius: Integer read FTempCelsius; { ÄݩʬOpublic }

property TempFahrenheit: Integer read GetTempFahrenheit;

end;

¡@

function GetTempFahrenheit: Integer;

begin

Result := FTempCelsius * 9 div 5 + 32;

end;

¡@

¡@¡@¬JµM¥Î¤á¦b³]­p®É¤£¯à§ïÅÜpublic³¡¤ÀªºÄݩʪº­È¡A¨º»ò¸ÓÃþÄÝ©Ê´N¤£¯à¥X²{¦bObject Inspectorµøµ¡¤¤¡C

¡@¡@Æ® ©w¸q³]­p®É±µ¤f

¡@¡@±Nª«¥óªº¬Y³¡¤ÀÁn©ú¬°published¡A¸Ó³¡¤À¤]§Y¬°public¥B²£¥Í°õ¦æ®É«¬¦¡¸ê°T¡C¦ý¥u¦³published³¡¤À©w¸qªºÄÝ©Ê¥iÅã¥Ü¦bObject Inspectorµøµ¡¤¤¡Cª«¥óªºpublished³¡¤À©w¸q¤Fª«¥óªº³]­p®É±µ¤f¡C³]­p®É±µ¤f¥]§t¤F¥Î¤á·Q¦b³]­p®É©w¨îªº¤@¤Á¯S©º¡C

¡@¡@¤U­±¬O¤@­ÓpublishedÄݩʪº¨Ò¤l¡A¦]¬°¥¦¬Opublished¡A¦]¦¹¥i¥H¥X²{¦bObject Inspectorµøµ¡¡G

¡@

TSampleComponent = class(TComponent)

private

FTemperature: Integer; { ¨ãÅé¹ê²{¬O private }

published

property Temperature: Integer read FTemperature write FTemperature; { ¥i¼gªº }

end;

¡@

¡@¡@3. ¬£°e¤èªk

¡@¡@¬£°e(Dispatch)³o­Ó·§©À¬O¥Î¨Ó´y­z·í©I¥s¤èªk®É¡A§AªºÀ³¥Îµ{¦¡«ç¼Ë¨M©w°õ¦æ¤°»ò¼Ëªº¥N½X¡A·í§A½s¼g©I¥sª«¥óªº¥N½X®É¡A¬Ý¤W¥h»P¥ô¦ó¨ä¥¦¹Lµ{©Î¨ç¼Æ©I¥s¨S¤°»ò¤£¦P¡A¦ýª«¥ó¦³¤TºØ¤£¦Pªº¬£°e¤èªkªº¤è¦¡¡C

¡@¡@³o¤TºØ¬£°e¤èªkªº«¬¦¡¬O¡G

¡@ ¡´ ÀRºAªº

¡@ ¡´ µêÀÀªº

¡@ ¡´ °ÊºAªº

¡@

¡@¡@µê¤èªk©M°ÊºA¤èªkªº¤u§@¤è¦¡¬Û¦P¡A¦ý¹ê²{¤£¦P¡C¨âªÌ³£»PÀRºA¤èªk¬Û·í¤£¦P¡C²z¸Ñ¦UºØ¤£¦Pªº¬£°e¤èªk¹ï«Ø¥ß³¡¥ó¬O«Ü¦³¥Îªº¡C

¡@Æ« ÀRºA¤èªk¡G

¡@¡@¦pªG¨S¦³¯S®íÁn©ú¡A©Ò¦³ªºª«¥ó¤èªk³£¬OÀRºAªº.¡CÀRºA¤èªkªº¤u§@¤è¦¡¥¿¦p¤@¯ëªº¹Lµ{©M¨ç¼Æ©I¥s¡C¦b½sĶ®É¡A½sĶ¾¹¨M©w¤èªk¦ì§}¡A¨Ã»P¤èªkÁp±µ¡C

¡@¡@ÀRºA¤èªkªº°ò¥»¦n³B¬O¬£°e¬Û·í§Ö¡C¦]¬°¥Ñ½sĶ¾¹¨M©w¤èªkªºÁ{®É¦ì§}¡A¨Ãª½±µ»P¤èªk¬ÛÁp¡Cµê¤èªk©M°ÊºA¤èªk«h¬Û¤Ï¡A¥Î¶¡±µªº¤èªk¦b°õ¦æ®É§ä¨ì¤èªkªº¦ì§}¡A³o±Nªá¸ûªøªº®É¶¡¡C

¡@¡@ÀRºA¤èªkªº¥t¤@­Ó¤£¦P¤§³B¬O·í³Q¥t¤@«¬¦¡Ä~©Ó®É¤£°µ¥ô¦ó§ïÅÜ¡A³o´N¬O»¡¦pªG§AÁn©ú¤F¤@­Ó¥]§tÀRºA¤èªkªºª«¥ó¡AµM«á±q¸Óª«¥óÄ~©Ó·sªºª«¥ó¡A«h¸Ó«á¥Nª«¥ó¨É¦³»P¯ª¥ýª«¥ó¬Û¦Pªº¤èªk¦ì§}¡A¦]¦¹¡A¤£ºÞ¹ê»Úª«¥ó¬O½Ö¡AÀRºA¤èªk³£§¹¦¨¬Û¦Pªº¤u§@¡C

¡@¡@§A¤£¯àÂл\ÀRºA¤èªk¡A¦b«á¥Nª«¥ó¤¤Án©ú¬Û¦P¼ÐñªºÀRºA¤èªk³£±N¨ú¥N¯ª¥ýª«¥ó¤èªk¡C

¡@¡@¦b¤U¦C¥N½X¤¤¡A²Ä¤@­Ó³¡¥óÁn©ú¤F¨âÀRºA¤èªk¡A²Ä¤G­Ó³¡¥ó¡AÁn©ú¤F¬Û¦P¦W¦rªº¤èªk¨ú¥N²Ä¤@­Ó³¡¥óªº¤èªk¡C

¡@

type

TFirstComponent = class(TComponent)

procedure Move;

procedure Flash;

end;

¡@

TSecondComponent = class(TFirstComponent)

procedure Move; { ¾¨ºÞ¦³¬Û¦PªºÁn©ú¡A¦ý»PÄ~©Óªº¤èªk¤£¦P }

function Flash(HowOften: Integer): Integer; { ¦PMove¤èªk¤@¼Ë }

end;

¡@

¡@¡@Ƭ µê¤èªk

¡@¡@©I¥sµê¤èªk»P©I¥s¥ô¦ó¨ä¥¦¤èªk¤@¼Ë¡A¦ý¬£°e¾÷¨î¦³©Ò¤£¦P¡Cµê¤èªk¤ä´©¦b«á¥Nª«¥ó¤¤­«©w¸q¤èªk¡A¦ý©I¥s¤èªk§¹¥þ¬Û¦P¡Aµê¤èªkªº¦ì§}¤£¬O¦b½sĶ®É¨M©w¡A¦Ó¬O¦b°õ¦æ®É¤~§ä¨ì¤èªkªº¦ì§}¡C

¡@¡@¬°Án©ú¤@­Ó·sªº¤èªk¡A¦b¤èªkÁn©ú«á¼W¥[virtual«ü¥O¡C¤èªkÁn©ú¤¤ªºvirtual«ü¥O¦bª«¥óµêÀÀ¤èªkªí¡]VMT¡^¤¤«Ø¥ß¤@­Ó¤J¤f¡A¸ÓµêÀÀ¤èªkªí¦sÀɪ«¥óÃþ©Ò¦³µê¦³ÀÀ¤èªkªº¦ì§}¡C

¡@¡@·í§A±q¤w¦³ª«¥óÀò±o·sªºª«¥ó¡A·sª«¥ó±o¨ì¦Û¤vªºVMT¡A¥¦¥]§t©Ò¦³ªº¯ª¥ýª«¥óªºVMT¤J¤f¡A¦A¼W¥[¦b·sª«¥ó¤¤Án©úªºµêÀÀ¤èªk¡C«á¥Nª«¥ó¯àÂл\¥ô¦óÄ~©ÓªºµêÀÀ¤èªk¡C

¡@¡@Âл\¤@­Ó¤èªk¬OÂX®i¥¦¡A¦Ó¤£¬O¨ú¥N¥¦¡C«á¥Nª«¥ó¥i¥H­«©w¸q©M­«¹ê²{¦b¯ª¥ýª«¥ó¤¤Án©úªº¥ô¦ó¤èªk¡C¦ýµLªkÂл\¤@­ÓÀRºA¤èªk¡CÂл\¤@­Ó¤èªk¡A­n¦b¤èªkÁn©úªºµ²§À¼W¥[override«ü¥O¡A¦b¤U¦C±¡ªp¡A¨Ï¥Îoverride±N²£¥Í½sĶ¿ù»~¡G

¡@ ¡´ ¯ª¥ýª«¥ó¤¤¤£¦s¦b¸Ó¤èªk

¡@ ¡´ ¯ª¥ýª«¥ó¤¤¬Û¦P¤èªk¬OÀRºAªº

¡@ ¡´ Án©ú»P¯ª¥ýª«¥óªº¡]¦p¦W¦r¡B°Ñ¼Æ¡^¤£¤Ç°t

¡@

¡@¡@¤U¦C¥N½Xºt¥Ü¨â­Ó²³æªº³¡¥ó¡C²Ä¤@­Ó³¡¥óÁn©ú¤F¤T­Ó¤èªk¡A¨C¤@­Ó¨Ï¥Î¤£¦Pªº¬£°e¤è¦¡¡A²Ä¤G­Ó³¡¥óÄ~©Ó²Ä¤@­Ó³¡¥ó¡A¨ú¥N¤FÀRºA¤èªk¡AÂл\¤FµêÀÀ¤èªk©M°ÊºA¤èªk¡C

¡@

type

TFirstComponent = class(TCustomControl)

procedure Move; { ÀRºA¤èªk }

procedure Flash; virtual; { µê ¤è ªk }

procedure Beep; dynamic; { °ÊºAµêÀÀ¤èªk }

end;

¡@

TSecondComponent = class(TFirstComponent)

procedure Move; { Án©ú¤F·sªº¤èªk }

procedure Flash; override; { Âл\Ä~©Óªº¤èªk }

procedure Beep; override; { Âл\Ä~©Óªº¤èªk }

end;

¡@

¡@¡@Æ­ °ÊºA¤èªk

¡@¡@°ÊºA¤èªk¬Oµy·L¤£¦P©óµêÀÀ¤èªkªº¬£°e¾÷¨î¡C¦]¬°°ÊºA¤èªk¨S¦³ª«¥óVMTªº¤J¤f¡A¥¦­Ì´î¤Ö¤Fª«¥ó®ø¯Óªº°O¾ÐÅé¼Æ¶q¡C¬£°e°ÊºA¤èªk¤ñ¬£°e¤@¯ëªºµêÀÀ¤èªkºC¡C¦]¦¹¡A¦pªG¤èªk©I¥s«ÜÀWÁc¡A§A³Ì¦n±N¨ä©w¸q¬°µê¤èªk¡C

¡@¡@©w¸q°ÊºA¤èªk®É¡A¦b¤èªkÁn©ú«á­±¼W¥[dynamic«ü¥O¡C

¡@¡@»Pª«¥óµêÀÀ¤èªk«Ø¥ß¤J¤f¤£¦Pªº¬Odynamicµ¹¤èªk½á¤F¤@¼Æ¦r¡A¨Ã¦sÀx¬ÛÀ³¥N½Xªº¦ì§}¡A°ÊºA¤èªk²M³æ¥u¥]§t·s¥[ªº©MÂл\ªº¤èªk¤J¤f¡AÄ~©Óªº°ÊºA¤èªkªº¬£°e¬O³q¹L§ä¨ì¨C¤@­Ó¯ª¥ýªº°ÊºA¤èªk²M³æ¡]«ö»PÄ~©Ó¡§¤ÏÂ઺¶¶§Ç¡¨¡^¡A¦]¦¹°ÊºA¤èªk¥Î©ó³B²z°T®§¡]¥]¬AWindows°T®§¡^¡C¹ê»Ú¤W¡A°T®§³B²z¹Lµ{ªº¬£°e¤è¦¡»P°ÊºA¤èªk¬Û¦P¡A¥u¬O©w¸q¤èªk¤£¦P

¡@¡@Æ® ª«¥ó»P«ü¼Ð

¡@¡@¦bObject Pascal¤¤¡Aª«¥ó¹ê»Ú¤W¬O«ü¼Ð¡C½sĶ¾¹¦Û°Ê¦a¬°µ{¦¡«Ø¥ßª«¥ó«ü¼Ð¡A¦]¦¹¦b¤j¦h¼Æ±¡ªp¤U¡A§A¤£»Ý­n¦Ò¼{ª«¥ó¬O«ü¼Ð¡C¦ý·í§A±Nª«¥ó§@¬°°Ñ¼Æ¶Ç»¼®É¡A³o´N«Ü­«­n¤F¡C³q±`¡A¶Ç»¼ª«¥ó¬O«ö­È¦Ó«D«ö¤Þ¥Î¡A¤]´N¬O»¡¡A±Nª«¥óÁn©ú¬°¹Lµ{ªº°Ñ¼Æ®É¡A§A¤£¯à¥Îvar°Ñ¼Æ¡A²z¥Ñ¬Oª«¥ó¤w¸g¬O«ü¼Ð¤Þ¥Î¤F¡C


«á¤@­¶
«e¤@­¶
¦^¥Ø¿ý
¦^­º­¶