007wan |
Отправлено: 17 Ноября, 2017 - 17:09:45
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
007wan пишет: У меня кстати идея как сделать text_edit как text_static
Что бы можно было 1 раз записать в поле эдит, а потом оно становилось статиком:
Просто вывести 2 поля и 1 кнопка.
Поле эдит поставить, а после статик поставить вне зоны видимости, т.е он будет, только у него буду координаты больше, чем сам диалог(не по размеру, а по расположении, например, Диалог X0, Y0-расположение, а размер диалога X500,Y500, а поле статик воткнуть в координатах 550 по X или по Y, главное, что бы его не было видно в окне)
-Вводишь текст в поле эдит, жмешь кнопку, и поля меняются местами(поле статик идет на те координаты где была эдит, а сама эдит идет на те, где была статик т.е на координатах 550)
и всё:) естественно не обойдется без обновления окна: нужно снова сделать showdialog, но только он появится в определенных координатах, которые написаны в нем, а я хотел, что бы можно было сделать, что бы диалог появился там, где он на данном месте, т.е в экране(передвинут с начальных координатах)
Можно еще сделать так:
если нажата правая кнопка мыши, то скопировать всё что находится в эдите в переменную и очистить это поле, таким образом оно будет пустым и строка"удалить" не будет гореть, а если не нажата, то вернуть текст, но тогда будут проблемы с водом текста, т.к он будет возвращать всегда этот текст, т.е он будет статическим при цикле
(Добавление)
А не, если сделать указатель на эдит, т.е если нажали на самое поле, то тогда цикл прекращается по возвращанию
(Добавление)
А так же запретить использовать кнопки "стрелка(стереть текст)" и delete и др, которые стирают текст
(Добавление)
Однако тут опять проблема: если не правильно что-то написал, то никак не стиреть текст) |
|
|
007wan |
Отправлено: 05 Января, 2018 - 12:24:11
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Еще вопрос по этому поводу: А можно сделать так, что бы текст в статик вводился не сверху, а снизу вверх или прощу говоря я объясню на картинке:
где вписаны в статик цифры 1,2,3-это порядок написания, т.е что я первым написал... .
Знайте вот, например, в соц. сети "Вконтакте" там порядок идет по принципу "Всё что новое внизу, а старее вверху", а тут "Всё что новое вверху, а старее ниже" и мне это не нравится. Может сделать принцип написания текста какой-нибудь.
Теперь тоже самое только по этой картинке:
цифру 1 я написал первой, она как видим в самом внизу, т.е "все что старое внизу(старое в том смысле то, что я написал последним, т.е это цифра 1), а новое вверху(т.е это цифра 3)", я хочу, что бы было на вверху, т.е цифра 1 вверху, потом 2, потом 3.
(Добавление)
Хотя с одной стороны если сделать порядок написания текста как я задумываю, то в конце все последние строчки буду пропадать, т.е уходить вниз
(Добавление)
Может какой-нибудь визуальный ползунок добавить или просто прокрутку мыши. Но прокрутка опустит статик внизу только в том случаи, если последующие строчки не пусты. |
|
|
Zireael |
Отправлено: 05 Января, 2018 - 13:35:09
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
code (Отобразить)CODE:int pos_size_static0[3][4];
string text_static0[3];
pos_size_static0[0][0]=18; pos_size_static0[0][1]=13; pos_size_static0[0][2]=100; pos_size_static0[0][3]=20;
pos_size_static0[1][0]=19; pos_size_static0[1][1]=37; pos_size_static0[1][2]=100; pos_size_static0[1][3]=20;
pos_size_static0[2][0]=19; pos_size_static0[2][1]=60; pos_size_static0[2][2]=100; pos_size_static0[2][3]=20;
text_static0[0]=""; text_static0[1]=""; text_static0[2]="";
createdialog(0, STATIC, #pos_size_static0[0][0], #text_static0[0]);
showdialog(0, "Диалог", 835, 300, 250, 113, 1, 1);
string str;
int i=3; // количество статиков
loop()
{
str=input();
for(int j=0; j<i-1; j++)
{
text_static0[j]=text_static0[j+1];
}
text_static0[i-1]=str;
sleep(500);
} |
|
|
Zireael |
Отправлено: 05 Января, 2018 - 15:46:45
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
code (Отобразить)CODE:int pos_size_static0[1][4];
string text_static0[1];
pos_size_static0[0][0]=18; pos_size_static0[0][1]=13; pos_size_static0[0][2]=100; pos_size_static0[0][3]=100;
text_static0[0]="";
createdialog(0, STATIC, #pos_size_static0[0][0], #text_static0[0]);
showdialog(0, "Диалог", 835, 300, 250, 113, 1, 1);
string str;
string arr[4]; // массив для строк
int i=4; // количество строк в статике
string rn=formatic(13)+formatic(10);
for(int k=0; k<i; k++)arr[k]="";
loop()
{
str=input();
text_static0[0]=text(str);
sleep(500);
}
function text(string t)
{
string s="";
for(int j=0; j<i-1; j++)
{
arr[j]=arr[j+1];
s=s+arr[j]+rn;
}
arr[i-1]=t;
return s+arr[i-1];
} |
|
|
007wan |
Отправлено: 05 Января, 2018 - 15:50:33
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael , Спасибо. молодец
(Добавление)
А можно с кнопком, пожалуйста, пока не нажмешь- не выполнит вкнос в статик и так как я хотел...Я знаю, что это изи, но у меня вылетает ошибка такого плана: fread(STRINGS[11+]])
Это я доабвил непосредственно после появления диалога как у вас(т.е после showdialog)
CODE:string str;
string arr[4]; // массив для строк
int i=4; // количество строк в статике
string rn=formatic(13)+formatic(10);
for(int k=0; k<i; k++)arr[k]="";
Это добавил в кнопку:CODE:str=input();
text_static0[0]=text(str);
Вот:CODE:if (flag_button20[0]==1 && text_button20[0]=="Отправить")
{
if (text_edit20[0]!="")
{
if (count==10)
{
text_edit20[0]="";//обуляем
str=input();
text_static0[0]=text(str);
function text(string t)
{
string s="";
for(int j=0; j<i-1; j++)
{
arr[j]=arr[j+1];
s=s+arr[j]+rn;
}
arr[i-1]=t;
return s+arr[i-1];
}
enabletimer(1);
}
}
else
{
flag_button20[0]=0;
}
} 007wan пишет: Я даже функцию вписал туда, но все равно не робит)
И вообще: где вызов функции?
(Добавление)
Zireael , int pos_size_button0[1][4];
string text_button0[1];
int flag_button0[1];
pos_size_button0[0][0]=136; pos_size_button0[0][1]=225; pos_size_button0[0][2]=100; pos_size_button0[0][3]=20;
text_button0[0]="Кнопка 0";
//////////
int pos_size_edit0[1][4];
string text_edit0[1];
pos_size_edit0[0][0]=27; pos_size_edit0[0][1]=224; pos_size_edit0[0][2]=100; pos_size_edit0[0][3]=20;
text_edit0[0]="";
//////////
int pos_size_static0[1][4];
string text_static0[1];
pos_size_static0[0][0]=10; pos_size_static0[0][1]=10; pos_size_static0[0][2]=100; pos_size_static0[0][3]=100;
text_static0[0]="";
createdialog(0, BUTTON, #pos_size_button0[0][0], #text_button0[0], #flag_button0[0] |
EDIT, #pos_size_edit0[0][0], #text_edit0[0] |
STATIC, #pos_size_static0[0][0], #text_static0[0]);
showdialog(0, "Диалог", 595, 300, 250, 300, 1, 1);
string str;
string arr[4]; // массив для строк
int i=4; // количество строк в статике
string rn=formatic(13)+formatic(10);
for(int k=0; k<i; k++)arr[k]="";
loop()
{
if (flag_button0[0]==1)
{
flag_button0[0]=0;
str=text_edit0[0];
text_static0[0]=text(str);
}
sleep(500);
}
function text(string t)
{
string s="";
for(int j=0; j<i-1; j++)
{
arr[j]=arr[j+1];
s=s+arr[j]+rn;
}
arr[i-1]=t;
return s+arr[i-1];
}
007wan пишет: Но с моим большим кодом не работает(Ошибка...)
(Добавление)
007wan пишет: Вопрос: как узнать сколько строк в статике?
(Добавление)
Может потому что у меня функция в ней цикл, потом еще функция? |
|
|
Zireael |
Отправлено: 05 Января, 2018 - 16:39:46
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Последний код, который вы скинули, работает.
Цитата: как узнать сколько строк в статике?
Сколько укажите столько и будет.
CODE:string arr[4]; // указываем сколько строк будет отображаться, 4 строки в данном случае
int i=4; // тут столько же
Цитата: pos_size_static0[0][3]=100
Высоту статика надо больше ставить, иначе не влезут все строки, если их будет много. |
|
|
007wan |
Отправлено: 05 Января, 2018 - 16:41:51
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: Последний код, который вы скинули, работает.
Цитата: как узнать сколько строк в статике?
Сколько укажите столько и будет.
CODE:string arr[4]; // указываем сколько строк будет отображаться, 4 строки в данном случае
int i=4; // тут столько же
Цитата: pos_size_static0[0][3]=100
Высоту статика надо больше ставить, иначе не влезут все строки, если их будет много.
4 строчки как было так и оставил, так что это не из-за этого |
|
|
|