Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi brauche hilfe mit CMDialogChar (https://www.delphipraxis.net/199177-brauche-hilfe-mit-cmdialogchar.html)

Wishmaster 2. Jan 2019 12:01

brauche hilfe mit CMDialogChar
 
Liste der Anhänge anzeigen (Anzahl: 1)
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:wink:
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;


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz