| 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.
 | 
|  |