Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2010, 00:10   #1
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию Перемещение кнопки

Добрый день, пытаюсь сделать чтоб кнопка при нажатии на нее, перемещалась по форме, в случае если на нее нажали то она останавливается на том месте, где ее нажали, или если нажали на другую кнопку(которая должна запрыгать).
пока что я только динамически создал свои кнопки, а вот как сделать их перемещение и остановку, я не знаю(
Код:
TButton *Button[10];
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{


for(int i=0;i<10;i++){
        Button[i]=new TButton(this);
        Button[i]->Parent=this;
        Button[i]->Caption=i;
        Button[i]->Top=i*40;
        Button[i]->Visible=true;
}
}
CodeNOT вне форума Ответить с цитированием
Старый 21.12.2010, 01:00   #2
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию Вроде написал, но неработает

Код:
TForm1 *ButtonMoveStatic;
TForm1 *ButtonJump;
void __fastcall TForm1::ButtonMoveStatic(TObject *Sender){//ñòàòè÷íàÿ
int i;
  for(i;i<10&&Button[i]->OnClick==&ButtonMoveStatic;i++);
   Button[i]->OnClick=&ButtonMoveStatic;
  ((TButton*)Sender)->OnClick=&ButtonJump;}

void __fastcall TForm1::ButtonJump(TObject *Sender){ //ïðûãàþùàÿ
 int coor=random(10);
 ((TButton*)Sender)->OnClick=&ButtonMoveStatic;
  Button[coor]->OnClick=&ButtonJump;
}

void __fastcall TForm1::Timer1Timer(TObject *Sender) //òàéìåð
{ int i;
  for(i;i<10&&Button[i]->OnClick==&ButtonMoveStatic;i++);
  Button[i]->Visible=true;
  Button[i]->Top=random (Form1->Height-100);
  Button[i]->Left=random (Form1->Width-100);
}
CodeNOT вне форума Ответить с цитированием
Старый 21.12.2010, 01:17   #3
UltimaBeaR
Форумчанин
 
Аватар для UltimaBeaR
 
Регистрация: 21.12.2010
Сообщений: 199
По умолчанию

Надо именно динамически кнопки создать?
UltimaBeaR вне форума Ответить с цитированием
Старый 21.12.2010, 01:32   #4
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

Да динамически
CodeNOT вне форума Ответить с цитированием
Старый 21.12.2010, 01:33   #5
UltimaBeaR
Форумчанин
 
Аватар для UltimaBeaR
 
Регистрация: 21.12.2010
Сообщений: 199
По умолчанию

С ооп дружишь? чувствую без него не обойтись тут, если не динамически то можно кое как через жопу сделать и без него

Тебе ведь нужно чтобы при нажатии на одну кнопку она останавливалась а остальные кнопки так и продолжались двигатся?
UltimaBeaR вне форума Ответить с цитированием
Старый 21.12.2010, 02:00   #6
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

в общем сделал, тупанул, не прописал что методы мои являются методами формы. может кому понадобиться код:
Это Unit1.cpp
Код:
void __fastcall TForm1::StaticBut(TObject *Sender){
int i;
  for(i=0;i<10&&Button[i]->OnClick==&StaticBut;i++);
   Button[i]->OnClick=&StaticBut;
  ((TButton*)Sender)->OnClick=&JumpingBut;}

void __fastcall TForm1::JumpingBut(TObject *Sender){
 int x=random(10);
 ((TButton*)Sender)->OnClick=&StaticBut;
  Button[x]->OnClick=&JumpingBut;
}

void __fastcall TForm1::FormCreate(TObject *Sender)
{  randomize();
   int x=random(10);
   for(int i=0;i<10;i++) {
     Button[i]=new TButton(this);
     Button[i]->Parent=this;
     Button[i]->Caption="Кнопка:№"+IntToStr(i);
     Button[i]->Top=40*i;
     Button[i]->Visible=true;
     if(i!=x)
       Button[i]->OnClick=&StaticBut;
       else Button[i]->OnClick=&JumpingBut;
     }
   Form1->Show();
}

//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{ int i;
  for(i=0;i<10&&Button[i]->OnClick==&StaticBut;i++);
  Button[i]->Visible=true;
  Button[i]->Top=random (Form1->Height-100);
  Button[i]->Left=random (Form1->Width-100);
}
//-
Это Unit1.h
Код:
//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:	// IDE-managed Components
        TTimer *Timer1;
        void __fastcall FormCreate(TObject *Sender);
        void __fastcall Timer1Timer(TObject *Sender);
        void __fastcall StaticBut(TObject *Sender);
        void __fastcall JumpingBut(TObject *Sender);
private:	// User declarations
public:		// User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
CodeNOT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перемещение кнопки по форме! bookkc Помощь студентам 6 14.03.2010 09:39
C# перемещение кнопки по панели Malish Общие вопросы .NET 11 13.03.2009 12:24
Перемещение кнопки? &RiU Общие вопросы Delphi 1 28.05.2008 18:13
триггерные кнопки и кнопки переключатели в DELPHI MARGO Помощь студентам 3 12.11.2007 17:35
Перемещение кнопки клавишами Wolfic Помощь студентам 15 16.10.2007 17:41