CM_DIALOGCHAR unimplemented

Rund um die LCL und andere Komponenten

CM_DIALOGCHAR unimplemented

Beitragvon siro » 21. Okt 2017, 08:26 CM_DIALOGCHAR unimplemented

Einen schönen guten Morgen zusammen,

Ich möchte meiner Buttonkomponente Tastenreaktionen beibringen und das ging in Delphi 6 auch schon.
Jetzt musste ich feststellen, das in Lazarus meine Methode:

Code: Alles auswählen
procedure CMDialogChar (var Message: TCMDialogChar); message CM_DIALOGCHAR;


garnicht aufgerufen wird.
Nach etwas suchen habe ich dann dies gefunden in der Datei controlconsts.inc

Code: Alles auswählen
CM_DIALOGKEY = CM_BASE + 5 unimplemented;


Wie darf ich das denn interpretieren ?
oder anders ausgedrückt, wie bekomme ich meine Funktionalität in Lazarus hin ?

Ihr habt da sicher schon eine Lösung parat, die ihr mir unbedingt mitteilen wollt. :wink:

Vielen Dank schonmal im voraus
Siro
Grüße von Siro
"C" verCehnfacht die Entwicklungszeit...
siro
 
Beiträge: 222
Registriert: 23. Aug 2016, 13:25
Wohnort: Berlin
OS, Lazarus, FPC: Windows 7 Windows 8.1 Windows 10 | 
CPU-Target: 64Bit
Nach oben

Beitragvon theo » 21. Okt 2017, 10:43 Re: CM_DIALOGCHAR unimplemented

theo
 
Beiträge: 7879
Registriert: 11. Sep 2006, 18:01

Beitragvon wp_xyz » 21. Okt 2017, 11:00 Re: CM_DIALOGCHAR unimplemented

Du müsstest näher spezifizieren, was du mit "möchte meiner Buttonkomponente Tastenreaktionen beibringen" genau meinst. Reaktion auf einen Hotkey? Geht schon, wenn du im Caption-Text ein & vor den entsprechenden Buchstaben schreibst. Reaktion auf ENTER? Geht schon, wenn der Button Default=true hat. Reaktion auf ESC? Geht auch, wenn Cancel=true.
wp_xyz
 
Beiträge: 2249
Registriert: 8. Apr 2011, 08:01

Beitragvon siro » 21. Okt 2017, 15:03 Re: CM_DIALOGCHAR unimplemented

Ersteinmal Danke für eure Rückmeldungen.

Ein Bild sagt mehr als 1000 Worte.
Oktave_01.jpg


Meine Tasten sollen mit dem entsprechenden Buchstaben ausgelöst werden OHNE das zusätzlich noch die ALT Taste gedrückt werden muss.

Dafür hatte ich damals in Delphi die entsprechende Message abgefangen.
Mir ist irgendwie nicht klar, warum es das in Lazarus nicht gibt.
aber ich vermute mal das hängt mit dem Plattformübergreifenden zusammen.


Code: Alles auswählen
{ prueft "Caption" ob sich dort ein "&" Zeichen befindet und reagiert mit }
{ entsprechendem Tastendruck darauf. }
procedure TUniTaste.CMDialogChar(var Message: TCMDialogChar);
begin
  if IsAccel(CharCode, Caption) and Enabled then....
end;
 
 
Siro
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Grüße von Siro
"C" verCehnfacht die Entwicklungszeit...
siro
 
Beiträge: 222
Registriert: 23. Aug 2016, 13:25
Wohnort: Berlin
OS, Lazarus, FPC: Windows 7 Windows 8.1 Windows 10 | 
CPU-Target: 64Bit
Nach oben

Beitragvon Mathias » 21. Okt 2017, 15:36 Re: CM_DIALOGCHAR unimplemented

Dies ist auch noch ein Lösungsweg.
Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
begin
  KeyPreview := True;
  Button1.Caption := 'A';
  Button2.Caption := 'B';
end;
 
procedure TForm1.FormKeyPress(Sender: TObject; var Key: char);
begin
  case UpCase(Key) of
    'A': begin
      Button1.Click;
    end;
    'B': begin
      Button2.Click;
    end;
  end;
end;
 
procedure TForm1.ButtonClick(Sender: TObject);
begin
  case TButton(Sender).Caption of
    'A': begin
      Color := clRed;
    end;
    'B': begin
      Color := clGreen;
    end;
  end
end;
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 3189
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon siro » 21. Okt 2017, 19:40 Re: CM_DIALOGCHAR unimplemented

Danke Dir Mathias,
der Lösungsweg ist funktional und erstmal so ausreichend.
Siro
Grüße von Siro
"C" verCehnfacht die Entwicklungszeit...
siro
 
Beiträge: 222
Registriert: 23. Aug 2016, 13:25
Wohnort: Berlin
OS, Lazarus, FPC: Windows 7 Windows 8.1 Windows 10 | 
CPU-Target: 64Bit
Nach oben

Beitragvon Mathias » 21. Okt 2017, 19:50 Re: CM_DIALOGCHAR unimplemented

Noch ein Tip, erzeuge die Buttons dynamisch, dann hast du es viel einfacher, wen du was ändern willst.
Willst du zB. die Button grösser haben, dann musst du es nur einmal ändern, ansonsten zig mal.
Auch das Click-Ereigniss muss dann nur einem geschrieben werden. :wink:
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 3189
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

• Themenende •

Zurück zu Komponenten und Packages



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried