C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: скрытие кнопки  (Прочитано 1678 раз)
1vlad
новенький


Сказали спасибо: +0/-0
Offline

Сообщений: 1


скрытие кнопки
« : 01 Декабрь 2013, 15:17:53 »

подскажите пожалуйста,как сделать,что бы при нажатии динамически созданной кнопки, она блокировалась и еще предыдущая.
Код
TForm1 *Form1;
TButton *new_btn;
TButton *array_btn[500];
int i;
int s;
 int a;
 int d;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
       : TForm(Owner)
{    }
//---------------------------------------------------------------------------
void __fastcall TForm1::Block(TObject *Sender)
  {  ((TButton*)(Sender))->Enabled = false;
 
   }
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
 
 int j;
 int k;
 
 j=80;
 k=5;
  int max = 5;
  int min = 1;
 
 
 if((Edit1->Text).Length()==0){
 ShowMessage ("Введите значение по горизонтали");
 Form1->Edit1->SetFocus();}
 if((Edit2->Text).Length()==0){
 ShowMessage ("Введите значение по Вертикали");
 Form1->Edit2->SetFocus();}
 s=StrToInt(Edit1->Text);
 a=StrToInt(Edit2->Text);
 d=a*s;
 if ((((Edit1->Text).Length())!=0)&&(((Edit2->Text).Length())!=0))  {
 
 Form1->Visible=false;
 Form2->Visible=true;                }
 for( i = 1; i d; i++)
   {  k=k+30;
        int r = rand()%(max - min + 1) + min;
 
       array_btn[i] = new TButton (Form1);
       array_btn[i]->Parent = Form2;
       array_btn[i]->Top = k ;
       array_btn[i]->Left = j;
       array_btn[i]->Caption = IntToStr(r) ;
       if (i%a==0){
       j=j+80;
       k=5;}
 
       array_btn[i]->OnClick =Block ;
        array_btn[i]->Tag=i;
               }
 
}
пробовал с тегом,
void __fastcall TForm1::Block(TObject *Sender)
{ array_btn[Tag-1]=(TButton*)Sender;
((TButton*)Sender)->Enabled = false ;
}
но все равно скрывает нажатую кнопку
Записан
POV
Участник


Сказали спасибо: +107/-7
Offline

Сообщений: 640


Re: скрытие кнопки
« Ответ #1 : 01 Декабрь 2013, 18:31:31 »

Код смотреть лениво. Русскими словами еще раз скажи чего хочешь.. чтобы скрывались все кроме нажатой?
так в цикле все кнопки просмотри, и, если имя Sender'а совпадает с текущей кнопкой, то она и есть - нажатая, ее не скрывай.
Записан
OVE
Участник


Сказали спасибо: +67/-0
Offline

Сообщений: 72


« Ответ #2 : 02 Декабрь 2013, 11:19:01 »

void __fastcall TForm1::Block(TObject *Sender)
{
((TButton*)Sender)->Enabled = false ; //блокируем себя
int idx=(TButton*)Sender->Tag;
if(idx>0)
 (TButton*)array_btn[idx-1]->Enabled=false; //блокируем предыдущую
}
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  




....

Powered by SMF 1.1.21 | SMF © 2025, Simple Machines
Страница сгенерирована за 0.041 секунд. Запросов: 19.