Bir görselleştirme için, başvurulan görselleştirmenin bir iletişim kutusu olarak açılmasına neden olan bir kullanıcı girişi yapılandırabilirsiniz. Örneğin, bir kullanıcı bir düğmeye tıklar ve bunun üzerine değerlerin girilmesini isteyen bir iletişim kutusu açılır. Bir diyalog penceresi kullanıcı girdilerini toplamak için kullanılır ve eğer modal ise, diyalog penceresi dışındaki girdilerin engellenmesine yol açabilir.
Yalnızca «Dialog» görselleştirme türüne sahip görselleştirmeler iletişim kutusu olarak açılabilir. Görselleştirme türü, bir görselleştirme nesnesinin «Özellikler» iletişim kutusunda yapılandırılır.
Temel prosedür:
Gereklilik: Proje bir ana görselleştirme ve bir iletişim kutusu içerir.
-
İletişim kutusu için «OpenDialog» eylemi ile ana görselleştirme için bir kullanıcı girişi yapılandırın.
Diyalog penceresinin açılması yapılandırılır.
-
İletişim kutusunun bir öğesi için «CloseDialog» eylemiyle bir kullanıcı girişi yapılandırın.
İpucu: Modal olmayan diyalog pencerelerinde, diyalog penceresinin dışında kapatma için kullanıcı girdisini de yapılandırabilirsiniz.
Diyalog penceresinin kapanışı yapılandırılır.
Kendi oluşturduğunuz diyaloglar yerine kütüphanedeki diyalogları da kullanabilirsiniz.
Örneğin, VisuDialogs kütüphanesi projeye entegre edilmişse, içinde bulunan VisuDialogs.Login veya VisuDialogs.FileOpenSave diyalog kutularını kullanabilirsiniz.
Ayrıca bakınız
Bir görselleştirme nesnesini iletişim kutusu olarak yapılandırma
-
Nesneyi «Devices» görünümünde seçin, içerik menüsünü açın ve «Properties» komutunu seçin.
-
«Visualization» sekmesini seçin.
-
«Dialog» seçeneğini etkinleştirin ve «OK» ile iletişim kutusunu kapatın.
Görselleştirme, «Dialog» görselleştirme türüne sahiptir ve bu şekilde çağrılabilir.
Diyalog çağrısını yapılandırma
Bir iletişim kutusu çağrılırken, kullanıcı normalde bir düğmeye tıklar ve bunun üzerine bir girdi talep eden bir iletişim kutusu açılır.
Aşağıdaki örnekte, bir takvimi temsil eden bir iletişim kutusu bir tarihin girilmesini sağlar.
Gereklilik: Proje visMain ve dlgCalender görselleştirmelerini içermektedir.
-
dlgCalenderadresinin görselleştirme türünü Dialog olarak ayarlayın. -
Görselleştirmeye bir dikdörtgen sürükleyin
visMain. -
«Texts Text» özelliğini
Due Date: %t[yyyy-MM-dd]metni ile yapılandırın.«özelliğini yapılandırın Metin değişkenleri Metin değişkeni» ile
PLC_PRG.dateDue. -
Görselleştirmenin içine bir düğme sürükleyin.
-
«Texts Text» özelliğini
Open dialogmetni ile yapılandırın.«Giriş yapılandırması OnMouseClick» eylemi için «Open Dialog» özelliğini
dlgCalenderile yapılandırın.Diyaloğun açılması için kullanıcı girişi yapılandırılır.
-
İletişim kutusuna çift tıklayın
dlgCalender. -
«Tarih seçici» öğesini görselleştirme düzenleyicisine sürükleyin.
-
«Texts Text» özelliğini
Due Date: %t[yyyy-MM-dd]ile yapılandırın.«Değişken» özelliğini
PLC_PRG.dateCalenderile yapılandırın.Eleman yapılandırılmıştır.
-
Görselleştirme düzenleyicisine bir düğme sürükleyin.
-
«Texts Text» özelliğini
OKile yapılandırın: -
«Giriş yapılandırması OnMouseClick»eylemi için «İletişim Kutusunu Kapat »özelliğini
dlgCalender, Result: OKile yapılandırın. -
Başka bir özelliği yapılandırın «Giriş yapılandırması Eylem için OnMouseClick» « ST Kodunu Yürüt» ile
PLC_PRG.dateDue := PLC_PRG.dateCalendar;.Diyaloğun kapatılması için kullanıcı girişi yapılandırılır.
-
Görselleştirme düzenleyicisine başka bir düğme sürükleyin.
-
«Texts Text» özelliğini
Cancelile yapılandırın: -
«Giriş yapılandırması OnMouseClick» eylemi için «İletişim Kutusunu Kapat »özelliğini
dlgCalender, Result: Cancelile yapılandırın. -
Diyaloğun iptali için kullanıcı girişi yapılandırılır.
-
Uygulamayı derleyin, yükleyin ve başlatın.
Değişken bildirimi:
PROGRAM PLC_PRG
VAR
dateDue : DATE := DATE#2000-01-01;
dateCalendar : DATE;
END_VAR
Bir iletişim kutusuna uygulama erişimi uygulama
Uygulama kodunda, iletişim kutusu yöneticisinde yönetilen bir iletişim kutusuna erişimi uygulayabilirsiniz. Diyalog yöneticisi, «Dialog» türündeki tüm görselleştirmeleri otomatik olarak örnekler ve yönetir. Erişim dahili görselleştirme yöneticisi aracılığıyla gerçekleşir.
Öncelikle, dahili görselleştirme yöneticisinin GetDialogManager() yöntemini çağırarak diyalog yöneticisine erişimi uygulayın. Daha sonra bir diyalog
penceresinin program sırasını programlamak için diyalog yöneticisinin yöntemlerini
kullanabilirsiniz.
Aşağıdaki örnekte bir düğme, üzerine tıklandığında önceden yapılandırılmış Login iletişim kutusunu açacak şekilde yapılandırılmıştır. Kullanıcı iletişim kutusuna
bir ad ve parola girebilir. Login iletişim kutusu VisuDialogs kütüphanesinde bulunmaktadır. Kendi oluşturduğunuz bir diyaloğu da aynı şekilde çağırabilirsiniz.
Login iletişim kutusuna VisuDialogs kütüphanesinden bir uygulama erişiminin uygulanması:
Gereklilik: VisuDialogs kütüphanesi projeye entegre edilmiştir.
-
Uygulamanın altına yeni bir görselleştirme
visMainekleyin.Görselleştirme düzenleyicisi açılır.
-
Görselleştirme düzenleyicisine bir düğme sürükleyin.
-
Özelliğine girin «Metin»
Login.Düğme etiketlenmiştir.
-
«Configure »özelliğinde «Input configuration OnMouseDown» üzerine tıklayın.
-
«Execute ST-Code» giriş eylemini seçin ve
üzerine tıklayın. -
ST editörüne aşağıdaki fonksiyon çağrısını girin:
OpenLoginDialog(pClientData);Ana görselleştirme bir düğme içerir. Kullanıcı düğmeye tıklarsa
Loginiletişim kutusu açılır veOpenLoginDialog()işlevi çağrılır. -
«Configure »özelliğinde «Input configuration OnDialogClosed» üzerine tıklayın.
-
«Execute ST-Code» giriş eylemini seçin ve
üzerine tıklayın. -
ST editörüne aşağıdaki fonksiyon çağrısını girin:
OnLoginDialogClosed(pClientData);
OpenLoginDialog() işlevinin uygulaması:
FUNCTION OpenLoginDialog : BOOL
VAR_INPUT
pClientData : POINTER TO VisuStructClientData;
END_VAR
VAR
dialogMan : IDialogManager;
loginDialog : IVisualisationDialog;
pLoginInfo : POINTER TO Login_VISU_STRUCT; // Login_VISU_STRUCT contains the parameters defined in the interface of visualization "Login".
result : Visu_DialogResult;
stTitle : STRING := 'Login ...';
stPasswordLabelText: STRING;
stUserLabelText: STRING;
stUsername: STRING;
END_VAR
dialogMan := g_VisuManager.GetDialogManager(); // The DialogManager is provided via the implicitly available VisuManager
IF dialogMan <> 0 AND pClientData <> 0 THEN
loginDialog := dialogMan.GetDialog('VisuDialogs.Login'); // Dialog to be opened is specified
IF loginDialog <> 0 THEN
pLoginInfo := dialogMan.GetClientInterface(loginDialog, pClientData);
IF pLoginInfo <> 0 THEN // In the following the parameters of the login dialog in the Login_VISU_STRUCT will be read
pLoginInfo^.stTitle := stTitle;
pLoginInfo^.stPasswordLabelTxt := stPasswordLabelText;
pLoginInfo^.stUserLabelTxt := stUserLabelText;
dialogMan.OpenDialog(loginDialog, pClientData, TRUE, 0);
END_IF
END_IF
END_IF
OnLoginDialogClosed() bir iletişim kutusunun kapatılmasına verilen tepkiyi tanımlar.
Fonksiyonun uygulanması OnLoginDialogClosed():
FUNCTION OnLoginDialogClosed : BOOL
VAR_INPUT
pClientData : POINTER TO VisuStructClientData;
END_VAR
VAR
dialogMan : IDialogManager;
loginDialog : IVisualisationDialog;
pLoginInfo : POINTER TO Login_VISU_STRUCT;
result : Visu_DialogResult;
stPassword: STRING;
stUsername: STRING;
END_VAR
dialogMan := g_VisuManager.GetDialogManager(); // The DialogManager is provided via the implicitly available VisuManager
IF dialogMan <> 0 AND pVisuClient <> 0 THEN
loginDialog := dialogMan.GetDialog('VisuDialogs.Login'); // Gets the login dialog
IF loginDialog <> 0 THEN
result := loginDialog.GetResult(); // Gets the result (OK, Cancel) of the dialog
IF result = Visu_DialogResult.OK THEN
loginDialog.SetResult(Visu_DialogResult.None); // Reset to default (none)
pLoginInfo := dialogMan.GetClientInterface(loginDialog, pVisuClient); // Structure Login_VISU_STRUCT gets read;
// In the following the structure parameters can be set
IF pLoginInfo <> 0 THEN
stPassword := pLoginInfo^.stPasswordpLoginInfo^.stPassword := ''; // Reset the passwword
stUsername := pLoginInfo^.stUsername;
END_IF
ELSIF result = Visu_DialogResult.Cancel THEN
loginDialog.SetResult(Visu_DialogResult.None); // React on 'Cancel'
ELSE
// nothing to do
END_IF
END_IF
END_IF
Ayrıca bakınız

