![]() |
F-Taste einem Button als Zugriffstaste zuweisen... Wie?
Moin, moin,
würde gerne einige Buttons auf meinem Formular durch die Funktionstasten F2 bis F12 reagieren lassen. Am liebsten in einer abgeleiteten Buttonkomponente, der diese Taste zugeweisen werden kann. Mir fehlt da die Idee der herangehensweise.... Grüße // Martin |
Re: F-Taste einem Button als Zugriffstaste zuweisen... Wie?
Stichwort : OnKeyDown
|
Re: F-Taste einem Button als Zugriffstaste zuweisen... Wie?
Ok - Zeit heute aufzuhören...
Dank Dir // Martin |
Re: F-Taste einem Button als Zugriffstaste zuweisen... Wie?
Moin, moin,
ok jetzt muß ich mein Problem doch nochmal präzisieren: Ein Button mit der Caption &Abbrechn reagiert auf ALT-A in einem Formular kann ich die Button-komponente so verändern, das dieser auf z.B.: F12 regiert. Möchte das möglichst in der Komponente lösen und nicht alles jedesmal im OnKeyDown-Ereigniss des Formulars tun. Grüße // Martin |
Re: F-Taste einem Button als Zugriffstaste zuweisen... Wie?
Hai Martin,
besitzt Delphi 6 schon den Action-Manager (Register: Zusätzlich)? Wenn Ja kannst Du über diesen deine Aktionen verwalten. Dort kannst Du auch nocht zusätzliche ShortCuts angeben. |
Re: F-Taste einem Button als Zugriffstaste zuweisen... Wie?
du könntest dir ne klasse von TButton ableiten, die im parent einen hotkey mit deiner gewünschten tastenkombo (oder einzeltaste) erstellt, dann nur noch paar propertys für den zugriff auf selbigen hotkey, das sollte so funzen
|
Re: F-Taste einem Button als Zugriffstaste zuweisen... Wie?
Moin, noch Frühmoin,
das Ding besitzt den Action - Manager (glaube Actions gibt´s ab D4). Würde die Zugriffstaste am liebsten in der Komponente hinterlegen, da ich mehrere Programm auf eine Sondertastensteuerung aufrüsten soll. Wo ist den eigentlich diese Unterstrich-Zugriffsmethode implementiert? Im Formularobjekt oder in einer Basisklasse :?: ? Einfach in die OnKey-Verarbeitungsroutine des Buttons geht natürlich auch nicht, da diese nur ausgelöst wird, wenn der Button schon den Fokus hat. Es bleibt knifflig. Grüße // Martin |
Re: F-Taste einem Button als Zugriffstaste zuweisen... Wie?
ich verweise noch ma an meine methode, im parent (!) des buttons einen hotkey zu hinterlegen, so muss der button nicht den fokus erhalten und du hast im prinzip das was du brauchst, oder seh ich das falsch?
// und nur damit wir uns richtig verstehen, diesen hotkey vom button selbst verwalten (und erstellen) lassen |
Re: F-Taste einem Button als Zugriffstaste zuweisen... Wie?
Hm,da muß aber bekannt sein was der Parent für ein Typ ist, sonst ist das ein leidiges "getypecaste" und das ist innerhalb einer Komponente meist sehr unglücklich"
Das Problem ist, das ein Button oft auf Panels leigt, manchmal auf einem Form oder sonstwo und Typecast möchte ich hier vermeiden. Melde mich heute Nachmittag nochmal. Werde mir mal die VCL-Codes anschauen wie das mit dem Unterstrich geregelt ist.... Grüße // Martin |
Re: F-Taste einem Button als Zugriffstaste zuweisen... Wie?
du kannst ja auch einfach den stammbaum der komponente solange hochgehen bis du ne tform oder nil findest, bei tform hotkey reservieren bei nil nix tun... wär jedenfalls nich undenkbar... :|
und wenn ich ma so fragen darf, was spielt das, ob du weißt welchen typ der parent hat, für ne rolle? der parent muss ein wincontrol sein, dass wiederum hat n controlstyle, den man auf das flag csAcceptsControls prüfen kann, sprich kann ich hier n hotkey erzeugen oder muss ich weiter zum nächsten parent... |
Re: F-Taste einem Button als Zugriffstaste zuweisen... Wie?
Moin, moin
Hm, doch nochmal an der Kiste gestrandet. Es gibt da ein kleines Problem: Nehmen wir zwei drei Buttons auf einem Panel. Dann kann ich dem Panel zunächst ein Hitkey zuweisen. Aber dann bleibt der Hotkey des zuletzt erstellten Burtons und die anderen würden entfallen. Oder Du müstest dem Parent in einer abgeleiteten Parentkomponente eine Hotkeyliste spendieren, das scheint mir aber eher etwas weit hergeholt und nicht unbedingt sichere Programmierung. Um nicht in der vcl selbst zu kodieren wären dazu dann noch Ableitungen zumindest von Panel und Form notwendig..... Einen Systemweiten HotKey einem Button zuzuweisen ist übrigens kein Problem, aber das will damit nun auch nicht erreichen, da sich sonst mehre Programmer "kappeln" würden. Es sollen die Buttons einfach eine Eigenschaft F-Taste bekommen in dem Sie in Ihrem Formular auf diese reagieren. Bin nich auf vcl-Debugtour.... Grüße // Martin |
Re: F-Taste einem Button als Zugriffstaste zuweisen... Wie?
Das TForm ist IMHO die einzige "Komponente", die sich OOP-mäßig sehr schwer behandeln läßt. Ich hatte mal versucht, irgendwas davon abzuleiten. No Chance. Weiß der Teufel, was TForm jetzt noch genau ist, auf jeden Fall etwas ganz anderes als ein TButton oder eine normale Komponente.
Das Stichwort heißt nunmehr : "Objektablage/Repository". In meinem Source sieht es so aus, daß jede Form sich mit esc schließen lassen muß. Verschiedene F-Tasten müssen in verschiedenen Form-Gruppen bereit stehen. Die Tastatur muß sich immer gleich verhalten, auch mit ISO???? im Hinterkopf. 8) Wie habe ich das realisiert ? Indem ich eine Form genommen habe, in dieser schon mal alle Grundeinstellungen eingestellt habe (Farbe, FormKeyPress für ESC usw.). Diese ESCform kam dann in die Objektablage. Weitere 5 Forms brauchen zusätzlich F9 und F10. Für diese habe ich von ESCform eine weitere Grundform abgeleitet (Objektablage -> vererben). Diese dann letzendlich für die 5 Forms verwendet. |
Re: F-Taste einem Button als Zugriffstaste zuweisen... Wie?
Moin, moin,
tja fast hätte Hansa wohl rechtbehalten und ganz geklärt habe ich es immer noch nicht: Dank Rainer Reusch von der Toolbox bin ich ninzwischen in der Lage den Buttons Systemweite HotKeys zu zuordnen und hier gehen auch die Funktionstasten F1 bis F12. Der Haken ist allerdings, das diese immmer Systemweit sind und sich nicht auf ein Formular beziehen. ![]() So was mir immernoch fehlt ist die Zuweiseung einer Funtkionstaste mit nur formularlokaler Gültigkeit als Eigenschaft einer abgeleiteten Buttonkomponente..... Tipps .. Ideen sind herzlich willkommen Grüße // martin |
Re: F-Taste einem Button als Zugriffstaste zuweisen... Wie?
Zitat:
|
Re: F-Taste einem Button als Zugriffstaste zuweisen... Wie?
Hallo Hansa,
vor der Mittagspause hätte ich auch schon fast aufgegeben :stupid: jetzt verfolge ich meine letzte Spur, sehen wir in einer hallben Stunde... ....WM_KeyDown.... Grüße // Martin |
Re: F-Taste einem Button als Zugriffstaste zuweisen... Wie?
Moin, moin
Ok, sieht gut aus: Jetzt komme ich an die WM_KeyDown Message des Forms innerhalb meiner abgeleiteten Buttonkomponenten indem ich mich über die Parents hochhangele (wie Nothineja schon vorgeschlagen hat, ok dann also doch !). Dann noch die Messageprocedure umbiegen und dann sollte es gehen, mal sehen.... Viele Grüße // Martin |
Re: F-Taste einem Button als Zugriffstaste zuweisen... Wie?
das hab ich übrigens auch grad erfolgreich getestet, also das umbiegen, ich muss nur noch das hochangeln sauber hinkriegen, als klasse kapseln, und wenn nich jemand schneller war (:stupid:) dann noch posten
|
Re: F-Taste einem Button als Zugriffstaste zuweisen... Wie?
@Sharky, wenn es sich nur um die Buttons und nicht noch um Menüs etc. handelt wäre der ActionMan viel zu überdimensioniert. ;)
Eine simple ActionList tut den Job genauso ohne soviele Ressourcen zu schlucken. Du legst dir einfach eine Action an, verpasst dem OnExecute deinen Code. Außerdem kannst du ihr einen ShortCut verpassen. Jetzt wählst du beim Button einfach die betreffende Action aus -> färtsch. btw: IMHO sollte man die gesamt GUI in ActionLists verwalten, dadurch kann man eine Action an vielen Stellen wiederverwenden (MainMenu, ContextMenu, Button, ...) außerdem werden alle zugewiesene Controls auf enabled/disabled gesetzt, wenn man es an der Action ändert. Nachtrag: Zitat:
|
Re: F-Taste einem Button als Zugriffstaste zuweisen... Wie?
Liste der Anhänge anzeigen (Anzahl: 1)
so, die button-komponente, die auf druck der tasten F1 bis F12 reagiert, is feddich. wen's interessiert, der kann sich im anhang das package sowie die unit der komponente ansehen, vielleicht hat ja noch jemand verbesserungsvorschläge oder will mich hauen weil es so programmiert is wie es halt is :mrgreen: also feedback is willkommen
(zur erklärung: es gibt 2 neue published properties im OI, eine heißt "FKey", sollte halbwegs klar sein, auf welche F-Taste man reagieren will halt, und das event "OnHotKey", mit dem man entscheiden kann was der button nu eigentlich machen soll wenn die entsprechende taste gedrückt wurde.) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz