Основная часть пасьянса
Самый главный метод-2
Для «умной» перерисовки окна — именно тогда, когда это реально необходимо, в C++Builder имеется специальное событие OnPaintQ. Оно действует для большинства элементов управления и, конечно, для окон. Выберите в Инспекторе объектов главную форму Form1, перейдите на закладку Events и дважды щелкните на правой части строки OnPaint.
C++Builder автоматически сгенерирует метод FormPaint(), который также автоматически будет вызываться, именно тогда, когда окно потребуется перерисовать. Все что нам осталось сделать — это вызвать в FormPaintQ метод ShowAIIQ.
void _fastcall TFormI::FormPaint(TObject *Sender)
{
ShowAlK);
}
Теперь о правильном отображении содержимого окна можно не беспокоиться.
На событие OnPaintQ требуется реагировать только если в программе имеются операторы вывода различной графической информации на канву. Внешний вид элементов управления, спроектированный с помощью Инспектора объектов, будет поддерживаться и перерисовываться программой автоматически — то есть не надо пытаться самому выводить название на кнопке, для этого есть свойство Caption.
А есть ли карты?
При реализации метода ShowAIIQ использовался пока не упоминавшийся метод IsCardsQ. Он проверяет, есть ли карты в указанной стопке соответствующей группы:
bool IsCards(int line, int pos);
Этот метод возвращает значение true, если в стопке pos группы line карты есть. Выполняется такая проверка следующим образом:
bool TFormI::IsCards(int line, int pos)
{
int i ;
for( i = 0; i < PACK_TOTAL; i ++ )
209