Ana içeriğe geç

Stillerle çalışma

Bu makalede ve ilgili videosunda, cBot'lar, göstergeler ve eklentiler aracılığıyla oluşturulan özel kullanıcı arayüzü öğelerinin görünümünü değiştirmek için stilleri nasıl kullanabileceğinizi açıklayacağız.

Örnek bir cBot oluşturun

cTrader Algo'ya gidin ve yeni bir cBot oluşturun. Adını "Stiller Örneği" koyacağız. Bu örnekte, üç metin kutusu oluşturacak ve bunları bir yığın paneli kullanarak grafikte görüntüleyeceğiz.

İlk olarak, üç metin kutusunu başlatacağız. Her bir metin kutusunun görünümünü, özelliklerini tek tek ayarlayarak yapılandıracağız.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
var firstTextBox = new TextBox
{
    ForegroundColor = Color.Red,
    Margin = 5,
    FontFamily = "Cambria",
    FontSize = 12,
    Text = "Type...",
    Width = 150
};

var secondTextBox = new TextBox
{
    ForegroundColor = Color.Red,
    Margin = 5,
    FontFamily = "Cambria",
    FontSize = 12,
    Text = "Type...",
    Width = 150
};

var thirdTextBox = new TextBox
{
    ForegroundColor = Color.Red,
    Margin = 5,
    FontFamily = "Cambria",
    FontSize = 12,
    Text = "Type...",
    Width = 150
};

Ayrıca bir yığın paneli de başlatacağız.

1
2
3
4
5
6
var panel = new StackPanel
{
    Orientation = Orientation.Vertical,
    HorizontalAlignment = HorizontalAlignment.Center,
    VerticalAlignment = VerticalAlignment.Center
};

Ardından, bu metin kutularını panele ekleyin.

1
2
3
panel.AddChild(firstTextBox);
panel.AddChild(secondTextBox);
panel.AddChild(thirdTextBox);

Son olarak, paneli grafiğe ekleyin.

1
Chart.AddControl(panel);

cBot'umuzu oluşturduktan sonra, doğrudan grafiğe çizilmiş üç metin kutusu görmeliyiz.

Style sınıfını kullanma

Her metin kutusunu ayrı ayrı yapılandırdığımız ve her öğe için özellik başlatmayı tekrarladığımız için cBot'umuzun kodu tekrarlayıcıdır. Kod tekrarı, büyük projelerin bakımını yapmayı ve optimize etmeyi zorlaştırabilir. Kontrollerimizin görünümünü yapılandırmak için stilleri kullanarak kodumuzu daha kısa ve sürdürülebilir hâle getirebiliriz.

İlk olarak, Styles sınıfının yeni bir nesnesini başlatacağız.

1
var textBoxStyle = new Style();

Ardından, bu stille ilişkili kontrollerin görünümünü yapılandıracağız.

1
2
3
4
5
textBoxStyle.Set(ControlProperty.ForegroundColor, Color.Red);
textBoxStyle.Set(ControlProperty.Margin, 5);
textBoxStyle.Set(ControlProperty.FontFamily, "Cambria");
textBoxStyle.Set(ControlProperty.FontSize, 12);
textBoxStyle.Set(ControlProperty.Width, 150);

Bu stili her bir metin kutumuza atayacak ve parametrelerin başlatılmasını kaldıracağız.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
var firstTextBox = new TextBox
{
    Text = "Type...",
    Style = textBoxStyle
};

var secondTextBox = new TextBox
{
    Text = "Type...",
    Style = textBoxStyle
};

var thirdTextBox = new TextBox
{
    Text = "Type...",
    Style = textBoxStyle
};

cBot'umuzu oluşturup bir grafiğe eklersek, tüm metin kutularımızın normal şekilde görüntülendiğini görürüz. Koda geri dönüp textBoxStyle nesnemizin özelliklerinden birini değiştirirsek, tüm metin kutularımız farklı şekilde biçimlendirilecektir.

1
textBoxStyle.Set(ControlProperty.ForegroundColor, Color.Yellow, ControlState.Hover);

Özel pencerelerde ve eklentilerde stilleri kullanma

Kontrol stilleri, kontroller grafik dışındaki özel pencereler gibi yerlerde görüntülendiğinde de çalışır. Metin kutularını özel bir pencerede görüntüleyecek ve buna göre biçimlendirecek örnek bir eklenti oluşturacağız.

Kontrollerimizi özel bir pencerede görüntüleyerek başlayacağız.

Eklentimizin kodu aşağıdadır:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
using cAlgo.API;

namespace cAlgo.Plugins
{
    [Plugin(AccessRights = AccessRights.None)]
    public class StylesExample : Plugin
    {
        protected override void OnStart()
        {


            var block = Asp.SymbolTab.AddBlock("Styles Example");
            block.Index = 2;
            block.Height = 500;

            var textBoxStyle = new Style();

            textBoxStyle.Set(ControlProperty.ForegroundColor, Color.Red);
            textBoxStyle.Set(ControlProperty.Margin, 5);
            textBoxStyle.Set(ControlProperty.FontFamily, "Cambria");
            textBoxStyle.Set(ControlProperty.FontSize, 12);
            textBoxStyle.Set(ControlProperty.Width, 150);
            textBoxStyle.Set(ControlProperty.ForegroundColor, Color.Yellow, ControlState.Hover);


            var firstTextBox = new TextBox
            {
                Text = "Type...",
                Style = textBoxStyle
            };

            var secondTextBox = new TextBox
            {
                Text = "Type...",
                Style = textBoxStyle
            };

            var thirdTextBox = new TextBox
            {
                Text = "Type...",
                Style = textBoxStyle
            };

            var panel = new StackPanel
            {
                Orientation = Orientation.Vertical,
                HorizontalAlignment = HorizontalAlignment.Center,
                VerticalAlignment = VerticalAlignment.Center
            };

            panel.AddChild(firstTextBox);
            panel.AddChild(secondTextBox);
            panel.AddChild(thirdTextBox);

            block.Child = panel;

            var window = new Window
            {
                Child = panel,
                Title = "My Window",
                WindowStartupLocation = WindowStartupLocation.CenterScreen,
                Topmost = true
            };

            window.Show();
        }

    }        
}

Eklentimizi oluşturduktan sonra, metin kutularımızı özel bir pencerede ve Aktif Sembol Panelinde görmeliyiz.

Özet

Kodunuzdaki fazlalıklar hakkında endişelenmeden kullanıcılara özel öğeler görüntülemek istiyorsanız kontrolleri biçimlendirmek çok önemlidir.