![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как правильно вызвать OnMouseDown? [D6, XP]
novai © (2009-07-17 06:11:00)заголовок стандартный:
procedure TSetupBox.Button12MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
пытаюсь вызвать:
ProgramBox.Button12MouseDown(ProgramBox, mbLeft, ssLeft, 1, 1);
ругается на ssLeft! почему, ведь тип правилный? Как тогда првильно?
novai (2009-07-17 08:09:00) [1][6][7] спасибо за исчерпывающий ответ...
KilkennyCat (2009-07-17 08:06:00) [2]дополню: если ты таким образом хотел указать только лишь, что событие вызвано, как нажатие левой кнопки мыши без всяких хитростей, то можешь просто [], ибо ты и так уже определил Button: TMouseButton
KilkennyCat (2009-07-17 08:02:00) [3]
> я ее смотрел, но понял как, либо либо
TShiftState = setof (ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble);
в твоем способе обращения с Set получается, что если захочется узнать, что нажато, ты напишешь if (ssLeft = Shift) then ... что крайне неверно. Верно if (ssLeft inShift) then ...
> а почему без разницы?
потому что это пример. я указал на несоответствие типов, а что именно внутри - без разницы. хоть шифт, хоть лефт, хоть все вместе (на что снова обращаю внимание: там можно указать не одинпараметр).
novai (2009-07-17 07:50:00) [4]
> раз уж справку все-таки не хочешь глянуть
я ее смотрел, но понял как, либо либо.
а почему без разницы?
KilkennyCat (2009-07-17 07:44:00) [5]
> это же нажат шифт
да без разницы
> и почему []
Ты подумай, как ты напишешь одновременное нажатие шифта и альта... тогда поймешь, почему [] раз уж справку все-таки не хочешь глянуть.
novai (2009-07-17 07:41:00) [6]
> [ssShift]
это же нажат шифт?
и почему [] ? объясните пожалуйста...
KilkennyCat (2009-07-17 07:35:00) [7]
> ведь тип правилный?
в справке, кстати, написано, что это за тип. И тогда будет нэправилный ;)
KilkennyCat (2009-07-17 07:29:00) [8][ssShift]