Sıfırdan bir grafik kitaplığı oluşturma - sayfa 10

 
Aliaksandr Hryshyn :

Benim durumumda, "orman" ortalamadan daha karmaşık hale getirilmedi: ekran penceresi (tablonun görünür alanı), tüm hücrelerin sığması gereken tam boyutlu bir pencere, içinde hareket edecek ana pencere, satırlar ve içlerindeki hücreler için pencere ve ayrıca kaydırma (kaydırıcı, bant sınırlı). Göreceli yerleşim kısıtlamaları, özellikler tarafından belirlenir. Yalnızca kaydırıcı için , nesneyi hareket ettirme olaylarını durdurmak ve " tam boyutlu pencerenin" konumunu zaten ayarlamak gerekir. Bunların hepsi sanal pencerelerle yapılır, görsel kısmı buna eklemeniz gerekir, görsel kısım olmadan çizgiler için pencereler ve tam boyutlu bir pencere olacaktır. Düzenlenen hücre için bir giriş alanı yapın (bu zaten kendiniz yapılır), etkileşimin geri kalanı motor tarafından uygulanır: her hücre için doğru olaylar gelir (fare olayları, yeniden çizim, hareket) .. .. Bu tür fırsatlar, çok sayıda pencere (büyük listeler, tablolar, birkaç bin pencere) olduğunda performansı artırmak için birkaç fikir daha var.

İşte .... ve konuşacağız. :)))

Fark ettiyseniz, bu iş parçacığı, biçimlendirme dilini ve viz.editor'u gösterdiğim kitle kaynaklı gui temamdan çıktı. Forumun bazı üyeleri, kitaplıklarında her şeyi daha iyi ve daha güzel bir şekilde tekrarlayabileceklerini düşündüler. 4 sayfa sonra konu yatıştı. Woz ve şimdi orada. Ve işte onlar gibi, "bin pencereden" bahsediyorsunuz ... kısacası, sonunda yapın.)))))

İyi şanlar.))))
 
Tabloları biraz açıklayacağım:

1. Hücre - tablonun en basit öğesi , üç nesneden oluşur: doğrudan etiket, metin, simge.

2. Hücreler çeşitli tiplerdedir: sütunların, satırların ve içindekilerin başlıkları. Onları ayırmak önemlidir, çünkü başlıklar, satırlar/sütunlar (esas olarak özellikleri) hakkında bilgi içerir. Bu, elektronik tabloyla çalışmayı kolaylaştırır.

3. Her sıradan hücrenin, değeri görüntülenen bir parametresi vardır, ancak parametresiz yalnızca metin hücreleri vardır. Bu farklı bir tür.

3. Hücre özellikleri seçici olarak yapılandırılmalıdır: tüm satır, sütun veya tüm tablo için.

4. Başlık hücresi özellikleri ayrıca yapılandırılmalıdır.

5. Tablo, onay kutuları, listeler, hatta kaydırıcılar, ilerleme çubukları ve radyo düğmeleri gibi diğer öğeleri kendi içinde uyarlayabilmelidir.

6. Tablonun çalışması optimize edilmelidir. böylece yalnızca değeri değişen hücreler yeniden çizilir, hepsi bu kadar değil.

7. Tablo, sınırlı bir görüş alanına yerleştirilmişse kaydırılmalıdır.

8. Tablo, parça klasörlerini içerebilir.

9. Tablo sütunları genişliği değiştirebilir.

10. Satır sayısı önceden belirlenmediğinde tablo dinamik olabilir.

11. Tablo sıralanabilmelidir.

12. Tablo tamamı veya seçilen satır/sütunlara göre renklendirilebilmelidir.

Tanrı basit dikdörtgenler ve metinler üzerinde bir tablo yapmayı yasaklıyor, çünkü bu tür "hücreler" element değildir ve bu bir çıkmaz sokaktır.

Bunları uyguladım. Her yönden mükemmel olmayabilir, ama iyi çalışıyor.

Tablo kesinlikle en zor unsurlardan biridir. Birçok mekanizma ve çeşitli çözümler dahil olmak üzere en karmaşık.
 
İşte bu tablo.))) Tuval üzerinde ilk yapanın Anatoly olduğunu hatırlıyorum. Onun için zordu... Pek çok şeyi çok güzel fark etti, kıskanabilir.
 
Реter Konow :
İşte bu tablo.))) Tuval üzerinde ilk yapanın Anatoly olduğunu hatırlıyorum. Onun için zordu... Pek çok şeyi çok güzel fark etti, kıskanabilir.

Güzel değil, işlevsel olarak yapıyoruz. Yavaş yavaş gerekli nesneleri yapıyorum, yaklaşım diğer çözümlerden farklı. Tablo hücrelerine herhangi bir nesne yerleştirilebilir. Motora kanvas desteği ekledim, hem kanvas hem de normal dikdörtgenler kullanıldığı ortaya çıktı. Demo eklendi

Sol üst boş köşeden sürükleyebilirsiniz.


Dosyalar:
Test_v_grid.ex5  517 kb
 
Aliaksandr Hryshyn :

Güzel değil, işlevsel olarak yapıyoruz. Yavaş yavaş gerekli nesneleri yapıyorum, yaklaşım diğer çözümlerden farklı. Tablo hücrelerine herhangi bir nesne yerleştirilebilir. Motora kanvas desteği ekledim, hem kanvas hem de normal dikdörtgenler kullanıldığı ortaya çıktı. Demo ekli

Sol üst boş köşeden sürükleyebilirsiniz.


Kötü kötü değil...

İlk eleştiri:

Kavramsal olarak, büyük bir pencere mi yoksa birbirine yapışmış birkaç küçük pencere mi? Ne yazık ki, pencere(ler)de hareket yok. Mekanik biraz garip çalışıyor, düşünülmesi gereken başka bir şey var. Hücrelere bir şey koyma fırsatı bulamadım, interaktif değiller. Henüz çalışan tek bir kontrol yok, basit bir buton veya onay kutusu bile yok. Yapısal olarak, pencereler işlenmedi - çerçeve yok, küçültme veya ölçekleme düğmeleri yok veya keyifsiz bir simge ... İşlevlerini yerine getirmeden ve dekoratiflik uğruna bile yerleştirilmelidirler, çünkü aksi halde ne olduğu belli değildir. bakıyoruz. Tabii ki... çok nemli.

Övgü:

Eksikliklere rağmen, büyük ilerleme ve potansiyel görüyorum. Tabii ki, yeterince sabrınız ve gücünüz varsa, sonunda bir şeyler yoluna girebilir. Eh, yetenek kesinlikle orada.)


not Kaydırmadan (topal da olsa) ve sınırlı da olsa pencere pervazlarının "kauçukluğundan" memnun kaldım. :)))

not Üzgünüz, alt pencereler hareket ettirilebilir! İlk başta anlamadım. Tabii ki, seyahat alanı çok sınırlı, ama yine de...
 
Başka bir artı: "A" etiketi (nedeni bilinmiyor) etkileşimli! Zaten iyi.
 

Ne yazık ki, yüklemeden sonra pencereler olması gerektiği gibi yer almıyor:


Onları merkeze koyma girişimleri başarıya yol açmaz.
 
Реter Konow :

Kötü kötü değil...

İlk eleştiri:

Kavramsal olarak, büyük bir pencere mi yoksa birbirine yapışmış birkaç küçük pencere mi? Ne yazık ki, pencere(ler)de hareket yok. Mekanik biraz garip çalışıyor, düşünülmesi gereken başka bir şey var. Hücrelere bir şey koyma fırsatı bulamadım, interaktif değiller. Henüz çalışan tek bir kontrol yok, basit bir buton veya onay kutusu bile yok. Yapısal olarak, pencereler işlenmedi - çerçeve yok, simge durumuna küçültme veya yakınlaştırma düğmesi veya keyifsiz bir simge ... İşlevlerini yerine getirmeden ve dekoratiflik uğruna bile yerleştirilmelidirler, çünkü aksi halde ne olduğu belli değildir. bakıyoruz. Tabii ki... çok nemli.

Övgü:

Eksikliklere rağmen, büyük ilerleme ve potansiyel görüyorum. Tabii ki, yeterince sabrınız ve gücünüz varsa, sonunda bir şeyler yoluna girebilir. Eh, yetenek kesinlikle orada.)


not Kaydırmadan (topal da olsa) ve sınırlı da olsa pencere pervazlarının "kauçukluğundan" memnun kaldım. :)))

not Üzgünüz, alt pencereler hareket ettirilebilir! İlk başta anlamadım. Tabii ki, seyahat alanı çok sınırlı, ama yine de...

Burada tüm pencereler (genel, hücreler, kaydırma, kaydırma kaydırıcısı...) aynı çalışma prensibine sahiptir, yalnızca özelliklerde farklılık gösterirler, yalnızca görsel temsilde farklılık gösterirler, ayrıca görünmez pencereler de vardır, böylece cam görselleştirme yerleştirilebilir herhangi bir pencerede, kaydırıcıda veya kırmızı küçük karede bile fark yok.

Hücrelerdeki emir defterleri etkileşimlidir, tıpkı göstergede olduğu gibi (emir defterinin tik grafiğinin ve başlığın arkasına taşınması, dikey fiyat hareketi), tablonun sağ kaydırılmasıyla sadece tekerlek kaydırma olayları işlenir.

Bu tablo, farklı listeler ve tablolar oluşturmak için temel bir görsel öğe görevi görecektir, hücrenin içine ne yerleştirilmiş olursa olsun, farklı nesnelere ve hatta aynı tablolara sahip olabilirsiniz.

 
Реter Konow :
Başka bir artı: "A" etiketi (nedeni bilinmiyor) etkileşimli! Zaten iyi.

Cam göstergesini test ettiniz mi? Bu, otomatik fiyat kaydırmayı etkinleştirme/devre dışı bırakma

 
Aliaksandr Hryshyn :

Cam göstergesini test ettiniz mi? Bu, otomatik fiyat kaydırmayı etkinleştirme/devre dışı bırakma

Evet, sipariş defterinin kendisi ve onay göstergesi iyi durumda. En az şikayete sahipler. Kendin mi yazdın yoksa bir yerden ödünç mü aldın?