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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2012, 02:26   #1
Katus
Форумчанин
 
Регистрация: 30.11.2011
Сообщений: 161
Печаль Указатели и TButton

Не могу понять в чем прогблема... Не исчезают кнопки после нажатия.... Помогите пожалуйста... осталось 3 дня)...

Код:
var
  Form1: TForm1;
  LastPos: byte;
  LastKey: ^boolean;
  Area: array [1..100] of boolean;

implementation

{$R *.dfm}

procedure TForm1.MyKey1Click(Sender: TObject);
var
  i,j: byte;
begin
  if LastPos > 0 then
    if not Area[1] then begin
      i:= 1 div 10;
      j:= 1 mod 10;
      if ( abs ( LastPos div 10 - i ) = 1 ) and ( abs ( LastPos mod 10 - j ) = 2 ) or
        ( abs ( LastPos div 10 - i ) = 2 ) and ( abs ( LastPos mod 10 - j ) = 1 ) then begin
        MyKey1.Font.Color:=$FF0000;
        LastKey^:=False;
        LastKey:=Nil;
        LastKey:=@(MyKey1.Visible);
        LastPos:=1;
        Area[1]:=True;
      end else
        ShowMessage('Ñþäû íåëüçÿ òûêàòü. Íå ïî ïðàâèëàì ^_^');
    end else
      ShowMessage('À ñþäû Âû, Óâàæàåìûé, óæå òûêàëè')
  else begin
    MyKey1.Font.COlor:=$FF0000;
    LastKey:=@(MyKey1.Visible);
    LastPos:=1;
    Area[1]:=True
  end;
end;
Элементов MyKey от 1 до 100 типa TButton
Если лень что-то делать, заставь это делать машину ... =,
Katus вне форума Ответить с цитированием
Старый 28.03.2012, 02:34   #2
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

хм.... ну вот
Цитата:
Код:
LastKey^:=False;
        LastKey:=Nil;
        LastKey:=@(MyKey1.Visible);
При первом нажатии может и непропадёт
Но при повторном...
Если адрес LastKey не изменился то присвоится занчени false!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 28.03.2012, 02:38   #3
Katus
Форумчанин
 
Регистрация: 30.11.2011
Сообщений: 161
По умолчанию

Это не то.... Извините за некорректную картину... Я имел в виду, что должна исчезать предыдущая нажатая кнопка... Вынес себе мозг за седня так, что забываю писать слова некоторые,
Если лень что-то делать, заставь это делать машину ... =,
Katus вне форума Ответить с цитированием
Старый 28.03.2012, 02:47   #4
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
Я имел в виду, что должна исчезать предыдущая нажатая кнопка...
Эсли это весь код, то никакая предыдущая нажатая кнопка не исчезнет в принципе
потому что в привидёном коде вы работаете только с адресом MyKey1.Visible
Да и вообще не совсем понятен ваш алгоритм, помоему подход не тот!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 28.03.2012, 02:50   #5
Katus
Форумчанин
 
Регистрация: 30.11.2011
Сообщений: 161
По умолчанию

Нет... Это не весь код... это та часть которая повторяется.... частично....

ниже приведен более полный код.... Всего таких процедур 100
Код:
procedure TForm1.MyKey1Click(Sender: TObject);
var
  i,j: byte;
begin
  if LastPos > 0 then
    if not Area[1] then begin
      i:= 1 div 10;
      j:= 1 mod 10;
      if ( abs ( LastPos div 10 - i ) = 1 ) and ( abs ( LastPos mod 10 - j ) = 2 ) or
        ( abs ( LastPos div 10 - i ) = 2 ) and ( abs ( LastPos mod 10 - j ) = 1 ) then begin
        MyKey1.Font.Color:=$FF0000;
        LastKey^:=False;
        LastKey:=Nil;
        LastKey:=@(MyKey1.Visible);
        LastPos:=1;
        Area[1]:=True;
      end else
        ShowMessage('Ñþäû íåëüçÿ òûêàòü. Íå ïî ïðàâèëàì ^_^');
    end else
      ShowMessage('À ñþäû Âû, Óâàæàåìûé, óæå òûêàëè')
  else begin
    MyKey1.Font.COlor:=$FF0000;
    LastKey:=@(MyKey1.Visible);
    LastPos:=1;
    Area[1]:=True
  end;
end;

procedure TForm1.MyKey2Click(Sender: TObject);
var
  i,j: byte;
begin
  if LastPos > 0 then
    if not Area[2] then begin
      i:= 2 div 10;
      j:= 2 mod 10;
      if ( abs ( LastPos div 10 - i ) = 1 ) and ( abs ( LastPos mod 10 - j ) = 2 ) or
        ( abs ( LastPos div 10 - i ) = 2 ) and ( abs ( LastPos mod 10 - j ) = 1 ) then begin
        MyKey2.Font.Color:=$FF0000;
        LastKey^:=False;
        LastKey:=Nil;
        LastKey:=@(MyKey2.Visible);
        LastPos:=2;
        Area[2]:=True;
      end else
        ShowMessage('Ñþäû íåëüçÿ òûêàòü. Íå ïî ïðàâèëàì ^_^');
    end else
      ShowMessage('À ñþäû Âû, Óâàæàåìûé, óæå òûêàëè')
  else begin
    MyKey2.Font.COlor:=$FF0000;
    LastKey:=@(MyKey2.Visible);
    LastPos:=2;
    Area[2]:=True
  end;
end;

procedure TForm1.MyKey3Click(Sender: TObject);
var
  i,j: byte;
begin
  if LastPos > 0 then
    if not Area[3] then begin
      i:= 3 div 10;
      j:= 3 mod 10;
      if ( abs ( LastPos div 10 - i ) = 1 ) and ( abs ( LastPos mod 10 - j ) = 2 ) or
        ( abs ( LastPos div 10 - i ) = 2 ) and ( abs ( LastPos mod 10 - j ) = 1 ) then begin
        MyKey3.Font.Color:=$FF0000;
        LastKey^:=False;
        LastKey:=Nil;
        LastKey:=@(MyKey3.Visible);
        LastPos:=3;
        Area[3]:=True;
      end else
        ShowMessage('Ñþäû íåëüçÿ òûêàòü. Íå ïî ïðàâèëàì ^_^');
    end else
      ShowMessage('À ñþäû Âû, Óâàæàåìûé, óæå òûêàëè')
  else begin
    MyKey3.Font.COlor:=$FF0000;
    LastKey:=@(MyKey3.Visible);
    LastPos:=3;
    Area[3]:=True
  end;
end;
Если лень что-то делать, заставь это делать машину ... =,
Katus вне форума Ответить с цитированием
Старый 28.03.2012, 02:54   #6
Katus
Форумчанин
 
Регистрация: 30.11.2011
Сообщений: 161
По умолчанию

Алгоритм... Если нажата клавиша и все успешно выполнилось, то соответственно должен сохраниться адрес части этой кнопки, а именно "Видимости"...Тыкаем на след.кнопку, и если все тоже проходит успешно, то ДОЛЖНА( отркбиться кнопка, исчезнуть, а цвет тоже не меняется текущей стать красным (или синим... вроде красным..)...и так далее по цепочке
Если лень что-то делать, заставь это делать машину ... =,
Katus вне форума Ответить с цитированием
Старый 28.03.2012, 02:56   #7
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

Цитата:
Всего таких процедур 100
атас... вам известно, что передается в параметре sender ?
=master= вне форума Ответить с цитированием
Старый 28.03.2012, 02:59   #8
Katus
Форумчанин
 
Регистрация: 30.11.2011
Сообщений: 161
По умолчанию

безпонятия -_-
Если лень что-то делать, заставь это делать машину ... =,
Katus вне форума Ответить с цитированием
Старый 28.03.2012, 03:00   #9
Katus
Форумчанин
 
Регистрация: 30.11.2011
Сообщений: 161
По умолчанию

Только не говорите что адрес объекта с которого было "перенаправление" на процедуру.... -_-
Если лень что-то делать, заставь это делать машину ... =,
Katus вне форума Ответить с цитированием
Старый 28.03.2012, 03:06   #10
Katus
Форумчанин
 
Регистрация: 30.11.2011
Сообщений: 161
По умолчанию

Цитата:
> в качестве параметра Sender передается не ссылка на саму
> кнопку, а ссылка на ее владельца, т.е. форму, групбокс и
> т.п.
без понятия как это может быть связано с моей ситуацией...
Если лень что-то делать, заставь это делать машину ... =,
Katus вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TButton Yriy Помощь студентам 4 28.01.2012 14:21
Цвет TButton guffer Общие вопросы Delphi 3 18.08.2009 12:00
[C] массивы, указатели, двойные указатели. Iggel Общие вопросы C/C++ 5 05.05.2009 12:39
Компонент TButton... slim5 Помощь студентам 7 17.06.2008 17:58
цвет caption в Tbutton EdNovice Компоненты Delphi 5 31.05.2008 22:57