habe mal wieder ein kleines problem, ich arbeite an einer Checkbox(CustomControl)
und ich komme an
IsAccel in
CMDialogChar nicht vorbei und ich weiß nicht woran es liegen kann.
wenn ich die funktion
IsAccel() wechlasse funktioniert alles zumindest wenn ich den fokus mit der maus setze
Delphi-Quellcode:
procedure TjbAdvCheckBox.CMDialogChar(var Message: TCMDialogChar);
begin
if Focused then
SetChecked(not FChecked);
end;
die untere variable funktioniert nicht, und ich habe die selbe funktion bei der TMS Instrumentation Workshop und VrBitmapCheckBox getestet mit dem selben ergebnis.
während bei der standard TCheckBox oder TRzCheckBox alles korrekt funktioniert.
Delphi-Quellcode:
procedure TjbAdvCheckBox.MouseDown(Button : TMouseButton; Shift : TShiftState; X, Y : Integer);
begin
if Button <> mbLeft then
exit
else
begin
if not Enabled then
exit;
SetFocus;
FFocus := True;
if (Button = mbLeft) and PtInRect(FBoxRec, Point(X, Y)) then
begin
FMouseState:= msMouseDown;
end;
end;
Invalidate;
end;
procedure TjbAdvCheckBox.MouseUp(Button : TMouseButton; Shift : TShiftState; X, Y : Integer);
begin
if (Button = mbLeft) and PtInRect(FBoxRec, Point(X, Y)) then
begin
SetChecked(not FChecked);
FMouseState := msMouseUp;
end;
end;
procedure TjbAdvCheckBox.MouseMove(Shift : TShiftState; X, Y : Integer);
begin
if PtInRect(FBoxRec, Point(X, Y)) then
begin
FMouseMoving:= True;
FMousePos:= mpMouseIn;
Invalidate;
end
else
begin
FMouseMoving:= False;
FMousePos:= mpMouseOut;
Invalidate;
end;
end;
//
procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR;
procedure TjbAdvCheckBox.CMDialogChar(var Message: TCMDialogChar);
begin
with Message do
if IsAccel(CharCode, Caption) then
begin
SetFocus;
if Focused then
SetChecked(not FChecked);
Result := 1;
end
else
inherited;
end;