FillForegnd di Shapesheet menggunakan data yang salah

0

Saya memiliki masalah terkait pekerjaan dan, dengan demikian, saya tidak dapat melampirkan file contoh.

Saya menggunakan bentuk dinamis sebagai bagian dari diagram, di mana pengguna dapat mengubah data bentuk (yaitu mengubah kategori) dan bentuknya akan berubah warna. Mekanik untuk ini ada di ShapeSheet.

Sepotong kunci data (Prop.Category) adalah indeks dari daftar opsi yang tetap. Bidang Pengguna (User.ForeColour) menggunakan data Prop.Category untuk menentukan nilai warna RGB dari daftar tetap lainnya (rumus indeks / pencarian lainnya). Saya telah mengatur FillForegnd untuk mengakses User.ForeColour secara langsung.

Dalam contoh saya di sini, pengguna memilih Prop.Category # 3, yang secara tidak langsung menetapkan User.ForeColour ke RGB (128,0.128). Namun, dalam pengaturan file saya saat ini, FillForegnd kemudian diatur ke RGB (64,86.150). Ketika saya memilih kategori lain, nilai FillForegnd juga berubah dari nilai yang diharapkan.

Saya telah memeriksa ShapeSheet menggunakan rumus dan nilai tampilan. Semuanya benar (kecuali untuk nilai akhir di FillForegnd). Pengecekan ganda User.ForeColour menunjukkan bahwa ia memegang nilai RGB (128.0.128) seperti yang diharapkan.

Menariknya, jika saya menimpa rumus di User.ForeColour dengan nilai statis RGB (128,0.128), FillForegnd diisi dengan benar dan bentuknya menunjukkan warna yang benar. Kembali ke rumus (yang masih berakhir pada nilai yang tepat) dan FillForegnd sekali lagi diisi dengan nilai RGB yang salah.

Saya telah memeriksa dan menghapus tema, ini tidak berpengaruh.

Visio 2010, Lingkungan jaringan Windows 7.

Saya telah mencoba menduplikasi masalah dalam file baru pada sistem yang berbeda (sehingga saya bisa mendapatkan contoh yang dapat diunggah), tetapi tidak berhasil. File dengan bentuk master asli masih berfungsi seperti yang diharapkan. File baru dengan bentuk yang disalin (dan secara default, master yang disalin) adalah yang bermasalah. Saya telah memeriksa ganda ShapeSheet dan pengaturan default / master seperti yang diharapkan (teks hitam) dan pilihan yang disesuaikan (teks biru) seperti yang diharapkan.

AJD
sumber
[Dari pos-lintas saya yang sekarang dihapus - dari @JohnGoldsmith] Hai, Agak sulit untuk melihat apa yang terjadi di sini. Bisakah Anda mereplikasi masalah dalam dokumen yang tidak sensitif? Jika Anda bisa maka saya akan memposting pertanyaan Anda di visguy.com/vgforum/index.php di mana Anda dapat melampirkan file ke utas. - JohnGoldsmith
AJD
bagi mereka yang tertarik, saya telah memposting pertanyaan ini di visguy.com/vgforum/index.php?topic=8205.0 dan akan mengirim jawaban kembali ke sini jika saya pernah mencapai kesuksesan.
AJD

Jawaban:

0

Orang baik di forum visguy memberikan wawasan yang cukup untuk menyelesaikan pertanyaan yang saya ajukan di sini.

The User.Forecolourproperti digunakan rumus ( INDEX(...)) untuk menentukan nilai warna yang diinginkan. Penggunaan formula ini tidak sesuai dengan FillForegndsel.

Ada tiga solusi sederhana. Kedua solusi menggunakan SETF(...)alih-alih memiliki FillForegnd arahkan ke formula.

  1. The User.Forecolourproperti dapat menggunakan SETF(GetRef(FillForegnd),INDEX(...)). Ini akan memaksa nilai masuk FillForegnddan merupakan modifikasi termudah untuk kode asli. Kelemahannya adalah setiap modifikasi pengguna pada bentuk itu sendiri akan menimpa FillForegndsel yang tidak akan diperbaiki sampai pengguna memilih data bentuk yang tepat lagi.
  2. User.XSel tambahan dapat dibuat. The SETFjawaban 1 akan GetRef(User.X)gantinya. FillForegndakan mengandung Guard(User.X). Ini akan menghentikan pengguna mengubah warna secara acak.
  3. Opsi ketiga memperluas kedua jawaban sebelumnya. Dalam User.ForeColour: =SETF(GetRef(FillForegnd),"GUARD(INDEX(...))"). Ini akan mengatur yang GUARDdiperlukan di area warna foreground.

Semua solusi ini memanfaatkan karakteristik yang SETFdapat menimpa sel yang memiliki GUARD, tetapi intervensi pengguna normal dalam GUI (bentuk area halaman) tidak bisa.

AJD
sumber