Вопросы и ответы по программированию.
- NiGHt-LEshiY
- Полковник
- Сообщения: 10258
- Зарегистрирован: 13.06.2008
- Откуда: Россия
- Благодарил (а): 752 раза
- Поблагодарили: 2667 раз
- Контактная информация:
Deus_Ex_Machina
Философ итт.
Философ итт.
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.
Просьба присылать сообщения об ошибках в ЛС.
- Rama
- Модератор
- Сообщения: 1143
- Зарегистрирован: 28.03.2008
- Благодарил (а): 389 раз
- Поблагодарили: 240 раз
- Контактная информация:
В C++ builder создана форма. При её запуске первый добавленный на форму элемент становится активным (например, если это кнопка — она подсвечивается, и по нажатию клавиши ввода происходит заданное действие, а если какой-нибудь блок типа MEMO, то там сразу присутствует курсор и можно осуществлять манипуляции с текстом).
Вопрос в том, как убрать фокус с этих элементов? (Есть вариант перевести фокус на скрытый элемент, но почти уверен что есть выход без костылей)
Вопрос в том, как убрать фокус с этих элементов? (Есть вариант перевести фокус на скрытый элемент, но почти уверен что есть выход без костылей)
-
- Капитан
- Сообщения: 492
- Зарегистрирован: 23.05.2010
- Благодарил (а): 14 раз
- Поблагодарили: 43 раза
- Контактная информация:
Use Qt, Luke.Saloed писал(а):C++ builder
- NiGHt-LEshiY
- Полковник
- Сообщения: 10258
- Зарегистрирован: 13.06.2008
- Откуда: Россия
- Благодарил (а): 752 раза
- Поблагодарили: 2667 раз
- Контактная информация:
По логике вещей, раз уж в этом билдеры есть такие вот объекты, то у них должно быть свойство focused или похожее.
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.
Просьба присылать сообщения об ошибках в ЛС.
- Rama
- Модератор
- Сообщения: 1143
- Зарегистрирован: 28.03.2008
- Благодарил (а): 389 раз
- Поблагодарили: 240 раз
- Контактная информация:
NiGHt-LEshiY
Не нахожу подобного, однако есть функция SetFocus().
В эктив контроле можно выбирать на чем сделать фокус при старте программы, но задать None или что-то подобное не удается. Кстати, если выбрать невидимую кнопку, фокус сбрасывается на первый добавленный на форму элемент, так что даже этот костыль не катит (разве что вынести кнопку за пределы видимости и запретить изменять размеры окна, но опять же, костыль)
Не нахожу подобного, однако есть функция SetFocus().
В эктив контроле можно выбирать на чем сделать фокус при старте программы, но задать None или что-то подобное не удается. Кстати, если выбрать невидимую кнопку, фокус сбрасывается на первый добавленный на форму элемент, так что даже этот костыль не катит (разве что вынести кнопку за пределы видимости и запретить изменять размеры окна, но опять же, костыль)
- nameless noob
- Полковник
- Сообщения: 1682
- Зарегистрирован: 01.09.2010
- Откуда: Россия
- Благодарил (а): 21 раз
- Поблагодарили: 56 раз
- Контактная информация:
Код: Выделить всё
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
int i,status;
char n;
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
char a[100],b[100];
for(i=0; i<5 && status!=EOF; ++i){
if (n&1) cin.read(a,n);
else cin.read(b,n);
}
for(i=0; i<5 && status!=EOF; ++i){
cout<<a[n];
}
return 0;
}
Код: Выделить всё
Добавлено спустя 4 минуты 10 секунд:
что я делаю не так?
-
- Разработчик
- Сообщения: 910
- Зарегистрирован: 09.01.2009
- Откуда: Переезжаю в /dev/null
- Благодарил (а): 7 раз
- Поблагодарили: 65 раз
- Контактная информация:
nameless noob
А что ты вообще делаеш?
Saloed
В Delphi было событие onActive у формы, которое срабатывало после отображения окна, может быть в нем можно задать фокус. Или может быть onFocus?
А вообще, если уж так надо что-бы не было фокуса, можно использовать картинки - они вообще фокуса не получают.
А что ты вообще делаеш?
Saloed
В Delphi было событие onActive у формы, которое срабатывало после отображения окна, может быть в нем можно задать фокус. Или может быть onFocus?
А вообще, если уж так надо что-бы не было фокуса, можно использовать картинки - они вообще фокуса не получают.
- nameless noob
- Полковник
- Сообщения: 1682
- Зарегистрирован: 01.09.2010
- Откуда: Россия
- Благодарил (а): 21 раз
- Поблагодарили: 56 раз
- Контактная информация:
MOZGIII
прогу, которая должна считывать из файла числа, расположенные через пробел, и если они нечетные, то писать их в файл другой, в том же порядке. может даже и четные числа писать, но в другую строчку
я даже не знаю, почему это, просто хочу так
прогу, которая должна считывать из файла числа, расположенные через пробел, и если они нечетные, то писать их в файл другой, в том же порядке. может даже и четные числа писать, но в другую строчку
я даже не знаю, почему это, просто хочу так
Последний раз редактировалось nameless noob 31.10.2012, 22:46, всего редактировалось 1 раз.
- Rama
- Модератор
- Сообщения: 1143
- Зарегистрирован: 28.03.2008
- Благодарил (а): 389 раз
- Поблагодарили: 240 раз
- Контактная информация:
MOZGIII
Есть onActivate, в нем можно задать что будет запущено сразу же после старта формы. Других или похожих на те что ты написал нету.
Картинки тоже костыль, тем более что если убрать все кнопки то он кинет курсор в мемо, чего мне тоже не надо.
Есть onActivate, в нем можно задать что будет запущено сразу же после старта формы. Других или похожих на те что ты написал нету.
Картинки тоже костыль, тем более что если убрать все кнопки то он кинет курсор в мемо, чего мне тоже не надо.
-
- Разработчик
- Сообщения: 910
- Зарегистрирован: 09.01.2009
- Откуда: Переезжаю в /dev/null
- Благодарил (а): 7 раз
- Поблагодарили: 65 раз
- Контактная информация:
nameless noob
Возьми язык попроще, например PHP. Тебе нужно разобраться с основными принципами программирования вообще, а в плюсах много нюансов которые будут отвлекать.
По поводу кода - проблемы явно выражены, однако просто таки их исправлять бесполезно. Если хочешь разобраться, для начала попробуй убрать циклы и сделать то, что ты хочешь, для одного числа.
Добавлено спустя 2 минуты 56 секунд:
Saloed
А переопределять фокус в onActive на пустой - не вариант?
Можно ещё отнаследоваться от TForm (или что там в билдере), найти в нём где выставляется фокус и поправить так как надо - это, на самом деле, способ самый правильный (если более прямого нету).
Возьми язык попроще, например PHP. Тебе нужно разобраться с основными принципами программирования вообще, а в плюсах много нюансов которые будут отвлекать.
По поводу кода - проблемы явно выражены, однако просто таки их исправлять бесполезно. Если хочешь разобраться, для начала попробуй убрать циклы и сделать то, что ты хочешь, для одного числа.
Добавлено спустя 2 минуты 56 секунд:
Saloed
А переопределять фокус в onActive на пустой - не вариант?
Можно ещё отнаследоваться от TForm (или что там в билдере), найти в нём где выставляется фокус и поправить так как надо - это, на самом деле, способ самый правильный (если более прямого нету).
- nameless noob
- Полковник
- Сообщения: 1682
- Зарегистрирован: 01.09.2010
- Откуда: Россия
- Благодарил (а): 21 раз
- Поблагодарили: 56 раз
- Контактная информация:
MOZGIII
для одного числа тоже пробел выводится
Добавлено спустя 53 минуты 16 секунд:
теперь выводит точку
если раскомментить, то целых 5 точек
для одного числа тоже пробел выводится
Добавлено спустя 53 минуты 16 секунд:
Код: Выделить всё
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
int i,status;
char n;
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
char a[100],b[100];
scanf("%d %d", &n);
//for(i=0; i<5 && status!=EOF; ++i){
if (!(n%2)) cin.read(a,n);
else cin.read(b,n);
// }
// for(i=0; i<5 && status!=EOF; ++i){
cout <<a[n];
//}
return 0;
}
если раскомментить, то целых 5 точек
- kinders666
- Модератор
- Сообщения: 4163
- Зарегистрирован: 25.10.2006
- Откуда: Москва
- Благодарил (а): 537 раз
- Поблагодарили: 191 раз
C++
Есть массив A = 24053, его нужно преобразовать в А = 24533
Код:
Где n - общее число элементов массива, s - нулевых элементов массива
Вместо нужного получается 24553
Есть массив A = 24053, его нужно преобразовать в А = 24533
Код:
Код: Выделить всё
for (j = 0; j < n+1; j++)
{
if (A[j] == 0 && A[j+1] != 0)
{
for (q = 0; q < s+1; q++)
{
A[j] = A[j+1];
}
}
Вместо нужного получается 24553
- Monk
- VIP
- Сообщения: 4713
- Зарегистрирован: 21.11.2009
- Благодарил (а): 418 раз
- Поблагодарили: 1053 раза
- Контактная информация:
kinders666
поясни логику, что ли. А то у тебя сейчас нулевые элементы заменяются на следующие и всё. Как у тебя 053 в 533 должно преобразовываться?
поясни логику, что ли. А то у тебя сейчас нулевые элементы заменяются на следующие и всё. Как у тебя 053 в 533 должно преобразовываться?
- kinders666
- Модератор
- Сообщения: 4163
- Зарегистрирован: 25.10.2006
- Откуда: Москва
- Благодарил (а): 537 раз
- Поблагодарили: 191 раз
Monk
Да, там ошибка, я решал для частного случая в виде 24053..
В общем задание: есть некий массив с n-числами, рандомный, нужно все нулевые элементы передвинуть в конец
Добавлено спустя 36 секунд:
Для частного случая вот решение, если кому нужно
Добавлено спустя 2 минуты 2 секунды:
Когда несколько нулей подряд, алгоритм сбой даёт
Да, там ошибка, я решал для частного случая в виде 24053..
В общем задание: есть некий массив с n-числами, рандомный, нужно все нулевые элементы передвинуть в конец
Добавлено спустя 36 секунд:
Для частного случая вот решение, если кому нужно
Код: Выделить всё
for (j = 0; j < n+1; j++)
{
u = 0;
if (A[j] == 0 && A[j+1] != 0)
{
for (q = 0; q < s+1; q++)
{
if (u == 0)
{
u = j;
}
A[u] = A[u+1];
u++;
}
}
}
Когда несколько нулей подряд, алгоритм сбой даёт