vitavita |
Отправлено: 25.04.2005, 09:52 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 59
|
Простой пример:
CODE |
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if (Shift.Contains(ssLeft) && !Shift.Contains(ssRight))
Form1->Cursor= crHandPoint; // не работает
if (Shift.Contains(ssRight) && !Shift.Contains(ssLeft))
Form1->Cursor= crSizeAll; // все нормально — работает
} |
при нажатии на правую кнопку все работает — курсор меняется
при нажатии на левую кнопку не работает — курсор не меняется
Но если немного переписать код и добавить ShowMessage("Down"); то курсор изменится
CODE |
if (Shift.Contains(ssLeft) && !Shift.Contains(ssRight))
{Form1->Cursor= crHandPoint;
ShowMessage("Down"); } // нормально- левая кнопка изменила курсор
|
Почему ? Не понимаю я чего-то
Отредактировано vitavita — 25/04/2005, 09:53 |
|
FataLL |
Отправлено: 25.04.2005, 13:32 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 37
|
Опробовал твой пример — все работает. Билдер 6. Попробуй сделай Rebuild All, какой-то странный глюк...
|
|
vitavita |
Отправлено: 25.04.2005, 17:59 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 59
|
сделал Rebuild All — тоже самое все осталось попрежнему . Билдер 6 (Build 10.157)
неужели это только у меня такое ? Как исправить? |
|
vitavita |
Отправлено: 25.04.2005, 18:06 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 59
|
Забыл еще дописать у меня ещё при отпуске мыши
CODE |
void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
{ Cursor= crDefault; }
|
но все равно не понятно .
Отредактировано vitavita — 25/04/2005, 18:07 |
|
Sl@Sh |
Отправлено: 25.04.2005, 18:19 |
|
Мастер участка
Группа: Участник
Сообщений: 383
|
А зачем вы используете ssRight и ssLeft ?
Для чего тогда TMouseButton Button ?
Тут тогда так — mbRight и mbLeft
|
|
vitavita |
Отправлено: 25.04.2005, 19:12 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 59
|
Переписал
CODE | if (Button == mbLeft)
Form1->Cursor= crHandPoint; |
все равно тоже самое
Отредактировано vitavita — 25/04/2005, 19:13 |
|
vitavita |
Отправлено: 25.04.2005, 19:45 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 59
|
Сделал так , принудительно
CODE | void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if (Shift.Contains(ssLeft) && !Shift.Contains(ssRight))
{Form1->Cursor= crHandPoint;
Screen->Cursor=crHandPoint; }
if (Shift.Contains(ssRight) && !Shift.Contains(ssLeft))
Cursor= crSizeAll;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{ Cursor= crDefault;
Screen->Cursor=crDefault;
} |
Теперь работает |
|
Sl@Sh |
Отправлено: 26.04.2005, 15:29 |
|
Мастер участка
Группа: Участник
Сообщений: 383
|
Странно, вот эта строчка кода у меня работает 100% (проверял)
CODE | if (Button == mbLeft) Cursor = crCross; else Cursor = crHandPoint; |
Это я писал в OnMouseDown.
|
|