007wan |
Отправлено: 02 Мая, 2019 - 14:25:19
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
а как тут? просто везде позиции и размер разные и названия
код (Отобразить)CODE:function getmessage(1, WM_CREATE)
{
Object_Group1 = CreateWindow(0, "BUTTON", "", BS_GROUPBOX | WS_CHILD | WS_VISIBLE , 10, 10, 350, 160, gethwnd(1), 0, 0, 0);
Object_Combobox1 = CreateWindow(0, "COMBOBOX", "", CBS_DROPDOWNLIST | WS_CHILD | WS_VISIBLE | WS_BORDER, 10, 20, 120, 60, Object_Group1, 0, 0, 0);
for(int i=0; i<sizearray(Text_Combobox1); i++)
{
strcpy(#Bute_Combobox1[0], Text_Combobox1[i]);
sendmessage(CB_ADDSTRING, 0, address(#Bute_Combobox1[0]), formatiw(Object_Combobox1));
}
Object_Checkbox1 = CreateWindow(0, "BUTTON", "", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 10, 50, 320, 20, Object_Group1, 0, 0, 0);
Object_Checkbox2 = CreateWindow(0, "BUTTON", "", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 10, 70, 320, 20, Object_Group1, 0, 0, 0);
Object_Checkbox3 = CreateWindow(0, "BUTTON", "", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 10, 90, 320, 20, Object_Group1, 0, 0, 0);
Object_Checkbox4 = CreateWindow(0, "BUTTON", "", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 10, 110, 320, 20, Object_Group1, 0, 0, 0);
Object_Checkbox5 = CreateWindow(0, "BUTTON", "", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 10, 130, 320, 20, Object_Group1, 0, 0, 0);
Object_Checkbox6 = CreateWindow(0, "BUTTON", "", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 10, 175, 350, 20, gethwnd(1), 0, 0, 0);
Object_Checkbox7 = CreateWindow(0, "BUTTON", "", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 10, 195, 350, 20, gethwnd(1), 0, 0, 0);
Object_Checkbox8 = CreateWindow(0, "BUTTON", "", BS_AUTOCHECKBOX | WS_VISIBLE | WS_CHILD, 20, 215, 270, 20, gethwnd(1), 0, 0, 0);
Object_Edit1 = CreateWindow(0, "EDIT", "", ES_WANTRETURN | ES_MULTILINE | WS_HSCROLL | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL | ES_AUTOVSCROLL, 295, 215, 185, 70, gethwnd(1), 0, 0, 0);
Object_Static2 = CreateWindow(0, "STATIC", "0", WS_VISIBLE | WS_CHILD, 485, 215, 30, 20, gethwnd(1), 0, 0, 0);
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------
function getmessage(1, WM_CLOSE)
{
MainWindow = window ("");
//Status_Combobox1 = sendmessage(CB_GETCURSEL, 0, 0, formatiw(Object_Combobox1));
Status_Combobox1 = SendMessage(Object_Combobox1, CB_GETCURSEL, 0, 0);
Status_Checkbox1 = SendMessage(Object_Checkbox1, BM_GETSTATE, 0, 0);
Status_Checkbox2 = SendMessage(Object_Checkbox2, BM_GETSTATE, 0, 0);
Status_Checkbox3 = SendMessage(Object_Checkbox3, BM_GETSTATE, 0, 0);
Status_Checkbox4 = SendMessage(Object_Checkbox4, BM_GETSTATE, 0, 0);
Status_Checkbox5 = SendMessage(Object_Checkbox5, BM_GETSTATE, 0, 0);
Status_Checkbox6 = SendMessage(Object_Checkbox6, BM_GETSTATE, 0, 0);
Status_Checkbox7 = SendMessage(Object_Checkbox7, BM_GETSTATE, 0, 0);
Status_Checkbox8 = SendMessage(Object_Checkbox8, BM_GETSTATE, 0, 0);
SendMessage(Object_Edit1, WM_GETTEXT, sizearray(Text_Edit1), address(#Text_Edit1[0]));
WritePrivateProfileString ("Default", "Object_Combobox1", format(Status_Combobox1), PathSaveSettings);
WritePrivateProfileString ("Default", "Object_Checkbox1", format(Status_Checkbox1), PathSaveSettings);
WritePrivateProfileString ("Default", "Object_Checkbox2", format(Status_Checkbox2), PathSaveSettings);
WritePrivateProfileString ("Default", "Object_Checkbox3", format(Status_Checkbox3), PathSaveSettings);
WritePrivateProfileString ("Default", "Object_Checkbox4", format(Status_Checkbox4), PathSaveSettings);
WritePrivateProfileString ("Default", "Object_Checkbox5", format(Status_Checkbox5), PathSaveSettings);
WritePrivateProfileString ("Default", "Object_Checkbox6", format(Status_Checkbox6), PathSaveSettings);
WritePrivateProfileString ("Default", "Object_Checkbox7", format(Status_Checkbox7), PathSaveSettings);
WritePrivateProfileString ("Default", "Object_Checkbox8", format(Status_Checkbox8), PathSaveSettings);
WritePrivateProfileString ("Default", "Object_Edit1", format(#Text_Edit1[0]), PathSaveSettings);
EnableWindow(formatwi(MainWindow), 1);
hidedialog(1);
} |
|
|
Zireael |
Отправлено: 02 Мая, 2019 - 14:52:17
|
Эксперт
Покинул форум
Сообщений всего: 4467
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: а как тут? просто везде позиции и размер разные и названия
CODE:int pos[12]=
{10, 50, 320, 20,
20, 215, 270, 20,
99, 88, 77, 66}
string name[3]={"Один", "Два", "Три"}
for(int i=0; i<sizearray(pos)/4; i++)
messagebox(name[i]+" "+format(pos[i*4])+" "+format(pos[i*4+1])+" "+format(pos[i*4+2])+" "+format(pos[i*4+3]));
Не очень удобно из-за того что нельзя инициализировать двухмерный массив при объявлении. |
|
|
007wan |
Отправлено: 03 Мая, 2019 - 11:46:06
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Вот сократил это:
это (Отобразить)CODE: if(loword(message.wparam) == 1)
{
MainWindow = window ("");
showdialog(1, "", MainWindow.left+100, MainWindow.top+100, 525, 500, 4, 1);
//sendmessage(EM_LIMITTEXT, 70, 0, formatiw(Object_Edit1));
SendMessage(Object_Edit1, EM_LIMITTEXT, 70, 0);
SendMessage(Object_Combobox1, CB_SETCURSEL, formatsn(format(#Load_Combobox1[0])), 0);
SendMessage(Object_Checkbox1, BM_SETCHECK, formatsn(format(#Load_Checkbox1[0])), 0);
SendMessage(Object_Checkbox2, BM_SETCHECK, formatsn(format(#Load_Checkbox2[0])), 0);
SendMessage(Object_Checkbox3, BM_SETCHECK, formatsn(format(#Load_Checkbox3[0])), 0);
SendMessage(Object_Checkbox4, BM_SETCHECK, formatsn(format(#Load_Checkbox4[0])), 0);
SendMessage(Object_Checkbox5, BM_SETCHECK, formatsn(format(#Load_Checkbox5[0])), 0);
SendMessage(Object_Checkbox6, BM_SETCHECK, formatsn(format(#Load_Checkbox6[0])), 0);
SendMessage(Object_Checkbox7, BM_SETCHECK, formatsn(format(#Load_Checkbox7[0])), 0);
SendMessage(Object_Checkbox8, BM_SETCHECK, formatsn(format(#Load_Checkbox8[0])), 0);
SendMessage(Object_Edit1, WM_SETTEXT, 0, format(#Load_Edit1[0]), 0);
EnableWindow(formatwi(MainWindow), 0);
}
на это (Отобразить)CODE: if(loword(message.wparam) == 1)
{
MainWindow = window ("");
showdialog(1, "", MainWindow.left+100, MainWindow.top+100, 525, 500, 4, 1);
SendMessage(Object_Combobox1, CB_SETCURSEL, formatsn(format(#Load_Combobox1[0])), 0);
SendMessage(Object_Edit1, WM_SETTEXT, 0, format(#Load_Edit1[0]), 0);
SendMessage(Object_Edit1, EM_LIMITTEXT, 70, 0);
for(int a=0; a<sizearray(Object_Checkbox); a++)
{
if (format(#Load_Checkbox[a][0]) == "9")
{
Load_Checkbox[a][0] = "1";
}
if (format(#Load_Checkbox[a][0]) == "8")
{
Load_Checkbox[a][0] = "0";
}
SendMessage(Object_Checkbox[a], BM_SETCHECK, formatsn(format(#Load_Checkbox[a][0])), 0);
}
EnableWindow(formatwi(MainWindow), 0);
} С объявлением переменных* |
|
|
Zireael |
Отправлено: 03 Мая, 2019 - 12:01:12
|
Эксперт
Покинул форум
Сообщений всего: 4467
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: if (format(#Load_Checkbox[a][0]) == "9" )
{
Load_Checkbox[a][0] = "1";
}
Если выполняется только 1 действие, то фигурные скобки можно не ставить.
CODE:if (format(#Load_Checkbox[a][0]) == "9")Load_Checkbox[a][0] = "1";
Зачем Load_Checkbox объявлен char? Объявить int и не потребуется постоянная конвертация formatsn(format(#Load_Checkbox[a][0]) . И сравнивать можно без format(#Load_Checkbox[a][0]). |
|
|
007wan |
Отправлено: 19 Мая, 2019 - 13:35:59
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: Зачем Load_Checkbox объявлен char? Объявить int и не потребуется постоянная конвертация formatsn(format(#Load_Checkbox[a][0]) . И сравнивать можно без format(#Load_Checkbox[a][0]). Не могу понять. мозг просто кипит((
(Добавление)
Было (Отобразить)CODE:int Object_Checkbox1;
int Status_Checkbox1;
char Load_Checkbox1[255];
int Object_Checkbox2;
int Status_Checkbox2;
char Load_Checkbox2[255];
int Object_Checkbox3;
int Status_Checkbox3;
char Load_Checkbox3[255];
int Object_Checkbox4;
int Status_Checkbox4;
char Load_Checkbox4[255];
int Object_Checkbox5;
int Status_Checkbox5;
char Load_Checkbox5[255];
/*Где-то там...{*/
SendMessage(Object_Checkbox1, BM_SETCHECK, formatsn(format(#Load_Checkbox1[0])), 0);
SendMessage(Object_Checkbox2, BM_SETCHECK, formatsn(format(#Load_Checkbox2[0])), 0);
SendMessage(Object_Checkbox3, BM_SETCHECK, formatsn(format(#Load_Checkbox3[0])), 0);
SendMessage(Object_Checkbox4, BM_SETCHECK, formatsn(format(#Load_Checkbox4[0])), 0);
SendMessage(Object_Checkbox5, BM_SETCHECK, formatsn(format(#Load_Checkbox5[0])), 0);
/*Где-то там...}*/
Object_Checkbox1 = CreateWindow(0, "BUTTON", "1", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 10, 50, 320, 20, Object_Group1, 0, 0, 0);
Object_Checkbox2 = CreateWindow(0, "BUTTON", "12", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 10, 70, 320, 20, Object_Group1, 0, 0, 0);
Object_Checkbox3 = CreateWindow(0, "BUTTON", "123", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 10, 90, 320, 20, Object_Group1, 0, 0, 0);
Object_Checkbox4 = CreateWindow(0, "BUTTON", "1234", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 10, 110, 320, 20, Object_Group1, 0, 0, 0);
Object_Checkbox5 = CreateWindow(0, "BUTTON", "12345", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 10, 130, 320, 20, Object_Group1, 0, 0, 0);
/*Где-то в коде...*/
Status_Checkbox1 = SendMessage(Object_Checkbox1, BM_GETSTATE, 0, 0);
Status_Checkbox2 = SendMessage(Object_Checkbox2, BM_GETSTATE, 0, 0);
Status_Checkbox3 = SendMessage(Object_Checkbox3, BM_GETSTATE, 0, 0);
Status_Checkbox4 = SendMessage(Object_Checkbox4, BM_GETSTATE, 0, 0);
Status_Checkbox5 = SendMessage(Object_Checkbox5, BM_GETSTATE, 0, 0);
WritePrivateProfileString ("Default", "Object_Checkbox1", format(Status_Checkbox1), PathSaveSettings);
WritePrivateProfileString ("Default", "Object_Checkbox2", format(Status_Checkbox2), PathSaveSettings);
WritePrivateProfileString ("Default", "Object_Checkbox3", format(Status_Checkbox3), PathSaveSettings);
WritePrivateProfileString ("Default", "Object_Checkbox4", format(Status_Checkbox4), PathSaveSettings);
WritePrivateProfileString ("Default", "Object_Checkbox5", format(Status_Checkbox5), PathSaveSettings);
GetPrivateProfileString ("Default", "Object_Checkbox1", 0, address(#Load_Checkbox1[0]), 255, PathSaveSettings);
GetPrivateProfileString ("Default", "Object_Checkbox2", 0, address(#Load_Checkbox2[0]), 255, PathSaveSettings);
GetPrivateProfileString ("Default", "Object_Checkbox3", 0, address(#Load_Checkbox3[0]), 255, PathSaveSettings);
GetPrivateProfileString ("Default", "Object_Checkbox4", 0, address(#Load_Checkbox4[0]), 255, PathSaveSettings);
GetPrivateProfileString ("Default", "Object_Checkbox5", 0, address(#Load_Checkbox5[0]), 255, PathSaveSettings);
/*Где-то в коде...*/
(Добавление)
Стало (Отобразить)CODE:
int Object_Checkbox[5];
int Status_Checkbox[5];
string Text_Checkbox[5] = {"1", "12", "123", "1234", "12345"};
int Load_Checkbox[5];
for (int a=0; a<sizearray(Object_Checkbox); a++)
{
SendMessage(Object_Checkbox[a], BM_SETCHECK, format(Load_Checkbox[a]), 0);
}
int step = 0;
for (int a=0; a<sizearray(Object_Checkbox); a++)
{
Object_Checkbox[a] = CreateWindow(0, "BUTTON", Text_Checkbox[a], BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 10, 50+step, 320, 20, Object_Group1, 0, 0, 0);
SendMessage(Object_Checkbox[a], WM_SETFONT, Object_Font1, 1);
step = step+20;
}
for (int b=0; b<sizearray(Object_Checkbox); b++)
{
Status_Checkbox[b] = SendMessage(Object_Checkbox[b], BM_GETSTATE, 0, 0);
WritePrivateProfileString ("Default", "Object_Checkbox"+format(b), format(Status_Checkbox[b]), PathSaveSettings);
}
for (int c=0; ñ<sizearray(Object_Checkbox); c++)
{
GetPrivateProfileString ("Default", "Object_Combobox"+format(c), 0, Load_Checkbox[c], 255, PathSaveSettings);
messagebox(Load_Checkbox[c])
}
Где-то ошибка. 100%
(Добавление)
А, я лучше сейчас новый диалог скину готовый и посмотрим где, что и как
(Добавление)
Проблема не в создании контролов через for, а в том, что ошибка где-то в загрузке или получении статуса контролов через for |
|
|
Zireael |
Отправлено: 19 Мая, 2019 - 13:53:29
|
Эксперт
Покинул форум
Сообщений всего: 4467
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: ñ<sizearray(Object_Checkbox)
Цитата: messagebox(Load_Checkbox[c]) // пропущена ;
Цитата: что ошибка где-то в загрузке или получении статуса контролов
В GetPrivateProfileString надо передавать указатель на массив char, который примет результат, а Load_Checkbox[5]; это int. Поэтому получать результат в массив char, а потом его конвертировать в int.
Цитата: char buffer[255];
for (int c=0; c<sizearray(Object_Checkbox); c++)
{
GetPrivateProfileString ("Default", "Object_Combobox"+format(c), 0, address(#buffer[0]), 255, PathSaveSettings);
Load_Checkbox[c]=formatsn(format(#buffer[0]));
messagebox(Load_Checkbox[c]);
} |
|
|
007wan |
Отправлено: 19 Мая, 2019 - 15:05:23
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Как сократить это?
Код (Отобразить)CODE:function Add_Log(string Text, int Save, int Change)
{
int Size[2];
int Max_length = 0;
getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds);
Strftime(address(#Time[0]), sizearray(Time), "%X", Hour, Minute, Second, Day, Month, Year);
Strftime(address(#Date[0]), sizearray(Date), "%d.%m.%Y", Hour, Minute, Second, Day, Month, Year);
string Save_Text = Text;
if (Change == 1)
{
Text = "["+format(#Time[0])+"] - "+Text;
}
new char Location[size(Text)+1];
strcpy(#Location[0], Text);
GetTextExtentPoint32(DC_Listbox1, address(#Location[0]), sizearray(Location), address(#Size[0]));
if (Max_length < Size[0])
{
Max_length = Size[0];
sendmessage(LB_SETHORIZONTALEXTENT, Size[0], 0, formatiw(Object_Listbox1));
}
sendmessage(LB_ADDSTRING, 0, address(#Location[0]), formatiw(Object_Listbox1));
if (Save == 1)
{
WritePrivateProfileString(date, format(#Time[0])+":"+format(Milliseconds), Save_Text, temp_fold+"K2019Bot_Log.ini");
}
delete Location;
} Почему Max_length = 0 и получается в if , что если 0 меньше Size, почему я не могу просто удалить эту переменную? |
|
|
Zireael |
Отправлено: 19 Мая, 2019 - 15:15:59
|
Эксперт
Покинул форум
Сообщений всего: 4467
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Как сократить это?
тут нечего сокращать, разве что мелочи типа:
Цитата: if (Change == 1)
{
Text = "["+format(#Time[0])+"] - "+Text;
}
CODE:if (Change)Text = "["+format(#Time[0])+"] - "+Text;
Цитата: почему я не могу просто удалить эту переменную?
Странный вопрос. Удалить переменную, которая используется в скрипте. Только зачем было её делать локальной, она хранит максимальную длину строки списка, а вы её обнуляете при каждом вызове функции. |
|
|
|