Bagikan melalui


Kueri Sunting Kueri Simpan (Pengendalian Sumber VSPackage)

Editor Visual Studio dapat mengirimkan peristiwa Query Edit Query Save (QEQS). Stub Kontrol Sumber Visual Studio mengimplementasikan layanan QEQS, sehingga merupakan penerima peristiwa QEQS. Peristiwa ini kemudian didelegasikan ke kontrol sumber yang saat ini aktif VSPackage. Kontrol sumber aktif VSPackage mengimplementasikan IVsQueryEditQuerySave2 dan metodenya. Metode IVsQueryEditQuerySave2 antarmuka biasanya dipanggil segera sebelum dokumen diedit untuk pertama kalinya dan segera sebelum dokumen disimpan.

KueriEditQuerySimpan Peristiwa

Kontrol sumber VSPackage harus menangani peristiwa QEQS dengan menerapkan IVsQueryEditQuerySave2 antarmuka dan metode yang diperlukan. Di bawah ini adalah deskripsi singkat mengenai dua metode yang paling tidak harus diterapkan oleh VSPackage. Implementasi aktual harus sesuai dengan logika model kontrol sumber.

Metode QueryEditFiles

dipanggil QueryEditFiles ketika proyek atau editor apa pun ingin mengubah file. Idealnya, metode ini dipanggil sebelum file dimodifikasi dan ketika file disimpan. Ketika dipanggil, IVsQueryEditQuerySave2::QueryEditFiles metode memeriksa apakah file yang diberikan berada di bawah kontrol sumber, apakah file tersebut perlu dicek keluar, dan apakah file tersebut dapat dimuat ulang. Jika keadaan mencegah file dapat diedit, IVsQueryEditQuerySave2::QueryEditFiles metode akan memberi tahu program panggilan untuk membatalkan pengeditan. Pemanggil juga dapat menentukan mode pemanggilan. Dalam mode "senyap", metode ini mengambil tindakan hanya jika tidak menyebabkan UI muncul. Jika UI tidak dapat ditolak, bendera harus dikembalikan untuk menunjukkan masalahnya.

Metode ini bersifat transaksi; artinya, jika pengeditan dibatalkan pada satu file, pengeditan dibatalkan untuk semua file. Sebaliknya, jika pengeditan diizinkan, pengeditan diizinkan untuk semua file. Jika metode ini memungkinkan pengeditan sekali untuk sekumpulan file tertentu, metode ini harus selalu mengizinkan pengeditan pada panggilan berikutnya untuk kumpulan file yang sama. Perulangan allow-edit berlanjut hingga file ditutup, disimpan, dan dimuat ulang; hingga atribut mereka (properti) berubah; atau sampai paket kontrol sumber diubah. Kasus yang perlu dipertimbangkan dalam menerapkan metode IVsQueryEditQuerySave2::QueryEditFiles termasuk beberapa file, file khusus, pembatalan oleh pengguna, dan pengeditan di dalam memori.

Metode QuerySaveFiles

dipanggil QuerySaveFiles ketika proyek atau editor apa pun perlu menyimpan sekumpulan file. Ketika dipanggil, IVsQueryEditQuerySave2::QuerySaveFiles metode memeriksa apakah file yang diberikan bersifat baca-saja dan apakah file tersebut berada di bawah kontrol sumber. Jika file perlu dicek keluar, panggilan didelegasikan ke paket kontrol sumber. Jika keadaan mencegah file disimpan, IVsQueryEditQuerySave2::QuerySaveFiles metode harus memberi tahu editor untuk membatalkan penyimpanan. IVsQueryEditQuerySave2::QueryEditFiles Seperti halnya metode , dimungkinkan bagi pemanggil untuk menentukan mode pemanggilan. Dalam mode "senyap", metode ini hanya mengambil tindakan bila tidak menyebabkan UI muncul. Jika UI tidak dapat ditolak, bendera harus dikembalikan untuk menunjukkan masalahnya.

Metode ini harus bersifat transaksi; artinya, jika penyimpanan dibatalkan pada satu file, penyimpanan dibatalkan untuk semua file. Sebaliknya, jika penyimpanan diizinkan, penyimpanan harus diizinkan untuk semua file. Seperti halnya dalam mengimplementasikan metode IVsQueryEditQuerySave2::QueryEditFiles, kasus yang perlu dipertimbangkan dalam mengimplementasikan metode IVsQueryEditQuerySave2::QuerySaveFiles termasuk beberapa file, file khusus, pembatalan oleh pengguna, dan pengeditan dalam memori.