«á¤@¶ «e¤@¶ ¦^¥Ø¿ý ¦^º¶ |
3. «Ø¥ß·sªº°T®§³B²z¤èªk ¦]¬°Delphi¥u¬°¤j¦h¼Æ´¶³qWindows°T®§´£¨Ñ¤F³B²z¤èªk¡A©Ò¥H·í§A©w¸q¦Û¤vªº°T®§®É¡A´Nn«Ø¥ß·sªº°T®§³B²z¤èªk¡C ¡@¥Î¤á¦Û©w¸q°T®§ªº¹Lµ{¥]¬A¨âӤ象G¡@ ¡´ ©w¸q¦Û¤vªº°T®§ ¡´ Án©ú·sªº°T®§³B²z¤èªk ¡@ Æ« ©w¸q¦Û¤vªº°T®§ ³\¦h¼Ð·Ç³¡¥ó¬°¤F¤º³¡¨Ï¥Î©w¸q¤F°T®§¡C©w¸q°T®§ªº³Ì¤@¯ëªº°Ê¦]¬O¼s¼½¸ê°T©Mª¬ºA§ïÅܪº³qª¾¡C¡@¡@©w¸q°T®§¹Lµ{¤À¨â¨B¡G ¡@¡@¡´ Án©ú°T®§¼ÐÃѲŠ¡´ Án©ú°T®§°O¿ý«¬¦¡ ¡@ Æ¡ Án©ú°T®§¼ÐÃÑ °T®§¼ÐÃѬO¾ã«¬¤j¤pªº±`¼Æ¡CWindows¦sÀɤF¤p©ó1024ªº°T®§¥Î©ó¦Û¤v¨Ï¥Î¡A¦]¦¹·íÁn©ú¦Û¤vªº°T®§®É¡A§AÀ³·í¤j©ó1024¡C¡@¡@±`¼Æ WM_USER¥Nªí¥Î©ó¦Û©w¸q°T®§ªº¶}©l¼Æ¦r¡C·í©w¸q°T®§¼Ð·Ç®É¡A§AÀ³·í°ò©óWM_USER¡C¡@¡@¬Y¨Ç¼Ð·Ç Windows±±¨î¨Ï¥Î¥Î¤á¦Û©w¸q½d³òªº°T®§¡A¥]¬AListBox¡BComboBox¡BEditBox©MButton¡C¦pªG±q¤Wz³¡¥ó¤¤Ä~©Ó¤F¤@Ó³¡¥ó¡A¦b©w¸q·sªº°T®§®É¡AÀ³·íÀˬd¤@¤UMessage³æ¤¸¬O§_¦³°T®§¥Î©ó¸Ó±±¨î¡C¡@¡@©w¸q°T®§ªº¤èªk¦p¤U¡G ¡@ ¡@¡@ ConstWM_MYFIRSTMESSAGE=WM_USER+0; WM_MYSECONDMESSAGE=WM_USER+1; ¡@ Æ¢ Án©ú°T®§°O¿ý«¬¦¡¡@¡@¦pªG§A·Qµ¹¤©¦Û©w¸q°T®§ªº°Ñ¼Æ¦³§t¸qªº¦W¦r¡A´Nn¬°¸Ó°T®§Án©ú°T®§°O¿ý«¬¦¡¡C°T®§°O¿ý¬O¶Çµ¹°T®§³B²z¤èªkªº°Ñ¼Æªº«¬¦¡¡C¦pªG¤£¨Ï¥Î°T®§°Ñ¼Æ©ÎªÌ·Q¨Ï¥Î·®æ°Ñ¼Æ¡A¥i¥H¨Ï¥Î¯Ê¬Ùªº°T®§°O¿ý¡C ¡@¡@Án©ú°T®§°O¿ý«¬¦¡n¿í´`¤U¦C³W«h ¡´ ¥H°T®§¦W©R¦W°T®§°O¿ý«¬¦¡¡A¥HT¥´ÀY ¡´ ±N°O¿ý¤¤²Ä¤@ÓÄæ¦ì©R¦W¬°Msg¡A«¬¦¡¬°TMsgPraram ¡´ ±N±µµÛªº¨âӦ줸¸s²Õ©w¸q¬°word ¥HÅTÀ³word¤j¤pªº°Ñ¼Æ ¡´ ±N±µµÛªº¥|Ӧ줸¸s²Õ»Plong°Ñ¼Æ¤Ç°t ¡´ ±N³Ì«áªºÄæ¦ì©R¦W¬°Result¡A«¬¦¡¬°Longint ¡@ ¤U±¬OTWMMouseªº©w¸q ¡@type TWMMouse=record Msg: TMsgParam; { ²Ä¤@Ó¬O°T®§ID }Keys: Word; { wParam } case Integer of { ©w¸qlParamªº¨âºØ¤è¦¡ }o: ( Xpos: Integer; { ©ÎªÌ¥Hx¡Ay®y¼Ð }Ypos: Integer); 1: ( Pos : TPoint; { ©ÎªÌ§@¬°³æÓÂI }Result: Longint; ) { ³Ì«á¬OResultÄæ¦ì }end; ¡@TWMMouse ¨Ï¥ÎÅܪø°O¿ý©w¸q¤F¬Û¦P°Ñ¼Æªº¤£¦P¦W¦r¶°¡C¡@¡@Ƭ Án©ú·sªº°T®§³B²z¤èªk¡@¡@¦³¨âÃþÀô¹Ò»Ýn§A©w¸q·sªº°T®§³B²z¤èªk¡G ¡@¡@¡´ ¦Û©w¸q·s³¡¥ó»Ýn³B²z¨S¦³³Q¼Ð·Ç³¡¥ó³B²zªºWindows°T®§ ¡´ ¤w©w¸q¤F¦Û©w¸q³¡¥ó¨Ï¥Îªº·s°T®§ ¡@ Án©ú°T®§³B²z¤èªkªº¿ìªk¦p¤U¡G ¡´ ¦b³¡¥óÁn©ú¤¤ªºprotected³¡¤ÀÁn©ú¤èªk ¡´ ±N¤èªk°µ¦¨¹Lµ{ ¡´ ¥Hn³B²zªº°T®§¦W©R¦W¤èªk ¦ý¤£±a©³½u ¡´ ¶Ç»¼¤@Ó©R¦W¬°Messageªºvar°Ñ¼Æ¡A«¬¦¡¬°°T®§°O¿ý«¬¦¡ ¡´ ½s¼g¥Î©ó¸Ó³¡¥óªº¯S§O³B²z¥N½X ¡´ ©I¥sÄ~©Óªº°T®§¤èªk ¡@ ¤U±¬O¥Î©ó¥Î¤á¦Û©w¸q°T®§CM_CHANGECOLORªº°T®§³B²z¥N½X: ¡@type TMyComponent=class(TControl) ¡Kprotected procedure CMChangeColor(var Message:TMessage); message CM_CHANGECOLOR; end: ¡@procedure TMyComponent.CMChangeColor(var Message: TMessage); begin color := Message lParam; inherited; end; ¡@19.2.2.4 µù¥U³¡¥ó¡@ ¡@¡@½s¼g³¡¥ó¤Î¨äÄÝ©Ê¡B¤èªk©M¨Æ¥ó¥u¬O³¡¥ó«Ø¥ß¹Lµ{ªº¤@³¡¤À¡C¾¨ºÞ³¡¥ó¨ã¦³³o¨Ç¯S©º´N¥i¥Î¡A¦ý³¡¥ó¯u¥¿¥\¯à±j¤jªº¬O¦b³]p®É¾Þ§@¥¦Ìªº¯à¤O¡C ¡@¡@¨Ï³¡¥ó¦b³]p®É¥i¥Î»Ýn¸g¹L¦p¤U´X¨B¡G ¡@¡@¡´ ¥ÎDelphiµù¥U³¡¥ó ¡´ ¼W¥[¿ï¾ÜªOÂI°}¹Ï ¡´ ´£¨Ñ¦³ÃöÄÝ©Ê©M¨Æ¥óªº»²§U±Ôz ¡´ ¦s¶J©MŪ¨úÄÝ©Ê ¡@1. ¥ÎDelphiµù¥U³¡¥ó ¬°¤FÅýDelphiÃѧO¦Û©w¸q³¡¥ó¡A¨Ã±N¥¦Ì©ñ¸m©óComponent Palette¤W¡A§A¥²¶·µù¥U¨C¤@Ó³¡¥ó¡C µù¥U¤@Ó³¡¥ón¦b³¡¥ó©Ò¦b³æ¤¸ùØ¥[¤JRegister¤èªk¡A³o¥]¬A¨âӤ豪º¤º®e¡G ¡´ Án©úµù¥U¹Lµ{ ¡´ ¹ê²{µù¥U¹Lµ{ ¡@ ¤@¥¹¸Ë³]¤Fµù¥U¹Lµ{¡A´N¥i¥H±N³¡¥ó¸Ë³]¦b¿ï¾ÜªO¤W¡C¡@¡@µù¥U¹Lµ{n¦b³¡¥ó©Ò¦b³æ¤¸¤¤¼g¤@Ó¹Lµ{¡A¸Ó¹Lµ{¥²¶·¥H Register©R¦W¡CRegister¥²¶·¥X²{¦b®w³æ¤¸ªºinterface³¡¤À¡A³o¼ËDelphi´N¯à©w¦ì¥¦¡C¦bRegister¹Lµ{¤¤¡A¥i¥H¬°¨CÓ³¡¥ó©I¥s¹Lµ{RegisterComponents¡C ¤U±ªº¥N½Xºt¥Ü¤F«Ø¥ß©Mµù¥U³¡¥óªº·§²¤¤èªk¡G ¡@unit MyBtns; ¡@interface ¡@type ¡K { Án©ú¦Û©w¸q³¡¥ó }procedure Register; ¡@Implementation ¡@procedure Register; begin ¡K { µù¥U³¡¥ó }end; ¡@end. ¡@ ¦bRegister¹Lµ{¤¤¡A¥²¶·µù¥U¨C¤@Ón¥[¤JComponent Paletteªº³¡¥ó¡A¦pªG®w³æ¤¸¥]§tY¤z³¡¥ó¡A´Nn±N¥¦Ì¤@¦¸©Êµù¥U¡C¡@¡@µù¥U¤@Ó³¡¥ó®É¡A¬°³¡¥ó©I¥s RegisterComponents¹Lµ{¡CRegisterComponents§i¶DDelphi¨â¥ó¦³Ãö©Òµù¥Uªº³¡¥óªº¨Æ:¡G ¡´ nµù¥U³¡¥ó©Ò¦bªºComponent Paletteªº¶¦W ¡´ n¸Ë³]ªº³¡¥óªº¦W¦r ¡@ ¿ï¾ÜªOªº¶¦W¬OÓ¦r¤¸¦ê¡C¦pªG§A©Òµ¹¦W¦rªº¶¤£¦s¦b¡ADelphi´N¥Î¸Ó¦W¦r«Ø¥ß·sªº¶¡C ¤U±ªºRegister¹Lµ{µù¥U¤F¤@Ó¦W¬°TMyComponentªº³¡¥ó¡A¨Ã±N¨ä©ñ¦b¦W¬°¡§Miscellaneous¡¨ªºComponent Palette¶¤W¡C ¡@procedure Register; begin RegisterComponents('Miscellaneous', [TFirst, TSecond]); end; ¡@ ¤]¥i¥H¦b¬Û¦Pªº¶¤W¡A©ÎªÌ¦b¤£¦Pªº¶¤W¡A¤@¦¸µù¥U¦hÓ³¡¥ó¡G ¡@procedure Register; begin RegisterComponents('Miscellaneous', [TFirst, TSecond]); RegisterComponents('Assorted', [TThird]); end; ¡@2. ¼W¥[Component Palette¤WªºÂI°}¹Ï ¨CÓ³¡¥ó³£»Ýn¤@ÓÂI°}¹Ï¨Ó¦bComponent Palette¤W¥Nªí¥¦¡C¦pªG¸Ë³]®É¨S¦³´yz¦Û¤vªºÂI°}¹Ï¡A«hDelphi·|¦Û°Ê®M¥Î¯Ê¬ÙÂI°}¹Ï¡C¡@¡@¦]¬°¿ï¾ÜªOÂI°}¹Ï¥u¦³¦b³]p®É»Ýn¡A©Ò¥H¨S¦³¥²n±N¥¦Ì½sĶ¶i®w³æ¤¸¡C¦Ó¬O±N¥¦Ì´£¨Ñ¦b»P®w³æ¦W¬Û¦Pªº Windows¸ê·½¤å¥ó¤¤¡AÀɮתþ¥[¦W¬°.DCR¡C¥ÎDelphiªºÂI°}¹Ï½s¿è¾¹¨Ó²£¥Í¸ê·½¤å¥ó¡A¨CÓÂI°}¹ÏÃäªø24Ó¹³¯À¡C¡@¡@¬°¨CÓn¸Ë³]ªº®w³æ¤¸´£¨Ñ¤@Ó¿ï¾ÜªOÂI°}¹Ï¤å¥ó¡A¦b¨CÓ¤å¥ó¤¤¬°¨CÓnµù¥Uªº³¡¥ó´£¨Ñ¤@ÓÂI°}¹Ï¡CÂI°}¹Ï¼v¹³¦W»P³¡¥ó¦W¬Û¦P¡A±N¤å¥ó©ñ¦b»P®w³æ¤¸¬Û¦Pªº¥Ø¿ý¤¤¡A³o¼Ë¦b¸Ë³]³¡¥ó®É Dephi´N¯àµo²{ÂI°}¹Ï¡C¡@¡@¨Ò¦p¡A¦pªG§A¦b ToolBox³æ¤¸¤¤«Ø¥ß¤@Ó¦W¬°TMyControlªº³¡¥ó¡A´N»Ýn«Ø¥ß¦W¬°TOOLBOX.DCRªº¸ê·½¤å¥ó¡A¤å¥ó¤¤¥]§t¦W¬°TMyControlªºÂI°}¹Ï¡C¡@¡@ 3. ´£¨Ñ¦³ÃöÄÝ©Ê©M¨Æ¥óªº»²§U±Ôz ·í¦bµ¡Å餤¿ï¾Ü¤@Ó³¡¥ó©Î¦bObject Inspector¤¤¿ï¾Ü¨Æ¥ó©ÎÄݩʮɡA¯à°÷«öF1±o¨ì¦³Ãö³o¤@¶µªº»²§U±Ôz¡C¦pªG«Ø¥ß¤F¬ÛÀ³ªºHelp¤å¥óªº¸Ü¡A¦Û©w¸q³¡¥óªº¥Î¤á¯à±o¨ì¦³Ãö§Aªº³¡¥óªº¬ÛÀ³ªº¤åÀÉ¡C¡@¡@¦]¬° Delph¨Ï¥Î¤F¯S®íªºHelp¤ÞÀº¤ä´©¸ó¦hÓHelp¤å¥ó³B²z¥DÃD·j¯Á¡A©Ò¥H§A¯à´£¨ÑÃö©ó¦Û©w¸q³¡¥óªº¤pªºHelp¤å¥ó¡A¥Î¤á¤£»ÝnÃB¥~ªº¨BÆJ´N¯à§ä¨ì§Aªº¤åÀÉ¡C§AªºHelp¦¨¤FDelphi Help¨t²Îªº¤@³¡¤À¡C¡@¡@nµ¹¥Î¤á´£¨Ñ»²§U±Ôz¡An²z¸Ñ¤U¦C¨â¤è± : ¡´ Delphi«ç¼Ë³B²zHELP½Ð¨D ¡´ ±NHELP´¡¤JDelphi ¡@ Æ« Delphi«ç¼Ë³B²zHELP½Ð¨DDelphi °ò©óÃöÁäµü¬d¸ßHELP½Ð¨D¡C´N¬O»¡¡A·í¥Î¤á¦bµ¡Åé³]pµøµ¡ªº¤w¿ï³¡¥ó¤W«öF1Áä®É¡ADelpdi±N³¡¥óªº¦W¦rÂà´«¦¨¤@ÓÃöÁäµü¡AµM«á©I¥sWindows Help¤ÞÀº§ä¨ì¨ºÓÃöÁäµüªº»²§U±Ôz¥DÃD¡CÃöÁäµü¬OWindows Help¨t²Îªº¼Ð·Ç³¡¤À¡C¹ê»Ú¤W ¡AWinHelp¨Ï¥ÎHelp¤¤ªºÃöÁäµü²£¥ÍSearch¹ï¸Ü¤è¶ô¤¤ªº²M³æ¡C¦]¬°¥Î©ó¤W¤U¤å±Ó·P·j¯Á¤¤ªºÃöÁäµü¤£¬O¹ê»Ú¨Ñ¥Î¤áŪªº¡A©Ò¥Hn¿é¤JÃöÁäµüªº´À¥Nµü¡C ¨Ò¦p¡A¤@Ó§ä¨ì¦W¬°TSomethingªº³¡¥óªº¸Ô²Ó¸ê°Tªº¥Î¤á¥i¯à¥´¶}WinHelpªºSearch¹ï¸Ü¤è¶ô¨Ã¿é¤JTSomething¡C¦ý¤£·|¨Ï¥Î¥Î©óµ¡Åé³]pµøµ¡ªº¤W¤U¤å§ä¨ìªº´À¥N§Î¦¡class-TSomething¡C¦]¦¹¡A³oÓ¯S®íªºÃöÁäµüClass-TSomething¹ï¥Î¤á¬O¤£¥i¨£ªº¡A¥H§K§Ë¶Ã¤F·j¯Á²M³æ¡C¡@¡@Ƭ ±NHelp´¡¤JDelphiDelphi ´£¨Ñ¤F«Ø¥ß©M´¡¤JWindows Help¤å¥óªº¤u¨ã¡A¥]¬AWindows Help½sĶ¾¹HC.EXE¡C¬°¦Û©w¸q³¡¥ó«Ø¥ßHelp¤å¥óªº¾÷¨î»P«Ø¥ß¥ô¦óHelp¤å¥ó¨S¤°»ò¤£¦P¡A¦ý»Ýn¿í´`¤@¨Ç¬ù©w¥H»P®w¤¤¨ä¥¦Help¬Û®e¡C¡@¡@«O«ù¬Û®e©Êªº¤èªk¦p¤U¡G ¡@¡@¡´ «Ø¥ßHelp¤å¥ó ¡´ ¼W¥[¯S®íªºµù¸} ¡´ «Ø¥ßÃöÁäµü¤å¥ó ¡´ ´¡¤JHelp¯Á¤Þ ¡@ ·í§A¬°¦Û©w¸q³¡¥ó«Ø¥ß§¹Help¡A¦³¤U¦C´XÓ¤å¥ó¡G ¡´ ½sĶ¹LªºHelp(.HLP)¤å¥ó ¡´ HelpÃöÁäµü(.KWF)¤å¥ó ¡´ ¤@өΦhÓHelp·½¤å¥ó(.RTF) ¡´ Help¤uµ{¤å¥ó(.HLJ) ¡@ ½sĶ¹LªºHelp¤å¥ó©MÃöÁäµü¤å¥óÀ³·í»P®w³æ¤¸¦b¦P¤@¥Ø¿ý¡C¡@¡@Æ¡ «Ø¥ßHelp¤å¥ó §A¥i¥H¨Ï¥Î¥ô¦óªº¤u¨ã«Ø¥ßWindows Help¤å¥ó¡CDelphiªº¦h¤å¥ó·j¯Á¤ÞÀº¡A¥i¥H¥]§t¥ô¦ó¼Æ¥ØªºHelp¤å¥óªºn¯À¡C¦b½sĶªºHelp¤å¥ó¤§¥~¡A§AÀ³·í¾Ö¦³RTF·½¤å¥ó¡A³o¼Ë¤~¯à²£¥ÍÃöÁäµü¤å¥ó¡C¡@¡@¬°¨Ï¦Û©w¸q³¡¥óªº Help¦P®w¤¤¨ä¥¦³¡¥ó¤@°_¤u§@¡An¿í´`¤U¦C¬ù©w¡G¡@¡@¡´ ¨CÓ³¡¥ó¦³¦û¤@¶ªº»²§U±Ôz ³¡¥ó»²§U±Ôz¶À³·íµ¹¥X³¡¥ó¥ØªºªºÂ²³æ´yz¡AµM«á¦C¥X³Ì²×¥Î¤á¥i¥ÎªºÄÝ©Ê¡B¨Æ¥ó©M¤èªkªº´yz¡CÀ³¥Î¶}µoªÌ³q¹L¦bµ¡Åé¤W¿ï¾Ü³¡¥ó¨Ã«öF1¦s¨ú³o¤@¶¡C¡@¡@³¡¥ó»²§U±Ôz¶À³·í¦³¤@ӥΩóÃöÁäµü·j¯Áªº¡§¢Ù¡¨ª`¸}¡Aª`¸}¤¤¥]§t³¡¥ó¦W¡C¨Ò¦p¡A TMemoªºÃöÁäµüª`¸}Ū§@"TMemo Component" ¡´ ³¡¥ó¼W¥[©Mק諸¨C¤@ÓÄÝ©Ê¡A¨Æ¥ó©M¤èªkÀ³·í¦³¤@¶»²§U±Ôz¡@¡@ÄÝ©Ê¡B¨Æ¥ó©Î¤èªkªº»²§U±Ôz¶À³·í«ü¥X¸Ó¶µ¥Î©óþÓ³¡¥ó¡AÅã¥ÜÁn©ú»yªk©M´yz¥¦ªº¨Ï¥Î¤èªk¡C ¡@¡@ÄÝ©Ê¡B¨Æ¥ó©Î¤èªkªº»²§U±Ôz¶À³·í¦³¤@ӥΩóÃöÁäµü·j¯Áªº¡§¢Ù¡¨ª`¸}¡A¸Óª`¸}¤¤¥]§t¸Ó¶µªº¦W¦r©MºØÃþ¡C¨Ò¦p¡AÄÝ©Ê TopªºÃöÁäµüª`¸}¬°¡§Top property¡¨¡C¡@¡@ Help¤å¥óªº¨C¤@¶¤]»Ýn¥Î©ó¦h¤å¥ó¯Á¤Þ·j¯Áªº¯S®íª`¸}¡C¡@¡@Æ¢ ¼W¥[¯S®íª`¸}Delphi »Ýn¯S®íªº·j¯ÁÃöÁäµü¥H°Ï§O¥Î©ó³¡¥óªº»²§U±Ôz¶©M¨ä¥¦¶µ¥Ø¡C§AÀ³·í¬°¨C¤@¶µ´£¨Ñ¼Ð·ÇªºÃöÁäµü·j¯Á¶µ¡C¦ý§A¤]»Ýn¥Î©óDelphiªº¯S®íª`¸}¡C¡@¡@n¬°¨Ó¦Û Object Inspectorµøµ¡©Î¥N½X½s¿è¾¹F1ªº·j¯Á¼W¥[ÃöÁäµü¡A´N±o¬°Help¤å¥ó»²§U±Ôz¶¼W¥["B"ª`¸}¡C¡@¡@¡§ B¡¨ª`¸}»P¥Î©ó¼Ð·ÇWinHelpÃöÁäµü·j¯Áªº¡§K¡¨ª`¸}«Ü¬Û¶H¡A¦ý¥¦Ì¥u¥Î©óDelphi·j¯Á¤ÞÀº¡C¤Uªí¦C¥X«ç¼Ë¬°¨CºØ³¡¥ó»²§U±Ôz¶«Ø¥ß¡§B¡¨ª`¸}¡G ¡@ ªí19.7 ³¡¥ó»²§U±Ôz¶·j¯Áµù¸}¡@¡@ ¢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¢w¢w¢w¢w¢w »²§U±Ôz¶«¬¦¡ "B"ª`¸}¤º®e ¥Ü ¨Ò¡@¡@ ¡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¡X¡X¡X¡X¡X ¥D³¡¥ó¶ 'class_'+³¡¥ó«¬¦¡¦W class_TMemd ¤@¯ëÄݩʩΨƥó¶ 'prop_'+ÄݩʦW prop_WordWrap'event_'+ ¨Æ¥ó¦W event_OnChange ³¡¥ó¯S¦³ªºÄÝ©Ê 'prop_'+³¡¥ó«¬¦¡¦W prop_TMemoWordWrap ©Î¨Æ¥ó¶ +ÄݩʦW'event_'+ ³¡¥ó«¬¦¡¦W event_TMemoOnChange+ ¨Æ¥ó¦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¢w¢w¢w¢w¢w¢w¡@ ¡@¡@°Ï§O¤@¯ë»²§U±Ôz¶©M³¡¥ó¯S¦³ªº»²§U±Ôz¶¬O«Ü«nªº¡C¤@¯ë»²§U±Ôz¶À³¥Î©ó©Ò¦³³¡¥ó¤Wªº¯S©wÄÝ©Ê©M¨Æ¥ó¡C¨Ò¦p LeftÄݩʬO©Ò¦³³¡¥ó¤¤ªº¼ÐÃÑ¡C¦]¦¹¡A¥¦¥Î¦r¤¸¦êProp-Left¶i¦æ·j¯Á¡C¦ÓBorde-style¨Ì¿à©ó©ÒÄݪº³¡¥ó¡A¦]¦¹¡ABorderStyleÄݩʾ֦³¦Û¤vªº»²§U±Ôz¶¡C¨Ò¦p¡ATEdit¦³BorderStyleÄݩʪº»²§U±Ôz¶¡A·j¯Á¦r¤¸¦ê¬°Prop_TEditBorderStyle¡C¡@¡@Æ£ «Ø¥ßÃöÁäµü¤å¥ó¡@¡@«Ø¥ß©M½sĶ¤F Help¤å¥ó¡A¨Ã¥B¼W¥[¤Fª`¸}¤§«á¡AÁÙn²£¥Í¿W¥ßªºÃöÁäµü¤å¥ó¡A³o¼ËDelphi¤~¯à±N¥¦Ì´¡¤J¥DÃD·j¯Áªº¯Á¤Þ¡C¡@¡@±q Help¸ê·½¤å¥óRTF«Ø¥ßÃöÁäµü¤å¥óªº¤èªk¦p¤U¡G ¡´ ¦bDOS´£¥Ü¦æ¤U¡A¶i¤J¥]§tRTF¤å¥óªº¥Ø¿ý ¡´ °õ¦æÃöÁäµü¤å¥ó²£¥Íµ{¦¡????KWGEN.EXE¡A«á¸òHelp¤uµ{¤å¥ó¡A¦pKWGEN SPECIAL.HPJ¡C·íKWGEN°õ¦æ§¹²¦«á¡A´N¦³¤F»PHelp¤uµ{¤å¥ó¬Û¦PªºÃöÁäµü¤å¥ó¡A¦ý¥H.KWF¬°Àɮתþ¥[¦W ¡´ ±NÃöÁäµü¤å¥ó©ñ¦b½sĶ§¹ªº®w³æ¤¸©MHelp¤å¥ó¬Û¦Pªº¥Ø¿ý ·í§A¦bComponent Palette¤W¸Ë³]³¡¥ó®É¡A§Æ±æÃöÁäµü´¡¤JDelphi Help¨t²Îªº·j¯Á¯Á¤Þ¡C ¡@ Ƥ ´¡¤JHelp¯Á¤Þ ¥H¦Û©w¸q³¡¥ó«Ø¥ßÃöÁäµü¤å¥ó«á¡An±NÃöÁäµü´¡¤JDelphiªºHelp¯Á¤Þ¡C¡@¡@±NÃöÁäµü¤å¥ó´¡¤J Detphi Help¯Á¤Þªº¤èªk¦p¤U¡G ¡´ ±NÃöÁäµü¤å¥ó©ñ¦b»P½sĶ§¹ªº®w³æ¤¸©MHeph¤å¥ó¬Û¦Pªº¥Ø¿ý¤¤ ¡´ °õ¦æHELPINSTµ{¦¡ ¡@HELPINST °õ¦æ§¹«á¡ADelphiªºHelp¯Á¤Þ¤å¥ó(.HDX)¥]§t¦Û©w¸q³¡¥ó»²§U±Ôz¶ªºÃöÁäµü¡C Æ ¦sÀx©M¸ü¤JÄÝ©ÊDelphi ±Nµ¡Åé¤Î¨ä¾Ö¦³ªº³¡¥ó¦sÀx¦bµ¡Åé¤å¥ó(.DFM)¤¤¡ADFM¤å¥ó¥Î¤G¶i¨îªí¥Üµ¡Å骺ÄÝ©Ê©M¥¦ªº³¡¥ó¡C·íDelphi¥Î¤á±N¦Û©w¸q³¡¥ó¥[¤Jµ¡Å餤®É¡A¦Û©w¸q³¡¥óÀ³·í¨ã¦³¦sÀx¥¦ÌªºÄݩʪº¯à¤O¡C¦P¼Ë¡A·í³Q½Õ¤JDelphi©ÎÀ³¥Îµ{¦¡®É¡A³¡¥ó¥²¶·¯à±qDFM¤å¥ó¤¤«ì´_¥¦Ì¡C¡@¡@¦b¤j¦h¼Æ®ÉÔ¡A¤£»Ýn°µ¥ô¦ó¨Ï³¡¥óŪ¼g DFM¤å¥óªº¨Æ¡C¦sÀx©M¸ü¤J³£¬OÄ~©Óªº¯ª¥ý³¡¥óªº¦æ¬°ªº¤@³¡¤À¡CµM¦Ó¦b¬Y¨Ç±¡ªp¤U¡A§A¥i¯à·Q§ïÅܳ¡¥ó¦sÀx©M¸ü¤J®Éªì©l¤Æªº¤èªk¡C¦]¦¹¡AÀ³·í²z¸Ñ¤Uzªº¾÷¨î¡G ¡´ ¦sÀx©M¸ü¤J¾÷¨î ¡´ ´yz¯Ê¬ÙÈ ¡´ ¨M©w¦sÀx¤°»ò ¡´ ¸ü¤J«áªºªì©l¤Æ ¡@ Æ¡ ¦sÀx©M¸ü¤J¾÷¨î ·íÀ³¥Î¶}µoªÌ³]pµ¡Åé®É¡ADelphi±Nµ¡Å骺´yz¦sÀx¦bDFM¤å¥ó¤¤¡C·í¥Î¤á°õ¦æµ{¦¡®É¡A¥¦Åª¨ú³o¨Ç´yz¡C¡@¡@µ¡Å骺´yz¥]§t¤F¤@¨t¦Cªºµ¡ÅéÄÝ©Ê©Mµ¡Å餤³¡¥óªº¬Û¦ü´yz¡C¨C¤@Ó³¡¥ó¡A¥]¬Aµ¡Å饻¨¡At³d¦sÀx©M¸ü¤J¦Û¨ªº´yz¡C ¡@¡@¦b¯Ê¬Ù±¡ªp¤U¡A·í¦sÀx®É¡A³¡¥ó±N©Ò¦³ public©MpublishedÄݩʪº¤£¦P©ó¯Ê¬ÙȪºÈ¥HÁn©úªº¶¶§Ç¼g¤J¡C·í¸ü¤J®É¡A³¡¥óº¥ýºc³y¦Û¤v¡A¨Ã±N©Ò¦³Äݩʳ]¬°¯Ê¬ÙÈ¡FµM«á¡AŪ¦sÀxªº¡B«D¯Ê¬ÙªºÄÝ©ÊÈ¡C¡@¡@³oºØ¯Ê¬Ù¾÷¨î¡Aº¡¨¬¤F¤j¦h¼Æ³¡¥óªº»Ýn¡A¦Ó¤S¤£»Ý³¡¥ó½s¼gªÌªº¥ô¦ó¤u§@¡CµM¦Ó¦Û¤v©w¸q¦sÀx©M¸ü¤J¹Lµ{¥H¾A¦X¦Û©w¸q³¡¥ó»Ýnªº¤èªk¤]¦³´XºØ¡C ¡@¡@Æ¢ ´yz¯Ê¬ÙÈ¡C¡@¡@ Delphi³¡¥ó¥u¦sÀx¨º¨ÇÄÝ©ÊȤ£¦P©ó¯Ê¬ÙȪºÄÝ©Ê¡C¦pªG§A¤£´yz¡ADelphi°²³]ÄݩʨS¦³¯Ê¬ÙÈ¡A³o·N¨ýµÛ³¡¥óÁ`¬O¦sÀxÄÝ©Ê¡C¡@¡@¤@ÓÄݩʪºÈ¨S³Qºc³y¨ç¼Æ³]©w¡A«h³Q°²³]¬°¹sÈ¡C¬°¤F´yz¤@ӯʬÙÈ¡A¦bÄÝ©ÊÁn©ú«á±¥[ default«ü¥O©M·sªº¯Ê¬ÙÈ¡C¡@¡@§A¤]¯à¦b«Án©úÄݩʮɴyz¯Ê¬ÙÈ¡C¹ê»Ú¤W¡A«Án©úÄݩʪº¤@Óì¦]¬O«ü©w¤£¦Pªº¯Ê¬ÙÈ¡C¥u´yz¯Ê¬ÙÈ¡A¨º»ò¦bª«¥ó«Ø¥ß®É¨Ã¤£·|¦Û°Ê¦aµ¹ÄݩʽáÈ¡AÁÙ»Ýn¦b³¡¥óªº Create¤èªk¤¤½á©Ò»ÝªºÈ¡C¡@¡@¤U±ªº¥N½X¥Î AlignÄݩʺt¥Ü¤F´yz¯Ê¬ÙȪº¹Lµ{. ¡@type TStatusBar=class(TPanel) public constructor Create(Aowner: TComponent); override; { Âл\¥H³]©w·sÈ }published property Align default alBottom; { «·sÁn©ú¯Ê¬ÙÈ }end; ¡@constructor TStatusBar.Create(Aowner: TComponent); begin inherited Create(Aowner); { °õ¦æÄ~©Óªºªì©l¤Æ¹Lµ{ }Align := alBottom; { ¬°Align½á·sªº¯Ê¬ÙÈ }end; ¡@ Æ£ ¨M©w¦sÀx¤°»ò ¥Î¤á¤]¥i¥H±±¨îDelphi¬O§_¦sÀx³¡¥óªº¨C¤@ÓÄÝ©Ê¡C¯Ê¬Ù±¡ªp¤U¡A¦bª«¥óªºpublished³¡¤ÀÁn©úªº©Ò¦³Äݩʳ£³Q¦sÀx¡CµM¦Ó¡A¥i¥H¿ï¾Ü¤£¦sÀx©Òµ¹ªºÄÝ©Ê¡A©ÎªÌ³]p¤@Ó¨ç¼Æ¦b°õ¦æ®É¨M©w¬O§_¦sÀxÄÝ©Ê¡C¡@¡@±±¨î Delphi¬O§_¦sÀxÄݩʪº¤èªk¬O¦bÄÝ©ÊÁn©ú«á±¥[stored«ü¥O¡A«á¸òTrue©ÎFalse¡A©ÎªÌ¬O¥¬º¸¤èªk¦W¡C§A¥i¥Hµ¹¥ô¦óÄݩʪºÁn©ú©Î«Án©ú¥[storedªí¹F¦¡¡C¤U±ªº¥N½XÅã¥Ü¤F³¡¥óÁn©ú¤TºØ·sÄÝ©Ê¡C¤@ÓÄݩʬOÁ`¬On¦sÀx¡A¤@Ó¬O¤£¦s¡A²Ä¤TÓ«h¨M©w©ó¥¬º¸¤èªkªºÈ¡G ¡@type TSampleCompiment = class(TComponent) protected function storeIt: Boolean; public { ¥¿±`±¡ªp¤U¦b¤£¦s }property Important: Integer stored True; { Á`¬O¦sÀx }published { ¥¿±`±¡ªp¤U¦sÀÉ }property UnImportant: Integer stored False; { ¤£¦s }property Sometimes: Integer stored StoreIt; { ¦sÀx¨Ì¿à©ó¨ç¼ÆÈ }end; ¡@ Ƥ ¸ü¤J«áªºªì©l¤Æ ¦b³¡¥ó±q¦sÀxªº´yz¤¤Åª¨ú©Ò¦³ªºÄÝ©Ê«á¡A¥¦©I¥s¦W¬°Loadedªºµê¤èªk¡A³o´£¨Ñ¤F«ö»Ýn°õ¦æ¥ô¦óªì©l¤Æªº¾÷·|¡C©I¥sLoaded¬O¦bµ¡Åé©M¥¦ªº±±¨îÅã¥Ü¤§«e¡A¦]¦¹¡A¤£»Ýn¾á¤ßªì©l¤Æ·|±a¨Ó¿Ã¹õ°{Ã{¡C¡@¡@¦b³¡¥ó¸ü¤JÄݩʮɪì©l¤Æ¥¦¡AnÂл\ Loaded¤èªk¡C¡@¡@¦b Loaded¤èªk¤¤¡An°µªº²Ä¤@¥ó¨Æ¬O©I¥sÄ~©ÓªºLoaded¤èªk¡C³o¨Ï±o¦b§Aªº³¡¥ó°õ¦æªì©l¤Æ¤§«e¡A¥ô¦óÄ~©ÓªºÄݩʳ£¤wªì©l¤Æ¡C¡@¡@¤U±ªº¥N½X¨Ó¦Û©ó TDatabase³¡¥ó¡C¦b¸ü¤J«á¡ATDatabase¸Õ¹Ï««Ø¦b¥¦¦sÀx®É¤w¥´¶}ªº³s±µ¡A¨Ã´yz¦b³s±µµo¥Í²§±`®É¦p¦ó³B²z¡C¡@ ¡@¡@ procedure TDatabase.Loadedbegin inherited Loaded; { Á`¬O¥ý©I¥sÄ~©Óªº¤èªk }Modified; { ³]©w¤º³¡¼Ð»x }try if FStreamedConnected then Open; { ««ØÁp±µ }except if csDesigning in ComponentState then { ¦b³]p®É }Application.HandleException(self) { ÅýDelphi³B²z²§±` }else raise; { §_ «h }end; end; ¡@ ¡@19.3 Delphi ³¡¥óµ{¦¡³]p¹ê¨Ò ¡@19.3.1 «Ø¥ß¸ê®Æ®w¬ÛÃöªº¤é¾ä±±¨î¡ÐTDBCalendar ¡@¡@¡@·í³B²z¸ê®Æ®wÁp±µ®É¡A±N±±¨î©M¼Æ¾Úª½±µ¬ÛÁp¬O«Ü«nªº¡C´N¬O»¡¡AÀ³¥Îµ{¦¡¥i¥H«Ø¥ß±±¨î»P¸ê®Æ®w¤§¶¡ªºÁå¡C Delphi¥]¬A¤F¼Æ¾Ú¬ÛÃöªº¼ÐÅÒ¡B½s¿è®Ø¡B¦C¥Ü¤è¶ô©M¬]®æ¡C¥Î¤á¥i¥H¨Ï¦Û¤vªº±±¨î»P¼Æ¾Ú¬ÛÃö¡C¡@¡@¼Æ¾Ú¬ÛÃö¦³Y¤zµ¥¯Å¡C³Ì²³æªº¬O°ßŪ¼Æ¾Ú¬ÛÃö©Î¼Æ¾ÚÂsÄý¡A¥H¤Î¤Ï¬M¸ê®Æ®w¥Ø«eª¬ºAªº¯à¤O¡C¤ñ¸û½ÆÂøªº¬O¼Æ¾Ú¬ÛÃöªº½s¿è¡A¤]§Y¥Î¤á¥i¥H¦b±±¨î¤W¾Þ§@¸ê®Æ®w¤¤ªº¼Æ¾Ú¡C ¡@¡@¦b¥»³¡¤À¤¤±N¥Ü¨Ò³Ì²³æªº±¡ªp¡A§Y«Ø¥ßÁp±µ¸ê®Æ®wªº³æÓÄæ¦ìªº°ßŪ±±¨î¡C¥»¨Ò¤¤±N¨Ï¥Î Component PaletteªºSamples¶¤¤ªºTCalendar³¡¥ó¡C «Ø¥ß¼Æ¾Ú¬ÛÃöªº¤é¾ä±±¨î¥]¬A¤U¦C´X¨B¡G ¡´ «Ø¥ß©Mµù¥U³¡¥ó ¡´ ¨Ï±±¨î°ßŪ ¡´ ¼W¥[¼Æ¾ÚÁp±µ(Data Link) ¡´ ÅTÀ³¼Æ¾Ú§ïÅÜ ¡@19.3.1. 1 «Ø¥ß©Mµù¥U³¡¥ó ¡@ ¨CÓ³¡¥óªº«Ø¥ß³£±q¬Û¦Pªº¤è¦¡¶}©l¡A¦b¥»¨Ò¤¤±N¿í´`¤U¦C¹Lµ{¡G ¡´ ±N³¡¥ó®w³æ¤¸©R¦W¬°DBCal ¡´ ±qTCalendarÄ~©Ó¤@Ó·s³¡¥ó¡A¦W¬°TDBCalendar ¡´ ¦bComponent PaletteªºSamples¶¤¤µù¥UTDBCalendar ¡@ ¤U±´N¬O«Ø¥ßªº¥N½X¡G ¡@unit DBCal; ¡@interface ¡@uses SysUtils, WinTypes, WinProc, Messages, Classes, Graphics, Controls, Forms, Grids, Calendar; type TDBCalendar=class(TCalendar) end; ¡@procedure Register; ¡@implementation ¡@procedure Register; begin RegisterComponents(Samples ¡A[TDBabendar]);end; ¡@end. ¡@19.3.1.2 ¨Ï±±¨î°ßŪ ¡@ ¦]¬°³oӼƾڤé¾ä¥H°ßŪ¤è¦¡ÅTÀ³¼Æ¾Ú¡A©Ò¥H¥Î¤á¤£¯à¦b±±¨î¤¤§ïÅܼƾڨëü±æ¥¦Ì¤Ï¬M¨ì¸ê®Æ®w¤¤¡C ¨Ï¤é¾ä°ßŪ¥]§t¤U¦C¨â¨B¡G ¡´ ¼W¥[°ßŪÄÝ©Ê ¡´ ¤¹³\©Ò»Ýªº§ó·s ¡@1. ¼W¥[°ßŪÄÝ©Ê µ¹¤é¾ä±±¨î¼W¥[°ßŪ¿ï¶µ¬Oª½±µ¹Lµ{¡C³q¹L¼W¥[ÄÝ©Ê¡A¥i¥H´£¨Ñ¦b³]p®É¨Ï±±¨î°ßŪªº¤èªk¡A·íÄÝ©ÊȳQ³]¬°True¡A±N¨Ï±±¨î¤¤©Ò¦³¤¸¯À¤£¥i³Q¿ï¡C Æ« ¼W¥[ÄÝ©ÊÁn©ú©M¦sÀÉȪºprivateÄæ¦ì¡G ¡@type TDBCalendar=class(TClendar) private FReadOnly: Boolean; public constructor Create (Aowner: TComponent); override; published property ReadOnly: Boolean read FReadOnly write FReadOnly default True; end; ¡@constructor TDBCalendar.Create(Aowner: TComponent); begin inherited Create(AOwner); FReadOnly := True; end; ¡@ Ƭ Âл\SelectCell¤èªk¡A¨Ï±o·í±±¨î¬O°ßŪ®É¡A¤£¤¹³\¿ï¾Ü¡G ¡@function TDBCalendar.SelectCell(ACol, Arow: Longint): Boolean; begin if FReadOnly then Result := False else Result := inherited SelectCell(Acol ¡AARow);end; ¡@ ÁÙn¦bTDBcalendarªºÁn©ú¤¤Án©úSelectCell¡C ¦pªG²{¦b±NCalendar¥[¤Jµ¡Åé¡A·|µo²{³¡¥ó§¹¥þ©¿²¤·Æ¹«©MÀ»Áä¨Æ¥ó¡A¦Ó¥B·í§ïÅܤé´Á®É¡A¤]¤£¯à§ïÅÜ¿ï¾Üªº¦ì¸m¡C¤U±±N¨Ï±±¨îÅTÀ³§ó·s¡C2. ¤¹³\©Ò»Ýªº§ó·s °ßŪ¤é¾ä¨Ï¥ÎSelectCell¤èªk¹ê²{¦UºØ§ïÅÜ¡A¥]¬A³]©wRow©MColªºÈ¡C·í¤é´Á§ïÅܮɡAUpdateCalendar¤èªk³]©wRow©MColªºÈ¡A¦ý¦]¬°SelectCell¤£¤¹³\§A§ïÅÜ¡A§Y¨Ï¤é´Á§ïÅܤF¡A¿ï¾Ü¤´¯d¦bì³B¡C ¥i¥Hµ¹¤é¾ä¼W¥[¤@ÓBoolean¼Ð»x¡A·í¼Ð»x¬°True®É¤¹³\§ïÅÜ¡G ¡@type TDBCalendar=class(TCalendar) private Fupdating: Boolean; protected function SelectCell(Acol, Arow: Longint); Boolean; override; public procedure UpdateCalendar; override; end; ¡@function TDBCalendar.SelectCell(ACol, ARow: Longint): Boolean; begin if (not FUpdating) and FReadOnly then Result := False { ¦pªG§ó·s«h¤¹³\¿ï¾Ü }else Result := inherited SelectCell(ACol, ARow); { §_«h©I¥sÄ~©Óªº¤èªk }end; ¡@procedure UpdateCalendar; begin FUpdating := True; { ±N¼Ð»x³]¬°¤¹³\§ó·s }try inherited UpdateCalendar; { ¶H³q±`¤@¼Ë§ó·s }finally FUpdating := False; { Á`¬O²M°£¼Ð»x }end; end; ¡@¡@¡@²{¦b¤é¾ä¤´Â¤£¤¹³\¥Î¤áקï¡A¦ý·í§ïÅܤé´ÁÄݩʮɯॿ½T¤Ï¬M§ïÅÜ¡F¥Ø«e¤w¦³¤F¤@Ó¯u¥¿°ßŪ±±¨î¡A¤U¤@¨B¬O¼W¥[¼Æ¾ÚÂsÄý¯à¤O¡C ¡@ ¡@¡@ 3. ¼W¥[¼Æ¾ÚÁp±µ¡@¡@±±¨î©M¸ê®Æ®wªºÁp±µ¬O¥Ñ¤@Ó¦W¬° DataLinkªºª«¥ó³B²z¡CDelphi´£¨Ñ¤F´XºØ«¬¦¡ªºDatalink¡C±N±±¨î»P¸ê®Æ®w³æÓÄæ¦ì¬ÛÁpªºDataLinkª«¥ó¬OTFieldDatalink¡CDelphi¤]´£¨Ñ¤F»P¾ãÓªí¬ÛÁpªºDataLink¡C¡@¡@¤@ӼƾڬÛÃö±±¨î¾Ö¦³ DataLinkª«¥ó¡A´N¬O»¡¡A±±¨ît³d«Ø¥ß©MªRºcDataLink¡C¡@¡@n«Ø¥ß§@¬°¾Ö¦³ª«¥óªº Datalink¡An°õ¦æ¤U¦C¤T¨B¡G¡@¡@¡´ Án©úª«¥óÄæ¦ì¡@¡@¡´ Án©ú¦s¨úÄÝ©Ê¡@¡@¡´ ªì©l¤ÆDataLink ¡@¡@¡@Æ« Án©úª«¥óÄæ¦ì¡@¡@¨CÓ³¡¥ón¬°¨ä¾Ö¦³ª«¥óÁn©ú¤@Óª«¥óÄæ¦ì¡C¦]¦¹¡A¤é¾äª«¥ó DataLink Án©úTFieldDataLink«¬¦¡ªºÄæ¦ì¡C¡@¡@¤é¾ä³¡¥ó¤¤ DataLinkªºÁn©ú¦p¤U¡G¡@ typeTDBCalendar = class(TSampleCalendar) private FDataLink: TFieldDataLink; ¡K end; ¡@¡@¡@Ƭ Án©ú¦s¨úÄÝ©Ê¡@¡@¨C¤@ӼƾڬÛÃö±±¨î¦³¤@Ó DataSourceÄÝ©Ê¡A¸ÓÄÝ©Ê´yzÀ³¥Îµ{¦¡µ¹±±¨î´£¨Ñ¼Æ¾Úªº¼Æ¾Ú·½¡C¦Ó¥B¡A¦s¨ú³æÓÄæ¦ìªº¸ê®Æ®wÁÙ»Ýn¤@ÓDataField ÄÝ©Ê´yz¼Æ¾Ú·½¤¤ªºÄæ¦ì¡C¡@¡@¤U±¬O DataSource©MDataFieldªºÁn©ú©M¥¦Ìªº¹ê²{¤èªk¡G ¡@type TDBCalendar = class(TSampleCalendar) private { Äݩʪº¹ê²{¤èªk¬O }function GetDataField: string; { ªð¦^¸ê®Æ®wÄæ¦ìªº¦W¦r }function GetDataSource: TDataSource; { ªð¦^¼Æ¾Ú·½(Data source)ªº¤Þ¥Î }procedure SetDataField(const Value: string); { µ¹¸ê®Æ®wÄæ¦ì¦W½áÈ }procedure SetDataSource(Value: TDataSource); { µ¹¼Æ¾Ú·½½áÈ }published { ¨ÏÄݩʦb³]p®É¥i¥Î }property DataField: string read GetDataField write SetDataField; property DataSource: TDataSource read GetDataSource write SetDataSource; end; ¡@ ¡K¡K ¡@function TDBCalendar.GetDataField: string; begin Result := FDataLink.FieldName; end; ¡@function TDBCalendar.GetDataSource: TDataSource; begin Result := FDataLink.DataSource; end; ¡@procedure TDBCalendar.SetDataField(const Value: string); begin FDataLink.FieldName := Value; end; ¡@procedure TDBCalendar.SetDataSource(Value: TDataSource); begin FDataLink.DataSource := Value; end; ¡@¡@¡@²{¦b¡A´N«Ø¥ß¤F¤é¾ä©M DataLinkªºÁå¡A¦¹¥~ÁÙ¦³¤@Ó§ó«nªº¨BÆJ¡C§A¥²¶·¦b¤é¾äºc«Ø®É«Ø¥ßDataLinkª«¥ó¡A¦b¤é¾äªRºc®É¡A´_ìDataLinkª«¥ó¡C¡@¡@Æ ªì©l¤ÆDataLink¡@¡@¦b¼Æ¾Ú¬ÛÃö±±¨î¦b¨ä¦s¦bªº´Á¶¡n¤£°±¦a¦s¨ú DataLinkª«¥ó¡A¦]¦¹¡A¥²¶·¦b¨äºc«Ø¨ç¼Æ¤¤«Ø¥ßDataLink«Ø¥ß¨Ã¥B¦bªRºc®É¡A´_ìDataLinkª«¥ó¡A¦]¦¹nÂл\¤é¾äªºCreate©MDestroy¤èªk¡C ¡@type TDBCalendar=class(TCalendar) public constructor Create(Aowna: TComponent); override; destructor Destroy; override; end; ¡@constructor TDBCalendar Create (Aowner: TComponent); begin inherited Create(AOwner); FReadOnly := True; FDataLink := TFieldDataLink.Create; end; ¡@destructor TDBCalendar Destroy; begin FDataLink.Free; inherited Destroy; end; ¡@ ²{¦b¡A³¡¥ó¤w¾Ö¦³§¹¾ãªºDataLink¡A¦ý³¡¥óÁÙ¤£ª¾±q¬ÛÁpªºÄæ¦ì¤¤Åª¨ú¤°»ò¼Æ¾Ú¡C ¡@19.3.1.4 ÅTÀ³¼Æ¾ÚÅܤơ@ ¡@¡@¤@¥¹±±¨î¾Ö¦³¤F¼Æ¾ÚÁp±µ (DataLink)©M´yz¼Æ¾Ú·½©M¼Æ¾ÚÄæ¦ìªºÄÝ©Ê¡C´N»Ý¦b¼Æ¾Ú°O¿ý§ïÅÜ®ÉÅTÀ³Äæ¦ì¤¤¼Æ¾ÚªºÅܤơC¡@ DataLinkª«¥ó³£¦³Ó¦W¬°OnDataChangeªº¨Æ¥ó¡C·í¼Æ¾Ú·½«ü¥Ü¼Æ¾Úµo¥ÍÅܤƮɡADataLinkª«¥ó©I¥s¥ô¦óOnDataChange©ÒÁp±µªº¨Æ¥ó³B²z¹Lµ{¡C¡@¡@n¦b¼Æ¾Ú§ïÅܮɧó·s¼Æ¾Ú¡A´N»Ýnµ¹ DataLinkª«¥óªºOnDataChange¨Æ¥ó¼W¥[¨Æ¥ó³B²z¹Lµ{¡C¡@¡@¤U±Án©ú¤F DataChange¤èªk¡A¨Ã±N¨ä½áµ¹DataLinkª«¥óªºOnDataChange¨Æ¥ó: ¡@type TDBCalendar=class(TCalendar) private procedure Datachange(Sender: TObject); end; ¡@constructor TDBCalendar Create(AOwner:TComponent); begin inherited Create(AOwner); FReadOnly := True; FDataLink := TFieldDataLink.Create; FDataLink.OnDataChange := DataChange; end; ¡@destructor TDBcalendar.Destroy; begin FDataLink.OnDataChange := nil; FDataLink.Free; inherited Destroy end; ¡@procedure TDBCalendar.DataChange(Sender: TObject); begin if FDataLink.Filed=nil then CalendarDate := 0; else CalendarDate := FDataLink.Field.AsDate; end; ; |
«á¤@¶ «e¤@¶ ¦^¥Ø¿ý ¦^º¶ |