AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

brauche hilfe mit CMDialogChar

Ein Thema von Wishmaster · begonnen am 2. Jan 2019
Antwort Antwort
Wishmaster

Registriert seit: 14. Sep 2002
Ort: Steinbach, MB, Canada
301 Beiträge
 
Delphi XE2 Architect
 
#1

brauche hilfe mit CMDialogChar

  Alt 2. Jan 2019, 12:01
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;
Miniaturansicht angehängter Grafiken
checkbox.jpg  
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:01 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