Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/12: Рейтинг темы: голосов - 12, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 08.05.2010
Сообщений: 22

Создание кнопки в любом месте TForm

29.11.2010, 13:02. Показов 2351. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый. При написании курсовой возник вопрос - как реализовать создание кнопок в любом месте окна TForm, при этом кнопки не должны наслаиваться друг на друга.

То есть, например, должны создаться в разных местах TForm 3 кнопки с Caption'ами соответственно 1, 2, 3. Местоположение этих кнопок при каждом запуске программы должно меняться. При этом кнопка 1 не должна накладываться на кнопки 2 и 3, остальные соответственно также.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.11.2010, 13:02
Ответы с готовыми решениями:

Текст на баттоне в любом месте
Как задать текст на баттоне в любом месте, то бишь не по центру как по дефолту, а допустим в верхнем - левом углу? Класс point?

Выключается ноут в любом месте
Приветсвую. Купил ноутбук,совершенно новый, на озоне. Проблема в том что он выключается абсолютно любом месте, даже если будет в...

Проверка касания экрана в любом месте
Здравствуйте! Вопрос такой, как можно реализовать проверку условия касания экрана? Т.е., например, если есть касание экрана (в любом...

4
Фрилансер
 Аватар для Black Fregat
3709 / 2083 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
29.11.2010, 13:25
В чём проблема? Проверить перекрытие кнопок? Примерно так
C++
1
2
(max(B1->Top, B2->Top) < min(B1->Top + B1->Height, B2->Top + B2->Height)) &&
(max(B1->Left, B2->Left) < min(B1->Left + B1->Width, B2->Left + B2->Width))
1
 Аватар для GaFBich
22 / 22 / 5
Регистрация: 18.03.2010
Сообщений: 331
29.11.2010, 13:26
Цитата Сообщение от Йа Посмотреть сообщение
как реализовать создание кнопок в любом месте окна TForm
C++
1
2
3
TButton *ButtOK=new TButton(this);
ButtOK->Parent = this;
ButtOK->Caption = "Ok";
0
0 / 0 / 0
Регистрация: 08.05.2010
Сообщений: 22
29.11.2010, 13:38  [ТС]
Цитата Сообщение от GaFBich Посмотреть сообщение
C++
1
2
3
TButton *ButtOK=new TButton(this);
ButtOK->Parent = this;
ButtOK->Caption = "Ok";
Но так кнопка создаётся в левом верхнем углу, а надо чтоб при каждом запуске рандомно в любом месте

Добавлено через 6 минут

В чём проблема?
Проблема в том, чтобы создать кнопки. Они рандомно при каждом запуске программы должны располагаться на поле TForm, при это иметь разные Caption.
0
 Аватар для Питекантроп
251 / 145 / 21
Регистрация: 14.06.2010
Сообщений: 340
29.11.2010, 14:02
Создаст 5 кнопок в случайных местах на форме.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
TButton *B[10];
TPoint Koor(int i)
        {
        TPoint q;
        q.x=1.*(Form1->ClientWidth-B[i]->Width)*rand()/RAND_MAX;
        q.y=1.*(Form1->ClientHeight-B[i]->Height)*rand()/RAND_MAX;
        int j;
        for (j=0; j<i; j++) if (q.x>B[j]->Left-B[j]->Width && q.x<B[j]->Left+B[i]->Width && q.y>B[j]->Top-B[j]->Height  && q.y<B[j]->Top+B[i]->Height) j=100;
 
        if (j==101) return Koor(i);
        else return q;
        }
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
int j;
randomize();
for (j=0; j<5; j++)
        {
        B[j]=new TButton(this);
        B[j]->Parent=this;
        B[j]->Caption=j;
        B[j]->Tag=j;       // это нужнно будет при вызове обработчика нажатия кнопки. (Его тоже нужно прописывать при динамическом создании компонент)
        TPoint b;
        b=Koor(j);
        B[j]->Left=b.x;
        B[j]->Top=b.y;
        }
}
//---------------------------------------------------------------------------
Добавлено через 18 минут
допустил неточность в этой строке.
Цитата Сообщение от Питекантроп Посмотреть сообщение
for (j=0; j<i; j++) if (q.x>B[j]->Left-B[j]->Width && q.x<B[j]->Left && q.x>B[j]->Top-B[j]->Height && q.x<B[j]->Top) j=100;
нужно так
C++
1
   for (j=0; j<i; j++) if (q.x>B[j]->Left-B[j]->Width && q.x<B[j]->Left+B[i]->Width && q.y>B[j]->Top-B[j]->Height  && q.y<B[j]->Top+B[i]->Height) j=100;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.11.2010, 14:02
Помогаю со студенческими работами здесь

Как писать в документе в любом месте?
Вот использую document.write из одного фрейма в другой, но выводятся нвоые записи одна за другой. А как сделать так чтобы каждая новая...

Отловить клик в любом месте HTML
Добрый день... Я начинающий в JavaScript. Интересует вопрос.... Можно ли отловить первый клик по странице HTML, и перенаправить этот клик...

Вызов переменной в любом месте программы
Как можно вызвать переменную в любом месте программы, где возможен ввод в консоль (cin). Например, текстовая игра с выбором вариантов,...

Поиск любого символа на любом месте строки
Доброго времени суток, уважаемые форумчане!:senor: Возник вопрос следующего характера: Необходимо добраться до символа в строке. ...

Закрытие блока при клике в любом месте
Приветствую! Не подскажете как новичку решить проблему? Есть блок: &lt;div id=&quot;btopen&quot;&gt; &lt;a...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru