Cocacaca |
Отправлено: 18 Июля, 2018 - 21:20:51
|
Прохожий
Покинул форум
Сообщений всего: 20
Дата рег-ции: Нояб. 2017
Репутация: 0
|
Собственно вопрос следующий, требуется отобразить в диологовом окне на картинке которая была размещена на немодальном окне с помощью visualwindow из файла, при клике мышью по данной области именно этой картинки пользователем, разместить картинку в виде стрелки/галки из файла, тем же методом visualwindow.
То есть, требуется взять геттер мыши в области visualwindow и на нем разместить стрелку/галку, что-то нет мысли ...
CODE:
int Image_0_KIB[240][240];
loadimage (#Image_0_KIB[0][0], "D:\Man\China.bmp");
int pos_size_button0[1][4];
string text_button0[1];
int flag_button0[1];
win w = window("CheckImg");
pos_size_button0[0][0]=78; pos_size_button0[0][1]=241; pos_size_button0[0][2]=100; pos_size_button0[0][3]=20;
text_button0[0]="Start";
//////////
createdialog(0, BUTTON, #pos_size_button0[0][0], #text_button0[0], #flag_button0[0]);
//////////
showdialog(0, "CheckImg", 835, 390, 250, 300, 1, 1);
//////////
visualwindow(w, 0, 0, 0, 240, 240, 1, 1, 100, #Image_0_KIB[0][0]);
loop() sleep(10);
|
|
|
Kibor |
Отправлено: 18 Июля, 2018 - 22:02:02
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
CODE:int I1[500][500];
loadimage (#I1[0][0], "C:\China.bmp");//Фоновое изображение
int Size_X_I1=imagewidth(#I1[0][0]);
int Size_Y_I1=imageheight(#I1[0][0]);
int I2[50][50];
loadimage (#I2[0][0], "C:\strelka.bmp");//То чем рисум по клику на фоновом
int Size_X_I2=imagewidth(#I2[0][0]);
int Size_Y_I2=imageheight(#I2[0][0]);
int pos_size_button0[1][4];
string text_button0[1];
int flag_button0[1];
win w = window("CheckImg");
pos_size_button0[0][0]=78; pos_size_button0[0][1]=241; pos_size_button0[0][2]=100; pos_size_button0[0][3]=20;
text_button0[0]="Start";
//////////
createdialog(0, BUTTON, #pos_size_button0[0][0], #text_button0[0], #flag_button0[0]);
//////////
showdialog(0, "CheckImg", 835, 390, 250, 300, 1, 1);
//////////
visualwindow(w, 0, 0, 0, Size_X_I1, Size_Y_I1, 1, 1, 100, #I1[0][0]);
int cx, cy;
int x, y;
loop()
{
if (getkeystate(LBUTTON)==1)
{
getmouse(cx, cy);
w = window("CheckImg");
cx=cx-w.leftclient-Size_X_I2/2;
cy=cy-w.topclient-Size_Y_I2/2;
for (x=cx; x<cx+Size_X_I2; x++)
{
for (y=cy; y<cy+Size_Y_I2; y++)
{
if (x<0 || x>Size_X_I1-1)continue;//Если за пределы
if (y<0 || y>Size_Y_I1-1)continue;//Если за пределы
I1[x][y]=I2[x-cx][y-cy];
}
}
while(getkeystate(LBUTTON)==1)sleep(15);
}
sleep(10);
} |
|
|
Kibor |
Отправлено: 19 Июля, 2018 - 20:49:52
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
А более красивее если не учитывать какой то цвет фона
CODE:int I1[500][500];
loadimage (#I1[0][0], "C:\China.bmp");//Фоновое изображение
int Size_X_I1=imagewidth(#I1[0][0]);
int Size_Y_I1=imageheight(#I1[0][0]);
int I2[50][50];
loadimage (#I2[0][0], "C:\strelka.bmp");//То чем рисум по клику на фоновом
int Size_X_I2=imagewidth(#I2[0][0]);
int Size_Y_I2=imageheight(#I2[0][0]);
int pos_size_button0[1][4];
string text_button0[1];
int flag_button0[1];
win w = window("CheckImg");
pos_size_button0[0][0]=78; pos_size_button0[0][1]=241; pos_size_button0[0][2]=100; pos_size_button0[0][3]=20;
text_button0[0]="Start";
//////////
createdialog(0, BUTTON, #pos_size_button0[0][0], #text_button0[0], #flag_button0[0]);
//////////
showdialog(0, "CheckImg", 835, 390, 250, 300, 1, 1);
//////////
visualwindow(w, 0, 0, 0, Size_X_I1, Size_Y_I1, 1, 1, 100, #I1[0][0]);
int cx, cy;
int x, y;
loop()
{
if (getkeystate(LBUTTON)==1)
{
getmouse(cx, cy);
w = window("CheckImg");
cx=cx-w.leftclient-Size_X_I2/2;
cy=cy-w.topclient-Size_Y_I2;
for (x=cx; x<cx+Size_X_I2; x++)
{
for (y=cy; y<cy+Size_Y_I2; y++)
{
if (x<0 || x>Size_X_I1-1 || y<0 || y>Size_Y_I1-1)continue;//Если за пределы
if (I2[x-cx][y-cy]!=0)I1[x][y]=I2[x-cx][y-cy];//Если не фоновый цвет черный
}
}
while(getkeystate(LBUTTON)==1)sleep(15);
}
sleep(10);
} |
|
|
Cocacaca |
Отправлено: 21 Июля, 2018 - 11:51:42
|
Прохожий
Покинул форум
Сообщений всего: 20
Дата рег-ции: Нояб. 2017
Репутация: 0
|
Все замечательно, но есть один нюанс! Есть 2 выпадающих списка, в зависимости от выбора в первом списке составляется второй список, и исходя из этого должна появится картинка соответствующая и вот на этой картинке надо снять координаты.
Вот уже второй день что-то не получается ни как
CODE:
int Image_0[200][200];
int Image_1[200][200];
int Image_2[200][200];
int Image_3[200][200];
loadimage (#Image_0[0][0], "C:\test\square.bmp");
loadimage (#Image_1[0][0], "C:\test\circle.bmp");
loadimage (#Image_2[0][0], "C:\test\Dog.bmp");
loadimage (#Image_3[0][0], "C:\test\Cat.bmp");
win w = ("Dialog");
int t= flag_combo0[0];
int pos_size_combo0[2][4];
string text_combo0[2][2];
int strok_combo0[2];
int flag_combo0[2];
text_combo0[1][0]="Square"; text_combo0[1][1]="Circle";
flag_combo0[0]=0; flag_combo0[1]=0;
dialog();
createdialog(0, COMBO, #pos_size_combo0[0][0], #text_combo0[0][0], #strok_combo0[0], #flag_combo0[0]);
showdialog(0, "Dialog", 600, 250, 600, 300, 1, 1);
visualwindow(w, 0, 0, 0, 200, 200, 300, 5 , 100, #Image_0[0][0]);
///////
enabletimer(0);
loop() sleep(10);//?????? ????? ?????
CREATE_TIMER(0, 200)//????? ???????, ?????????? ??????? ????? ????.
{
if (t!=flag_combo0[0])
{
t= flag_combo0[0];
if (flag_combo0[0]==0){
destroydialog(0);
dialog();
flag_combo0[0]=0;
text_combo0[1][0]="Square"; text_combo0[1][1]="Circle";
if(flag_combo0[1]==0){
flag_combo0[1]=0;
createdialog(0, COMBO, #pos_size_combo0[0][0], #text_combo0[0][0], #strok_combo0[0], #flag_combo0[0]);
showdialog(0, "Dialog", 600, 250, 600, 300, 1, 1);
visualwindow(w, 0, 0, 0, 200, 200, 300, 5 , 100, #Image_0[0][0]);
goto a;
}
if(flag_combo0[1]==1 && flag_combo0[0]==0){
flag_combo0[1]=1;
createdialog(0, COMBO, #pos_size_combo0[0][0], #text_combo0[0][0], #strok_combo0[0], #flag_combo0[0]);
showdialog(0, "Dialog", 600, 250, 600, 300, 1, 1);
visualwindow(w, 0, 0, 0, 200, 200, 300, 5 , 100, #Image_1[0][0]);
goto a;
}
}
if (flag_combo0[0]==1){
destroydialog(0);
dialog();
flag_combo0[0]=0;
text_combo0[1][0]="Dog"; text_combo0[1][1]="Cat";
if(flag_combo0[1]==0){
flag_combo0[1]=0;
createdialog(0, COMBO, #pos_size_combo0[0][0], #text_combo0[0][0], #strok_combo0[0], #flag_combo0[0]);
showdialog(0, "Dialog", 600, 250, 600, 300, 1, 1);
visualwindow(w, 0, 0, 0, 200, 200, 300, 5 , 100, #Image_0[0][0]);
goto a;
}
if(flag_combo0[1]==1 && flag_combo0[0]==0){
flag_combo0[1]=1;
createdialog(0, COMBO, #pos_size_combo0[0][0], #text_combo0[0][0], #strok_combo0[0], #flag_combo0[0]);
showdialog(0, "Dialog", 600, 250, 600, 300, 1, 1);
visualwindow(w, 0, 0, 0, 200, 200, 300, 5 , 100, #Image_1[0][0]);
goto a;
}
}
}
a:;
}
function dialog()
{
pos_size_combo0[0][0]=27; pos_size_combo0[0][1]=27; pos_size_combo0[0][2]=100; pos_size_combo0[0][3]=80;
pos_size_combo0[1][0]=32; pos_size_combo0[1][1]=165; pos_size_combo0[1][2]=100; pos_size_combo0[1][3]=80;
strok_combo0[0]=2; strok_combo0[1]=2;
text_combo0[0][0]="Shape"; text_combo0[0][1]="Animals";
}
|
|
|
Zireael |
Отправлено: 21 Июля, 2018 - 19:23:17
|
Эксперт
Покинул форум
Сообщений всего: 4463
Дата рег-ции: Нояб. 2017
Репутация: 585
|
CODE:win w = window("Dialog");
Диалог ещё не создан, а уже получаете указатель на него. Сначала showdialog, потом получаем указатель.
CODE:win w;
// тут параметры и создание диалога
showdialog(0, "Dialog", 600, 250, 600, 300, 1, 1);
while(window("Dialog")==0)sleep(50); // ждём когда диалог откроется
w = window("Dialog"); //получили указатель
visualwindow(w, 0, 0, 0, 200, 200, 300, 5 , 100, #Image_0[0][0]); // вывели изображение
Цитата: int t= flag_combo0[0];
Присваиваете переменной t значение не существующего элемента массива. До этой строки массив flag_combo0 ещё не объявлен.
Вывод картинки в зависимости от выбранного пункта combo (Отобразить)CODE:int Image_0[200][200];
int Image_1[200][200];
loadimage (#Image_0[0][0], "C:\test\square.bmp");
loadimage (#Image_1[0][0], "C:\test\circle.bmp");
int current_flag_combo=-1;
win w;
int pos_size_combo0[1][4];
string text_combo0[1][2];
int strok_combo0[1];
int flag_combo0[1];
pos_size_combo0[0][0]=27; pos_size_combo0[0][1]=37; pos_size_combo0[0][2]=100; pos_size_combo0[0][3]=80;
strok_combo0[0]=2;
text_combo0[0][0]="Список 0"; text_combo0[0][1]="Список 1";
flag_combo0[0]=0;
createdialog(0, COMBO, #pos_size_combo0[0][0], #text_combo0[0][0], #strok_combo0[0], #flag_combo0[0]);
showdialog(0, "Dialog", 835, 390, 536, 359, 1, 1);
while(window("Dialog")==0)sleep(50); // ждём когда диалог откроется
w = window("Dialog"); //получили указатель
enabletimer(0);
loop() sleep(10);
CREATE_TIMER(0, 200)
{
if(flag_combo0[0]==0 && current_flag_combo != 0)
{
current_flag_combo=0; update(w);
visualwindow(w, 0, 0, 0, imagewidth(#Image_0[0][0]), imageheight(#Image_0[0][0]), 300, 5 , 100, #Image_0[0][0]);
}
if(flag_combo0[0]==1 && current_flag_combo != 1)
{
current_flag_combo=1; update(w);
visualwindow(w, 0, 0, 0, imagewidth(#Image_1[0][0]), imageheight(#Image_1[0][0]), 300, 5 , 100, #Image_1[0][0]);
}
} |
|
|
Cocacaca |
Отправлено: 22 Июля, 2018 - 11:56:03
|
Прохожий
Покинул форум
Сообщений всего: 20
Дата рег-ции: Нояб. 2017
Репутация: 0
|
Zireael , спасибо за указанные ошибки, данный код копипастился с разных, поэтому проскочило пару ошибок, скинул сюда для наглядной своей проблемы. А проблема в следующем:
1. Необходимо отслеживать изменения первого списка и исходя из выбора отображать нужные варианты во втором И при этом отслеживать возможно было нажатие на область картинки, если было нажатие, в этом месте отобразить стрелку, если не было нажатий, слушаем дальше пользователя, что он будет делать или изменять выбор в первом поиске или во втором, исходя из этого отображать нужную картинку. Если бы была многопоточность то это можно было бы сделать в два потока, но их нет. Вот и стал вопрос как-то это все сделать все аккуратно, то есть отслеживать 3 разных действия можно сказать одновременно.
Если я win w = window("Dialog" объявлю до появления окна - по-моему ничего страшного, я же ее не вызываю, это точно так же как искать определенное окно, зная его название и ожидая его появления. |
|
|
Zireael |
Отправлено: 22 Июля, 2018 - 21:28:39
|
Эксперт
Покинул форум
Сообщений всего: 4463
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Есть 2 выпадающих списка, в зависимости от выбора в первом списке составляется второй список
code (Отобразить)CODE:win w;
int current_flag_combo=0;
new int pos_size_combo0[1][4];
new string text_combo0[1][3];
new int strok_combo0[1];
new int flag_combo0[1];
pos_size_combo0[0][0]=10; pos_size_combo0[0][1]=10; pos_size_combo0[0][2]=100; pos_size_combo0[0][3]=80;
strok_combo0[0]=3; strok_combo0[1]=3;
text_combo0[0][0]=""; text_combo0[0][1]="Animal"; text_combo0[0][2]="Shape";
flag_combo0[0]=0;
createdialog(0, COMBO, #pos_size_combo0[0][0], #text_combo0[0][0], #strok_combo0[0], #flag_combo0[0]);
showdialog(0, "Dialog", 835, 390, 536, 359, 2, 0);
while(window("Dialog")==0)sleep(50);
w = window("Dialog");
enabletimer(0);
loop() sleep(10);
CREATE_TIMER(0, 200)
{
if(flag_combo0[0]==0 && current_flag_combo != 0) // если выбран пункт0, пустая строка
{
// уничтожаем старый диалог
destroydialog(0); sleep(100);
delete pos_size_combo0;
delete text_combo0;
delete strok_combo0;
delete flag_combo0;
///////////
// создаём новый
new int pos_size_combo0[1][4];
new string text_combo0[1][3];
new int strok_combo0[1];
new int flag_combo0[1];
pos_size_combo0[0][0]=10; pos_size_combo0[0][1]=10; pos_size_combo0[0][2]=100; pos_size_combo0[0][3]=80;
strok_combo0[0]=3; strok_combo0[1]=3;
text_combo0[0][0]=""; text_combo0[0][1]="Animal"; text_combo0[0][2]="Shape";
flag_combo0[0]=0;
createdialog(0, COMBO, #pos_size_combo0[0][0], #text_combo0[0][0], #strok_combo0[0], #flag_combo0[0]);
showdialog(0, "Dialog", 835, 390, 536, 359, 2, 0);
while(window("Dialog")==0)sleep(50); w = window("Dialog"); current_flag_combo=0;
}
if(flag_combo0[0]==1 && current_flag_combo != 1) // если выбран Animal
{
destroydialog(0); sleep(100);
delete pos_size_combo0;
delete text_combo0;
delete strok_combo0;
delete flag_combo0;
new int pos_size_combo0[2][4];
new string text_combo0[2][3];
new int strok_combo0[2];
new int flag_combo0[2];
pos_size_combo0[0][0]=10; pos_size_combo0[0][1]=10; pos_size_combo0[0][2]=100; pos_size_combo0[0][3]=80;
pos_size_combo0[1][0]=10; pos_size_combo0[1][1]=100; pos_size_combo0[1][2]=100; pos_size_combo0[1][3]=80;
strok_combo0[0]=3; strok_combo0[1]=3;
text_combo0[0][0]=""; text_combo0[0][1]="Animal"; text_combo0[0][2]="Shape";
text_combo0[1][0]=""; text_combo0[1][1]="Cat"; text_combo0[1][2]="Dog";
flag_combo0[0]=1; flag_combo0[1]=0;
createdialog(0, COMBO, #pos_size_combo0[0][0], #text_combo0[0][0], #strok_combo0[0], #flag_combo0[0]);
showdialog(0, "Dialog", 835, 390, 536, 359, 2, 0);
while(window("Dialog")==0)sleep(50); w = window("Dialog"); current_flag_combo=1;
}
if(flag_combo0[0]==2 && current_flag_combo != 2) // если выбран Shape
{
destroydialog(0); sleep(100);
delete pos_size_combo0;
delete text_combo0;
delete strok_combo0;
delete flag_combo0;
new int pos_size_combo0[2][4];
new string text_combo0[2][5];
new int strok_combo0[2];
new int flag_combo0[2];
pos_size_combo0[0][0]=10; pos_size_combo0[0][1]=10; pos_size_combo0[0][2]=100; pos_size_combo0[0][3]=80;
pos_size_combo0[1][0]=10; pos_size_combo0[1][1]=100; pos_size_combo0[1][2]=100; pos_size_combo0[1][3]=100;
strok_combo0[0]=3; strok_combo0[1]=4;
text_combo0[0][0]=""; text_combo0[0][1]="Animal"; text_combo0[0][2]="Shape";
text_combo0[1][0]=""; text_combo0[1][1]="Square"; text_combo0[1][2]="Сircle"; text_combo0[1][3]="Triangle";
flag_combo0[0]=2; flag_combo0[1]=0;
createdialog(0, COMBO, #pos_size_combo0[0][0], #text_combo0[0][0], #strok_combo0[0], #flag_combo0[0]);
showdialog(0, "Dialog", 835, 390, 536, 359, 2, 0);
while(window("Dialog")==0)sleep(50); w = window("Dialog"); current_flag_combo=2;
}
} |
|
|
Zireael |
Отправлено: 24 Июля, 2018 - 02:02:19
|
Эксперт
Покинул форум
Сообщений всего: 4463
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: возник вопрос, а как обновить окно, чтобы стрелочки которые пользователь натыкал исчезли
Надо не окно обновлять, а картинку в массиве. Самое простое снова загрузить картинку.
Или же создавать 2 массива, в 1 хранить оригинал картинки, в другом рисовать, когда потребуется обновить придётся копировать из 1 во второй. Но, это не очень не слишком быстро.
Цитата: при destroydialog(0) - крашится
Значит что-то не так сделали. С visualwindow:
code (Отобразить)CODE:int Image_0[200][200];
int Image_1[200][200];
loadimage (#Image_0[0][0], "C:\test\circle.bmp");
loadimage (#Image_1[0][0], "C:\test\square.bmp");
win w;
int current_flag_combo=0;
new int pos_size_combo0[1][4];
new string text_combo0[1][3];
new int strok_combo0[1];
new int flag_combo0[1];
pos_size_combo0[0][0]=10; pos_size_combo0[0][1]=10; pos_size_combo0[0][2]=100; pos_size_combo0[0][3]=80;
strok_combo0[0]=3; strok_combo0[1]=3;
text_combo0[0][0]=""; text_combo0[0][1]="Animal"; text_combo0[0][2]="Shape";
flag_combo0[0]=0;
createdialog(0, COMBO, #pos_size_combo0[0][0], #text_combo0[0][0], #strok_combo0[0], #flag_combo0[0]);
showdialog(0, "Dialog", 835, 390, 536, 359, 2, 0);
while(window("Dialog")==0)sleep(50);
w = window("Dialog");
enabletimer(0);
loop() sleep(10);
CREATE_TIMER(0, 200)
{
if(flag_combo0[0]==0 && current_flag_combo != 0) // если выбран пункт0, пустая строка
{
disablevisualwindow(0); sleep(100); // отключаем visual
// уничтожаем старый диалог
destroydialog(0); sleep(100);
delete pos_size_combo0;
delete text_combo0;
delete strok_combo0;
delete flag_combo0;
///////////
// создаём новый
new int pos_size_combo0[1][4];
new string text_combo0[1][3];
new int strok_combo0[1];
new int flag_combo0[1];
pos_size_combo0[0][0]=10; pos_size_combo0[0][1]=10; pos_size_combo0[0][2]=100; pos_size_combo0[0][3]=80;
strok_combo0[0]=3; strok_combo0[1]=3;
text_combo0[0][0]=""; text_combo0[0][1]="Animal"; text_combo0[0][2]="Shape";
flag_combo0[0]=0;
createdialog(0, COMBO, #pos_size_combo0[0][0], #text_combo0[0][0], #strok_combo0[0], #flag_combo0[0]);
showdialog(0, "Dialog", 835, 390, 536, 359, 2, 0);
while(window("Dialog")==0)sleep(50); w = window("Dialog"); current_flag_combo=0;
}
if(flag_combo0[0]==1 && current_flag_combo != 1) // если выбран Animal
{
disablevisualwindow(0); sleep(100);
destroydialog(0); sleep(100);
delete pos_size_combo0;
delete text_combo0;
delete strok_combo0;
delete flag_combo0;
new int pos_size_combo0[2][4];
new string text_combo0[2][3];
new int strok_combo0[2];
new int flag_combo0[2];
pos_size_combo0[0][0]=10; pos_size_combo0[0][1]=10; pos_size_combo0[0][2]=100; pos_size_combo0[0][3]=80;
pos_size_combo0[1][0]=10; pos_size_combo0[1][1]=100; pos_size_combo0[1][2]=100; pos_size_combo0[1][3]=80;
strok_combo0[0]=3; strok_combo0[1]=3;
text_combo0[0][0]=""; text_combo0[0][1]="Animal"; text_combo0[0][2]="Shape";
text_combo0[1][0]=""; text_combo0[1][1]="Cat"; text_combo0[1][2]="Dog";
flag_combo0[0]=1; flag_combo0[1]=0;
createdialog(0, COMBO, #pos_size_combo0[0][0], #text_combo0[0][0], #strok_combo0[0], #flag_combo0[0]);
showdialog(0, "Dialog", 835, 390, 536, 359, 2, 0);
while(window("Dialog")==0)sleep(50); w = window("Dialog"); current_flag_combo=1;
visualwindow(w, 0, 0, 0, imagewidth(#Image_0[0][0]), imageheight(#Image_0[0][0]), 300, 5 , 100, #Image_0[0][0]);
}
if(flag_combo0[0]==2 && current_flag_combo != 2) // если выбран Shape
{
disablevisualwindow(0); sleep(100);
destroydialog(0); sleep(100);
delete pos_size_combo0;
delete text_combo0;
delete strok_combo0;
delete flag_combo0;
new int pos_size_combo0[2][4];
new string text_combo0[2][5];
new int strok_combo0[2];
new int flag_combo0[2];
pos_size_combo0[0][0]=10; pos_size_combo0[0][1]=10; pos_size_combo0[0][2]=100; pos_size_combo0[0][3]=80;
pos_size_combo0[1][0]=10; pos_size_combo0[1][1]=100; pos_size_combo0[1][2]=100; pos_size_combo0[1][3]=100;
strok_combo0[0]=3; strok_combo0[1]=4;
text_combo0[0][0]=""; text_combo0[0][1]="Animal"; text_combo0[0][2]="Shape";
text_combo0[1][0]=""; text_combo0[1][1]="Square"; text_combo0[1][2]="Сircle"; text_combo0[1][3]="Triangle";
flag_combo0[0]=2; flag_combo0[1]=0;
createdialog(0, COMBO, #pos_size_combo0[0][0], #text_combo0[0][0], #strok_combo0[0], #flag_combo0[0]);
showdialog(0, "Dialog", 835, 390, 536, 359, 2, 0);
while(window("Dialog")==0)sleep(50); w = window("Dialog"); current_flag_combo=2;
visualwindow(w, 0, 0, 0, imagewidth(#Image_1[0][0]), imageheight(#Image_1[0][0]), 300, 5 , 100, #Image_1[0][0]);
}
} |
|
|
|