2012-04-24 8 views
10

der Ctrl+Backspace Tastaturbefehl löscht normalerweise das Wort auf der linken Seite aus dem Einfügemodus. Aber es funktioniert nicht in einem der Standard-Delphi-Steuerelemente, die Sie erwarten würden (, TMemo, TComboBox ect.). Interessanterweise funktioniert Ctrl+Delete gut.Strg + Backspace in Delphi Steuerelemente

Weiß jemand, wie man dieses Verhalten leicht korrigiert?

Ich weiß, dass das Überschreiben der KeyDown Prozedur würde es tun, aber das ist ein ziemlich zu kompliziert, da KeyDown für jede Komponente überschrieben werden muss.

+0

Dies ist kein Delphi-spezifisches Problem. Tatsächlich sind "TEdit" und die anderen Steuerelemente nur Wrapper für die nativen Microsoft Windows-Steuerelemente und verhalten sich so. Probieren Sie zum Beispiel das Bearbeitungsfeld im "Schrift auswählen" -Dialog von Notepad. Bearbeiten Sie die Steuerelemente mit aktivierter automatischer Vervollständigung, akzeptieren Sie jedoch den Hotkey Strg + Rücktaste. –

+3

Wie Raymond ['sagte'] (http://blogs.msdn.com/b/oldnewthing/archive/2007/10/11/5395501.aspx). – TLama

+0

Interessant, das wusste ich nicht. Aber es ist immer noch ein bisschen nervig, weil die Verknüpfung an so vielen Stellen funktioniert, einschließlich sogar MS-Software. – oxo

Antwort

17

Dies ist kein Delphi-spezifisches Problem. In der Tat, und die anderen Steuerelemente sind nur Wrapper für die nativen Microsoft Windows-Steuerelemente, und sie verhalten sich so. Probieren Sie zum Beispiel das Bearbeitungsfeld im "Schrift auswählen" -Dialog von Notepad. Bearbeiten Sie die Steuerelemente mit aktivierter automatischer Vervollständigung, akzeptieren Sie jedoch den Hotkey Strg + Rücktaste. Ich glaube, Sie dies leicht

SHAutoComplete(Edit1.Handle, 
    SHACF_AUTOAPPEND_FORCE_OFF or SHACF_AUTOSUGGEST_FORCE_OFF) 

(verwendet ShLwApi) aktivieren können.

+0

+1, ich schrieb einen Kommentar Sie die Flagge von 'SHACF_DEFAULT = 0 zu ändern, Sie waren schneller. Es ist der einfachste Weg, diese Funktion zu implementieren. – TLama

+0

@TLama: Ja, die tatsächliche Autovervollständigung ist wahrscheinlich nicht das, was das OP will ... Trotzdem frage ich mich, ob es keinen besseren Weg gibt, dies zu tun. Es macht schließlich wenig Sinn, 'Autocompletion' zu aktivieren, damit der Hotkey Strg + Backspace funktioniert ... –

+0

Man sollte wahrscheinlich auch das Flag 'SHACF_FILESYS_ONLY' hinzufügen, nicht weil es Sinn macht, sondern weil die Dokumentation explizit sagt "Dieses Flag muss in Kombination mit einem oder mehreren SHACF_FILESYS * - oder SHACF_URL * -Flags verwendet werden." Bezug nehmend auf die Flaggen, die ich oben verwende. –

Verwandte Themen