Zireael |
Отправлено: 26 Декабря, 2017 - 16:05:58
|
Эксперт
Покинул форум
Сообщений всего: 4466
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: используются одни и те же переменные где for
Это никак не влияет, если циклы не вложенные.
Цитата: не прорисовывается)
CODE:// заполняем массивы
for(int j=0; j<pos_size_static0[0][2]; j++)
Сколько в вашем коде статиков? Цикл использует параметры первого. |
|
|
Kibor |
Отправлено: 26 Декабря, 2017 - 16:08:35
|
Эксперт
Просматривает форум
Сообщений всего: 8221
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Цитата: int pos_size_static0[1][4];
string text_static0[1];
pos_size_static0[0][0]=20; pos_size_static0[0][1]=10; pos_size_static0[0][2]=40; pos_size_static0[0][3]=12;
text_static0[0]="Текст 0";
//////////
createdialog(0, STATIC, #pos_size_static0[0][0], #text_static0[0]);
//////////
///////////
showdialog(0, "Диалог", 800, 200, 470, 100, 1, 1);
//////////
win dialog;
// ждём когда диалог откроется
while(window("Диалог")==0)
{
sleep(50);
}
dialog=window("Диалог");
int nl=0;
line(10, 20, 200, 20, 255, dialog);
line(10, 30, 150, 35, 32768, dialog);
loop() sleep(10);
function line(int xs, int ys, int xf, int yf, int color, win w)
{
int image[470][100];// по размеру диалога
int x1, y1, x2, y2;
if (xf>xs){x1=xs; x2=xf;}
else {x2=xs; x1=xf;}
if (yf>ys){y1=ys; y2=yf;}
else {y2=ys; y1=yf;}
for (int y=y1; y<y2+1; y++)
{
for (int x=x1; x<x2+1; x++)image[x][y]=color;
}
visualwindow (w, nl, x1, y1, x2+1, y2+1, x1, y1, 100, #image[0][0]);
nl++;
} |
|
|
007wan |
Отправлено: 27 Декабря, 2017 - 12:08:16
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Kibor , Все отлично работает, но у меня 2 линии(зеленая почему-то в самом внизу. Красная вообще выше самого статика чуть-чуть) Желательно, что бы Одна сплошная линия( если можно толщину указать итд, это наверное в line) и обводила статик, но обводила так(уточню):
есть сам размер статика. например, размерами 100, 105. Обведет на следующем пикселе, т.е на 101, 106, и там начнется обводка.
(Добавление)
(Добавление)
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
(Добавление)
007wan пишет: например, размерами 100, 105. Обведет на следующем пикселе, т.е на 101, 106, и там начнется обводка.
а не лучше под размер статика или же, я ошибся вверху: 4 линии(2 гориз., 2 верт. отступ каждой на 1 пикс.)
(Добавление)
for(int j=0; j<pos_size_static0[0][2]; j++)
{
arr1[j][0]=color;
}
for(j=0; j<pos_size_static0[0][3]; j++)
{
arr2[0][j]=color;
}
CODE:for(int j=0; j<pos_size_static20[0][2]; j++)
{
arr1[j][0]=color;
}
for(j=0; j<pos_size_static20[0][3]; j++)
{
arr2[0][j]=color;
}
Нашел. все равботает))
(Добавление)
Kibor пишет: Zireael пишет: while(formatwi(window("Диалог")) < 0)
CODE:while(window("Диалог")==0)
А чем оно отличается? что лучше выбрать?
(Добавление)
Кстати, если вы обратили внимание, то в нижнем правом углу этого нарисованного квадрата, прямоугольника(смотря какая форма будет статика) белая точка, т.е он в конце не дорисовывает
(Добавление)
можео еще сделать отступы на 1 пикс |
|
|
Kibor |
Отправлено: 27 Декабря, 2017 - 17:13:41
|
Эксперт
Просматривает форум
Сообщений всего: 8221
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
я не подчеркивал статик и тд.
я просто провел 2 линии по координатам.
первые 4 параметра. в функции . ими устанавливается длина и толщина.
line(10, 20, 200, 20, 255, dialog);
line(10, 30, 150, 35, 32768, dialog);
думаю поэкспериментировав поймете как обводить и рисовать где надо.
саму функцию function line(int xs, int ys, int xf, int yf, int color, win w) не трогать.
(Добавление)
pos_size_static0 может не соответствовать длине текста, то есть быть больше. |
|
|
Kibor |
Отправлено: 27 Декабря, 2017 - 19:15:33
|
Эксперт
Просматривает форум
Сообщений всего: 8221
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Цитата: int pos_size_button0[1][4];
string text_button0[1];
int flag_button0[1];
pos_size_button0[0][0]=73; pos_size_button0[0][1]=147; pos_size_button0[0][2]=100; pos_size_button0[0][3]=20;
text_button0[0]="Кнопка 0";
//////////
int pos_size_edit0[2][4];
string text_edit0[2];
pos_size_edit0[0][0]=127; pos_size_edit0[0][1]=8; pos_size_edit0[0][2]=100; pos_size_edit0[0][3]=20;
pos_size_edit0[1][0]=128; pos_size_edit0[1][1]=37; pos_size_edit0[1][2]=100; pos_size_edit0[1][3]=20;
text_edit0[0]="Поле 0"; text_edit0[1]="Поле 1";
//////////
int pos_size_check0[2][4];
string text_check0[2];
int flag_check0[2];
pos_size_check0[0][0]=21; pos_size_check0[0][1]=65; pos_size_check0[0][2]=60; pos_size_check0[0][3]=17;
pos_size_check0[1][0]=22; pos_size_check0[1][1]=93; pos_size_check0[1][2]=60; pos_size_check0[1][3]=17;
text_check0[0]="Галка 0"; text_check0[1]="Галка 1";
flag_check0[0]=0; flag_check0[1]=0;
//////////
int pos_size_combo0[1][4];
string text_combo0[1][1];
int strok_combo0[1];
int flag_combo0[1];
pos_size_combo0[0][0]=129; pos_size_combo0[0][1]=72; pos_size_combo0[0][2]=100; pos_size_combo0[0][3]=22;
strok_combo0[0]=1;
text_combo0[0][0]="Список 0";
flag_combo0[0]=0;
//////////
int pos_size_static0[2][4];
string text_static0[2];
pos_size_static0[0][0]=19; pos_size_static0[0][1]=12; pos_size_static0[0][2]=100; pos_size_static0[0][3]=12;
pos_size_static0[1][0]=21; pos_size_static0[1][1]=36; pos_size_static0[1][2]=100; pos_size_static0[1][3]=12;
text_static0[0]="Текст 0"; text_static0[1]="Текст 1";
//////////
createdialog(0, BUTTON, #pos_size_button0[0][0], #text_button0[0], #flag_button0[0] |
EDIT, #pos_size_edit0[0][0], #text_edit0[0] |
CHECK, #pos_size_check0[0][0], #text_check0[0], #flag_check0[0] |
COMBO, #pos_size_combo0[0][0], #text_combo0[0][0], #strok_combo0[0], #flag_combo0[0] |
STATIC, #pos_size_static0[0][0], #text_static0[0]);
//////////
showdialog(0, "Диалог", 558, 234, 250, 210, 1, 1);
//////////
win dialog;
// ждём когда диалог откроется
while(window("Диалог")==0)
{
sleep(50);
}
dialog=window("Диалог");
int nl=0, n;
rectangle(#pos_size_button0[0][0]);
for (n=0; n<2; n++)rectangle(#pos_size_edit0[n][0]);
for (n=0; n<2; n++)rectangle(#pos_size_check0[n][0]);
rectangle(#pos_size_combo0[0][0]);
for (n=0; n<2; n++)rectangle(#pos_size_static0[n][0]);
loop() sleep(10);//Убрать после теста
function rectangle(int #res)
{
line(res[0][0]-2, res[0][1]-2, res[0][0]+res[0][2]+1, res[0][1]-2, 255, dialog);
line(res[0][0]-2, res[0][1]+res[0][3]+1, res[0][0]+res[0][2]+1, res[0][1]+res[0][3]+1, 255, dialog);
line(res[0][0]-2, res[0][1]-2, res[0][0]-2, res[0][1]+res[0][3]+1, 255, dialog);
line(res[0][0]+res[0][2]+1, res[0][1]-2, res[0][0]+res[0][2]+1, res[0][1]+res[0][3]+1, 255, dialog);
}
function line(int xs, int ys, int xf, int yf, int color, win w)
{
int image[250][210];// по размеру диалога
int x1, y1, x2, y2;
if (xf>xs){x1=xs; x2=xf;}
else {x2=xs; x1=xf;}
if (yf>ys){y1=ys; y2=yf;}
else {y2=ys; y1=yf;}
for (int y=y1; y<y2+1; y++)
{
for (int x=x1; x<x2+1; x++)image[x][y]=color;
}
visualwindow (w, nl, x1, y1, x2+1, y2+1, x1, y1, 100, #image[0][0]);
nl++;
}
|
|
|
007wan |
Отправлено: 28 Декабря, 2017 - 11:35:20
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Kibor пишет: line(10, 30, 150, 35, 32768, dialog);
Я не понял, это функция или что? почему она розовым не помечается?
(Добавление)
Kibor пишет: Цитата: int pos_size_button0[1][4];
string text_button0[1];
int flag_button0[1];
pos_size_button0[0][0]=73; pos_size_button0[0][1]=147; pos_size_button0[0][2]=100; pos_size_button0[0][3]=20;
text_button0[0]="Кнопка 0";
//////////
int pos_size_edit0[2][4];
string text_edit0[2];
pos_size_edit0[0][0]=127; pos_size_edit0[0][1]=8; pos_size_edit0[0][2]=100; pos_size_edit0[0][3]=20;
pos_size_edit0[1][0]=128; pos_size_edit0[1][1]=37; pos_size_edit0[1][2]=100; pos_size_edit0[1][3]=20;
text_edit0[0]="Поле 0"; text_edit0[1]="Поле 1";
//////////
int pos_size_check0[2][4];
string text_check0[2];
int flag_check0[2];
pos_size_check0[0][0]=21; pos_size_check0[0][1]=65; pos_size_check0[0][2]=60; pos_size_check0[0][3]=17;
pos_size_check0[1][0]=22; pos_size_check0[1][1]=93; pos_size_check0[1][2]=60; pos_size_check0[1][3]=17;
text_check0[0]="Галка 0"; text_check0[1]="Галка 1";
flag_check0[0]=0; flag_check0[1]=0;
//////////
int pos_size_combo0[1][4];
string text_combo0[1][1];
int strok_combo0[1];
int flag_combo0[1];
pos_size_combo0[0][0]=129; pos_size_combo0[0][1]=72; pos_size_combo0[0][2]=100; pos_size_combo0[0][3]=22;
strok_combo0[0]=1;
text_combo0[0][0]="Список 0";
flag_combo0[0]=0;
//////////
int pos_size_static0[2][4];
string text_static0[2];
pos_size_static0[0][0]=19; pos_size_static0[0][1]=12; pos_size_static0[0][2]=100; pos_size_static0[0][3]=12;
pos_size_static0[1][0]=21; pos_size_static0[1][1]=36; pos_size_static0[1][2]=100; pos_size_static0[1][3]=12;
text_static0[0]="Текст 0"; text_static0[1]="Текст 1";
//////////
createdialog(0, BUTTON, #pos_size_button0[0][0], #text_button0[0], #flag_button0[0] |
EDIT, #pos_size_edit0[0][0], #text_edit0[0] |
CHECK, #pos_size_check0[0][0], #text_check0[0], #flag_check0[0] |
COMBO, #pos_size_combo0[0][0], #text_combo0[0][0], #strok_combo0[0], #flag_combo0[0] |
STATIC, #pos_size_static0[0][0], #text_static0[0]);
//////////
showdialog(0, "Диалог", 558, 234, 250, 210, 1, 1);
//////////
win dialog;
// ждём когда диалог откроется
while(window("Диалог")==0)
{
sleep(50);
}
dialog=window("Диалог");
int nl=0, n;
rectangle(#pos_size_button0[0][0]);
for (n=0; n<2; n++)rectangle(#pos_size_edit0[n][0]);
for (n=0; n<2; n++)rectangle(#pos_size_check0[n][0]);
rectangle(#pos_size_combo0[0][0]);
for (n=0; n<2; n++)rectangle(#pos_size_static0[n][0]);
loop() sleep(10);//Убрать после теста
function rectangle(int #res)
{
line(res[0][0]-2, res[0][1]-2, res[0][0]+res[0][2]+1, res[0][1]-2, 255, dialog);
line(res[0][0]-2, res[0][1]+res[0][3]+1, res[0][0]+res[0][2]+1, res[0][1]+res[0][3]+1, 255, dialog);
line(res[0][0]-2, res[0][1]-2, res[0][0]-2, res[0][1]+res[0][3]+1, 255, dialog);
line(res[0][0]+res[0][2]+1, res[0][1]-2, res[0][0]+res[0][2]+1, res[0][1]+res[0][3]+1, 255, dialog);
}
function line(int xs, int ys, int xf, int yf, int color, win w)
{
int image[250][210];// по размеру диалога
int x1, y1, x2, y2;
if (xf>xs){x1=xs; x2=xf;}
else {x2=xs; x1=xf;}
if (yf>ys){y1=ys; y2=yf;}
else {y2=ys; y1=yf;}
for (int y=y1; y<y2+1; y++)
{
for (int x=x1; x<x2+1; x++)image[x][y]=color;
}
visualwindow (w, nl, x1, y1, x2+1, y2+1, x1, y1, 100, #image[0][0]);
nl++;
}
А упростить никак?
(Добавление)
Где список(комбо): если добавим 1 строчку в комбо, запустим скрипт, то при нажатии комбо линия будет поверх строки или нет? Просто ответьте, хотелось бы, что бы не поверх, а строка комбо закрывала часть, ну сейчас мне не нужжен список, ну всеравно просто такк) |
|
|
|