DTileLayout

Açıklama

DIconLayout'a benzer şekilde, bu da panelleri karolar olarak iki boyutlu bir şekilde düzenler.

Bununla DIconLayout arasındaki fark, DIconLayout öğelerinin hepsinin aynı yüksekliğe sahip olması, DTileLayout öğelerinde ise bu zorunluluğun olmamasıdır. DTileLayout, alt öğelerini en iyi şekilde "paketlemek" için bir yol bulacaktır.
Örneğin, iki sütunlu bir düzende, 2 birim yüksekliğindeki bir öğe bir sütuna yerleştirilirken, 1 birim yüksekliğindeki iki öğe diğer sütuna yerleştirilecektir.

Ancak, bu panelin alt öğeleri arasında tanımsız bir sırayla dolaşması ve dolaşım sırasında düzenleme yapması nedeniyle, bu paketlemenin mümkün olan en düşük yüksekliğe yol açacağının garantisi olmadığını belirtmek gerekir.

Bu, spawnmenu (doğma menüsü) tarafından spawnicon'ları (doğma ikonları) düzenlemek için kullanılır.

Temel boyut, bir karonun olabileceği en küçük boyutu tanımlar ve tüm alt panelleri barındırmak için dikey olarak yeniden boyutlanır. Her satırdaki eleman sayısı, temel boyuta ve genişliğe göre belirlenir.

Ayrıca isteğe bağlı olarak bu karoların yeniden düzenlenmesine izin verir. Bu işlevselliği etkinleştirmek için, DTileLayout üzerinde benzersiz bir tanımlayıcı ile DDragBase:MakeDroppable fonksiyonunu çağırın. Bundan sonra eklenen tüm paneller taşınabilir olacaktır.

Kaynağı görüntüle

Ebeveyn

Bu sayfada listelenmeyen metotları vb. DDragBase'den miras alır.

Olaylar

DTileLayout:OnModified()
DTileLayout üzerine bir şey bırakıldığında veya içinde yeniden düzenlendiğinde çağrılır.

Metotlar

DTileLayout:ClearTiles()
Bu dahili olarak kullanılır - kullanabilseniz de muhtemelen kullanmamalısınız. Panelin karo tablosunu temizler. DTileLayout:LayoutTiles tarafından kullanılır.
DTileLayout:ConsumeTiles( number x, number y, number w, number h )
Bu dahili olarak kullanılır - kullanabilseniz de muhtemelen kullanmamalısınız. Bir dizi karoyu bir panel tarafından işgal edilmiş olarak belirlemek için çağrılır.
Panel DTileLayout:Copy()
DTileLayout'un birebir bir kopyasını oluşturur ve döndürür.
DTileLayout:CopyContents( Panel source )
Verilen panel nesnesindeki tüm alt öğelerin kopyalarını oluşturur ve bunları bu panele ebeveyn yapar.
number, number DTileLayout:FindFreeTile( number x, number y, number w, number h )
Bu dahili olarak kullanılır - kullanabilseniz de muhtemelen kullanmamalısınız. Verilen boyuta uyan ilk boş karo grubunun koordinatlarını bulur.
boolean DTileLayout:FitsInTile( number x, number y, number w, number h )
Bu dahili olarak kullanılır - kullanabilseniz de muhtemelen kullanmamalısınız. Bir karo grubunun boş olup olmadığını belirler.
number DTileLayout:GetBaseSize()
DTileLayout:SetBaseSize ile ayarlanan her bir karonun boyutunu döndürür.
number DTileLayout:GetBorder()
DTileLayout:SetBorder tarafından ayarlanan kenarlık boşluğunu döndürür.
number DTileLayout:GetMinHeight()
DTileLayout'un yeniden boyutlanabileceği minimum yüksekliği döndürür.
number DTileLayout:GetSpaceX()
DTileLayout:SetSpaceX tarafından ayarlanan 2 eleman arasındaki X ekseni boşluğunu döndürür.
number DTileLayout:GetSpaceY()
DTileLayout:SetSpaceY tarafından ayarlanan 2 eleman arasındaki Y ekseni boşluğunu döndürür.
any DTileLayout:GetTile( number x, number y )
Bu dahili olarak kullanılır - kullanabilseniz de muhtemelen kullanmamalısınız. Bir karonun dolu olma durumunu alır.
DTileLayout:Layout()
Son genişlik/yükseklik bilgisini sıfırlar ve panelin düzenini geçersiz kılarak tüm alt öğe konumlarının yeniden hesaplanmasına neden olur. Bir alt öğe eklendiğinde veya kaldırıldığında çağrılır ve paneli yenilemek için çağrılabilir.
DTileLayout:LayoutTiles()
Bu dahili olarak kullanılır - kullanabilseniz de muhtemelen kullanmamalısınız. Boyutu değiştiyse, alt panelleri düzenlemek ve yerleştirmek için PANEL:PerformLayout tarafından çağrılır.
DTileLayout:SetBaseSize( number size )
Tek bir karonun boyutunu ayarlar. Eğer bir alt panel bu boyuttan daha büyükse, birkaç karo kaplayacaktır. Eğer alt öğelerin boyutunu doğru bir şekilde ayarlıyorsanız, muhtemelen bunu değiştirmenize gerek yoktur.
DTileLayout:SetBorder( number border )
DTileLayout'un kenarı/sınırı ile içindeki tüm elemanlar arasındaki boşluğu ayarlar.
DTileLayout:SetMinHeight( number minH )
DTileLayout'un yeniden boyutlanacağı minimum yüksekliği belirler. Bu, alt panellerin sık sık ekleneceği/kaldırılacağı durumlarda kullanışlıdır.
DTileLayout:SetSpaceX( number spacingX )
DTileLayout içindeki 2 eleman arasındaki X ekseni boşluğunu ayarlar.
DTileLayout:SetSpaceY( number spaceY )
DTileLayout içindeki 2 eleman arasındaki Y ekseni boşluğunu ayarlar.
DTileLayout:SetTile( number x, number y, any state )
Bu dahili olarak kullanılır - kullanabilseniz de muhtemelen kullanmamalısınız. Bir karonun dolu olma durumunu ayarlamak için çağrılır.

Örnek

Bir DFrame içinde bir DTileLayout oluşturur, temel boyutu ayarlar ve 32 tane DLabel ekler.

local frame = vgui.Create("DFrame") frame:SetSize(300, 300) frame:SetTitle("DTileLayout Example") frame:MakePopup() frame:Center() local layout = vgui.Create("DTileLayout", frame) layout:SetBaseSize(32) -- Karo boyutu layout:Dock(FILL) //Ne yaptığını görebilmek için bir arka plan çizin layout:SetDrawBackground(true) layout:SetBackgroundColor(Color(0, 100, 100)) layout:MakeDroppable("unique_name") -- Alt öğeleri yeniden düzenlememize olanak tanır for i = 1, 32 do layout:Add(Label(" Label " .. i)) end
Çıktı:
DTileLayout.png

Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord