«á¤@¶ «e¤@¶ ¦^¥Ø¿ý ¦^º¶ |
15.3.6 ¼Æ¾Ú¶°³¡¥óªº¨Æ¥ó¡@ ¼Æ¾Ú¶°³¡¥óTTable©ÎTQuery¨ã¦³«Ü¦hªº¨Æ¥ó¡C¬°³o¨Ç¨Æ¥ó½s¼g¬ÛÀ³ªºµ{¦¡¥N½X¥i¥H¶i¦æ¦³®Ä©ÊÅçÃÒ¡Bpºâ¥ipºâÄæ¦ìªºÈ¡B½T»{¹ï¸ê®Æ®wªíªº¦hºØ¾Þ§@µ¥µ¥¡C³o¨Ç¨Æ¥ó¤Î¨ä´yz¦pªí15.4©Ò¥Ü¡C¡@ ªí15.4 ¼Æ¾Ú¶°³¡¥ó±`¥Îªº¨Æ¥ó ¢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 ¨Æ ¥ó ´y z ¡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¡X BeforeOpen,Afteropen ¦b¼Æ¾Ú¶°³¡¥ó³Q¥´¶}¤§«e/¤§«á³QIJµo ¡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¡X BeforeClose,Afterclose ¦b¼Æ¾Ú¶°³¡¥ó³QÃö³¬¤§«e/¤§«á³QIJµo ¡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¡X BeforeInsert,AfterInsert ¦b¼Æ¾Ú¶°³¡¥ó¶i¤J´¡¤Jª¬ºA¤§«e/¤§«á³QIJµo ¡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¡X BeforeEdit,AfterEdit ¦b¼Æ¾Ú¶°³¡¥ó³Q½s¿è¤§«e/¤§«á³QIJµo ¡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¡X BeforePost,AfterPost ¦b¼Æ¾Ú¶°³¡¥ó§ë±H³Qק諸°O¿ý¤§«e/¤§«á³QIJµo ¡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¡X BeforeCancel,AfterCancel ¦b¼Æ¾Ú¶°³¡¥ó¨ú®ø«e¤@¨B¾Þ§@¤§«e/¤§«á³QIJµo ¡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¡X BeforeDelete,AfterDelete ¦b¼Æ¾Ú¶°³¡¥ó¸Ñ°£¥Ø«e°O¿ý¤§«e/¤§«á³QIJµo ¡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¡X OnNewRecord ·í«Ø¥ß¤@±ø·s°O¿ý®É³QIJµo ¡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¡X OnCalcFields ·í¬°ªí¤¤ªºpºâÄæ¦ìpºâÄæ¦ìȮɳQIJµo ¢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¡@ 15.4 TTable³¡¥ó¤ÎÀ³¥Î¡@ ¦b«e¤@¸`ùاṲ́¶²Ð¤F¼Æ¾Ú¶°³¡¥óTTable ©MTQuery ªº¦@¦Pªº¤@¨ÇÄÝ©Ê©M¤èªk¡CTTable³¡¥ó¬ODelphi¸ê®Æ®wµ{¦¡³]p¤¤n¸g±`¨Ï¥Îªº³Ì«nªº³¡¥ó¤§¤@¡A¥¦¬O¸ê®Æ®wÀ³¥Îµ{¦¡¦s¨ú¸ê®Æ®w®É¥²¶·¨Ï¥Îªº¼Æ¾Ú¶°³¡¥ó¤§¤@¡A¦b³o¤@¸`ùØ¡A§ÚÌ«ÂI¤¶²ÐTTable³¡¥ó¯S¦³ªºÄÝ©Ê©M¤èªk¡ATTable³¡¥ó©Ò¦³ªºÄÝ©Ê¡B¤èªk©M¨Æ¥ó³£¥i¥H¦b³s½u»²§U±Ôz¤¤¬d¨ì¡C¡@ 15.4.1 TTabel³¡¥ó¥DnªºÄÝ©Ê¡@ DatabaseNameÄÝ©Ê©MTableNameÄÝ©Ê¡G DatabaseNameÄݩʬO±Ôz¸ê®Æ®wÀ³¥Îµ{¦¡©Ò¾Þ§@ªº¸ê®Æ®wªº¦W¦r¡A¥¦¥i¥H¬O¥ÑBDE©w¸qªº¸ê®Æ®wªº§O¦W¡BÅ㦡±Ôzªº¸ê®Æ®w¤å¥ó©Ò¦bªººÏºÐ¸ô®|©ÎªÌ¥ÑTDatabase³¡¥ó©w¸qªº¤@Ó¸ê®Æ®w¦W¡CDatabaseNameÄݩʱ`±`¬O¤@Ó¥ÑBDE©w¸qªº¸ê®Æ®wªº§O¦W¡C¨Ï¥Î¥ÑBDE©w¸qªº¸ê®Æ®wªº§O¦W¥N´À¸ê®Æ®w¹ê»Ú©Ò¦bªº¸ô®|©M¦W¦r¡A¦n³B¬O·í¹ê»Úªº¸ê®Æ®w¦s©ñªº¦ì¸mµo¥ÍÅܤƮɡA¥u»Ý§Q¥ÎBDE²³æ¦a³]©w¤@¤U¸Ó¸ê®Æ®wªº§O¦W¡A¦Ó¸ê®Æ®wÀ³¥Îµ{¦¡µL»Ýקï¡C¦³ÃöBDEªº¨Ï¥Î½Ð°Ñ¬ÝBDEªº³]©wÀ³¥Î¡CTabelNameÄݩʥΥH±Ôz¥Ø«eTTable³¡¥ó©Ò³s±µªº¹ê»Úªº¸ê®Æ®wªí¡C³o¨âÓÄݩʤ@¯ë³£¦b³]p¶¥¬q«ü©w¡A·íµM¦bµ{¦¡°õ¦æ¹Lµ{¤¤¤]¥i¥H³]©w¡A¦ý¬Onקï³o¨âÓÄݩʮɡA ¥²¶·n¦bTTabelªºActiveÄݩʬ°False®É¶i¦æ¡A·íTTableªºActiveÄݩʬ°True®É¡A³o¨âÓÄݩʬO¤£¯à³Qקï©M³]©wªº¡C TableTypeÄÝ©Ê¡G ¸ÓÄݩʱÔz»PTTable³¡¥ó¬Û³s±µªº¸ê®Æ®wªíªº«¬¦¡¡C·íTableTypeÄݩʳ]©w¦¨Default®É¡A¸ÓÄÝ©Ê©Ò±Ôzªº¸ê®Æ®wªíªº«¬¦¡¥Ñ¸ê®Æ®w¤å¥óªºÀɮתþ¥[¦W¨M©w¡C ¡´ Y¸ê®Æ®w¤å¥óªºÀɮתþ¥[¦W¬°.DB©Î¨S¦³Àɮתþ¥[¦W¡Aªíªº«¬¦¡¬OParadoxªí ¡´ Y¸ê®Æ®w¤å¥óªºÀɮתþ¥[¦W¬°.DBF®É¡Aªíªº«¬¦¡¬OdBASEªí ¡´ Y¸ê®Æ®w¤å¥óªºÀɮתþ¥[¦W¬°.TXT®É¡Aªíªº«¬¦¡¬OASCIIªí¡@ ¦pªGTableTypeÄݩʤ£³]©w¬°Default¡A¨º»ò»PTTable ³¡¥ó¬Û³sªº¸ê®Æ®wªíªº«¬¦¡¥ÑTableType¤¤ªº³]©wªºÈ¨M©w¡A¤£¥Î¦Ò¼{¸ê®Æ®w¤å¥óªºÀɮתþ¥[¦W¡C KeyExclusiveÄÝ©Ê¡G ¸ÓÄݩʪº¤@Ó§@¥Î¬O±Ôz¦b¸ê®Æ®wªí¤¤§ä¨ì°O¿ý®É¡A±N°O¿ý²¾¨ì»P§ä¨ìȬۤǰtªº°O¿ý³BÁÙ¬O±N°O¿ý«ü¼Ð²¾¨ì»P§ä¨ìȬۤǰtªº°O¿ý«á±¤@±ø°O¿ý³B¡C ¸ÓÄݩʬO¥¬º¸«¬ÅܼơA·í¥¦ªºÈ¬°False®É(¯Ê¬Ù±¡ªp¤U¬°False)¡A ±N°O¿ý«ü¼Ð²¾¨ì¬Û¤Ç°tªº°O¿ý³B¡A¬°True®É¡A±N°O¿ý«ü¼Ð²¾¨ì¬Û¤Ç°t°O¿ýªº«á±¤@±ø°O¿ý³B¡C¸ÓÄÝ©Ê¥t¤@Ó§@¥Î¬O¦bªí¤¤«ü©wÀ˯Á½d³ò®É¡A¥Î¨Ó±Ôz¬O§_¥]¬Aº¡¨¬¹LÂo±ø¥óªºÃä¬É°O¿ý¡C·íKeyExclusiveªºÈ¬°False®É¡AÀ˯Á½d³ò¥]¬AÃä¬É°O¿ý¡A§_«h¤£¥]¬AÃä¬É°O¿ý¡A¦³Ãö¸Ô²Óªº¾Þ§@½Ð°Ñ¬Ý¡§©wªí¤¤°O¿ýªºÀ˯Á½d³ò¡¨¡C IndexFieldsÄÝ©Ê©MIndexFieldsCountÄÝ©Ê¡G IndexFieldsªºÄÝ©ÊȬO¸ê®Æ®wªí¤¤Äæ¦ì¦W²M³æ¡A¥¦¥]§t»PTTable³¡¥ó¬Û³sªº¸ê®Æ®wªí¤¤ªº¥þ³¡¯Á¤Þ¦r§Æ¡CIndexFieldsCountÄݩʱÔzªí¤¤¯Á¤ÞÄæ¦ìªºÓ¼Æ¡C³o¨âÓÄÝ©Êȳ£¬O°ßŪªº¡A¥u¦³¦bµ{¦¡°õ¦æ¹Lµ{¤¤¥i¥Î¡C IndexNameÄÝ©Ê©MIndexFieldNamesÄÝ©Ê¡G IndexNameÄݩʤ¤¦s©ñµÛ¦b«Ø¥ß¸ê®Æ®wªí®É¬°¸ê®Æ®wªí©w¸qªº©Ò¦³»²§U¯Á¤Þ¦W¡A¥¦¬O¤@Ó»²§U¯Á¤Þ¦W²M³æ¡A¬O°ßŪÄÝ©Ê¡CIndexFieldNamesÄÝ©Ê«ü©w¥Î©ó¸ê®Æ®wªí¯Á¤Þ±Æ§ÇªºÄæ¦ì¦W¡A¦hÓÄæ¦ì¦W¤§¶¡¥Î¤À¸¹¹j¶}¡C¨Ò¦p¹ïCustomer.DBªí¤¤ªº¥Î¤á°O¿ý«ö¶l¬F½s½XZipCode©M¥Î¤á¸¹½XCustNo±Æ§Ç®É¥i¥H³]©wIndexFieldNamesªºÈ¬°¡G ZipCode ; CustNo ¦bIndexFieldNamesÄݩʤ¤«ü©wªºÄæ¦ì¥²¶·¦s¦b©ó¬ÛÀ³ªº¸ê®Æ®wªí¤¤¡A§_«h·|¾ÉP¿ù»~¡CIndexName©MIndexFieldName¬O¤¬¥¸ªº¡A¨C¦¸¥u¯à«ü©w¨ä¤¤¤@ÓÄݩʪºÈ¡A¤£¯à¦P®É¬°¨âÓÄݩʳ£«ü©wÄÝ©ÊÈ¡C ExclusiveÄÝ©Ê¡G ¸ÓÄݩʬO¤@Ó¥¬º¸«¬ÄÝ©Ê¡A¥¦¼Ð©ú¬O§_¥H¦@¨É¤è¦¡¥´¶}¸ê®Æ®wªí¡A¦pªGExclusiveªºÈ¬°True¡A·í¥´¶}¤@Ó¸ê®Æ®wªí®É¡A¨ä¥L¥Î¤á´N¤£¯à¦s¨ú¸Óªí¤F¡AYExclusiveªºÈ¬°False¡A±N¥H¦@¨É¤è¦¡¥´¶}¤@Ó¸ê®Æ®wªí¡C ÅãµM¤£¯à±N¨ä¥L¥Î¤á¥¿¦b¦s¨úªºªí¥H¤¬¥¸¤è¦¡¥´¶}(³]©wExclusiveªºÈ¬°True)¡C¹ï©óSQL¸ê®Æ®w¦øªA¾¹¤Wªº¸ê®Æ®wªí¡A·í¥H¤¬¥¸¤è¦¡³Q¤@ӥΤᥴ¶}®É¡A¨ä¥L¥Î¤á¥i¥HŪ¨ú¸Óªí¤¤ªº¼Æ¾Ú¡A¦ý¤£¯àקïªí¤¤ªº¼Æ¾Ú¡A·íµM¦³¨Ç¸ê®Æ®w¦øªA¾¹¤£¤ä´©³oºØ¤è¦¡¡A³on¨ãÅé°Ñ¬Ý¦³Ãöªº¸ê®Æ®w¦øªA¾¹ªº¤åÀÉ¡C ReadOnlyÄÝ©Ê©MCanModifyÄÝ©Ê¡G ³o¨âÓÄݩʳ£¬O¥¬º¸«¬ÄÝ©Ê¡AReadOnlyÄݩʨM©w¥Î¤á¬O§_¯à°÷¹ïªí¤¤ªº¼Æ¾Ú¶i¦æŪ¼g¡CReadOnly¬°True ®É¡A¥Î¤á¥u¯àŪ¨úªí¤¤ªº¼Æ¾Ú¡AReadOnly¬°False®É¡A¥Î¤á¥i¥HŪ¼gªí¤¤ªº¼Æ¾Ú(°²³]¸ê®Æ®w¤w±ÂÅv¥Î¤á¯à°÷Ū¼g¨ä¤¤ªº¸ê®Æ®wªí)¡CCanModifyÄݩʬO¤@Ó°ßŪÄÝ©Ê¡A¥Î¤á¤£¯à°÷קï¨äÄÝ©ÊÈ¡A¥¦¤Ï¬M¤F¥Î¤á¹ï¸ê®Æ®wªí¾Ö¦³ªº¹ê»Ú¯SÅv¡A·íReadOnly¬°True®ÉCanModify±N¦Û°Ê¦a³Q¸m¬°False¡A·íReadOnly¬°False®É¡A¦pªG¸ê®Æ®w¤¹³\¥Î¤á¹ïªí¶i¦æŪ¼g®É¡ACanModify¬°True¡A§_«hCanModify¬°False¡C·íCanModify¬°False®É¡A¸ê®Æ®wªí¬O°ßŪªº¡A¦ý¤£¯à±N¨ä¸m¦¨½s¿èª¬ºA©Î´¡¤Jª¬ºA¡F·íCanModifyÄݩʬ°True®É¡AÁöµM¸ê®Æ®wªí¹ïÀ³ªº¼Æ¾Ú¶°³¡¥ó¥i¥H¸m¦¨½s¿è©M´¡¤Jª¬ºA¡A¦ý¬O³o¨Ã¤£·N¨ýµÛ¥Î¤á¯à°÷´¡¤J©Mקïªí¤¤ªº¼Æ¾Ú¡A¦]¬°³oÁÙn¨ü¨ì¨ä¥L¦]¯Àªº¨î¡A¦p¥Î¤á¹ïSQL¸ê®Æ®w¦øªA¾¹ªº¦s¨úÅvµ¥ªº¨î¡C TTable³¡¥óÁÙ¦³¨ä¥L¤@¨ÇÄݩʽаѬݳs½u»²§U±Ôz ¡@ 15.4.2 TTable³¡¥óªº¤èªk¤ÎÀ³¥Î ¡@ 15.4.2.1 ³]©w¸ê®Æ®wªíªº¨Ï¥Î½d³ò ¡@ ¦b§Ú̹ê»ÚÀ³¥Î¤¤ªº¸ê®Æ®wªí¤¤±`±`¦s©ñµÛ¤j¶qªº¼Æ¾Ú¸ê°T¡A¨ä¤¤¥]§tµÛ«Ü¦hªº°O¿ý¡A¦Ó§Ú̪ºÀ³¥Îµ{¦¡¥i¯à¥u»Ý¹ï¨ä¤¤¤@³¡¤À°O¿ý¶i¦æ¾Þ§@¡A¦]¦¹¡A¬°À³¥Îµ{¦¡«ü©w¤@Өϥνd³ò´NÅã±o¯S§O«n¤F¡A¬°¤è«K¦³®Ä¦a«ü©w¸ê®Æ®wªíªº¨Ï¥Î½d³òDelphi¬°TTable³¡¥ó´£¨Ñ¤F¤U¦C¤èªk¨Ñ¥Î¤á¨Ï¥Î¡G ¡´ SetRangeStart©MEditRangeStart¤èªk ¡´ SetRangeEnd©MEditRangeEnd¤èªk ¡´ SetRange([Start Values],[End Values])¤èªk ¡´ ApplyRange¤èªk ¡´ CancelRange¤èªk ¡@ 1. SetRangeStart¤èªk ¥Î©ó«ü©wÀ˯Á½d³òªº°_©l°O¿ý¡A©I¥sSetRangeStart¤èªk¤§«á¡A¥i¥H¬°°_©l°O¿ýªº¤@өΦhÓÄæ¦ì«ü©w¬ÛÀ³ªºÄæ¦ìÈ¡CSetRangeEnd¤èªk¥Î©ó«ü©wÀ˯Á½d³òªºµ²§ô°O¿ý¡A©I¥sSetRangeEnd¤èªk¤§«á¡A¥i¥H¬°µ²§ô°O¿ýªº¤@өΦhÓÄæ¦ì«ü©w¬ÛÀ³ªºÄæ¦ìÈ¡C ¡@ 2. SetRange¤èªk SetRange¤èªk¥]§t¤FSetRangeStart©MSetRangeEnd¤èªkªº¥\¯à¡A¥¦¥i¥H¦P®É«ü©wÀ˯Á½d³òªº°_©l©Mµ²§ô°O¿ý¡A°_©l°O¿ý©Mµ²§ô°O¿ýªºÄæ¦ìÈ¥H¼Æ¸s¸s²Õ§Î¦¡°eµ¹SetRange¡A¨ä°ò¥»§Î¦¡¬O¡G SetRange([°_©lÈ]¡A[µ²§ôÈ]) ¡@ 3. ApplyRange¤èªk ®Ú¾ÚSetRangeStart,SetRangeEnd©ÎSetRange¤èªk±ÔzªºÀ˯Á½d³òªº°_©l©Mµ²§ô°O¿ý¡A¨ãÅé³]©w¤@ÓÀ˯Á½d³ò¡A©I¥sApplyRange¤èªk¤§«á¡A À³¥Îµ{¦¡¥u¯à¹ïÀ˯Á½d³ò¤ºªº°O¿ý¶i¦æ¦³Ãöªº¾Þ§@¡C ¡@ 4. CancelRange¤èªk CancelRange¤èªkªº§@¥Î»PApplyRange¤èªkªº§@¥Î¬O¬Û¤Ïªº¡A³o¬O¨ú®ø¬°ªí³]©wªºÀ˯Á½d³ò¡A©I¥sCancelRange¤èªk¤§«áÀ³¥Îµ{¦¡¥i¥H¹ïªí¤¤¥þ³¡°O¿ý¶i¦æ¦³Ãöªº¾Þ§@¡C ¦b³oùØnª`·Nªº¬O¡G¦pªG§Ų́ϥΪº¬Oparadoxªí©ÎdBASEªí¡A¦b©I¥sSetRangeStart¡ASetRangeEnd¥H¤ÎSetRange¤èªk®É¡A¥u¯à¬°ªí¤¤ªº¯Á¤ÞÄæ¦ì©Î©w¸qªº¯Á¤Þ«ü©w¬ÛÀ³ªºÄæ¦ìÈ¡A¥H³]©wÀ˯Á½d³ò¡C¦pªG¨Ï¥ÎSQL¸ê®Æ®w¦øªA¾¹¤¤ªº¸ê®Æ®wªí¡A¥i¥H¬°IndexFieldNamesÄݩʤ¤«ü©wªºÄæ¦ì«ü©w¬ÛÀ³ªºÄæ¦ìÈ¡C ¨Ò¦p¡G°²³]Table1»PCustomer.DBªí¬Û³s¡ACustomer.DB¤¤¤@Ó¯Á¤ÞÄæ¦ì¬OCustNo¡A¦P®ÉÀ³¥Îµ¡Å餤¦³¨âÓ½s¿è®ØStartVal©MEndVal¥Î©ó¿é¤J°_©l¡Bµ²§ô°O¿ýªºÄæ¦ìCustNoªºÈ¡A¤U±ªºµ{¦¡¥N½X«K¥i¥H¬°§Ú̳]©w¤@ÓÀ˯Á½d³ò¡G ¡@ Tabel1.SetRangeStart; {«ü©wÀ˯Á½d³òªº°_©l°O¿ý} Tabel1CustNo.AsString:= StartVal.Text {¬°°_©l°O¿ýªºCustNoÄæ¦ì«ü©wÄæ¦ìÈ} Tabel1.SetRangeEnd; {«ü©wÀ˯Á½d³òªºµ²§ô°O¿ý} if EndVal.Text <> ' ' then Tabel1CustNo.AsString := EndVal.Text; {¬°µ²§ô°O¿ýªºCustNo Äæ¦ì«ü©wÄæ¦ìÈ} Tabel1.ApplyRange; {®Ú¾ÚÀ˯Á½d³òªº°_©l¡Bµ²§ô°O¿ý³]©wÀ˯Á½d³ò} ¡@ ª`·N¤W±ªºµ{¦¡¥N½X¡A¦b¬°µ²§ô°O¿ýªºCustNoÄæ¦ì«ü©wÄæ¦ìȮɡA º¥ýÀˬdEndValªºÈ¬O§_¬°ªÅ¡A¦pªGEndValªºÈ¬°ªÅ¡A¨º»ò³]©wªºÀ˯Á½d³ò¨S¦³¥]§t¤@±ø°O¿ý¡A ¦]¬°¨S¦³¥ô¦ó°O¿ýªºÄæ¦ìȤp©óNIL¡F¦pªGStartValªºÈ¬°ªÅ¡A¨º»òÀ˯Á½d³ò±N±qªí¤¤ªº²Ä¤@±ø°O¿ý¶}©l¡A¦]¬°ªí¤¤¥ô¦ó°O¿ýªºÄæ¦ìȳ£¤j©óªÅ(NIL)¡C ¤Wz¥N½X¥i¥H¥ÎSetRange¤èªk§ï¼g¦¨¡G ¡@ If EndVal.Text <>' ' then Tabel1.SetRane([StartVal.Text].[EndVal.Text]); Table1.ApplyRange; ¡@ EditRangeStart©MEditRangeEnd¤èªkªº¨Ï¥Î§¹¥þÃþ¦ü©óSetRangeStart©MSetRangeEnd¤èªk¡A¥u¬O½Õ³o¨âÓ¤èªk¬O³]©w¤@Ó¥i½s¿èªº½d³ò¡C ¤S¦p¡G°²³]¤@Óªí¤¤ªº¤@Ó¯Á¤Þ¥]§t¨âÓÄæ¦ìLastName©MFirstName¡A§Ú̬°¯Á¤Þ¤¤ªº¤@ÓÄæ¦ì©Î¦hÓÄæ¦ì«ü©w¬ÛÀ³ªºÄæ¦ìÈ¡A³]©w¸ê®Æ®wªíªº¨Ï¥Î½d³ò¡C ¡@ Table1.SetRangeStart; Table1.FieldByName('LastName').Asstring := 'Smith'; Table1.SetRangeEnd; Tabel1.ApplyRange; ¡@ ¤Wz¥N½X³]©wªº½d³ò¥]¬ALastNameÄæ¦ìªºÈ¤j©ó©Îµ¥©óSmithªº©Ò¦³°O¿ý¡C¦Ó¤U±ªº¥N½X³]©wªº½d³ò«h¥]¬ALastNameÄæ¦ìªºÈ¤j©ó©Îµ¥©óSmith¥BFirstNameÄæ¦ìªºÈ¤j©ó©Îµ¥©ó'J'ªº°O¿ý¡C ¡@ Table1.SetRangeStart; Table1.FieldByName('LastName').Asstring := 'Smith'; Table1.FieldByName('FirstName').Asstring := 'J'; Table1.SetRangeEnd; Tabel1.ApplyRange; ¡@ 15.4.2.2 §ä¨ì¸ê®Æ®wªí¤¤ªº°O¿ý ¡@ ¦pªG·Q§ä¨ì¸ê®Æ®wªí¤¤ªº°O¿ý¡A¥²¶··Q«ü©w§ä¨ì°O¿ýªº¤@¨ÇÄæ¦ìªºÄæ¦ìÈ¡AµM«á¦bªí¤¤¶i¦æÀ˯Á¡AÀ˯Á¥X»P§ä¨ìȬۤǰtªº°O¿ý¨Ó¡C¦pªG§Ú̬O¦bParadox©ÎdBASE¸ê®Æ®w¤¤ªºªí¤¤§ä¨ì°O¿ý¡A¨º»ò§ä¨ìÈ©Ò¹ïÀ³ªºÄæ¦ì¥²¶·¬Oªí¤¤ªºÃöÁäÄæ¦ì©Î»²§U¯Á¤ÞÄæ¦ì¡C¦pªG§ä¨ìSQL¸ê®Æ®w¦øªA¾¹¤¤ªºªí¡A¨º»ò§ä¨ìÈ¥²¶·¬OªíªºIndexFieldNamesÄݩʤ¤«ü©wªºÄæ¦ì¡C Delphi´£¨Ñ¤F¨âºØ¤è¦¡¦b¸ê®Æ®wªí¤¤§ä¨ì°O¿ý¡GGoto¤è¦¡©MFind¤è¦¡¡C³o¨âºØ¤è¦¡¤Q¤À¬Û¦ü¡A¥¦Ìªº¥Dn°Ï§O¦b©ó¬°§ä¨ì«ü©w§ä¨ìȪº¤èªk¤£¤@¼Ë¡C ¨Ï¥ÎGoto¤è¦¡¶i¦æ¼Æ¾Ú§ä¨ì¨Ï¥Îªº¤èªk¦³SetKey¤èªk¡BGotoKey¤èªk©MGotoNearest¤èªk¡C¨ä¹ê»Ú¨BÆJ¦p¤U¡G ¡@ Æ¡½T«On§ä¨ìªºÄæ¦ì¬OÃöÁäÄæ¦ì©Î»²§U¯Á¤ÞÄæ¦ì¡C Æ¢©I¥sSetKey¤èªk§â»Pªí¹ïÀ³ªºTTable³¡¥ó¸m¦¨§ä¨ìª¬ºA¡C Æ£§â§ä¨ìȽᵹ¬ÛÀ³ªºÄæ¦ì¡C Ƥ©I¥sGotoKey¤èªk¡A¨Ã´ú¸Õ¥¦ªºªð¦^ÈÀËÅç§ä¨ì¬O§_¦¨¥\¡C ¡@ °²³]Table1¹ïÀ³ªºªí¤¤²Ä¤@ÓÄæ¦ì¬OÃöÁäÄæ¦ì¡AEdit1¬OÀ³¥Îµ¡Å餤ªº¤@Ó½s¿è®Ø¡A¥Î¤á¥i¥H³q¹LEdit1¿é¤J§ä¨ìÈ¡C¤U±ªº¥N½X±N³q¹LGoto¤è¦¡¶i¦æ§ä¨ì¡C ¡@ Table1.SetKey; {±NTable1¸m¦¨§ä¨ìª¬ºA} Table1.Field[0].AsString := Edit1.Text; {«ü©w§ä¨ìÈ} Table1.GotoKey; {¶i¦æ§ä¨ì} ¡@ ¤W±³Ì«á¤@¦æ¥N½X¬O®Ú¾Ú¥Î¤á«ü©wªº§ä¨ìÈ¡A¦bªí¤¤°õ¦æ§ä¨ì¡C§ä¨ìªºµ²ªG¦³¨âºØ¡A¤]³\¦¨¥\¤]³\¥¢±Ñ¡A³o¬O¥Ñ©I¥sGotoKey¤èªk¤§«áªð¦^ªº¥¬º¸È¨Ó¨M©w¡A¦pªGªð¦^True¡A¨º»ò§ä¨ì¦¨¥\¡A¨Ã¥B°O¿ý«ü¼Ð·|«ü¦V»P§ä¨ìȤǰtªº°O¿ý¡A¦pªGªð¦^Fale¡A¨º»ò§ä¨ì¥¢±Ñ¡A°O¿ý«ü¼Ðªº¦ì¸m¤£µo¥ÍÅܤơC¤U±ªº¥N½X¥i¥H´ú¸Õ©I¥sGotoKey¤èªk¤§«áªºªð¦^È¡A§iª¾¥Î¤á§ä¨ì¬O§_¦¨¥\¡C ¡@ Table1.SetKey; Table1.Field[0].AsString:= 'Smith'; If not Table1.GotoKey then ShowMessage('°O¿ý¨S§ä¨ì') ¡@ ¦b³o¤@¬q¥N½X¤¤¡A¦pªG¦bªí¤¤¨S¦³§ä¨ì²Ä¤@ÓÄæ¦ìȬ°Smithªº°O¿ý¡A¸ÓÀ³¥Îµ{¦¡·|¼u¥X¤@Ó¹ï¸Ü¤è¶ô§iª¾¥Î¤á¡§°O¿ý¨S¦³§ä¨ì¡¨¡C ¦pªG¦bªí¤¤¦s¦b¦hÓÃöÁäÄæ¦ì©Î»²§U¯Á¤Þ¤¤¥]§t¦hÓÄæ¦ì®É¡A§A¦b¶i¦æ§ä¨ì®É¡A¥u·Q¬°²Ä¤@ÓÄæ¦ì«ü©w§ä¨ìÈ¡A¨º»ò¥²¶·n³]©wTTable³¡¥óªºKeyFieldCountªºÄÝ©ÊȬ°1¡C¦pªG·Q¬°¦hÓÄæ¦ì«ü©w§ä¨ìÈ¡A¥u¯à¬°¬Û¾FªºÄæ¦ì«ü©w§ä¨ìÈ¡A¨Ò¦p»²§U¯Á¤Þ¤¤¦@¦³¤TÓÄæ¦ì¡A¨º»ò§ÚÌ¥u¯à¬°²Ä¤@ÓÄæ¦ì¡B²Ä¤@©M²Ä¤GÓÄæ¦ì¡B²Ä¤@©M²Ä¤G¥H¤Î²Ä¤TÓÄæ¦ì«ü©w§ä¨ìÈ¡A¦Ó¤£¯à¬°²Ä¤@©M²Ä¤TÓÄæ¦ì«ü©w§ä¨ìÈ¡C GotoNearest¤èªkªº¨Ï¥Î»PGotoKey¤èªk§¹¥þ¤@¼Ë¡A¥u¬O¥¦¥Î©ó¤£ºë½T§ä¨ì¡A¥¦¤£n¨D§ä¨ìµ²ªG»P§ä¨ìȺë½T¤Ç°t¡A·íªí¤¤¦³»P§ä¨ìȺë½T¤Ç°tªº°O¿ý®É¡A¥¦±N°O¿ý«ü¼Ð²¾¨ì¸Ó°O¿ý³B¡A·íªí¤¤¨S¦³»P§ä¨ìȺë½T¤Ç°tªº°O¿ý®É¡A¥¦·|§ä¨ì¥X»P§ä¨ìȳ̱µªñªº°O¿ý¡A¨Ã±N°O¿ý«ü¼Ð²¾¨ì¸Ó°O¿ý³B¡C ¤U±¬OÀ³¥ÎGotoNearest¤èªkªº¤@¬q¥N½X¡G ¡@ Table1.SetKey; Table1.Fields[0].AsString:= 'Sm'; Table1.GotoNearest; ¡@ °õ¦æ¤Wz¥N½X«á¡AYªí¤¤¦s¦b²Ä¤@ÓÄæ¦ìȵ¥©óSmªº°O¿ý®É¡A°O¿ý«ü¼Ð±N²¾¨ì¸Ó°O¿ý³B¡AYªí¤¤¤£¦s¦b²Ä¤@ÓÄæ¦ìȵ¥©óSmªº°O¿ý¡A¦Ó¦s¦b²Ä¤@ÓÄæ¦ìȵ¥©óSmithªº°O¿ý¡A¨º»ò°O¿ý«ü¼Ð·|²¾¨ì¸Ó°O¿ý³B¡C ¦pªG§Ṳ́£¬O¥H¸ê®Æ®wªí¤¤ªºÃöÁäÄæ¦ì§@¬°§ä¨ìÄæ¦ì¡A§Ṳ́]¥i¥H¬°TTable³¡¥óªºIndexFieldNameÄݩʤ¤ªºÄæ¦ì©ÎIndexNameÄݩʤ¤ªºÄæ¦ì«ü©w§ä¨ìȶi¦æ¼Æ¾Ú§ä¨ì¡C¨Ò¦p¡A°²³]Customerªí¤¤¦³¤@Ó¦W¥sCityIndexªº»²§U¯Á¤Þ¡A§Ú̬°CityIndex¤¤ªºÄæ¦ì«ü©w§ä¨ìȶi¦æ§ä¨ì®É¡Aº¥ý³]©wTTable³¡¥óªºIndexNameÄݩʬ°CityIndex¡AµM«á¦A¶i¦æ§ä¨ì¡A¤U±¬O¨ãÅ骺µ{¦¡¥N½X¡G ¡@ Table1.IndexName := 'CityIndex'; Table1.Open; Table1.SetKey; Table1.FieldByName{'City').AsString := Edit1.Text; Table1.GotoKey; ¡@ ¨Ï¥ÎFind¤è¦¡¡G¨Ï¥ÎFind¤è¦¡¦b¸ê®Æ®w¤¤¶i¦æ¼Æ¾Ú§ä¨ìªº¤èªk¦³¡GFindNearest¤èªk©MFindKey¤èªk¡C FindKey¤èªk©MFindNearest¤èªk¬°¼Æ¾Ú§ä¨ì´£¨Ñ¤F¤@Ó²³æªº¤èªk¡A¥¦Ì±NSetKey¡B«ü©w§ä¨ìÈ¡B°õ¦æ§ä¨ì¤TÓ¨BÆJ¿Ä¦X¦b¤@¨Bùا¹¦¨¡A¥¦Ì¦b«ü©w§ä¨ìȮɡA¬O§â¦UÄæ¦ìªº§ä¨ìȸs¸s²Õ¦¨¤@ӼƸs¸s²Õ¶Çµ¹FindKey©ÎFindNearest¡C¤U±¬O¨ÏFindKey¤èªkªº¤@Ó¨Ò¤l¡C °²³]Tabel1¹ïÀ³ªºªí¤¤ªº²Ä¤@ÓÄæ¦ì¬OÃöÁäÄæ¦ì¡C ¡@ Table.FindKey([Edit1.Text]); ¡@ ¦pªG¥ÎGotoKey¤èªk§¹¦¨³o¤@¥\¯à«h»Ýn½s¼g¤U±¥N½X¡G ¡@ Table1.SetKey; Table1.Fields[0].AsStrine := Edit.Text; Table1.GotoKey; ¡@ FindKey¤èªk©MFindNearest¤èªkªº°Ï§O»PGotoKey©MGotoNearest¤èªkªº°Ï§O¬O¤@¼Ëªº¡C ¡@ 15.4.2.3 «Ø¥ß¥Dn¡X¡X©ú²Ó¸ê®Æ®wÀ³¥Î ¡@ TTable³¡¥ó¤¤MasterSourceÄÝ©Ê©MMasterFieldsÄݩʬO¥Î©ó©w¸q¨âÓ¸ê®Æ®wªíªº¤@¹ï¦hªºÃö«Y¡CMasterSourceÄÝ©Ê«ü©w¥Dªí¹ïÀ³ªºTDataSource³¡¥ó¡AMasterFieldsÄÝ©Ê«ü©w¥Dªí©M©ú²Óªí¤§¶¡«Ø¥ßÁpôªºÄæ¦ì¡A¥Dªí©M©ú²Óªí¤§¶¡«Ø¥ß¤@¹ï¦hÃö«Y®É¡A¥i¯à¤£¥u¬O°ò©ó¤@ÓÄæ¦ì¡A¥i¯à¦³¦hÓÄæ¦ì¡C¦pªG¦³¦hÓÄæ¦ì¡A¨º»ò¦b±ÔzMasterFieldsÄݩʮɡA¦hÓÄæ¦ì¤§¶¡n¥Î¤À¸¹¹j¶}¡C¦pTable1.MasterFields := 'OrderNo;CustNo'¡C¦b³]p¶¥¬q¥i¥H¨Ï¥ÎÄæ¦ì³s±µ³]p¾¹(Field Link Designer)¬°¨â¤Wªí«Ø¥ß¤@¹ï¦hªºÃö«Y¡A¦bObject Inspector ¤¤³sÄò«ö¨â¤UTTable³¡¥óªºMasterFields«K¥i¥H¥´¶}Field Link Designer¡A¶i¦æ¤@¹ï¦hÃö«Yªº«Ø¥ß¡C ¦p«Ø¥ßCustomer.DBªí©MOrder.DBªí¤§¶¡ªº¤@¹ï¦hÃö«Y®É¡A¨Ï¥ÎField Link Designer ¦p¹Ï15.5©Ò¥Ü¡C ¡@ ¡@ ¡@ ¹Ï15.5 ¨Ï¥ÎField Link Designer«Ø¥ß¤@¹ï¦hÃö«Y ¡@ Field Link Designer´£¨Ñ¤F¤@ºØ¥iµø¤Æªº¤èªk¨Ó«Ø¥ß¥Dn¡X¡X©ú²Óªí¤§¶¡ªº¤@¹ï¦hÃö«Y¡C¹Ï¤¤Available Indexes¸s¸s²Õ¦X®Ø¤¤¦s©ñµÛ©ú²Óªí¤¤ªºÃöÁäÄæ¦ì©M¯Á¤ÞÄæ¦ì¡A¥i¥H¿ï¾Ü¯Á¤ÞÄæ¦ì¶i¦æ³s±µ¡C¦b¥Dªí¤¤¿ï¾Ü¤@ӥΩó³s±µªºÃöÁäÄæ¦ì¡AµM«á±N¨ä»P©ú²Óªí¤¤¬ÛÀ³ªºÃöÁäÄæ¦ì³s±µ¡A«ö¤@¤UAdd«ö¶s¡A¥Dn¡X¡X©ú²Óªíªº³s±µÄæ¦ì±NÅã¥Ü¦bJoined Fields¦C¥Ü¤è¶ô¤¤¡A¦p¡G CustNo->CustNo¡@ 15.5 TDataSource³¡¥ó¤Î¨äÀ³¥Î ¡@ TDataSource³¡¥ó¬O¶}µo¸ê®Æ®wÀ³¥Îµ{¦¡¤¤¥Î¨ìªº«D±`«nªº³¡¥ó¡A¥¦¬O³s±µ¼Æ¾Ú¶°³¡¥óTTable©ÎTQuery©M¼Æ¾ÚÂsÄý³¡¥óªº¾ô¼Ù¡CTDataSource³¡¥ó¥»¨¤Q¤À²³æ¡A¥¦©Ò¾Ö¦³ªºÄÝ©Ê¡B¨Æ¥ó©M¤èªk³£¤ñ¸û¤Ö¡A¦b¨Ï¥Î¸Ó³¡¥ó®ÉµL»Ý§@¤Ó¦hªº¤u§@¡A¥¦¥Dn¬O¬°¼Æ¾ÚÂsÄý³¡¥óªA°Èªº¡A¦pªG¦bÀ³¥Îµ{¦¡¤¤¨S¦³¨Ï¥Î¼Æ¾ÚÂsÄý³¡¥ó¡A§Ṳ́]¨S¦³¥²n¬°À³¥Îµ{¦¡³]©wTDataSource³¡¥ó¡C ¡@ 15.5.1 TDataSource³¡¥óªºÄÝ©Ê ¡@ TDataSource³¡¥ó°£¤F¨ä¥L³¡¥ó³£¾Ö¦³ªºNameÄÝ©Ê©MTagÄݩʤ§¥~¡A¥Dn¦³¤U±´XÓÄÝ©Ê¡G DataSetÄÝ©Ê¡G¸ÓÄݩʱÔzTDataSource³¡¥ó±q¤¤Àò¨ú¼Æ¾Úªº¼Æ¾Ú¶°ªº¦W¦r¡A¥¦¥i¥H¬OTTable³¡¥óªº¦W¦r¡A¤]¥i¥H¬OTQuery³¡¥óªº¦W¦r¡A¬Æ¦ÜÁÙ¥i¥H«ü©w¨ä¥Lµ¡Å餺ªº¼Æ¾Ú¶°§@¬°¸ÓÄݩʪºÈ¡A¦p¦b¤U±ªºµ{¦¡¤¤§ÚÌ«ü©wµ¡ÅéForm2¤¤ªºtable1§@¬°µ¡ÅéForm1¤¤ªºDataSource1ªºDataSetÄÝ©ÊÈ¡G ¡@ TForm1.Formcreate(Sender : Tobject); Begin DataSource1.DataSet := Form2.Table1; end; ¡@ EnableÄÝ©Ê¡GEnableÄÝ©Ê¥i¥H¼È®É©Ê¦a¤ÁÂ_TDataSource³¡¥ó©M»P¤§¬Û³sªº¼Æ¾Ú¶°³¡¥óªº³s±µ¡C³o¬O¤@Ó¥¬º¸«¬ÅܼơC·í¥¦ªºÈ¬°False®É¡ATDataSource³¡¥ó©M¼Æ¾Ú¶°³¡¥óªº³s±µ³Q¤ÁÂ_¡A¥B©Ò¦³»PTDataSource³¡¥ó¬Û³sªº¼Æ¾ÚÂsÄý³¡¥ó¤¤±NÅܬ°¤@¤ùªÅ¥Õ¡A¤£Åã¥Ü¥ô¦ó¼Æ¾Ú¸ê°T¡C·íEnabledªºÈÅܬ°True®É¡ATDataSource³¡¥ó©M¼Æ¾Ú¶°³¡¥óªº³s±µ«ì´_¡A¥B»PTDataSource³¡¥ó¬Û³sªº¼Æ¾ÚÂsÄý³¡¥ó«ì´_Åã¥Ü¼Æ¾Ú¡C¤£¹Ln¹ê²{¤Wz³o¨Ç¥\¯à¡A¤@¯ë¤£¨Ï¥ÎTDataSource³¡¥óªºEnabledÄÝ©Ê¡A¦Ó¬O©I¥s¼Æ¾Ú¶°³¡¥óªºDisableControls¤èªk©MEnableControls ¤èªk¡A¦]¬°©I¥s³o¨âÓ¤èªk¥i¥H¤è«K¦a±±¨î»P¼Æ¾Ú¶°³¡¥ó¬Û³sªº©Ò¦³TDataSource³¡¥ó¥H¤Î»PTDataSource³¡¥ó¬Û³sªº¼Æ¾ÚÂsÄý³¡¥ó¡C AutoEditÄÝ©Ê¡G³o¬O¤@Ó¥¬º¸«¬ÅܼơA¥¦¥Î©ó±Ôz¬O§_±N»PTDataSource³¡¥ó¬Û³sªº¼Æ¾Ú¶°¸m©ó½s¿èª¬ºA¡C·íAutoEditªºÈ¬°True®É¡AÀ³¥Îµ{¦¡°õ¦æ®É¡A»PTDataSource¬Û³sªº¼Æ¾Ú¶°³¡¥ó¦Û°Ê¦a³Q³]©w¦¨½s¿èª¬ºA¡A·í¥Î¤á¦b»PTDataSource³¡¥ó¬Û³sªº¼Æ¾ÚÂsÄý³¡¥ó¤¤¿é¤J·sªºÈ®É¡A¼Æ¾Ú¶°³¡¥ó¤¤ªº°O¿ý¤]ÀH¤§§ïÅÜ¡C¦pªGAutoEditªºÈ¬°False¡A¥Î¤á·Q³q¹L¼Æ¾ÚÂsÄý³¡¥ó©Îµ{¦¡×§ï¼Æ¾Ú¶°¤¤ªº°O¿ý¡A¥²¶·n©I¥s¼Æ¾Ú¶°³¡¥óªºEdit¤èªk¡A±N¨ä¸m¬°½s¿èª¬ºA¤§«á¤~¯à°÷¶i¦æ¡C ¡@ 15.5.2 TDataSource³¡¥óªº¨Æ¥ó ¡@ TDataSource³¡¥ó¨ã¦³¤TӨƥó¡G ¡´ OnDataChange¨Æ¥ó ¡´ OnStateChange ¡´ OnUpdataData ¡@ OnDataChange¨Æ¥ó¡G·í»PTDataSource¬Û³sªº¼Æ¾Ú¶°¤¤ªº°O¿ý«ü¼Ðªº¦ì¸mµo¥Í§ïÅܮɡA¸Ó¨Æ¥ó´N³QIJµo¡A¤]´N¬O»¡·íµ{¦¡©I¥s¼Æ¾Ú¶°³¡¥óªºNext¡BPrevious¡BInsert¡BAppendµ¥¤èªk¾ÉP°O¿ý«ü¼Ðªº¦ì¸mµo¥Í§ïÅܮɡA«K·|IJµo¸Ó¨Æ¥ó¡C¸Ó¨Æ¥ó¤@¯ë¥Î©ó«O«ùÀ³¥Î¤¤¦hÓ³¡¥ó¤§¶¡ªº¦P¨B¡C OnUpdataData¨Æ¥ó¡G·í¼Æ¾Ú¶°³¡¥ó¤¤¥Ø«e°O¿ý±Nn³Qקï®É¡AIJµo¸Ó¨Æ¥ó¡C¨Ò¦p¦bµ{¦¡©I¥spost¤èªk¤§«á¦ý¦bקï«áªº¼Æ¾Ú°O¿ý¯u¥¿³Q¼g¦^ºÏºÐ¤¤ªº¸ê®Æ®w¤å¥ó¤§«eIJµo¸Ó¨Æ¥ó¡A¦bÀ³¥Î¤¤¨Ï¥Î«D¼Æ¾ÚÂsÄý³¡¥ó®Én¥¦»P¼Æ¾Ú¶°«O«ù¦P¨B®É±`¨Ï¥Î¸Ó¨Æ¥ó¶i¦æ¬ÛÃöªº³B²z¡C OnStateChange¨Æ¥ó¡G·í»PTDataSource³¡¥ó¬Û³sªº¼Æ¾Ú¶°³¡¥óªºª¬ºAµo¥Í§ïÅܮɡA «KIJµo¸Ó¨Æ¥ó¡C¦]¬°¼Æ¾Ú¶°³¡¥óªºStateÄݩʼЩú¤F¼Æ¾Ú¶°³¡¥ó¥Ø«e©Ò³Bªºª¬ºA¡A·í¼Æ¾Ú¶°ªºª¬ºAµo¥ÍÅܤƮɡA¨Ï¥Î¸Ó¨Æ¥ó¶i¦æ¦³Ãöªº³B²z¬O«Ü¦³¥Îªº¡A¦b¤@Ó¨ãÅ骺À³¥Î¤¤¡A ¼Æ¾Ú¶°³¡¥óªºª¬ºA±`±`¬OÀWÁc¦aÅܤƪº¡A¬°¤F¸òÂܼƾڶ°³¡¥óªºª¬ºAÅܤơA ¥i¥H¥Î¤U±¨Ò¤l¤¤ªºµ{¦¡¥N½X±N¼Æ¾Ú¶°³¡¥ó¥Ø«eªºª¬ºAÅã¥Ü¦b¤@Ó¼ÐÅÒ¤W¡G ¡@ TForm1.DataSource1OnStateChange(Sender : Tobject); var S : String; begin Case Table1,State of dsInactive : S := 'Inactive'; dsBrowse : S := 'Browse'; dsEdit : S := 'Edit'; dsInsert : S := 'SetKey'; dsSetKey : S := 'SetKey'; end; Label1.Caption := S; end; ¡@ Ãþ¦ü¦a§Ṳ́]¥i¥H³q¹L°»´ú¼Æ¾Ú¶°³¡¥óªºª¬ºA¨Ó±±¨î¦³Ãöªº«ö¶s©M¿ï¾Üªí¶µ¬O§_¦³®Ä¡C ¨Ò¦p¡G¦b¤@ÓÀ³¥Îµ¡Å餤¦³¤@ÓInsertBtn«ö¶s¡A¥Î©ó±±¨î¦V¼Æ¾Ú¶°³¡¥ótable1¹ïÀ³ªº¸ê®Æ®wªí¤¤´¡¤J°O¿ý¡FÁÙ¦³¤@ÓCancelBtn«ö¶s¥Î©ó±±¨î¬O§_¨ú®ø¥Î¤á¹ï¥Ø«e°O¿ýªº×§ï©Î´¡¤J·s°O¿ý¡C¤U±ªºµ{¦¡¥N½X®Ú¾ÚTable1ªºª¬ºA¨Ó±±¨î³o¨âÓ«ö¶sªº¥\¯à(¬O§_¦³®Ä¡A¦bµ¡Åé¬O§_ÅܦǷt)¡C ¡@ Form1.DataSource1OnStateChange(Sender : Tobject); begin InsertBtn.Enabled := (Table1.State = dsBrowse); CancelBtn.Enabled := Table1.State in [dsInsert,dsEdit,dsSetKey] end; ¡@ ¤W±ªº¥N½X¤¤¡A·íTable1³B©óÂsÄýª¬ºA(Browseª¬ºA®É)¡A ¥Î¤á¬O¤£¯à°÷¦V¸ê®Æ®wªí¤¤´¡¤J·s°O¿ýªº¡A¦¹®ÉInsertBtn«ö¶s±NÅܦǷt§YµL®Ä¡C·íTable1¤£³B©óBrowseª¬ºA®É¡AInsertBtn«ö¶s¦³®Ä¡A¥Î¤á¬O¥i¥H¦Vªí¤¤´¡¤J·s°O¿ý¡C¦P²z¡A¥u¦³·íTable1³B©ó¯S¤Jª¬ºA(Insertª¬ºA)©Î½s¿èª¬ºA(Editª¬ºA)©Î§ä¨ìª¬ºA(SetKeyª¬ºA)®É¡ACancelBtn«ö¶s¤~¦³®Ä¡A¤]§Y¥Î¤á¥i¥H¨ú®ø¥Ø«e´¡¤Jªº°O¿ý¡Bקï¥Ø«eªº°O¿ý¥H¤Î§ä¨ì¨ìªºµ²ªGµ¥¡C ¡@ 15.6 Äæ¦ì³¡¥ó©MÄæ¦ì½s¿è¾¹ªº¨Ï¥Î ¡@ Äæ¦ì³¡¥ó¦³®É¤SºÙÄæ¦ìª«¥ó¥¦¹ïÀ³µÛ¸ê®Æ®wªí¤¤ªº¦C§YÄæ¦ì¡AÄæ¦ìª«¥ó¬O¤£¥i¨£ªº³¡¥ó¡A¦bDelphi¤¤¦³¨âºØ¤è¦¡«Ø¥ßÄæ¦ì³¡¥ó¡G Æ¡¦bÀ³¥Îµ{¦¡°õ¦æ¹Lµ{¤¤¡AÀHµÛ¼Æ¾Ú¶°³¡¥ó³Q¿E¬¡¡A¹ïÀ³©ó¸ê®Æ®wªí¤¤¨C¤@¦CªºÄæ¦ì³¡¥ó«K°ÊºA¦a³Q«Ø¥ß¡C Æ¢¦b³]p¹Lµ{¤¤¡Aµ{¦¡³]p¤Hû§Q¥ÎÄæ¦ì½s¿è¾¹(Fields Editor)¥i¥H«Ø¥ß¥Ã¤[©ÊªºÄæ¦ì³¡¥ó¡A§Y¨ÏÄæ¦ìª«¥ó¹ïÀ³ªº¸ê®Æ®wªíªºµ²ºcµo¥Í¤FÅܤƮɡA³o¨ÇÄæ¦ì³¡¥ó¤]¤£·|µo¥ÍÅܤơC ¬JµMÄæ¦ì³¡¥ó¬O¹ïÀ³©ó¸ê®Æ®wªí¤¤ªº¦UÓÄæ¦ìªº¡A¦Ó¸ê®Æ®wªí¤¤ªºÄæ¦ì¦³¦hºØ¼Æ¾Ú«¬¦¡¡A©Ò¥HÄæ¦ì³¡¥ó¬ÛÀ³¤]¦³¦hºØ«¬¦¡¡AÄæ¦ì³¡¥óªº«¬¦¡»P¸ê®Æ®wªí¤¤ªºÄæ¦ìªº¼Æ¾Ú«¬¦¡ªº¹ïÀ³Ãö«Y¦pªí15.5©Ò¥Ü¡C ¡@ ªí15.5 Äæ¦ì³¡¥óªº«¬¦¡ ¢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 Äæ¦ì³¡¥óªº«¬¦¡ ¹ïÀ³ªº¼Æ¾Ú«¬¦¡ ¡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 TStringField ¦r¤¸¦ê«¬¦¡ªºÄæ¦ì TSmallIntField µu¾ã¼Æ«¬¦¡ªºÄæ¦ì -32768¡Ð32767 TIntegerField ¾ã¼Æ«¬¦¡ªºÄæ¦ì TWordField ¥¿¾ã¼Æ«¬¦¡ªºÄæ¦ì0¡Ð65535 TBooleanField ¥¬º¸«¬Äæ¦ì TFloatField ¯BÂI¼Æ«¬¦¡ªºÄæ¦ì TCurrenCyField ³f¹ô«¬Äæ¦ì TDataField ¤é´Á«¬ TTimeField ®É¶¡«¬ TBCDField ¤p¼Æ¦ì¼Æ©T©wªº¯BÂI¼Æ TDataTimeField ¤é´Á®É¶¡«¬Äæ¦ì ¢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¡@ §Ú̦b¥»®Ñ¤¤¥u¤¶²Ð¤@¨Ç±`¨£«¬¦¡ªºÄæ¦ì³¡¥óªº¨Ï¥Î¡A¨ä¥L«¬¦¡Äæ¦ì³¡¥óªº¨Ï¥Î¥i¥H°Ñ¬Ý³s½u»²§U±Ôz¤å¥ó¡C ¡@ |
«á¤@¶ «e¤@¶ ¦^¥Ø¿ý ¦^º¶ |