ttreelistedititem mit Schaltfläche und ShortcutText

Forum für alles rund um die MSEide und MSEgui
Antworten
Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1432
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

ttreelistedititem mit Schaltfläche und ShortcutText

Beitrag von fliegermichl »

Ich habe eine Treestruktur mit vom Programm angebotenen Aktionen wie z.B. verschiedene Ansichten, Konstruktionsbefehle usw. Diese Aktionen haben eine Bezeichnung und optional eine Shortcut Property.

Da der Anwender die Oberfläche weitgehend selbst gestalten kann, kann er z.B. Pushbuttons verwenden (TButton) und denen Bilder zuweisen usw.
Ausserdem kann er aus der Treestruktur die Aktion auswählen, die beim anklicken des Buttons ausgelöst wird.

In dem Buttoneditor habe ich ein twidgetgrid mit ttreeitemedit (Für die Darstellung der Gruppenstruktur und die Namen der Aktion sowie ein tstringedit in dem der aktuell zugeordnete Shortcut angezeigt werden soll.

Dazu habe ich zwei Fragen

1. Die Funktionen EncodeShortCutName und GetShortCutName aus mseactions.pas liefern eine Darstellung in der Form $006F. Ich hätte aber gerne "Strg+O" oder sowas in der Art.
2. Gibt es eine Komponente in msegui die wie der tstringedit funktioniert aber zusätzlich so einen kleinen "..." Button hat, mit dem ein anwendungsspezifischer Event ausgelöst wird (In meinem Fall sowas wie ein "Taste fangen" Dialog?

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: ttreelistedititem mit Schaltfläche und ShortcutText

Beitrag von mse »

fliegermichl hat geschrieben:1. Die Funktionen EncodeShortCutName und GetShortCutName aus mseactions.pas liefern eine Darstellung in der Form $006F. Ich hätte aber gerne "Strg+O" oder sowas in der Art.

Bei mir gibt

Code: Alles auswählen

 
 writeln(getshortcutname(key_o,[ss_ctrl]));
 

Code: Alles auswählen

 
Ctrl+O
 

2. Gibt es eine Komponente in msegui die wie der tstringedit funktioniert aber zusätzlich so einen kleinen "..." Button hat, mit dem ein anwendungsspezifischer Event ausgelöst wird (In meinem Fall sowas wie ein "Taste fangen" Dialog?

TDialogStringEdit aus Tab 'Dialog'. Es wird "OnExecute" ausgeführt. Weitere buttons können in "frame.buttons" angelegt werden.
Einen Shortcut-definitions-Dialog hat auch MSEide ('Settings'-'Configure MSEide'-'Shortcuts'), die Unit ist lib/common/dialogs/mseshortcutdialog.pas.

Edit: Eine weitere Option ist TRecordFieldEdit welches "OnUpdateRowValues" zur Übertragung der Feldwerte vom TTreeListItem hat. Das dropdown Fenster kann mit dropdown.options deo_disabled abgestellt werden.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1432
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: ttreelistedititem mit Schaltfläche und ShortcutText

Beitrag von fliegermichl »

Oh Mann, manchmal bin ich wohl etwas verwirrt.
In dem Tree werden verschiedene Klassen an die Eigenschaft tagpointer des ttreeedit gehängt und wenn man dann die Property Shortcut von einer Klasse abfragt, die diese property gar nicht hat, muss man sich nicht wundern das getShortcutName nichts geeignetes finden kann.

Antworten