Используйте следующий код для обработки события
procedure
var
P: array
BS: TBlobStream;
S: string
begin
if
with
begin
BS := TBlobStream.Create(Table1Notes, bmRead);
FillChar(P, SizeOf(P), #0
BS.Read(P, SizeOf(P));
BS.Free;
S := StrPas(P);
while
while
FillRect(Rect);
TextOut(Rect.Left, Rect.Top, S);
end
end
17. Не возникает событие TSpeedButton.OnDblClick.
Я создаю событие на
На самом деле работает, только в определенных ситуациях. Если вы помещаете на панель несколько кнопок, то по умолчанию они независимы и соответственно не фиксируются в нажатом состоянии. Поскольку одиночное нажатие мыши на кнопку отрабатывается немедленно, двойной щелчок мыши воспринимается как два нажатия и отпускания. Поэтому
Если же кнопки связаны в группу (
18. Как разделить обработку OnClick и OnDblClick? Ведь OnClick будет вызываться всегда, и перед DblClick.
Именно так и происходит в Windows — посылаются оба сообщения. Для того чтобы обработать только какое-то одно событие необходимо чуть "задержать" выполнение
procedure
var
Msg: TMsg;
TargetTime: Longint;
begin
TargetTime := GetTickCount + GetDoubleClickTime;
while
if
then
MessageDlg('Single clicked'
end
19. Как определить из обработчика события OnClick в Popup.MenuItem, для какого объекта это произошло?
Используйте свойство
procedure
begin
Label1.Caption := PopupMenu1.PopupComponent.Name;
end
Свойство
20. Как использовать case, чтобы определить, какой объект вызвал процедуру?
Используйте свойство
case
Button1ID: SomeProcedure;
Button2ID: AnotherProcedure;
end
Таким образом вы можете обрабатывать события как от однотипных компонент, так и от компонент разного типа.
21. Как обрабатывать события от множества однотипных компонентов.