ការបង្កើតកម្មវិធីម៉ាស៊ីនភ្ញៀវ-ម៉ាស៊ីនមេនៅក្នុង Delphi ។ ការបង្កើតម៉ាស៊ីនភ្ញៀវ-ម៉ាស៊ីនមេនៅក្នុង Delphi

ដូច្នេះជាដំបូងអំពីសមាសភាគម៉ាស៊ីនមេ IdTCPServer(ចំណាំ ម៉ាស៊ីនមេ Indy) ដើម្បីប្រើសមត្ថភាពរបស់ម៉ាស៊ីនមេ សមាសភាគនេះត្រូវតែដាក់នៅលើទម្រង់ (សមាសភាគដែលមិនអាចបង្ហាញបាន)។ នៅពេលកំណត់រចនាសម្ព័ន្ធសមាសធាតុ លក្ខណៈសម្បត្តិខាងក្រោមមានប្រយោជន៍៖

  • សកម្ម - ធ្វើឱ្យសកម្មឬធ្វើឱ្យម៉ាស៊ីនមេអសកម្ម (មិនពិតលំនាំដើម);
  • ការចង - កំណត់រចនាសម្ព័ន្ធរន្ធម៉ាស៊ីនមេ (ភ្ជាប់ពួកវាទៅច្រកកុំព្យូទ័រជាក់លាក់មួយ អនុញ្ញាតឱ្យអ្នកកំណត់ជួរអាសយដ្ឋាន IP និងច្រកម៉ាស៊ីនភ្ញៀវដោយប្រើប្រអប់កំណត់លក្ខណសម្បត្តិ ការចង;
  • ListenQueue - តម្លៃជាលេខដែលកំណត់ចំនួនអតិបរមានៃសំណើការតភ្ជាប់ពីអតិថិជននៅក្នុងជួរ។
  • MaxConnections - អនុញ្ញាតឱ្យអ្នកកំណត់ចំនួនអតិបរមានៃអតិថិជនដែលភ្ជាប់ទៅម៉ាស៊ីនមេ។

ចូរយើងពិនិត្យមើលឱ្យកាន់តែច្បាស់អំពីការដំឡើងរន្ធម៉ាស៊ីនមេដោយប្រើលក្ខណសម្បត្តិចង។ ដូច្នេះនៅក្នុងរូបភព។ រូបភាពទី 1 បង្ហាញពីរបៀបប្រើប្រអប់ Properties ទៅ ការចងកំណត់រចនាសម្ព័ន្ធម៉ាស៊ីនមេដើម្បីបម្រើអតិថិជនជាមួយអាសយដ្ឋាន IP ណាមួយខណៈពេលដែល រន្ធម៉ាស៊ីនមេភ្ជាប់ទៅច្រក 12340 ។

អង្ករ។ 1. ការកំណត់ទ្រព្យសម្បត្តិ ការចង.

នៅចំណុចនេះ អ្នកអាចបញ្ចប់ការកំណត់រចនាសម្ព័ន្ធម៉ាស៊ីនមេ (ទោះបីជាមិនមែនសមត្ថភាពទាំងអស់នៃសមាសភាគ IdTCPServer ត្រូវបានប្រើនៅទីនេះ)។ ការងារចម្បងរបស់ម៉ាស៊ីនមេ នៅពេលដំណើរការសំណើរបស់អតិថិជនអាចត្រូវបានអនុវត្តនៅក្នុងកម្មវិធីដោះស្រាយព្រឹត្តិការណ៍ OnExecute ។ ឧបករណ៍ដោះស្រាយនេះត្រូវបានបញ្ជូនឯកសារយោងទៅវត្ថុ TIdContext - ខ្សែស្រឡាយដែលភ្ជាប់ជាមួយម៉ាស៊ីនភ្ញៀវដែលភ្ជាប់ទៅម៉ាស៊ីនមេ។

តាមរយៈវត្ថុនេះ (ច្បាស់ជាងនេះទៅទៀត លក្ខណៈសម្បត្តិនៃការតភ្ជាប់របស់វា) អ្នកអាចទទួល និងផ្ញើទិន្នន័យ ក៏ដូចជាទទួល និងកំណត់ប៉ារ៉ាម៉ែត្រការតភ្ជាប់មានប្រយោជន៍ជាច្រើន។ ឧទាហរណ៍ដំបូងនៃការប្រើប្រាស់វត្ថុ TIdContext នៅពេលដំណើរការសំណើរបស់អតិថិជនត្រូវបានបង្ហាញនៅក្នុងបញ្ជី 1 ។ ឥឡូវនេះសូមក្រឡេកមើលរបៀបកំណត់រចនាសម្ព័ន្ធម៉ាស៊ីនភ្ញៀវ (IdTCPClient - ផ្ទាំងអតិថិជន Indy

) ដូច្នេះវាអាចធ្វើអន្តរកម្មជាមួយម៉ាស៊ីនមេរបស់យើង។ ដើម្បីប្រើសមាសភាគម៉ាស៊ីនភ្ញៀវ TCP គ្រាន់តែដាក់វានៅលើទម្រង់ (សមាសភាគក៏មិនត្រូវបានបង្ហាញផងដែរ) ។

  • បន្ទាប់ពីនេះ យ៉ាងហោចណាស់ អ្នកត្រូវកំណត់រចនាសម្ព័ន្ធលក្ខណៈសម្បត្តិខាងក្រោម (នៅសល់ត្រូវបានរៀបរាប់តាមតម្រូវការក្នុងឧទាហរណ៍ខាងក្រោម)៖
  • ម៉ាស៊ីន - ឈ្មោះឬអាសយដ្ឋាន IP របស់កុំព្យូទ័រដែលម៉ាស៊ីនមេកំពុងដំណើរការ;

ជាទូទៅ វាមិនចាំបាច់ក្នុងការកំណត់រចនាសម្ព័ន្ធសូម្បីតែលក្ខណៈសម្បត្តិទាំងនេះនៅដំណាក់កាលអភិវឌ្ឍន៍ទម្រង់។ កម្មវិធីអាចបត់បែនបានច្រើន ប្រសិនបើជាឧទាហរណ៍ អ្នកប្រើប្រាស់ត្រូវបានផ្តល់ឱកាសឱ្យជ្រើសរើស (ឬបញ្ចូល) ឈ្មោះ ឬអាសយដ្ឋានរបស់ម៉ាស៊ីនមេ។

ការផ្លាស់ប្តូរទិន្នន័យងាយស្រួល

នៅពេលចាប់ផ្តើមធ្វើការជាមួយសមាសធាតុដែលបានពិពណ៌នានៅក្នុងផ្នែកមុន។ IdTCPServerនិង IdTCPCClientពិចារណាបង្កើតសាមញ្ញ កម្មវិធីអតិថិជន-ម៉ាស៊ីនមេផ្នែកម៉ាស៊ីនភ្ញៀវ និងម៉ាស៊ីនមេ ដែលដំណើរការមុខងារខាងក្រោម។

  • កម្មវិធីអតិថិជនភ្ជាប់ទៅម៉ាស៊ីនមេ ហើយផ្ញើវានូវខ្សែអក្សរដែលបានបញ្ចូលដោយអ្នកប្រើប្រាស់ រង់ចាំការឆ្លើយតប បង្ហាញអត្ថបទដែលទទួលបានពីម៉ាស៊ីនមេ និងផ្តាច់ចេញពីម៉ាស៊ីនមេ។
  • កម្មវិធីម៉ាស៊ីនមេទទួលបានខ្សែអក្សរពីកម្មវិធីអតិថិជន ហើយផ្ញើការឆ្លើយតប (ក៏អត្ថបទផងដែរ) បន្ទាប់ពីនោះវាបិទការតភ្ជាប់។ លើសពីនេះ ចំនួនអតិថិជនដែលបានបម្រើត្រូវបានរាប់ ហើយអាសយដ្ឋាន IP របស់កុំព្យូទ័រដែលសំណើចុងក្រោយបានមកត្រូវបានចងចាំ។

ការអនុវត្តទាំងកម្មវិធីម៉ាស៊ីនមេ និងម៉ាស៊ីនភ្ញៀវនៅក្នុងករណីរបស់យើងគឺសាមញ្ញណាស់។ គម្រោងកម្មវិធីម៉ាស៊ីនមេត្រូវបានគេហៅថា ម៉ាស៊ីនមេសាមញ្ញ. រូបរាងទម្រង់ម៉ាស៊ីនមេ (ខណៈពេលដែលកម្មវិធីកំពុងដំណើរការ) ត្រូវបានបង្ហាញនៅក្នុងរូបភព។ ២.

អង្ករ។ 2. រូបរាង ម៉ាស៊ីនមេសាមញ្ញ

វាលអត្ថបទ ( កែសម្រួល) ជាមួយនឹងចំនួនសំណើដែលបានដំណើរការត្រូវបានដាក់ឈ្មោះថា txtCount ហើយវាលអត្ថបទដែលមានអាសយដ្ឋាននៃកុំព្យូទ័រដែលបានបម្រើចុងក្រោយត្រូវបានគេហៅថា txtFrom ។ ការងារទាំងមូលរបស់ម៉ាស៊ីនមេគឺដើម្បីដំណើរការព្រឹត្តិការណ៍ Execute សម្រាប់សមាសភាគ IdTCPServerដាក់នៅលើទម្រង់ (ភ្ជាប់សមាសភាគនេះទៅច្រក 12340 ហើយកំណត់ទ្រព្យសម្បត្តិសកម្មទៅជាពិត) (ការចុះបញ្ជីលេខ 1) ។

ការចុះបញ្ជី 1. ការអនុវត្តម៉ាស៊ីនមេសាមញ្ញ

នីតិវិធី TForm1.FormCreate(អ្នកផ្ញើ៖ TObject); ចាប់ផ្តើមផ្នែក៖= TCriticalSection.Create; បញ្ចប់; នីតិវិធី TForm1.IdTCPServer1Execute(AContext: TIdContext); var strText: ខ្សែអក្សរ; ចាប់ផ្តើម // ទទួលខ្សែអក្សរពីម៉ាស៊ីនភ្ញៀវ strText:= AContext.Connection.Socket.ReadLn;

// ឆ្លើយតប AContext.Connection.Socket.WriteLn("យកបន្ទាត់៖" + strText); // ធ្វើបច្ចុប្បន្នភាពព័ត៌មាននៅលើទម្រង់ម៉ាស៊ីនមេ (ម៉ាស៊ីនមេមានច្រើនខ្សែ // ដូច្នេះយើងប្រើផ្នែកធ្វើសមកាលកម្ម។ បញ្ចូល; Inc(ដំណើរការ, 1); txtCount.Text:= IntToStr(ដំណើរការ); txtFrom.Text:= AContext .Connection.Socket.Binding. PeerIP; ផ្នែក.ទុក;នៅពេលឆ្លើយតបទៅអតិថិជន ម៉ាស៊ីនមេធ្វើឡើងវិញនូវបន្ទាត់ដែលទទួលបានពីវាជាមួយនឹងការបន្ថែមអត្ថបទ

"ទទួលយក៖" ទៅដើមបន្ទាត់។អ្នកអាចកត់សំគាល់ថាសូម្បីតែនៅក្នុងម៉ាស៊ីនមេសាមញ្ញបំផុតនៅក្នុងសំណួរក៏ដោយ យើងត្រូវអនុវត្តការធ្វើសមកាលកម្មនៅពេលធ្វើបច្ចុប្បន្នភាពរូបរាងនៃទម្រង់ដោយប្រើផ្នែកសំខាន់ (អ្នកត្រូវតែបន្ថែមឈ្មោះរបស់ម៉ូឌុល SyncObjs បន្ថែមទៅផ្នែកប្រើប្រាស់)។

ឥឡូវនេះសូមក្រឡេកមើលការអនុវត្តផ្នែកអតិថិជន (គម្រោង អតិថិជនសាមញ្ញ) រូបរាងនៃកម្មវិធីអតិថិជនត្រូវបានបង្ហាញនៅក្នុងរូបភព។ ២.

អង្ករ។ 2. រូបរាងរបស់អតិថិជន

ជាធម្មជាតិ សម្រាប់កម្មវិធីអតិថិជនដំណើរការ វត្ថុធាតុមួយត្រូវបានដាក់នៅលើទម្រង់ IdTCPCClient(ឈ្មោះរបស់វាគឺ IdTCPClient1)។ លក្ខណសម្បត្តិច្រកនៃសមាសភាគនេះគួរតែត្រូវបានកំណត់ទៅ 12340។ វាលអត្ថបទ ( កែសម្រួល) ដើម្បី​បញ្ចូល​ខ្សែ​អក្សរ​ដែល​ត្រូវ​ផ្ញើ​ទៅ​ម៉ាស៊ីន​ដែល​មិន​មែន​ឈ្មោះ txtMessage ។ វាលអត្ថបទ ( កែសម្រួល) ដែលឈ្មោះ ឬអាសយដ្ឋានរបស់ម៉ាស៊ីនមេត្រូវបានបញ្ចូលត្រូវបានគេហៅថា txtServer ។ វាលដែលមានបន្ទាត់ចម្លើយ ( អនុស្សរណៈ) មានឈ្មោះ txtResults ។

រាល់ការងារកម្មវិធីរបស់អតិថិជនត្រូវបានធ្វើនៅពេលចុចប៊ូតុងមួយ។ ដំណើរការ. អត្ថបទរបស់អ្នកដោះស្រាយដែលត្រូវគ្នាត្រូវបានផ្តល់ឱ្យ ការចុះបញ្ជី ២.

ការចុះបញ្ជី 2. ការអនុវត្តអតិថិជនសាមញ្ញ

នីតិវិធី TForm1.Button1Click(Sender: TObject); ចាប់ផ្តើម // ភ្ជាប់ទៅម៉ាស៊ីនមេហើយផ្ញើវាទៅពាក្យបញ្ជាដែលបានបញ្ចូល IdTCPClient1.Host:= txtServer.Text;

IdTCPCclient1.ភ្ជាប់;

IdTCPClient1.Socket.WriteLn(txtMessage.Text);

txtMessage.Text:="";

// រង់ចាំការឆ្លើយតប ហើយបិទការតភ្ជាប់ txtResults.Lines.Append(IdTCPClient1.Socket.ReadLn); IdTCPClient1.ផ្ដាច់; បញ្ចប់; IdTCPServerនិង នោះហើយជាវា ឥឡូវនេះអ្នកអាចដំណើរការម៉ាស៊ីនមេ និងម៉ាស៊ីនភ្ញៀវ (នៅលើចំនួនកុំព្យូទ័រតាមអំពើចិត្ត) និងសង្កេតមើលលទ្ធផលនៃការងាររបស់ពួកគេ។គ្រាន់តែចាំថាត្រូវចាប់ផ្តើមម៉ាស៊ីនមេ មុនពេលចូលប្រើវាដោយប្រើកម្មវិធីអតិថិជន។

កូដប្រភព។ ផលិតនៅលើ Delphi XE ។ត្រួតពិនិត្យកុំព្យូទ័រលើបណ្តាញ (IdTCPServer, IdTCPClient)

  • ឥឡូវនេះសូមក្រឡេកមើលករណីប្រើប្រាស់គួរឱ្យចាប់អារម្មណ៍បន្ថែមទៀត
  • សមាសធាតុបណ្តាញ
  • IdTCPCLient
  • ដែលអាចមានប្រយោជន៍សម្រាប់អ្នកដែលពាក់ព័ន្ធនឹងការគ្រប់គ្រងកុំព្យូទ័របណ្តាញ។

កម្មវិធីម៉ាស៊ីនមេ

  • ត្រូវបានបើកដំណើរការជាមុននៅលើកុំព្យូទ័រដែលបានត្រួតពិនិត្យ។ ក្នុងឧទាហរណ៍នេះ កម្មវិធីម៉ាស៊ីនមេអនុញ្ញាតឱ្យកម្មវិធីអតិថិជនទទួលបានព័ត៌មានខាងក្រោមអំពីកុំព្យូទ័រដែលវា (កម្មវិធីម៉ាស៊ីនមេ) កំពុងដំណើរការ៖ការត្រួតពិនិត្យគុណភាពបង្ហាញ; ជម្រៅពណ៌សម្រាប់ម៉ូនីទ័រ;ច្បាប់ចម្លងទំហំពេញនៃអេក្រង់;
  • ច្បាប់ចម្លងនៃអេក្រង់ កាត់បន្ថយ (ឬពង្រីក) ទៅទំហំដែលបានបញ្ជាក់។- ដើម្បីទទួលបានតម្លៃនៃជម្រៅពណ៌ដែលបានកំណត់សម្រាប់ម៉ូនីទ័រ (ប៊ីតក្នុងមួយចំណុច);
  • get_screen- ដើម្បីទទួលបានច្បាប់ចម្លងទំហំពេញនៃអេក្រង់;
  • get_screen៖ X, Y- ដើម្បីទទួលបានច្បាប់ចម្លងអេក្រង់កាត់បន្ថយទំហំ X x Y.

ជាដំបូង សូមក្រឡេកមើលការអនុវត្តម៉ាស៊ីនមេ (គម្រោង SpyServer) លេខកូដទាំងអស់ដែលផ្តល់ ប្រតិបត្តិការម៉ាស៊ីនមេត្រូវបានដាក់ក្នុងម៉ូឌុល ឯកតា 1.pasទម្រង់ ទម្រង់ 1.

កម្មវិធីដោះស្រាយសំណើអតិថិជន ដែលជានីតិវិធីចម្បងសម្រាប់ម៉ាស៊ីនមេ ត្រូវបានបង្ហាញនៅក្នុងបញ្ជីលេខ 3 ។

ការចុះបញ្ជី 3. អ្នកដោះស្រាយសំណើរបស់អតិថិជន

នីតិវិធី TForm1.IdTCPServer1Execute(AThread: TIdPeerThread); var strText: ខ្សែអក្សរ;

ទទឹង, កម្ពស់, i: ចំនួនគត់;

ឌីស៊ី៖ HDC; ចាប់ផ្តើម // ទទួលខ្សែអក្សរពីអតិថិជន strText:= AThread.Connection.ReadLn; // កំណត់នូវអ្វីដែលត្រូវធ្វើប្រសិនបើ strText = "get_screen_height" បន្ទាប់មក // ត្រឡប់កម្ពស់អេក្រង់ AThread.Connection.WriteInteger(Screen.Height) else if strText = "get_screen_width" បន្ទាប់មក // ត្រឡប់ទទឹងអេក្រង់ AThread.Connection.WriteInteger (Screen. Width) else if strText = "get_screen_colors" បន្ទាប់មកចាប់ផ្តើម // ត្រឡប់ចំនួនប៊ីតក្នុងមួយចំណុច dc:= GetDC(0); images // បង្កើតផ្ទាំងក្រណាត់ ហើយភ្ជាប់វាទៅបរិបទ Desktop ScreenCopy:= TCanvas.Create;

ScreenCopy.Handle:= GetDC(0); // បង្កើតវត្ថុមួយដើម្បីរក្សាទុកច្បាប់ចម្លងនៃអេក្រង់ ហើយចម្លងរូបភាព gr:= TBitmap.Create; gr.Height:= height1; gr.Width:= width1;.

gr.Canvas.CopyRect(rcDest, ScreenCopy, rcSource); IdTCPServer ReleaseDC(0, ScreenCopy.Handle);

//save the image to the data stream stream:= TMemoryStream.Create; gr.SaveToStream(ស្ទ្រីម);// ផ្ញើរូបភាពទៅម៉ាស៊ីនភ្ញៀវ Connection.WriteStream(ស្ទ្រីម, ពិត, ពិត);

ស្ទ្រីម.ជម្រះ;

ស្ទ្រីមដោយឥតគិតថ្លៃ;

gr.ឥតគិតថ្លៃ; បញ្ចប់;ដូចដែលអ្នកអាចឃើញសូម្បីតែច្រើនបំផុត

ប្រតិបត្តិការស្មុគស្មាញ

ម៉ាស៊ីនមេនៅក្នុងសំណួរ - ការចម្លងរូបភាព - ត្រូវបានអនុវត្តយ៉ាងសាមញ្ញដោយសារតែវត្តមាននៃថ្នាក់ស្តង់ដារដូចជា

TMemoryStream

សមាសភាគ

(ឈ្មោះ IdTCPServer1 ) ក្នុងឧទាហរណ៍នេះត្រូវបានភ្ជាប់ទៅច្រក 12341 (ចងចាំផងដែរដើម្បីកំណត់លក្ខណៈសម្បត្តិសកម្ម = ពិត ) ។

នីតិវិធី TForm1.IdTCPClient1Connected(អ្នកផ្ញើ៖ TObject); ចាប់ផ្តើម txtServer.Enabled:= មិនពិត;

cmbConnect.Caption:= "ផ្តាច់"; //ចាប់ផ្តើមស្នើសុំទិន្នន័យជាទៀងទាត់ពីម៉ាស៊ីនមេ Timer1.Enabled:= True;// អនុវត្តសំណើដំបូងដោយមិនរង់ចាំកម្មវិធីកំណត់ម៉ោងដើម្បីបាញ់ Timer1Timer(nil); បញ្ចប់;

ការផ្តាច់ចេញពីម៉ាស៊ីនមេក៏អនុវត្តសកម្មភាពដែលបញ្ឈប់ការស្នើសុំទិន្នន័យតាមកាលកំណត់ ហើយដាក់ម៉ាស៊ីនភ្ញៀវក្នុងស្ថានភាពរង់ចាំការតភ្ជាប់ (

ស្ថានភាពដើម

កម្មវិធី) (ការចុះបញ្ជី 7) ។

ការចុះបញ្ជី 7. សកម្មភាពនៅពេលផ្តាច់ចេញពីម៉ាស៊ីនមេ

នីតិវិធី TForm1.IdTCPClient1Disconnected(អ្នកផ្ញើ៖ TObject); ចាប់ផ្តើម txtServer.Enabled:= ពិត; cmbConnect.Caption:= "ភ្ជាប់"; Timer1.Enabled:= មិនពិត; បញ្ចប់;

ផ្នែកដ៏លំបាកបំផុតនៃកម្មវិធីអតិថិជនគឺដំណើរការទិន្នន័យដែលផ្ញើដោយម៉ាស៊ីនមេ។ កម្មវិធីអតិថិជនស្នើសុំទិន្នន័យកំណត់ម៉ោង និងដំណើរការទិន្នន័យដែលទទួលបានដូចបង្ហាញក្នុងបញ្ជីលេខ 8 ។ នីតិវិធី TForm1.Timer1Timer(អ្នកផ្ញើ៖ TObject); var ស្ទ្រីម៖ TMemoryStream; ចាប់ផ្តើម // ស្នើសុំទិន្នន័យពីម៉ាស៊ីនមេអំពីកុំព្យូទ័រដែលបានត្រួតពិនិត្យជាមួយ (IdTCPClient1) ចាប់ផ្តើម //...permission WriteLn("get_screen_width"); WriteLn("get_screen_height"); lblResolution.Caption:= IntToStr(ReadInteger) + "x" + IntToStr(ReadInteger);ពេលវេលាស៊ីភីយូកាន់តែច្រើនដើម្បីថតចម្លងអេក្រង់។ វាកាត់បន្ថយការផ្ទុកនៅលើបណ្តាញនៅពេលបញ្ជូនរូបភាព និងក៏រក្សាទុកធនធាននៅលើកុំព្យូទ័រអតិថិជនផងដែរ។ ប៉ុន្តែគុណភាពនៃរូបភាពដែលបានបង្ហាប់ក្នុងករណីនេះគឺអាក្រក់ជាងពេលដែលយើងផ្តល់សមាសភាគ រូបភាពសមត្ថភាពក្នុងការធ្វើមាត្រដ្ឋានរូបភាពដោយខ្លួនឯង។

ប្រសិនបើអ្នកមិនប្រើការបង្ហាប់រូបភាពនៅលើម៉ាស៊ីនមេទេ ការផ្ទុកបណ្តាញកើនឡើងនៅពេលផ្ទេរច្បាប់ចម្លងទំហំពេញនៃអេក្រង់ ហើយការងារទាំងអស់លើការបង្ហាប់រូបភាពត្រូវបានផ្តល់ទៅឱ្យសមាសភាគ imgScreen (មានន័យថាពេលវេលាដំណើរការបន្ថែមត្រូវបានខ្ជះខ្ជាយនៅលើ កុំព្យូទ័ររបស់អតិថិជន) ។ ប្រសិនបើគុណភាពបង្ហាញអេក្រង់របស់កុំព្យូទ័រដែលបានត្រួតពិនិត្យគឺខ្ពស់ (ឬនៅពេលត្រួតពិនិត្យកុំព្យូទ័រជាច្រើនក្នុងពេលតែមួយ) ម៉ាស៊ីនរបស់អតិថិជនប្រសិនបើវាមិនមានថាមពលគ្រប់គ្រាន់អាចចាប់ផ្តើម "ថយចុះ" គួរឱ្យកត់សម្គាល់។ គុណភាពនៃរូបភាពដែលបានបង្ហាប់គឺខ្ពស់ជាង។

ជាដំណោះស្រាយដែលមានប្រសិទ្ធភាពច្រើន ឬតិច វាអាចត្រូវបានស្នើឱ្យប្រើរយៈពេលច្រើនរវាងការស្នើសុំទិន្នន័យពីម៉ាស៊ីនមេតាមដានជាមួយនឹងការធ្វើមាត្រដ្ឋានរូបភាពនៅផ្នែកខាងម៉ាស៊ីនមេ (លុះត្រាតែម៉ាស៊ីនមេមានថាមពលតិច)។

កូដប្រភព។ ផលិតនៅលើ Delphi 7 ។

តោះបើក ដេលហ្វីនិងនៅលើពាក្យបញ្ជា ឯកសារ/រក្សាទុកគម្រោងជា... ចូរយើងរក្សាទុកគម្រោងនៅក្នុងថតដូចគ្នាដែលយើងបានរក្សាទុកមូលដ្ឋានទិន្នន័យ។ អាសយដ្ឋានថត C:\DBIBExpert . ចូរយើងរក្សាទុក ឯកសារ pasក្រោមឈ្មោះ TelSprav1.pas , ក dprឯកសារ TelSprav.dpr . នៅក្នុងបង្អួចនេះនៅក្នុងទ្រព្យសម្បត្តិ ចំណងជើងតោះសរសេរ « ថតទូរស័ព្ទ», នៅក្នុងទ្រព្យសម្បត្តិ ឈ្មោះយើងសរសេរ "TelefonSprav" ។ ទម្លាក់សមាសធាតុមួយទៅលើទម្រង់ ម៉ឺនុយមេហើយចុចពីរដងលើវា បង្អួចនឹងលេចឡើង (រូបភាព 50) ។

រូបភាពទី 50

នៅក្នុងទ្រព្យសម្បត្តិ ចំណងជើងតោះសរសេរ " ឯកសារ", នៅក្នុងទ្រព្យសម្បត្តិ ឈ្មោះយើងសរសេរ " បំពេញ" ចុចលើចតុកោណកែងពណ៌ខៀវ ហើយចតុកោណកែងមួយទៀតនឹងបង្ហាញខាងក្រោម (រូបភាព 51)។

រូបភាព 51

តោះជ្រើសរើសវា។ នៅក្នុងទ្រព្យសម្បត្តិ ចំណងជើងតោះសរសេរ " បិទ", នៅក្នុងទ្រព្យសម្បត្តិ ឈ្មោះយើងសរសេរ " ហ្សាគ្រីត" ជ្រើសរើសចតុកោណកែងនៅខាងស្តាំ។ នៅក្នុងទ្រព្យសម្បត្តិ ចំណងជើងតោះសរសេរ " ការកែសម្រួល", នៅក្នុងទ្រព្យសម្បត្តិ ឈ្មោះយើងសរសេរ " រេដាកទីរ៉ូវ" ហើយដូច្នេះនៅលើ។ ជាលទ្ធផលយើងគួរតែទទួលបានអ្វីមួយដូចជាម៉ឺនុយរងនេះ (រូបភាព 52 រូបភព 53 រូបភព 54) ។

រូបភាព 52

រូបភាព 53

រូបភាព 54

ឥឡូវ​យើង​ទម្លាក់​សមាសភាគ​មួយ​នៅ​លើ​សំណុំ​បែបបទ របារឧបករណ៍ពីផ្ទាំង ឈ្នះ ៣២. ទ្រព្យសម្បត្តិ តម្រឹមយើងនឹងដាក់វា alTopនៅក្នុងទ្រព្យសម្បត្តិ EdgeBordersតោះដាក់អ្វីគ្រប់យ៉ាង ពិត។សមាសភាគនេះអនុញ្ញាតឱ្យយើងដាក់ប៊ូតុងនៅលើវា។ នេះគឺជាតួនាទីសំខាន់របស់វា។ តោះចុចលើវា។ ចុចកណ្ដុរស្ដាំកណ្ដុរ និងក្នុងម៉ឺនុយរងដែលបង្ហាញ សូមជ្រើសរើស ប៊ូតុងថ្មី។(រូបភាព 55) ។

រូបភាព 55

ប៊ូតុងមួយនឹងលេចឡើងដែលអ្នកនឹងត្រូវជ្រើសរើសរូបភាព។ ប៉ុន្តែដំបូងនៅក្នុងទ្រព្យសម្បត្តិ ឈ្មោះយើងសរសេរ " ដុប" ដើម្បីបង្ហាញរូបភាព អ្នកត្រូវទម្លាក់សមាសធាតុពីផ្ទាំងដូចគ្នា។ បញ្ជីរូបភាពហើយចុចពីរដងលើវា។ ប្រអប់មួយនឹងលេចឡើង (រូបភាព 56) ដែលក្នុងនោះដោយចុចប៊ូតុង បន្ថែម… អ្នកត្រូវជ្រើសរើសរូបភាពដែលសមស្របនៃទំហំ 16x16 ។ បន្ទាប់ពីរូបភាពទាំងអស់ត្រូវបានជ្រើសរើស សូមចុចប៊ូតុង យល់ព្រម។

រូបភាព 56

តោះជ្រើសរើសសមាសភាគ របារឧបករណ៍ 1និងនៅក្នុងទ្រព្យសម្បត្តិ រូបភាពជ្រើសរើសពីម៉ឺនុយទម្លាក់ចុះ បញ្ជីរូបភាព 1. រូបភាពនឹងលេចឡើងភ្លាមៗនៅលើប៊ូតុង។ ប្រសិនបើរូបភាពគួរតែខុសគ្នានោះអ្នកត្រូវជ្រើសរើសប៊ូតុងនិងក្នុងលក្ខណសម្បត្តិ សន្ទស្សន៍រូបភាពជ្រើសរើសអ្វីដែលសមរម្យពីម៉ឺនុយទម្លាក់ចុះ។

ចុចកណ្ដុរស្ដាំលើសមាសភាគ របារឧបករណ៍ 1ហើយនៅក្នុងម៉ឺនុយរងដែលបង្ហាញ សូមជ្រើសរើស អ្នកបំបែកថ្មី។(រូបភាព 55) ។ សញ្ញាបំបែកនឹងបង្ហាញនៅជាប់នឹងប៊ូតុង។ យើងនឹងមិនផ្លាស់ប្តូរទ្រព្យសម្បត្តិសម្រាប់វាទេ។ ឈ្មោះដោយសារតែ វាគ្រាន់តែជាសញ្ញាបំបែករវាងប៊ូតុងប៉ុណ្ណោះ។ តោះផ្លាស់ប្តូរទទឹងរបស់វា។ ទទឹង។ចូរធ្វើឱ្យវាស្មើនឹង 5. យើងបង្កើតប៊ូតុងបីបន្ថែមទៀតតាមរបៀបដូចគ្នា។ នៅក្នុងប៊ូតុងទីពីរនៅក្នុងទ្រព្យសម្បត្តិ ឈ្មោះយើងសរសេរ " ក្រហម" នៅក្នុងទីបី " យ៉ាដាលី" នៅក្នុងទីបួន " ចេញ" ដាក់សញ្ញាបំបែករវាងប៊ូតុង អ្នកបំបែកថ្មី។ ចូរដាក់សញ្ញាបំបែកមួយផ្សេងទៀតដែលមានទទឹងស្មើនឹងប្រមាណ 50. តោះទម្លាក់សមាសធាតុនៅជិតសញ្ញាបំបែក ស្លាកនិងនៅក្នុងទ្រព្យសម្បត្តិ ចំណងជើងយើងសរសេរនាមត្រកូល។ នៅជាប់នឹងសមាសធាតុ ស្លាកលេខ ១យើងនឹងផ្គត់ផ្គង់សមាសធាតុ កែសម្រួលនៅក្នុងទ្រព្យសម្បត្តិ ឈ្មោះយើងសរសេរ " គ្រួសារ" រវាងសមាសធាតុ ស្លាកនិង កែសម្រួលតួនាទីរបស់សញ្ញាបំបែកត្រូវបានលេងដោយដកឃ្លានៅក្នុងពាក្យដែលបានវាយបញ្ចូល នាមត្រកូល។ចូរយើងបោះសមាសធាតុពីរបីទៀត។ ស្លាកនិង កែសម្រួល។ក្រោយមកទៀតមានទ្រព្យសម្បត្តិ ឈ្មោះកំណត់ " ទូរស័ព្ទ" សមាសធាតុទាំងពីរ កែសម្រួលត្រូវការសម្អាតទ្រព្យសម្បត្តិ អត្ថបទ។នៅជាប់នឹងសមាសធាតុបញ្ចូលទូរស័ព្ទ (កែសម្រួល)កំណត់ទីតាំងនៃសមាសភាគ ប៊ូតុងនៅក្នុងទ្រព្យសម្បត្តិ ឈ្មោះសូមណែនាំ ណាធី។

ឥឡូវនេះពីផ្ទាំង ការគ្រប់គ្រងទិន្នន័យ អ្នកត្រូវបោះសមាសធាតុមួយនៅលើទម្រង់ DBGrid ។លាតវាពេញបង្អួច ទ្រព្យសម្បត្តិ តម្រឹមយើងនឹងដាក់វា alClient យើងគួររៀនអ្វីដែលស្រដៀងគ្នា (រូបភាព 57)។

រូបភាព 57

រូបរាងនៃបង្អួចមេត្រូវបានសាងសង់។

យើងនឹងដាក់សមាសធាតុសម្រាប់ការចូលប្រើមូលដ្ឋានទិន្នន័យនៅក្នុងម៉ូឌុលដាច់ដោយឡែកមួយ។ តោះប្រតិបត្តិពាក្យបញ្ជា ឯកសារ/ថ្មី/ផ្សេងទៀត... ហើយនៅក្នុងបង្អួចដែលលេចឡើង (រូបភាព 58) ជ្រើសរើស ម៉ូឌុលទិន្នន័យតោះចុចប៊ូតុង យល់ព្រម។រក្សាទុកវានៅក្នុងថតដូចគ្នាដែលមានឈ្មោះដូចគ្នា។ DataModule1.pasនិង DataModule.dpr.

រូបភាព 58

នៅក្នុងទ្រព្យសម្បត្តិ ឈ្មោះសរសេរឈ្មោះឱ្យខ្លីជាង DM . វាស្ថិតនៅក្នុងបង្អួចនេះដែលសមាសធាតុសម្រាប់ការចូលប្រើមូលដ្ឋានទិន្នន័យនឹងត្រូវបានដាក់។ ពីផ្ទាំង អន្តរមូលដ្ឋាន ចូរយើងដាក់សមាសធាតុដូចខាងក្រោមៈ IBDatabase, IBStoredProc, IBQuery, IBTransaction ។សូម​ទុក​ឈ្មោះ​របស់​ពួក​គេ​ឲ្យ​នៅ​ដដែល ព្រោះ​... ដំបូងយើងបោះពួកគេចេញពីបង្អួច។ ពួកគេនឹងត្រូវបានរៀបចំដោយលេខ 1 នៅចុងបញ្ចប់។ ទម្លាក់សមាសភាគចេញពីផ្ទាំង ចូលប្រើទិន្នន័យ ប្រភពទិន្នន័យនៅក្នុងបញ្ជីទម្លាក់ចុះ សំណុំទិន្នន័យតោះជ្រើសរើស IBQuery1.

ឥឡូវ​នេះ​សូម​ពណ៌នា​អំពី​តួនាទី​មួយ​ណា​ដែល​សមាសធាតុ​នីមួយៗ​ដើរ៖

  • មូលដ្ឋានទិន្នន័យ IBD- សមាសភាគកណ្តាលសម្រាប់ភ្ជាប់ទៅមូលដ្ឋានទិន្នន័យ។ សមាសធាតុមួយអាចត្រូវបានភ្ជាប់ជាមួយមូលដ្ឋានទិន្នន័យមួយក្នុងពេលតែមួយ។
  • IBStoredProc- សមាសធាតុត្រូវបានរចនាឡើងដើម្បីធ្វើការជាមួយនីតិវិធីដែលបានរក្សាទុក។ អនុញ្ញាតឱ្យអ្នកប្រតិបត្តិពួកវា ផ្តល់ទិន្នន័យបញ្ចូល និងទទួលលទ្ធផលនៃការប្រតិបត្តិ (ទិន្នន័យលទ្ធផល);
  • IBQuery- អនុញ្ញាតឱ្យអ្នកផ្ញើសំណួរទៅមូលដ្ឋានទិន្នន័យនិងទទួលបានលទ្ធផលនៃការប្រតិបត្តិរបស់ពួកគេ។ សមាសភាគគឺជា analogue ពេញលេញនៃសមាសភាគ TQuery ។ទ្រព្យសម្បត្តិចម្បង SQL;
  • IBTransaction- ទទួលខុសត្រូវចំពោះប្រតិបត្តិការនៃប្រតិបត្តិការទាំងអស់សម្រាប់មូលដ្ឋានទិន្នន័យដែលភ្ជាប់ជាមួយសមាសភាគនេះ;
  • ប្រភពទិន្នន័យ- គឺជាតំណភ្ជាប់រវាងសំណុំទិន្នន័យដែលតំណាងដោយសមាសធាតុ TIBQueryនិង TIBStoredProc,និងសមាសធាតុដែលមើលឃើញសម្រាប់បង្ហាញ និងគ្រប់គ្រងទិន្នន័យ។
យើងនឹងមិនពណ៌នាអំពីលក្ខណៈសម្បត្តិនីមួយៗនៅក្នុងសមាសធាតុទាំងអស់នេះទេ។ នៅក្នុងដំណើរការនៃការបង្កើតមូលដ្ឋានទិន្នន័យ ក្នុងករណីណាក៏ដោយ យើងនឹងត្រូវតែស្គាល់លក្ខណៈសម្បត្តិដែលយើងនឹងប្រើប្រាស់។

ដូច្នេះ សូម​ចុច​កណ្ដុរ​ស្ដាំ​លើ​សមាសភាគ មូលដ្ឋានទិន្នន័យ IBDនឹងចេញមក ម៉ឺនុយបរិបទ(រូបភាព 59) ។

រូបភាព 59

នៅក្នុងនោះអ្នកត្រូវជ្រើសរើសធាតុមួយ។ កម្មវិធីនិពន្ធមូលដ្ឋានទិន្នន័យ… បង្អួចមួយនឹងលេចឡើង កម្មវិធីនិពន្ធសមាសភាគមូលដ្ឋានទិន្នន័យ(រូបភាព 60) ។

រូបភាព 60

នៅក្នុងផ្នែក ការតភ្ជាប់ តោះជ្រើសរើស ក្នុងស្រុកដោយសារតែ យើងនៅតែបង្កើត មូលដ្ឋានទិន្នន័យមូលដ្ឋានទិន្នន័យ។ នៅក្នុងវាល មូលដ្ឋានទិន្នន័យ អ្នកត្រូវបញ្ចូលឈ្មោះមូលដ្ឋានទិន្នន័យរបស់យើង។ ជា​ការ​ពិត អ្នក​អាច​វាយ​អ្វី​គ្រប់​យ៉ាង​ដោយ​ដៃ ប៉ុន្តែ​វា​កាន់​តែ​ងាយ​ស្រួល​ក្នុង​ការ​ចុច​ប៊ូតុង រុករក។ប្រសិនបើឥឡូវនេះយើងចូលទៅក្នុងថតជាមួយមូលដ្ឋានទិន្នន័យរបស់យើង។ (TELEFONSPRAVOCHNIK.FDB),បន្ទាប់មកវានឹងមិនបង្ហាញនៅក្នុងថតឯកសារនេះទេ។ ដើម្បីជ្រើសរើសមូលដ្ឋានទិន្នន័យនេះ អ្នកត្រូវតែនៅក្នុងបន្ទាត់ ប្រភេទជ្រើសរើសឯកសារ ឯកសារទាំងអស់ (*.*) ។ឥឡូវនេះឯកសារទាំងអស់ពីថតនេះនឹងត្រូវបានបង្ហាញ។ ជ្រើសរើសឯកសារមូលដ្ឋានទិន្នន័យ (TELEFONSPRAVOCHNIK.FDB)ហើយចុច យល់ព្រម។

នៅក្នុងផ្នែក ប៉ារ៉ាម៉ែត្រមូលដ្ឋានទិន្នន័យ នៅក្នុងវាល ឈ្មោះអ្នកប្រើប្រាស់បញ្ចូលការចូលរបស់អ្នក - SYSDBA នៅក្នុងវាល លេខសម្ងាត់បញ្ចូលពាក្យសម្ងាត់ - មេ។ ការចូល និងពាក្យសម្ងាត់ត្រូវតែដូចគ្នាទៅនឹងអ្វីដែលបានបញ្ចូលនៅពេលបង្កើតមូលដ្ឋានទិន្នន័យនៅក្នុង IBExpert ។ជាការពិតណាស់យើងនឹងគ្រប់គ្រងមូលដ្ឋានទិន្នន័យដោយប្រើកម្មវិធីដែលសរសេរនៅក្នុង ដេលហ្វី។

នៅក្នុងបញ្ជីទម្លាក់ចុះ សំណុំតួអក្សរ តោះជ្រើសរើស ឈ្នះ ១២៥១.តោះដកសញ្ញាធីកចេញ ប្រអប់បញ្ចូលចូល ដូច្នេះ អ្នកមិនចាំបាច់បញ្ចូលពាក្យសម្ងាត់របស់អ្នករាល់ពេលនោះទេ។ នៅខាងស្ដាំនៅក្នុងបង្អួច ការកំណត់អ្វីគ្រប់យ៉ាងដែលយើងបានកំណត់ និងបញ្ចូលត្រូវបានបង្ហាញ។

ឥឡូវអ្នកត្រូវចុចប៊ូតុង សាកល្បង។មុនពេលអ្នកចុចប៊ូតុង យល់ព្រមអ្នកត្រូវសាកល្បងមូលដ្ឋានទិន្នន័យ។ បង្អួចនឹងលេចឡើង (រូបភាព 61) ។

រូបភាពទី 61

ប្រសិនបើវាលេចឡើងជាមួយនឹងសារកំហុស នោះហេតុផលមួយក្នុងចំណោមហេតុផលអាចជាភាពមិនឆបគ្នាជាមួយកម្មវិធី អន្តរមូលដ្ឋាន។ដើម្បីជួសជុលកំហុសនេះអ្នកត្រូវលុបកម្មវិធី InterBase,ប្រសិនបើវាត្រូវបានដំឡើង។ ហើយអ្នកប្រាកដជាត្រូវលុបឯកសារបណ្ណាល័យដោយដៃ gds32.dllនៅអាសយដ្ឋាន C:\WINDOWS\system32.

បន្ទាប់ពីការលុបទាំងនេះអ្នកនឹងត្រូវលុបនិង បក្សី​ភ្លើង​,ដោយសារតែ យើងដកបណ្ណាល័យចេញ IBExpertនឹងមិនអាចធ្វើការធម្មតាបានទៀតទេ។ បន្ទាប់ពីជំហានទាំងអស់នេះអ្នកត្រូវដំឡើងឡើងវិញ FireBird ។មានហេតុផលជាច្រើនសម្រាប់កំហុស ប៉ុន្តែនេះគឺជារឿងធម្មតាបំផុត។

តោះជ្រើសរើសសមាសភាគ IBQuery1និងនៅក្នុងទ្រព្យសម្បត្តិ មូលដ្ឋានទិន្នន័យតោះជ្រើសរើស មូលដ្ឋានទិន្នន័យ IBD1.ទ្រព្យសម្បត្តិ មូលដ្ឋានទិន្នន័យបង្ហាញពីសមាសធាតុមួយ។ មូលដ្ឋានទិន្នន័យ TIBDភ្ជាប់ជាមួយសំណុំទិន្នន័យដែលបានផ្តល់ឱ្យ។ នៅក្នុងទ្រព្យសម្បត្តិ ប្រតិបត្តិការជ្រើសរើស IBTransaction1.ទ្រព្យសម្បត្តិ ប្រតិបត្តិការទទួលខុសត្រូវក្នុងការជ្រើសរើសប្រតិបត្តិការ។

សមាសធាតុសំខាន់នៃទ្រព្យសម្បត្តិ TQuerySQLមានប្រភេទ ខ្សែអក្សរ . បញ្ជី​នៃ​ខ្សែ​នេះ​ដែល​មាន សំណួរ SQL,ដែលនឹងបង្ហាញតារាង ឬតារាងណាមួយដែលត្រូវធ្វើការជាមួយ។ ប៉ុន្តែក្រោយមក ក្នុងអំឡុងពេលអនុវត្តកម្មវិធី ទ្រព្យសម្បត្តិ SQLអាច​ត្រូវ​បាន​បង្កើត​តាម​កម្មវិធី​ដោយ​ប្រើ​វិធីសាស្ត្រ​ទូទៅ​សម្រាប់​ថ្នាក់ ខ្សែអក្សរ : ច្បាស់- ការសម្អាត, បន្ថែម- បន្ថែមបន្ទាត់។ល។

ដូច្នេះនៅក្នុងទ្រព្យសម្បត្តិ SQLចុចប៊ូតុងដែលមានចំណុចបី ហើយនៅក្នុងបង្អួចដែលលេចឡើង សូមបញ្ចូល សំណួរ SQL(រូបភាព 62) ។

រូបភាព 62

សំណើស្តាប់ទៅដូចនេះ៖ ជ្រើសរើសវាលទាំងអស់ ( ជ្រើសរើស *) ពីតុ TELEPHON_SPRAVOCCHNIK (ពី TELEPHON_SPRAVOCCHNIK)និងតម្រៀប (ឡើង) តាមវាល គន្លឹះ (បញ្ជាទិញដោយគន្លឹះ) ។ចុចប៊ូតុង យល់ព្រម។

តោះជ្រើសរើសសមាសភាគ IBTransaction1និងនៅក្នុងទ្រព្យសម្បត្តិ មូលដ្ឋានទិន្នន័យលំនាំដើមតោះជ្រើសរើស មូលដ្ឋានទិន្នន័យ IBD1 .

តោះជ្រើសរើសសមាសភាគ IBStoredProc1,នៅក្នុងទ្រព្យសម្បត្តិ មូលដ្ឋានទិន្នន័យតោះជ្រើសរើស មូលដ្ឋានទិន្នន័យ IBD1 . នៅក្នុងទ្រព្យសម្បត្តិ StoredProcNameជ្រើសរើសនីតិវិធីរបស់យើងពីបញ្ជីទម្លាក់ចុះ TEL_SPRAV_PROCបានសរសេរនៅក្នុង IBExpert ។

សូមគូសបញ្ជាក់ IBQuery1,ទ្រព្យសម្បត្តិ សកម្មយើងនឹងដាក់វា ពិត .

តោះភ្ជាប់ទៅម៉ូឌុលនេះ។ (ម៉ូឌុលទិន្នន័យ 1) ម៉ូឌុលសំខាន់ TelSprav1 ដោយដំណើរការពាក្យបញ្ជា ឯកតាឯកសារ/ប្រើ…, នៅក្នុងបង្អួចដែលលេចឡើង (រូបភាព 63 ។ )

រូបភាព 63

តោះជ្រើសរើស TelSprav1 ហើយចុចប៊ូតុង ប្រើឯកតា។បន្ទាប់ពីពាក្យ ការអនុវត្តនៅក្នុងម៉ូឌុលនេះនឹងមានផ្នែកមួយ។ ប្រើប្រាស់ជាមួយនឹងឈ្មោះនៃម៉ូឌុលសំខាន់ TelSprav1. ឥឡូវនេះនេះគឺជាម៉ូឌុល ម៉ូឌុលទិន្នន័យ 1ដឹងអំពីអត្ថិភាពនៃម៉ូឌុលមេ TelSprav1.

តោះទៅម៉ូឌុលមេ TelSprav1ហើយឥឡូវនេះតោះភ្ជាប់ម៉ូឌុលទៅវា។ ម៉ូឌុលទិន្នន័យ 1.ឥឡូវនេះម៉ូឌុលទាំងពីរនេះដឹងពីអត្ថិភាពរបស់គ្នាទៅវិញទៅមក។

ជ្រើសរើសក្រឡាចត្រង្គ DBGrid1ហើយនៅក្នុងម៉ឺនុយទម្លាក់ចុះ លក្ខណៈសម្បត្តិ ប្រភពទិន្នន័យជ្រើសរើស DM.DataSource1 . ឈ្មោះនៃវាលមូលដ្ឋានទិន្នន័យនឹងបង្ហាញនៅក្នុងក្រឡាចត្រង្គរបស់យើង។

ឥឡូវ​យើង​បង្កើត​វិនដូ​សម្រាប់​បន្ថែម​ទិន្នន័យ និង​កែសម្រួល​វា។ តោះប្រតិបត្តិពាក្យបញ្ជា ឯកសារ/ថ្មី/ទម្រង់។ ជាបឋមសូមរក្សារូបរាងនៅលើពាក្យបញ្ជា ឯកសារ/រក្សាទុកគម្រោងជា... នៅក្នុងវាល ឈ្មោះឯកសារសូមណែនាំម៉ូឌុលមួយ។ AddavRedakt1.pas , ក ឈ្មោះទម្រង់ - AddavRedakt.dpr . នៅក្នុងទ្រព្យសម្បត្តិ ឈ្មោះបញ្ចូលឈ្មោះទម្រង់ DobRed ។ចូរ​ទម្លាក់​ទម្រង់​សមាសធាតុ​ចាំបាច់​សម្រាប់​បញ្ចូល និង​កែសម្រួល​ទិន្នន័យ៖

  1. កែ- ដើម្បីបញ្ចូលនាមត្រកូល។ នៅក្នុងទ្រព្យសម្បត្តិ ឈ្មោះយើងសរសេរ គ្រួសារនៅក្នុងទ្រព្យសម្បត្តិ អត្ថបទជម្រះវាលបញ្ចូល;
  2. កែ- ដើម្បីបញ្ចូលឈ្មោះ។ នៅក្នុងទ្រព្យសម្បត្តិ ឈ្មោះយើងសរសេរ អ៊ីម៉ា។នៅក្នុងទ្រព្យសម្បត្តិ អត្ថបទជម្រះវាលបញ្ចូល;
  3. TDateTimePicker- ដើម្បីបញ្ចូលកាលបរិច្ឆេទ។ នៅក្នុងទ្រព្យសម្បត្តិ ឈ្មោះយើងសរសេរ VData។នៅក្នុងបញ្ជីទម្លាក់ចុះលក្ខណៈសម្បត្តិ របៀបកាលបរិច្ឆេទតោះជ្រើសរើស dmUpDown,ប្រសិនបើអ្នកចង់បាន អ្នកអាចជ្រើសរើសតម្លៃផ្សេង។
  4. កែ- ដើម្បីបញ្ចូលលេខទូរស័ព្ទ។ នៅក្នុងទ្រព្យសម្បត្តិ ឈ្មោះយើងសរសេរ NomerTelefona ។នៅក្នុងទ្រព្យសម្បត្តិ អត្ថបទជម្រះវាលបញ្ចូល;
  5. កែ- សម្រាប់ការបញ្ចូល អាសយដ្ឋានអ៊ីមែល. នៅក្នុងទ្រព្យសម្បត្តិ ឈ្មោះយើងសរសេរ អ៊ីមែល។នៅក្នុងទ្រព្យសម្បត្តិ អត្ថបទជម្រះវាលបញ្ចូល;
  6. TCheckBox- សញ្ញានៃភាពជាម្ចាស់នៃទូរស័ព្ទដៃ។ ប្រសិនបើអ្នកធីកប្រអប់ខណៈពេលដែលកម្មវិធីកំពុងដំណើរការ នោះអ្នកមានទូរសព្ទដៃ មនុស្សនេះ។. នៅក្នុងទ្រព្យសម្បត្តិ ចំណងជើងយើងសរសេរ ទូរស័ព្ទចល័ត។នៅក្នុងទ្រព្យសម្បត្តិ ឈ្មោះយើងសរសេរ ម៉ូប៊ីលនីក;
  7. TComboBox- បញ្ជីទម្លាក់ចុះសម្រាប់ជ្រើសរើសទីក្រុង។ នៅក្នុងទ្រព្យសម្បត្តិ ឈ្មោះយើងសរសេរ ហ្គោរ៉ូដ។នៅក្នុងទ្រព្យសម្បត្តិ អត្ថបទជម្រះវាលបញ្ចូល;
  8. TButton- ប៊ូតុងដើម្បីបញ្ជាក់បន្ថែមទិន្នន័យ។ នៅក្នុងទ្រព្យសម្បត្តិ ឈ្មោះយើងសរសេរ បន្ថែម។នៅក្នុងទ្រព្យសម្បត្តិ ចំណងជើងសរសេរយល់ព្រម;
  9. TButton- ប៊ូតុងដើម្បីបញ្ជាក់ការកែសម្រួលទិន្នន័យ។ នៅក្នុងទ្រព្យសម្បត្តិ ឈ្មោះយើងសរសេរ កែប្រែឡើងវិញ។នៅក្នុងទ្រព្យសម្បត្តិ ចំណងជើងយើងសរសេរ យល់ព្រម។
យើង​បាន​បោះ​ប៊ូតុង​ដូចគ្នា​បេះបិទ​ចំនួន 2 លើ​ទម្រង់​ព្រោះ​ការ​ចុច ប៊ូតុងដាច់ដោយឡែកហើយនឹងកំណត់ថាតើសកម្មភាពអ្វីដែលគួរត្រូវបានអនុវត្តលើទិន្នន័យ។ ជាការពិតណាស់នេះគឺជាវិធីសាស្រ្តមិនសមហេតុផលប៉ុន្តែវាមានប្រសិទ្ធភាព។

តោះរក្សាទុករូបរាង។ តោះបិទគម្រោង ហើយបើកវាម្តងទៀត។ បន្ទាប់ពីបើកគម្រោងយើងត្រូវមើលផ្ទាំង AddavRedakt1 (រូបភាព 64) ។

រូបភាព 64

តោះប្រតិបត្តិពាក្យបញ្ជា គម្រោង/បន្ថែមទៅគម្រោង...ហើយនៅក្នុងបង្អួចដែលលេចឡើង (រូបភាព 65) ។

រូបភាព 65

តោះជ្រើសរើសឯកសារ AddavRedakt1.pas ហើយចុចប៊ូតុង យល់ព្រម។ដោយប្រើពាក្យបញ្ជាដូចគ្នា ជ្រើសរើសឯកសារ DataModule1.pas ប្រសិនបើយើងមិនមានផ្ទាំង ម៉ូឌុលទិន្នន័យ 1.ពាក្យបញ្ជានេះត្រូវបានប្រើតែនៅពេលដែលបង្អួច អ្នកគ្រប់គ្រងគម្រោងយើងមិនមានអ្វីដែលយើងត្រូវការទេ។ ប៉ានិង dprឯកសារ។ បង្អួច អ្នកគ្រប់គ្រងគម្រោងនឹងចេញមកតាមបញ្ជា មើល/គម្រោង/អ្នកគ្រប់គ្រង...

តោះភ្ជាប់ម៉ូឌុលកែសម្រួល AddavRedakt1 ទៅម៉ូឌុលមេ TelSprav1.យើងក៏នឹងភ្ជាប់ម៉ូឌុលមេទៅនឹងម៉ូឌុលកែសម្រួលនិង ម៉ូឌុលទិន្នន័យ 1.

ហ្នឹងហើយ! ចាំបាច់សម្រាប់ នៅដំណាក់កាលនេះ។, បង្អួចត្រូវបានបង្កើតឡើង។ ចូរបន្តទៅការសរសេរកម្មវិធី។

នៅក្នុងកម្មវិធីគ្រប់គ្រងព្រឹត្តិការណ៍ OnClick(ម៉ូឌុលសំខាន់) សម្រាប់ប៊ូតុង បន្ថែមសរសេរកូដខាងក្រោម៖

នីតិវិធី TTelefonSprav.DabavitClick(អ្នកផ្ញើ៖ TObject);
ចាប់ផ្តើម
   (ប្រសិនបើប៊ូតុង "Addavit" ត្រូវបានចុចបន្ទាប់មកយើងធ្វើ
    អថេរ "ExiStsDobRed" សកម្ម)

     ExiStsDobRed:=true;
   // ដោយចុចប៊ូតុង "Dabavit" - "Tag=1"
     tag:=1;
   // ធ្វើឱ្យប៊ូតុង "Dob" មាន
     DobRed.Dobav.Visible:=true;
   // ប៊ូតុង "ក្រហម" ដែលមិនអាចចូលបាន។
     DobRed.Redact.Visible:=false;
   // បើកបង្អួច
     DobRed.ShowModal;
បញ្ចប់;

ចូរប្រកាសអថេរសកល ExiStsDobRedនៅក្នុងផ្នែក វ៉ារ . វានឹងមើលទៅដូចនេះនៅក្នុងម៉ូឌុល។

var
  TelefonSprav៖ TTelefonSprav;
  ExiStsDobRed៖ boolean=false;

អថេរ​នេះ​បង្ហាញ​ថា​តើ​បង្អួច​បើក​ឬ​អត់ ការបន្ថែមនិងកែសម្រួលទិន្នន័យ។អថេរ​នេះ​គឺ​ជា​ប្រភេទ​ប៊ូលីន ហើយ​ស្មើ​តាម​លំនាំដើម មិនពិត។នៅពេលអ្នកចុចប៊ូតុង "បន្ថែម"អថេរ ExiStsDobRedស្មើនឹង ពិត។

សមាសធាតុនីមួយៗមានទ្រព្យសម្បត្តិ ស្លាក,ដែលអាចត្រូវបានប្រើជាអថេរសកលនៃប្រភេទចំនួនគត់តាមការសំរេចចិត្តរបស់អ្នក។ ចាត់ចែងទ្រព្យសម្បត្តិ 1 ស្លាក,វាគឺយោងទៅតាមតម្លៃនេះដែលប៊ូតុងដែលត្រូវការនឹងលេចឡើង។ ឧទាហរណ៍៖ យើងចុចប៊ូតុង អាដាវព្រឹត្តិការណ៍ដែលបានពិពណ៌នាខាងលើនឹងត្រូវបានបង្កឡើង។

ដូចដែលខ្ញុំបាននិយាយរួចហើយនៅក្នុងបង្អួចសម្រាប់ការបន្ថែមនិងកែសម្រួលទិន្នន័យមាន 2 ប៊ូតុង Addav, Redact(រូបភាព 66) ។

រូបភាព 66

រូបភាពបង្ហាញពីប៊ូតុងពីរ ប៉ុន្តែការពិតមានតែមួយប៉ុណ្ណោះដែលត្រូវបានបង្ហាញ។ ចាប់តាំងពីនៅក្នុងជួរទីបួននៃកូដយើងមានប៊ូតុងមួយ។ កែប្រែឡើងវិញធ្វើឱ្យវាមើលមិនឃើញ។ នៅជួរទីបីយើងធ្វើឱ្យប៊ូតុងអាចប្រើបាន បន្ថែម។ទ្រព្យសម្បត្តិទទួលខុសត្រូវចំពោះសកម្មភាពទាំងនេះ មើលឃើញ។នៅជួរចុងក្រោយយើងបង្ហាញបង្អួចសម្រាប់ ការបន្ថែមឬកែសម្រួលទិន្នន័យ។

ដើម្បីបង្កើតកម្មវិធី "ថតទូរស័ព្ទ" បរិស្ថានដែលមើលឃើញត្រូវបានប្រើ កម្មវិធី Delphi 7. គម្រោងកម្មវិធីនឹងមានបង្អួចបី៖

  • 1. fMain - ទម្រង់សំខាន់នៃកម្មវិធី។
  • 2. fEditor - ទម្រង់សម្រាប់បន្ថែម/កែសម្រួលធាតុ។
  • 3. fDM - ម៉ូឌុលទិន្នន័យ។

នៅលើទម្រង់ fDM យើងនឹងបន្ថែមសមាសភាគ ADOConnection, 1 ADOTable type component, 1 DataSource type component។ ចុចពីរដងលើលក្ខណសម្បត្តិ ConnectionString នៃសមាសភាគ ADOConnection ។ បង្អួចសម្រាប់ភ្ជាប់សមាសភាគទៅ ADO នឹងបើក (រូបភាពទី 2)៖

ពូក 2. បង្អួចសម្រាប់ភ្ជាប់ទៅ ADO ។

ចុចប៊ូតុង Build ។ បង្អួចថ្មីបើក (រូបភាពទី 3) ដែលមានការកំណត់ការតភ្ជាប់៖

អង្ករ។ ៣.

ជ្រើសរើសអ្នកផ្តល់ទិន្នន័យ - Microsoft OLE DB Provider សម្រាប់ SQLម៉ាស៊ីនមេ។ នៅលើផ្ទាំងការតភ្ជាប់៖ ជ្រើសរើសឈ្មោះម៉ាស៊ីនមេ ដែលមូលដ្ឋានទិន្នន័យរបស់អ្នកស្ថិតនៅ។ ឥឡូវតោះកំណត់ Connected Property ទៅ True។ តោះផ្លាស់ប្តូរលក្ខណៈសម្បត្តិខាងក្រោមនៃ ADOTable: ការតភ្ជាប់ទៅ ADOConnection1; ឈ្មោះតារាងនៅលើអ្នកជាវ; សកម្មទៅពិត។ ផ្លាស់ប្តូរលក្ខណសម្បត្តិខាងក្រោមនៃ DataSource (វានឹងជាតំណភ្ជាប់ទៅកាន់តារាង): DataSet to ADOTable។

តោះទៅទម្រង់សំខាន់។ ជ្រើសរើសពាក្យបញ្ជា ឯកសារ -> ប្រើឯកតា ហើយភ្ជាប់ម៉ូឌុល DM ទៅវា។ ឥឡូវនេះយើងនឹងអាចមើលឃើញតារាងពីទម្រង់សំខាន់។

យើងនឹងបង្ហោះវានៅលើ ទម្រង់សំខាន់សមាសធាតុ។ ពួកវាមានទីតាំងនៅក្នុងតំបន់នៃបង្អួចមេនៃបរិយាកាសរួមបញ្ចូលគ្នាដែលត្រូវបានគេហៅថាក្ដារលាយសមាសធាតុ (រូបភាព 4 ។ ) ។

អង្ករ។ ៤.

ចូរបន្ថែមប៊ូតុងបីទៅទម្រង់មេ fMain (រូបភាពទី 5) ។ ពួកវាត្រូវបានបម្រុងទុកសម្រាប់ការកែសម្រួលធាតុបច្ចុប្បន្ន បន្ថែមធាតុថ្មី និងលុបវា។

រូប ៥.

ផ្ទាំងគ្រប់គ្រងទិន្នន័យផ្តោតលើសមាសធាតុបង្ហាញទិន្នន័យដែលមើលឃើញ (អ្នកប្រើប្រាស់អាចមើលឃើញ) ដូចជា DBGrid (ក្រឡាចត្រង្គដែលបង្ហាញទិន្នន័យទាំងអស់ក្នុងតារាង និងអនុញ្ញាតឱ្យអ្នកកែសម្រួលវា) DBEdit (វាលកែសម្រួលទិន្នន័យដែលត្រូវបានរចនាឡើងសម្រាប់បញ្ចូល ឬកែសម្រួលវាលមួយនៃ កំណត់ត្រា នោះគឺជាក្រឡាតារាង) DBMemo (សម្រាប់កែសម្រួលវាល MEMO) ។ល។ ករណីលើកលែងតែមួយគត់គឺសមាសភាគ DBNavigator ។ សមាសភាគនេះមិនមានបំណងសម្រាប់បង្ហាញទិន្នន័យនោះទេ ប៉ុន្តែសម្រាប់ការផ្លាស់ប្តូរតាមរយៈកំណត់ត្រានៅក្នុងសំណុំទិន្នន័យ បញ្ចូលកំណត់ត្រាថ្មី ឬលុបកំណត់ត្រាចាស់។ បន្ថែម និងជ្រើសរើស DBGrid នៅក្នុងលក្ខណៈសម្បត្តិ DataSource របស់វា ជ្រើសរើស fDM.ADOTable។ ក្រឡាចត្រង្គត្រូវបានប្រតិកម្ម ហើយយើងឃើញឈ្មោះវាល (រូបភាពទី 6) ។

អង្ករ។ ៦.

ឥឡូវនេះ ចូរយើងបង្កើតតម្រងនៃកំណត់ត្រាដោយផ្អែកលើលក្ខណៈវិនិច្ឆ័យផ្សេងៗ។ ដើម្បី​ធ្វើ​ដូច្នេះ សូម​បន្ថែម​សមាសភាគ GroupBox ពីរ​ទៅ​ក្នុង​សំណុំ​បែបបទ។ នៅក្នុងវត្ថុត្រួតពិនិត្យ (រូបភាពទី 7 ។) នៅក្នុងលក្ខណៈសម្បត្តិចំណងជើងនៃសមាសភាគ GroupBox1 បញ្ចូល "តម្រងដោយវាលមួយ" និងសម្រាប់សមាសភាគ GroupBox2 "តម្រងតាមវាលជាច្រើន" ។

រូប ៧.

នៅលើ GroupBox1 យើងនឹងបន្ថែម 3 Labels, 1 ComboBox, 1 Edit, និង 2 RadioButtons។ សម្រាប់ Label1 ក្នុងលក្ខណៈសម្បត្តិ Caption យើងនឹងសរសេរ “Search in” សម្រាប់ Label2 “Enter data” សម្រាប់ Label3 “Method”។ នៅក្នុងលក្ខណសម្បត្តិធាតុនៃសមាសភាគ ComboBox សូមបញ្ចូលពីរជួរ៖ នាមត្រកូល ទូរស័ព្ទ (រូបភាពទី 8 ។ )។

រូប ៨.

RadioButton មានលក្ខណៈសម្បត្តិចំណងជើង "ពីដើមបន្ទាត់" និង "ការកើតឡើងណាមួយ" ។ នៅលើ GroupBox ទីពីរ បន្ថែម Labels បីជាមួយនឹងលក្ខណៈសម្បត្តិ Caption៖ នាមត្រកូល នាមខ្លួន ទូរសព្ទ។ សមាសភាគកែសម្រួលបី និងប៊ូតុងមួយជាមួយនឹងលក្ខណៈសម្បត្តិចំណងជើង "ស្វែងរក" ។ ហើយបន្ថែមប៊ូតុងមួយទៀតទៅក្នុងទម្រង់ដើម្បីលុបតម្រងចេញ។

ឥឡូវនេះយើងនឹងបង្កើតបង្អួចកម្មវិធីនិពន្ធទិន្នន័យ។ តោះបង្កើត ឯកសណ្ឋានថ្មី។(ឯកសារ -> ថ្មី -> ទម្រង់) ។ តោះប្តូរឈ្មោះឈ្មោះរបស់វាទៅជា fEditor។ ដោយប្រើពាក្យបញ្ជាឯកសារ -> ប្រើឯកតា យើងនឹងភ្ជាប់ម៉ូឌុលទិន្នន័យ DM ទៅទម្រង់។ ឥឡូវនេះយើងត្រូវដំឡើងសមាសភាគខាងក្រោមនៅលើទម្រង់: 8 Label, 7 DBEdit, 1 DBComboBox ។

ចូរយើងបញ្ចប់សមាសភាគ DBComboBox ។ ចុចពីរដងលើលក្ខណៈសម្បត្តិរបស់ Items ដើម្បីបើកកម្មវិធីនិពន្ធ។ យើងនឹងបញ្ចូលបីជួរនៅក្នុងវា៖

ផ្លូវ

ផ្លូវ

ផ្លូវ

រក្សាទុកអត្ថបទដោយចុចយល់ព្រម។

ចូរភ្ជាប់សមាសធាតុត្រួតពិនិត្យ។ ពេលកាន់ ជ្រើសរើសសមាសធាតុត្រួតពិនិត្យទាំងអស់ (សមាសធាតុទាំងអស់លើកលែងតែស្លាក)។ នៅក្នុងទ្រព្យសម្បត្តិ DataSource របស់ពួកគេ សូមជ្រើសរើស fDM.DSLichData ដោយភ្ជាប់សមាសធាតុទៅនឹងសំណុំទិន្នន័យដែលចង់បាន (តារាង)។ ចូរដកជម្រើសទូទៅចេញ ហើយជ្រើសរើស DBEdit ដំបូង។ នៅក្នុងលក្ខណៈសម្បត្តិ DataField របស់វា សូមជ្រើសរើសវាល "នាមត្រកូល"។ លក្ខណសម្បត្តិនេះភ្ជាប់សមាសធាតុដែលបានជ្រើសរើសទៅវាលតារាងជាក់លាក់មួយ។ តាមរបៀបដូចគ្នានេះយើងនឹងភ្ជាប់សមាសធាតុដែលនៅសល់ទៅនឹងវាលដែលត្រូវគ្នា។

នៅផ្នែកខាងស្តាំខាងក្រោម ដំឡើងសមាសភាគរុករក DBNavigator ពីផ្ទាំងគ្រប់គ្រងទិន្នន័យ។ សមាសភាគនេះត្រូវបានរចនាឡើងដើម្បីរុករកតាមរយៈកំណត់ត្រា បើករបៀបកែសម្រួលកំណត់ត្រា រក្សាទុក ឬលុបចោលការផ្លាស់ប្តូរដែលបានធ្វើ បន្ថែមកំណត់ត្រាថ្មី ឬលុបឯកសារដែលមានស្រាប់។ នៅក្នុងលក្ខណៈសម្បត្តិ DataSource របស់វា សូមជ្រើសរើស fDM.DSLichData ដើម្បីភ្ជាប់សមាសភាគទៅតារាងមេ។ យើងគ្រាន់តែត្រូវការពីសមាសភាគនេះនូវសមត្ថភាពក្នុងការទៅកាន់ដើម ឬចុងបញ្ចប់នៃតារាង ទៅកាន់កំណត់ត្រាបន្ទាប់ ឬពីមុន។ ដូច្នេះ ចូរយើងពង្រីកមុខងារ VisibleButtons របស់វា (លទ្ធភាពមើលឃើញប៊ូតុងរបស់សមាសភាគ) ហើយកំណត់ប៊ូតុងទាំងអស់ទៅជា False លើកលែងតែ nbFirst, nbPrior, nbNext និង nbLast។ ការចុចលើប៊ូតុងទាំងនេះនឹងហៅវិធីសាស្ត្រដែលត្រូវគ្នានៃសមាសភាគ ADOTable ។ វិធីសាស្រ្តទាំងនេះធ្វើដូចខាងក្រោមៈ

ដំបូង - ទៅកំណត់ត្រាដំបូងនៃតារាង។ មុន - ទៅកំណត់ត្រាមុន។ បន្ទាប់ - ផ្លាស់ទីទៅកំណត់ត្រាបន្ទាប់។ ចុងក្រោយ - ទៅកំណត់ត្រាចុងក្រោយ។

នៅពេលដែល DBNavigator នៅសល់ប៊ូតុងតែបួនប៉ុណ្ណោះ ប៊ូតុងទាំងនេះនឹងត្រូវបានពន្លូត។ ចូរកាត់បន្ថយទទឹងនៃសមាសភាគដើម្បីឱ្យប៊ូតុងមានរូបរាងដែលធ្លាប់ស្គាល់។

fDM.TLichData.ឧបសម្ព័ន្ធ;

DBEdit1.SetFocus;

ដោយប្រើវិធីសាស្រ្តបន្ថែមយើងបន្ថែមទៅតារាង ធាតុថ្មី។. បន្ទាប់យើងផ្ទេរការផ្តោតអារម្មណ៍បញ្ចូលទៅ DBEdit1 ដូច្នេះអ្នកប្រើប្រាស់មិនចាំបាច់ធ្វើរឿងនេះដោយខ្លួនឯងទេ។

ប្រសិនបើ fDM.TLichData.បានកែប្រែបន្ទាប់មក

fDM.TLichData.Post;

នៅទីនេះយើងរក្សាទុកការផ្លាស់ប្តូរនៅក្នុងតារាង ប្រសិនបើមាន ហើយបិទបង្អួច។

ចូរបន្តទៅទម្រង់សំខាន់។ តោះចាប់ផ្តើមជាមួយប៊ូតុង "អ្នកជាវថ្មី"។ អ្នកនឹងត្រូវបន្ថែមកំណត់ត្រាថ្មីទៅតារាងនីមួយៗ ហើយបន្ទាប់មកបើកបង្អួចកម្មវិធីនិពន្ធ៖

fDM.TLichData.ឧបសម្ព័ន្ធ;

fEditor.ShowModal;

តោះបង្កើតនីតិវិធី OnClick សម្រាប់ប៊ូតុង "កែសម្រួល" ។ វានឹងមានតែមួយជួរនៃកូដ៖

fEditor.ShowModal;

ជាលទ្ធផល បង្អួចកម្មវិធីនិពន្ធនឹងបើក ហើយសមាសធាតុនឹងបង្ហាញទិន្នន័យនៃកំណត់ត្រាបច្ចុប្បន្ន។

លេខកូដសម្រាប់ប៊ូតុង "លុប"៖

fDM.TLichData.លុប;

ចូរបន្តទៅការត្រងទិន្នន័យ។ នៅក្នុងតម្រងនេះ យើងជ្រើសរើសវាលស្វែងរក ជ្រើសរើសវិធីសាស្ត្រ និងបញ្ចូលទិន្នន័យ។

តោះបង្កើតព្រឹត្តិការណ៍ OnChange សម្រាប់សមាសភាគ Edit2។

ប្រសិនបើ ((ប្រវែង(កែសម្រួល២.អត្ថបទ) > ០) និង(ប្រវែង(ប្រអប់រួម១.អត្ថបទ) > ០)) បន្ទាប់មក

fDM.TLichData.Filtered:=false;

ប្រសិនបើ RadioButton1.Checked បន្ទាប់មក

fDM.TLichData.Filter:=Combobox1.Text + " LIKE " + #39 + Edit2.Text + "%" + #39

fDM.TLichData.Filter:=Combobox1.Text + " LIKE " + #39+ "%" + Edit2.Text + "%" + #39;

fDM.TLichData.Filtered:=true;

ផ្សេងទៀត fDM.TLichData.Filtered:=false;

បន្ទាត់លក្ខខណ្ឌតម្រងមានន័យថាដូចខាងក្រោម - ជ្រើសរើសកំណត់ត្រាទាំងនោះពីជួរឈរដែលចាប់ផ្តើមដោយតួអក្សរដូចគ្នាទៅនឹងអ្វីដែលបានវាយបញ្ចូលក្នុង Edit2.Text ។

ពាក្យគន្លឹះ LIKE អនុញ្ញាតឱ្យអ្នកប្រៀបធៀបខ្សែអក្សរដោយប្រើលំនាំដែលបានផ្តល់ឱ្យ។ ក្នុងករណីនេះអ្នកត្រូវដឹងដូចខាងក្រោមៈ

និមិត្តសញ្ញា "%" (ភាគរយ) - ជំនួសលំដាប់នៃតួអក្សរណាមួយ។

សញ្ញា #39 - មានន័យថាចំនួនតួអក្សរ " (សម្រង់តែមួយ) នៅក្នុងតារាងកូដ ASCII ។ ការពិតគឺថាតម្លៃសម្រាប់ការត្រងត្រូវតែបញ្ជាក់ក្នុងសម្រង់តែមួយ ហើយចាប់តាំងពីសម្រង់តែមួយត្រូវបានប្រើនៅក្នុង Delphi ដើម្បីកំណត់ខ្សែអក្សរ បន្ទាប់មកទៅ ដាក់នៅខាងក្នុងខ្សែ សម្រង់តែមួយ, វាចាំបាច់ត្រូវដាក់ពីរដង។

ត្រងតាមវាលច្រើន។ តោះបង្កើត ព្រឹត្តិការណ៍ OnClickនៅលើប៊ូតុងស្វែងរក។

នីតិវិធី TfMain.Button3Click(អ្នកផ្ញើ៖ TObject);

fDM.TLichData.filtered:=false;

ប្រសិនបើប្រវែង (កែសម្រួល 4. អត្ថបទ) > 0 បន្ទាប់មក

filtr:= "SURNAME LIKE "+ #39 + Edit4.Text + "%" + #39;

ប្រសិនបើប្រវែង (កែសម្រួល 5. អត្ថបទ) > 0 បន្ទាប់មក

ប្រសិនបើប្រវែង (តម្រង) >

filtr:=filtr + add + "NAME LIKE" + #39 + Edit5.Text + "%" + #39;

ប្រសិនបើប្រវែង (កែសម្រួល 6. អត្ថបទ) > 0 បន្ទាប់មក

ប្រសិនបើ length(filtr) > 0 បន្ទាប់មកបន្ថែម:=" និង " else add:="";

filtr:=filtr + add + "phone LIKE" + #39 + Edit6.Text + "%" + #39;

ប្រសិនបើប្រវែង (តម្រង) > 0 បន្ទាប់មក

fDM.TLichData.Filter:= filtr;

fDM.TLichData.filtered:=true;

Showmessage("វាលទាំងអស់គឺទទេ!");

ដើម្បីបិទតម្រង ចុចលើប៊ូតុង "លុបតម្រង"។ លេខកូដរបស់នាងគឺដូចនេះ៖

fDM.TLichData.Filter:="";

fDM.TLichData.Filtered:= មិនពិត;

ដោយសារកម្មវិធីគឺសាមញ្ញ ខ្ញុំបានសម្រេចចិត្តប្រើមូលដ្ឋានទិន្នន័យ MS Jet 4.0 (និយាយម្យ៉ាងទៀត MS Access database)។ ការសម្រេចចិត្តនេះគឺបណ្តាលមកពីការពិតដែលថា Jet (សូមកុំច្រឡំវាជាមួយ MS Access) ផលិតផលឥតគិតថ្លៃនិងភ្ជាប់មកជាមួយ MS Windows (នោះគឺដើម្បីឱ្យកម្មវិធីរបស់យើងដំណើរការ មិនចាំបាច់ដំឡើង Access ដោយខ្លួនឯងនៅលើកុំព្យូទ័ររបស់អតិថិជនទេ)។ ហើយកម្មវិធីនិពន្ធមូលដ្ឋានទិន្នន័យគឺល្អណាស់ ហើយខឺណែលគាំទ្រប្រភេទវាលជាច្រើន ដើម្បីបំពេញនូវបំណងប្រាថ្នាដែលបំប្លែងបំផុតនៅពេលរក្សាទុកទិន្នន័យ។

ដូច្នេះ ចូរយើងបង្កើត Database ថ្មីមួយ ហៅវាថា Test ហើយរក្សាទុកវានៅក្នុង C:\ClientServer\Server\Data folder (សម្រាប់ហេតុផលជាក់ស្តែង ខ្ញុំបានលុបចោលដំណើរការនៃការបង្កើត Database ថ្មីនៅក្នុង Access ហើយខ្ញុំនឹងផ្តល់អោយតែរចនាសម្ព័ន្ធនៃ តារាងរួមបញ្ចូលនៅក្នុងមូលដ្ឋានទិន្នន័យរបស់យើង) ។

1. តារាងទីមួយ សូមហៅវាថា ទីមួយ (ល្អ ខ្ញុំមិនមែនជាអ្នកសរសេរទេ!)

2. តារាងទីពីរ ហើយសូមហៅវាថាអ្វីដែលឆ្លាត - ទីពីរ

មែនហើយ នោះហើយជាវា ជាមួយនឹងមូលដ្ឋាន ហើយនោះជាវា។

2. កម្មវិធី
២.១. ម៉ាស៊ីនមេកម្មវិធី។

តោះបង្កើតកម្មវិធីថ្មី ហើយរក្សាទុកវាក្រោមឈ្មោះ Server ក្នុងថត C:\ClientServer\Server។ ចូរយើងបន្ថែមម៉ូឌុលទិន្នន័យពីចម្ងាយទៅកម្មវិធីពីផ្ទាំង Multitier នៃឃ្លាំង (រូបភាពទី 1)។

នៅពេលបន្ថែម RDM អ្នកជំនួយការបន្ថែមនឹងសួររកប៉ារ៉ាម៉ែត្រនៃម៉ូឌុលនេះ - នៅទីនោះយើងនឹងបញ្ចូលឈ្មោះម៉ាស៊ីនមេរបស់យើង "សាកល្បង" ។

យើងនឹងទុកឱ្យអ្វីៗផ្សេងទៀតមិនផ្លាស់ប្តូរ។ បន្ទាប់ពីចុចប៊ូតុង "យល់ព្រម" ទម្រង់ស្រដៀងទៅនឹងម៉ូឌុលទិន្នន័យធម្មតាដែលមានឈ្មោះថា Test នឹងបង្ហាញនៅក្នុងគម្រោង។ ចូរយើងរក្សាទុកវានៅក្រោមឈ្មោះ RDMFrm.pas.

ចូរដាក់នៅលើវានូវសមាសធាតុ ADOConnection (មួយដុំ) ADOTable និង DataSetProvider (ពីរបំណែកនីមួយៗ)។ ចូរហៅសមាសភាគ ADOTable និង DataSetProvider adotFirst, adotSecond, dspFirst និង dspSecond រៀងគ្នា។ ដោយ ចុចពីរដងនៅលើសមាសភាគ ADOConnection អ្នកជំនួយការខ្សែតភ្ជាប់នឹងលេចឡើង។ ជ្រើសរើសធាតុ "ប្រើខ្សែតភ្ជាប់" ហើយចុចប៊ូតុង Build ។ នៅក្នុងបង្អួច "លក្ខណសម្បត្តិតំណទិន្នន័យ" ដែលបង្ហាញ សូមជ្រើសរើស "ក្រុមហ៊ុនផ្តល់សេវា Microsoft Jet 4.0 OLE DB" ហើយចុចប៊ូតុង "បន្ទាប់" ។ នៅក្នុងផ្ទាំង "ការតភ្ជាប់" បញ្ចូលផ្លូវទៅកាន់មូលដ្ឋានទិន្នន័យ ចុចប៊ូតុង "ពិនិត្យការតភ្ជាប់" ហើយទទួលសារថាការត្រួតពិនិត្យការតភ្ជាប់ត្រូវបានបញ្ចប់។ បន្ទាប់មកបិទអ្នកជំនួយការដោយចុចប៊ូតុងយល់ព្រម។ សមាសភាគ ADOConnection ក៏មានលក្ខណៈសម្បត្តិមួយហៅថា LoginPrompt ដែលយើងនឹងកំណត់ទៅជា False និង Connected to True ។ សម្រាប់សមាសធាតុដែលអាចទទួលយកបាន សូមកំណត់លក្ខណសម្បត្តិការតភ្ជាប់ទៅ ADOConnection ដោយជ្រើសរើសពីបញ្ជីទម្លាក់ចុះ។ កំណត់លក្ខណៈសម្បត្តិ TableName ទៅទីមួយ និងទីពីរ រៀងគ្នា។ លក្ខណសម្បត្តិ CursorType គឺ ctDynamic ទ្រព្យសម្បត្តិ TableDirect គឺពិត។ ហៅទៅ FieldsEditor ហើយបន្ថែមវាលទាំងអស់នៅទីនោះ។

សម្រាប់សមាសភាគ DataSetProvider៖

នៅចំណុចនេះដំណើរការនៃការបង្កើតម៉ាស៊ីនមេ MIDAS បឋមអាចត្រូវបានចាត់ទុកថាពេញលេញ។ ដើម្បីចុះឈ្មោះម៉ាស៊ីនមេនៅក្នុងប្រព័ន្ធរង DCOM អ្នកត្រូវដំណើរការកម្មវិធីជាមួយប៉ារ៉ាម៉ែត្រ /regserver - Server.exe /regserver ។
ហើយការប៉ះចុងក្រោយគឺកម្មវិធី SocketServer ពី Borland ដែលមានទីតាំងនៅក្នុងថត Delphi?/bin/scktsvr.exe ។ ដើម្បីឱ្យអតិថិជនមើលឃើញម៉ាស៊ីនមេ អ្នកត្រូវដំណើរការ scktsvr.exe (ប្រសិនបើអ្នកបានដំឡើង Win NT/w2k/XP អ្នកអាចចុះឈ្មោះកម្មវិធីនេះជាសេវាកម្មមួយ ដើម្បីធ្វើដូច្នេះបាន អ្នកត្រូវដំណើរការវាជាមួយ scktsvr .exe / ដំឡើងប៉ារ៉ាម៉ែត្រ)

២.២. កម្មវិធីអតិថិជន

តោះបង្កើតកម្មវិធីថ្មី ហើយរក្សាទុកវាក្នុងថត C:\ClientServer\Client ក្រោមឈ្មោះ Client ។ ចូរដាក់នៅលើទម្រង់សំខាន់ពីរសមាសភាគនីមួយៗ ClientDataSet (តោះហៅពួកវាថា cdsFirst, cdsSecond), DataSource (តោះហៅពួកវាថា dsFirst, dsSecond), DBGrid (តោះហៅពួកវាថា dbgFirst, dbgSecond) និងសមាសភាគ SocetConnection មួយ។

SocetConnection

ប្រសិនបើអ្នកធ្វើអ្វីគ្រប់យ៉ាងបានត្រឹមត្រូវ នោះនៅពេលដែលអ្នកកំណត់លក្ខណសម្បត្តិដែលបានភ្ជាប់ទៅ True កម្មវិធីម៉ាស៊ីនមេគួរតែចាប់ផ្តើម។

សំណុំទិន្នន័យអតិថិជន

តោះបើកកម្មវិធី Field Editor (ចុចពីរដងលើសមាសភាគ) ហើយបន្ថែមវាលទាំងអស់នៅទីនោះ។ សម្រាប់សមាសធាតុ សំណុំទិន្នន័យអតិថិជនតោះសរសេរអ្នកដោះស្រាយ sdsAfterPost

ហើយជំនួសវាសម្រាប់ដំណើរការព្រឹត្តិការណ៍ AfterPostទាំង ClientDataSets ។

ប្រភពទិន្នន័យ

ទ្រព្យសម្បត្តិ អត្ថន័យ
សំណុំទិន្នន័យcds ទីមួយ និង cds ទីពីរ រៀងគ្នា។

DBGrid

ទ្រព្យសម្បត្តិ អត្ថន័យ
ប្រភពទិន្នន័យdsFirst និង dsSecond រៀងគ្នា។

តោះចាប់ផ្តើមកម្មវិធីនិពន្ធជួរឈរ (ចុចពីរដងលើសមាសភាគ) ហើយបន្ថែមវាលទាំងអស់នៅទីនោះ។
ចូរដាក់ប៊ូតុងមួយនៅលើទម្រង់នៅជិតក្រឡាចត្រង្គ ហើយសរសេរវាទៅក្នុងកម្មវិធីដោះស្រាយ onClick ។

ការបញ្ជូនការងារល្អរបស់អ្នកទៅកាន់មូលដ្ឋានចំណេះដឹងគឺងាយស្រួល។ ប្រើទម្រង់ខាងក្រោម

សិស្ស និស្សិត និស្សិតបញ្ចប់ការសិក្សា អ្នកវិទ្យាសាស្ត្រវ័យក្មេង ដែលប្រើប្រាស់មូលដ្ឋានចំណេះដឹងក្នុងការសិក្សា និងការងាររបស់ពួកគេ នឹងដឹងគុណយ៉ាងជ្រាលជ្រៅចំពោះអ្នក។

បង្ហោះនៅលើ http://www.allbest.ru/

តេស្ត

ការអភិវឌ្ឍន៍កម្មវិធីម៉ាស៊ីនភ្ញៀវ-ម៉ាស៊ីនមេនៅក្នុងអេលហ្វី

ទិដ្ឋភាពទូទៅនៃសមាសធាតុ

ដើម្បីធ្វើការជាមួយ ADO មានសមាសធាតុចំនួនប្រាំមួយនៅក្នុងផ្ទាំងសមាសភាគ ADO: TADOConnection, TADOCommand, TADODataSet, TADOTable, TADOQuery, TADOStoredProc ។

អង្ករ។ 1. ក្ដារលាយនៃសមាសធាតុ ADO

TADOConnection ត្រូវបានប្រើដើម្បីបញ្ជាក់មូលដ្ឋានទិន្នន័យ និងធ្វើការជាមួយប្រតិបត្តិការ។

TADOTable គឺជាតារាងដែលអាចចូលប្រើបានតាមរយៈ ADO ។

TADOQuery - សំណួរទៅកាន់មូលដ្ឋានទិន្នន័យ។ នេះអាចជាសំណួរដែលត្រឡប់ទិន្នន័យ និងមូលដ្ឋានទិន្នន័យ (ឧទាហរណ៍ SELECT) ឬសំណួរដែលមិនត្រឡប់ទិន្នន័យ (ឧទាហរណ៍ INSERT)។

TADOStoredProc - ហៅដំណើរការដែលបានរក្សាទុក។

TADOCommand និង TADODataSet គឺច្រើនបំផុត សមាសធាតុទូទៅសម្រាប់ធ្វើការជាមួយ ADO ប៉ុន្តែក៏ជាការលំបាកបំផុតក្នុងការធ្វើការជាមួយ។ សមាសធាតុទាំងពីរអនុញ្ញាតឱ្យអ្នកប្រតិបត្តិពាក្យបញ្ជាជាភាសារបស់អ្នកផ្តល់ទិន្នន័យ (ដូចដែលកម្មវិធីបញ្ជាមូលដ្ឋានទិន្នន័យត្រូវបានគេហៅថានៅក្នុង ADO) ។

ភាពខុសគ្នារវាងពួកវាគឺថាពាក្យបញ្ជាដែលបានប្រតិបត្តិតាមរយៈ TADODataSet ត្រូវតែត្រឡប់សំណុំទិន្នន័យ ហើយសមាសភាគនេះអនុញ្ញាតឱ្យអ្នកធ្វើការជាមួយពួកគេដោយប្រើឧបករណ៍ Delphi (ឧទាហរណ៍ ការចងសមាសធាតុនៃប្រភេទ TDataSource) ។ ហើយសមាសភាគ TADOCommand អនុញ្ញាតឱ្យអ្នកប្រតិបត្តិពាក្យបញ្ជាដែលមិនត្រឡប់សំណុំទិន្នន័យ ប៉ុន្តែមិនមាន មូលនិធិទៀងទាត់ Delphi ដើម្បីប្រើសំណុំទិន្នន័យដែលបានត្រឡប់មកវិញនៅពេលក្រោយ។

ជាក់ស្តែង សមាសធាតុទាំងអស់ត្រូវតែទាក់ទងជាមួយមូលដ្ឋានទិន្នន័យ។ នេះត្រូវបានធ្វើតាមពីរវិធី ទាំងតាមរយៈសមាសភាគ TADOConnection ឬដោយការបញ្ជាក់ដោយផ្ទាល់នូវមូលដ្ឋានទិន្នន័យនៅក្នុងសមាសភាគផ្សេងទៀត។ សមាសធាតុផ្សេងទៀតត្រូវបានចងភ្ជាប់ទៅនឹង TADOConnection ដោយប្រើលក្ខណសម្បត្តិការតភ្ជាប់ និងទៅកាន់មូលដ្ឋានទិន្នន័យដោយផ្ទាល់តាមរយៈលក្ខណសម្បត្តិ ConnectionString ។

ក្បួនដោះស្រាយមូលដ្ឋានទិន្នន័យកម្មវិធី

តារាងទី 1. សមាសធាតុចម្បងនៃផ្ទាំង ADO

ឈ្មោះ

លក្ខណៈសម្បត្តិមូលដ្ឋាន

មតិយោបល់

ទទួលខុសត្រូវចំពោះការទំនាក់ទំនងជាមួយមូលដ្ឋានទិន្នន័យ

ការតភ្ជាប់ខ្សែអក្សរ

មានការកំណត់សម្រាប់ភ្ជាប់ទៅមូលដ្ឋានទិន្នន័យ។

ប្រើដើម្បីបញ្ជាក់ថាតើត្រូវបង្ហាញប្រអប់សម្រាប់បញ្ចូលលេខសម្គាល់អ្នកប្រើប្រាស់ និងពាក្យសម្ងាត់នៅពេលភ្ជាប់ទៅមូលដ្ឋានទិន្នន័យ។

បង្ហាញពីសកម្មភាពនៃការតភ្ជាប់៖ ពិតមានន័យថាការតភ្ជាប់ត្រូវបានបើក ក្លែងក្លាយមានន័យថាបិទ។

វិធីសាស្រ្តមូលដ្ឋាន

មតិយោបល់

ប្រើដើម្បីចាប់ផ្តើមប្រតិបត្តិការថ្មី និងត្រឡប់កម្រិតនៃប្រតិបត្តិការដែលជាប់គាំង។

បិទការតភ្ជាប់ដែលបើកបច្ចុប្បន្ន

សរសេរការផ្លាស់ប្តូរទាំងអស់ដែលធ្វើឡើងដោយប្រតិបត្តិការបច្ចុប្បន្នទៅកាន់មូលដ្ឋានទិន្នន័យ ហើយបញ្ចប់វា។

ប្រើដើម្បីប្រតិបត្តិសំណួរ ឬនីតិវិធីដែលបានរក្សាទុក។ សេចក្តីថ្លែងការណ៍ដែលអាចប្រតិបត្តិបានត្រូវបានឆ្លងកាត់ វិធីសាស្រ្តនេះ។តាមរយៈប៉ារ៉ាម៉ែត្រ;

បើកការតភ្ជាប់ទៅប្រភពទិន្នន័យដែលបានបញ្ជាក់នៅក្នុង ConnectionString

បោះបង់ការផ្លាស់ប្តូរទាំងអស់ដែលបានធ្វើឡើងចាប់តាំងពីការហៅចុងក្រោយទៅកាន់វិធី BeginTrans ហើយបញ្ចប់ប្រតិបត្តិការដោយមិនរក្សាទុកការផ្លាស់ប្តូរ។

លក្ខណៈសម្បត្តិមូលដ្ឋាន

មតិយោបល់

TADOQuery រចនាឡើងសម្រាប់ធ្វើការជាមួយសំណួរ

រចនាឡើងដើម្បីធ្វើការជាមួយនីតិវិធីដែលបានរក្សាទុក

មាន​ឈ្មោះ​សមាសភាគ ADOConnection

មាន​ឈ្មោះ​នៃ​នីតិវិធី​ដែល​បាន​រក្សា​ទុក

ក្បួនដោះស្រាយការងារ

1. បង្កើត DataModule ថ្មីមួយ ជ្រើសរើសធាតុម៉ឺនុយ File\New\DataModule។ យើងហៅគាត់ថា DM ។

យើងបោះ ADOConnection, ADOQuery និងសមាសធាតុ ADOStoredProcedure បីនៅលើ DM ។ របៀបដែលវាមើលទៅដូចសូមមើលរូបទី 2

Fig.2 មើល DM

2. កំណត់លក្ខណៈសម្បត្តិសមាសធាតុ

ADOConnection - សូមមើលសៀវភៅណែនាំ។

ប្តូរឈ្មោះ ADOQuery 1 ទៅ QVrash ហើយសរសេរសំណួរក្នុងលក្ខណសម្បត្តិ SQL៖

ជ្រើសរើស * ពី Vrash

លក្ខណៈសម្បត្តិនៃការតភ្ជាប់គឺ ADOConnectionl ។

បង្កើតវាលឋិតិវន្តសម្រាប់ QVrash ។

សម្រាប់សមាសភាគ ADOStoredProcl យើងកំណត់លក្ខណៈសម្បត្តិដូចខាងក្រោម

* ឈ្មោះ - ASPINsVrash

* ការតភ្ជាប់ - ADOConnection 1

* ឈ្មោះនីតិវិធី - បញ្ចូលមេ; ១

ប្រសិនបើអ្នកចុចលើលក្ខណៈសម្បត្តិ ប៉ារ៉ាម៉ែត្រ អ្នកនឹងឃើញប៉ារ៉ាម៉ែត្រដែលយើងនឹងឆ្លងទៅនីតិវិធី។

សម្រាប់សមាសភាគ ADOStoredProc2 កំណត់លក្ខណៈសម្បត្តិដូចខាងក្រោម

* ឈ្មោះ - ASPedVrash

* ការតភ្ជាប់ - ADOConnectionl

* ProcedureName - MainEdit; ១

សម្រាប់សមាសភាគ ADOStoredProc3 កំណត់លក្ខណៈសម្បត្តិដូចខាងក្រោម

* ឈ្មោះ - ASPdelVrash

* ការតភ្ជាប់ - ADOConnectionl

* ProcedureName - MainDelete; ១

ដាក់សមាសភាគ DBGrid, ប៊ូតុងពីរ, DataSource, MainMenu នៅលើទម្រង់ 1

រូប ៣. ទម្រង់ 1

ប្តូរឈ្មោះប៊ូតុងតាមរូបភាព

សម្រាប់ប៊ូតុងធ្វើបច្ចុប្បន្នភាពលេខកូដ

DM.QVrash.Close; // ធ្វើបច្ចុប្បន្នភាព n/a

ការបង្កើតម៉ឺនុយ

អង្ករ។ 3. កែសម្រួលម៉ឺនុយ

បង្កើតទម្រង់សម្រាប់បន្ថែម/កែសម្រួល៖ សមាសភាគកែសម្រួល

កូដកម្មវិធីសម្រាប់ធាតុម៉ឺនុយនៅលើទម្រង់ 1-បន្ថែម

Form3.Edit1.text:="";

Form3.Edit2.text:="";

Form3.Edit3.text:="";

Form3.Edit4.text:="";

ទម្រង់ 3.showmodal;

កូដកម្មវិធីសម្រាប់ប៊ូតុងនៅលើទម្រង់ 3-បញ្ចូល

showmessage("មិនមែនគ្រប់វាលទាំងអស់ត្រូវបានបំពេញទេ");

អ៊ីnd;

រី

DM.ADOConnection1.BeginTrans;

ជាមួយ DM.ASPInsVrash ធ្វើ

Parameters.ParamByName("@ID_Physician").តម្លៃ៖=StrToInt(Edit1.text);

Parameters.ParamByName("@YYYY`).តម្លៃ៖=Edit2.Text;

Parameters.ParamByName("@YYYY").តម្លៃ៖=Edit3.Text;

Parameters.ParamByName("@YYYY").តម្លៃ៖=Edit4.text;

DM ASPINsVrash.ExecProc;

អ៊ីលើកលែងតែ

DM QVrash.បិទ;

DM QVrash.Open;

បង្ហោះនៅលើ http://www.allbest.ru/

កូដកម្មវិធីសម្រាប់ធាតុម៉ឺនុយនៅលើទម្រង់ 1 - កែសម្រួល

// ការកែសម្រួល

n:=DM QVrash.XXXXX.Value;

DM QVrash.បិទ;

DM QVrash.Open;

DM QVrash.Locate(XXXX,n,);

Form3.Label6.Caption:=IntToStr(DM.QVrash.XXXXXvalue);

Form3.Edit1.text:=inttostr(DM.QVrashYYYYYY.Value);

Form3.Edit2.text:=inttostr(DM.QVrashYYYYY.Value);

Form3.Edit3.text:=floattostr(DM.QVrashYYYYY.Value);

Form3.Edit4.text:=DateToStr(DM.QVrash.YYYY.Value);

ទម្រង់ 3.Showmodal;

DM QVrash.បិទ;

DM QVrash.Open;

កូដកម្មវិធីសម្រាប់ប៊ូតុងនៅលើទម្រង់ 3 - កែសម្រួល

ប្រសិនបើ (Edit1.text="") ឬ (Edit2.Text="") ឬ (Edit3.Text="") ឬ (Edit4.Text="") បន្ទាប់មក

ShowMessage("មិនមែនគ្រប់វាលទាំងអស់ត្រូវបានបំពេញក្នុងទេ");

អ៊ី;

រី

DM.ADOConnection1.BeginTrans;

ជាមួយ DM.ASPEdVrash ធ្វើ

Parameters.ParamByName("@XXXX).តម្លៃ៖= DM.a QVrash.XXXXX.value;

Parameters.ParamByName("@YYYY).តម្លៃ៖=Edit1.text;

Parameters.ParamByName("@YYYYY).តម្លៃ៖=Edit2.Text;

Parameters.ParamByName("@YYYY").តម្លៃ៖=Edit3.Text;

Parameters.ParamByName("@YYYY).តម្លៃ៖=StrToDate(Edit4.text);

DM.ASPEd.ExecProc;

DM.ADOConnection1.CommitTrans;

អ៊ីលើកលែងតែ

DM.ADOConnection1.RollbackTrans;

ShowMessage("មិនអាចបញ្ចប់បានទេ។ សូមព្យាយាមម្តងទៀត។");

DM QVrash.បិទ;

កូដកម្មវិធីសម្រាប់ធាតុម៉ឺនុយនៅលើទម្រង់ 1 - លុប

ចាប់ផ្តើម// លុប

if MessageDlg("តើអ្នកប្រាកដថាចង់លុបធាតុនេះទេ?", mtConfirmation,,0)=mrYes បន្ទាប់មក

DM.ASPDel.Parameters.ParamByName("@XXXX).តម្លៃ៖=DM.ADOQuery1XXXXX.Value;

រី

DM.ADOConnection1.BeginTrans;

DM.ASPdelVrash.ExecProc;

DM.ADOConnection1.CommitTrans;

អ៊ីលើកលែងតែ

ShowMessage("ការលុបបានបរាជ័យ!"+#13+"ធាតុត្រូវបានរារាំង ឬត្រូវបានលុបរួចហើយ!");

DM.ADOConnection1.RollbackTrans;

អ៊ីxit;

DM QVrash.បិទ;

DM QVrash.Open;

បានចុះផ្សាយក្នុង Allbest.ru

ឯកសារស្រដៀងគ្នា

    ការអភិវឌ្ឍន៍ប្រព័ន្ធព័ត៌មាន ការគ្រប់គ្រងរដ្ឋបាល. ការជ្រើសរើសភាសាសរសេរកម្មវិធី និងបរិស្ថាន។ រចនាសម្ព័ន្ធនៃអន្តរកម្មព័ត៌មាន។ តម្រូវការសម្រាប់បរិស្ថានផ្នែកទន់ និងផ្នែករឹង។ ការបង្កើតកម្មវិធីនៅក្នុង Delphi ហើយភ្ជាប់វាទៅមូលដ្ឋានទិន្នន័យ។

    ការងារវគ្គសិក្សាបន្ថែម 10/08/2015

    Borland Delphi 7 ជាឧបករណ៍អភិវឌ្ឍន៍សកលដែលប្រើក្នុងផ្នែកជាច្រើននៃការសរសេរកម្មវិធី មុខងារ៖ បន្ថែមព័ត៌មានអំពីអ្នកដាក់ពាក្យទៅមូលដ្ឋានទិន្នន័យ បង្កើតរបាយការណ៍។ ការពិចារណានិងលក្ខណៈនៃសមាសធាតុសំខាន់ៗរបស់ Delphi ។

    ការធ្វើតេស្តបន្ថែម 10/18/2012

    ការអភិវឌ្ឍន៍កម្មវិធីសម្រាប់ធ្វើការជាមួយព័ត៌មាន និងដំណើរការរបស់វាជាភាសាកម្មវិធី Delphi ។ ការពិពណ៌នាអំពីក្បួនដោះស្រាយសម្រាប់ធ្វើការជាមួយជង់ - បន្ថែម លុបធាតុ កែសម្រួលកំណត់ត្រា។ ការណែនាំសម្រាប់ការប្រើប្រាស់កម្មវិធី។

    ការងារវគ្គសិក្សា, បានបន្ថែម 02/06/2013

    ការពិចារណាលើលក្ខណៈនៃបរិយាកាសកម្មវិធី Delphi ការវិភាគនៃកំណែម៉ាស៊ីនភ្ញៀវ-ម៉ាស៊ីនមេ។ ការណែនាំអំពីបណ្ណាល័យសមាសភាគដែលមើលឃើញ។ មុខងារជាមូលដ្ឋាននៃកម្មវិធីនិពន្ធឆ្លាតវៃ។ លក្ខណៈពិសេសនៃតម្រូវការមូលដ្ឋានទិន្នន័យ។ មុខងាររបស់កម្មវិធី Master ។

    និក្ខេបបទបន្ថែម ០៣/១០/២០១៣

    លក្ខណៈពិសេសនៃប្រព័ន្ធសរសេរកម្មវិធី។ សមាសធាតុសំខាន់នៃ Delphi ។ ចំណុចប្រទាក់ កម្មវិធីកម្មវិធី. លទ្ធផលនៃកម្មវិធី។ ការគ្រប់គ្រង អ្នកសរសេរកម្មវិធីប្រព័ន្ធនិងប្រតិបត្តិករ។ ភាសាកម្មវិធី Delphi, បរិស្ថានចងក្រង Borland 7.0 ។

    ការងារវគ្គសិក្សា, បានបន្ថែម 05/29/2013

    ការសរសេរកម្មវិធីសម្រាប់ធ្វើការជាមួយអតិថិជនដោយប្រើភាសា Delphi ដែលផ្តល់សម្រាប់ការបញ្ចូល កែសម្រួល និងលុបព័ត៌មាន។ ការអភិវឌ្ឍន៍នៃក្បួនដោះស្រាយសម្រាប់ការដោះស្រាយបញ្ហា ការពិពណ៌នាអំពីអថេរ នីតិវិធីជំនួយ ទិន្នន័យបញ្ចូល និងទិន្នផល។

    ការងារវគ្គសិក្សា, បានបន្ថែម 09/21/2010

    លក្ខណៈទូទៅប្រព័ន្ធកម្មវិធី Delphi ក៏ដូចជាគោលការណ៍សម្រាប់បង្កើតសមាសធាតុរបស់វា។ ការពិពណ៌នាអំពីតម្លៃឯកសារនៃកម្មវិធីដែលបានបង្កើតជាមួយ Delphi ។ រចនាសម្ព័ន្ធ និងលក្ខណៈសម្បត្តិនៃបណ្ណាល័យសមាសភាគដែលមើលឃើញ (បណ្ណាល័យសមាសភាគដែលមើលឃើញ ឬ VCL) ។

    របាយការណ៍ការអនុវត្តបន្ថែម 12/07/2010

    ការរចនា និងការបង្កើតចំណុចប្រទាក់អ្នកប្រើប្រាស់ និងការសរសេរកម្មវិធីដែលមើលឃើញនៅក្នុងបរិយាកាស Delphi ។ ប្រព័ន្ធគ្រប់គ្រងមូលដ្ឋានទិន្នន័យ។ ក្នុងស្រុក និងសកល ទស្សនៈផ្ទាល់ខ្លួន. ការវិភាគដែន។ គោលបំណងនៃទម្រង់និងសមាសធាតុ។

    ការងារវគ្គសិក្សា, បានបន្ថែម 03/07/2014

    ប្រវត្តិនៃបរិយាកាសអភិវឌ្ឍន៍រួមបញ្ចូលគ្នា កំណែរបស់ Delphi ។ ការរៀបចំបណ្ណាល័យសមាសធាតុ។ ទំព័របន្ថែម សមាសធាតុគោលបំណងទូទៅមួយចំនួនដែលប្រើជាទូទៅ។ ឯកសារដែលអាចប្រតិបត្តិបាននៃកម្មវិធី "បណ្ណសារ" ឯកសារអត្ថបទ", ចំណុចប្រទាក់កម្មវិធី។

    ការងារវគ្គសិក្សា, បានបន្ថែម 05/16/2017

    ការអភិវឌ្ឍន៍ ផលិតផលសូហ្វវែរនៅក្នុងភាសាសរសេរកម្មវិធី Borland Delphi ។ តារាងដែលប្រើ និងទំនាក់ទំនងរវាងពួកវា។ ចំណុចប្រទាក់អ្នកប្រើសម្រាប់ធ្វើការជាមួយមូលដ្ឋានទិន្នន័យ។ ក្បួនដោះស្រាយសម្រាប់កម្មវិធី "ក្រុមបាល់ទាត់និងអ្នកលេង" ។ ការការពារប្រឆាំងនឹងការបញ្ចូលទិន្នន័យមិនត្រឹមត្រូវ។