щелчка надо проверять, какая стопка выбирается — исходная или конечная. Для этого в классе TForm") создадим две переменные:
int Line, Pos;
Line определит группу стопок, Pos — конкретную стопку. Если в Line хранится значение (-1), то будем считать, что никакая стопка пока не выбрана.
Это начальное значение надо задать переменной Line в самом начале работы программы, в уже сгенерированном автоматически, при создании нового проекта, конструкторе формы Form1:
_fastcall TFormI::TForml(TComponent* Owner) : TForm(Owner)
{ Line = -1;
}
Сразу после того как был сделан щелчок мышкой, надо проверить, какая кнопка при этом использовалась. Если пользователь щелкнул правой кнопкой, то в Line запишем (-1) (как бы произошел отказ от выбора стопки и перемещение карты надо начинать заново — такой отказ от текущего выбора бывает полезен во многих приложениях) и прервем выполнение метода оператором return — в ожидании следующего щелчка.
Далее надо выяснить, на какой конкретно стопке какой группы был сделан щелчок. В этом поможет условный оператор. Например, чтобы определить, выбрана ли стопка 0 группы 0, надо выяснить, попали ли координаты точки, где находился указатель мыши в момент щелчка, в прямоугольник, левой верхней координатой которого является точка (LEFT11, ТОР11), а правой — точка с теми же координатами плюс размеры карты (LEFT11+CARD_WIDTH, TOP11+CARDJ-IEIGHT):
if( X > LEFT11 && X < LEFT11+CARD_WIDTH && Y > ТОРИ && Y < TOP11+CARD_HEIGHT ) { line = 0; pos =0; } Найденные группу и стопку сохраним во временных переменных line и top.
Таких условных операторов потребуется 18. Их можно записывать поочередно — вслед за первым условным оператором выполнить втррой:
if( X > LEFT12 && Х < LEFT12+CARD_WIDTH && Y > ТОР12 && Y < TOP12+CARD_HEIGHT ) { line = 0; pos =1; }
212