Yanlış veri kullanarak Şekil Sayfasında FillForegnd


0

İşle ilgili bir sorunum var ve bu nedenle örnek dosyayı ekleyemiyorum.

Kullanıcının şekil verilerini değiştirebileceği (yani bir kategoriyi değiştirebilir) ve şeklin rengini değiştireceği bir diyagramın parçası olarak dinamik şekiller kullanıyorum. Bunun için mekaniği ShapeSheet.

Anahtar veri parçası (Prop.Category) sabit bir seçenekler listesinden bir dizindir. Bir Kullanıcı alanı (User.ForeColour), RGB renk değerini başka bir sabit listeden (başka bir dizin / arama formülü) belirlemek için Prop.Category verilerini kullanır. Ben doğrudan FillForegnd User.ForeColour erişmek için ayarlanmış.

Buradaki örneğimde, kullanıcı dolaylı olarak User.ForeColour değerini RGB'ye (128,0,128) ayarlayan Prop.Category # 3'ü seçer. Ancak geçerli dosya kurulumumda FillForegnd daha sonra RGB (64,86,150) olarak ayarlandı. Başka kategoriler seçtiğimde FillForegnd değerleri de beklenen değerden değiştirildi.

Formül ve değerler görünümünü kullanarak ShapeSheet'i kontrol ettim. Her şey doğru (FillForegnd'deki son değer hariç). User.ForeColour çift denetleme, beklendiği gibi RGB (128,0,128) değerini tuttuğunu gösterir.

İlginçtir ki, User.ForeColour içindeki formülün üzerine, statik değer RGB (128,0,128) olanın üzerine yazarsam, FillForegnd doğru şekilde doldurulur ve şekil doğru rengi gösterir. Formüle geri dönün (hala doğru değerde bitiyor) ve FillForegnd yine yanlış RGB değeriyle doldurulur.

Temaları kontrol ettim ve kaldırdım, bunun bir etkisi olmadı.

Visio 2010, Ağa Bağlı Windows 7 ortamı.

Sorunu farklı bir sistemdeki yeni bir dosyada çoğaltmaya çalıştım (böylece indirilebilir bir örnek alabildim), ancak başarılı olamadım. Orijinal ana şekle sahip dosya hala beklendiği gibi çalışıyor. Kopyalanan şekillere sahip yeni dosya (ve varsayılan olarak, kopyalanan ana dosya) sorunlu dosyadır. ShapeSheet'i iki kez kontrol ettim ve varsayılan / ana ayarlar beklendiği gibi (siyah metin) ve uyarlanmış seçenekler (mavi metin) beklendiği gibi.


[Şimdi silinen çapraz gönderimden - @ JohnGoldsmith'den] Merhaba, Burada neler olduğunu görmek biraz zor. Sorunu hassas olmayan belgelerde çoğaltabilir misiniz? Yapabilirseniz, sorunuzu visguy.com/vgforum/index.php adresinde gönderebilirim; - JohnGoldsmith
AJD

ilgilenenler için, ben bu soruyu gönderdim visguy.com/vgforum/index.php?topic=8205.0 ve eğer başarıya ulaşırsam, buraya bir cevap göndereceğim.
AJD

Yanıtlar:


0

Visguy forumlarında iyi halk burada sorduğum soruyu çözmek için yeterli fikir sağladı.

User.Forecolour özellik bir formül kullandı ( INDEX(...) İstenilen renk değerini belirlemek için Bu formül kullanımı ile iyi oturmuyordu FillForegnd hücre.

Üç basit çözüm var. Her iki çözüm de kullanır SETF(...) FillForegnd'nin bir formüle işaret etmesinden ziyade.

  1. User.Forecolour özellik kullanabilir SETF(GetRef(FillForegnd),INDEX(...)). Bu içine bir değer zorlar FillForegnd ve orijinal kodda en kolay değişiklik. Dezavantajı, üzerinde yapılan herhangi bir kullanıcı modifikasyonudur; FillForegnd Kullanıcı doğru şekil verisini tekrar seçinceye kadar düzeltilmeyecek olan hücre.
  2. Ek olarak User.X hücre oluşturulabilir. SETF cevap olarak 1 GetRef(User.X) yerine. FillForegnd içerir Guard(User.X). Bu, kullanıcıların rastgele renkleri değiştirmelerini durduracak.
  3. Üçüncü seçenek, önceki yanıtların her ikisini de genişletir. İçinde User.ForeColour : =SETF(GetRef(FillForegnd),"GUARD(INDEX(...))"). Bu ayarlayacaktır GUARD Ön plandaki renk alanında gerektiği gibi.

Bu çözümlerin tümü, bu özellikten faydalanmaktadır. SETF sahip olan hücrelerin üzerine yazabilir GUARD, ancak GUI'ye normal kullanıcı müdahalesi (sayfa alanını şekillendirir) olamaz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.