Frage

Ok, hier ist die Frage: Vor kurzem traf ich ein Problem, dass ich Accelerator Keys nicht in der Lage war zu verwenden (auch bekannt als HotKey s) auf Buttons innerhalb GroupBox. Nur eine Minute vor fand ich heraus, warum, aber jetzt nur Problem ist, dass aus diesem Grunde macht mich noch mehr verwirrte als vorher, das ist, dass solche Taste mit Beschleunigern kann nicht auf Formular finden . Effekt ist, dass, wenn ich Doppelklick auf die betroffenen Tasten mit Doppelklick, während in der Entwurfszeit, ich Fehler „Property und Verfahren sind nicht kompatibel“.

MethodName is VKPInputBtnClick, die tatsächlich als Funktion deklariert wird, nicht als Methode in der Einheit.

Was macht mich verwirrt ist, dass ich nicht OnClick Ereignishandler für VKPInputBtn auf jede Methode überhaupt nicht!

zugewiesen

Wie es möglich ist, dass ich Programm zusammenstellen kann und keine Laufzeitprobleme hat ... aber in der Entwurfszeit Doppelklick auf Button hat so lästige Probleme ....

Jede Lösung? Neuinstallation von IDE?

Jede Hilfe sehr geschätzt ...

War es hilfreich?

Lösung

Ein Doppelklick auf ein Steuerelement, das nicht die Standardereigniseigenschaft Satz hat bewirkt, dass die IDE diese Eigenschaft zuweisen. (Es ist nicht nur eine Abkürzung für, um den Code-Editor gehen, das ist F12 ). Die IDE suchen den Quellcode für eine Funktion mit dem gewünschten Namen. Wenn es einen nicht findet, dann schafft es ein Verfahren, in dem enthalten, Form und weist sie die Ereigniseigenschaft der Komponente. Aber wenn es hat etwas mit dem richtigen Namen finden, es versucht, es zuweisen, ohne etwas Neues zu schaffen.

Das Problem ist offenbar, dass das, was die IDE finden in Ihrem Fall ist es nicht kompatibel mit dem Ereignisse mit zu gehen scheint. Wahrscheinlich ein Fehler - es sollte nicht nicht-Methoden wählen -. Aber ein selten anzutreffen man die niedrige Frequenz gegeben, mit denen die Menschen den gleichen Namen für Standalone-Funktionen wie die IDE wählt für Event-Handler wählen

Sie haben mehrere Möglichkeiten:

  • Rename VKPInputBtnClick, damit es nicht wie es aussieht ist das OnClick Ereignishandler für die VKPInputBtn Kontrolle.
  • Make VKPInputBtnClick ein Verfahren der Formularklasse sein.
  • manuell deklarieren a neue VKPInputBtnClick Methode in der Formularklasse, und vielleicht der IDE wird es statt der Standalone-Funktion wählen.
  • Geben Sie
  • einen anderen Namen in die OnClick Eigenschaft im Objektinspektor und und doppelklicken Sie darauf (oder drücken Sie Enter ). Die IDE wird eine Methode mit diesem Namen erstellen.

Andere Tipps

Versuchen Sie den Handler in der .pas-Datei aus der Erklärung zu löschen und die Implementierungsabschnitte (oder kopieren Sie irgendwo, wenn sie Code enthalten). Dann versuchen Sie den Handler für die Schaltfläche zu erstellen. Manchmal kann die IDE synchronisiert ist und alles, was getan werden kann, ist wieder in einen bekannten Zustand zurückgesetzt werden.

Wenn das nicht funktioniert, sieht, wenn Sie das Formular schließen und wieder öffnen, oder entfernen Sie den Handler in der .dfm Datei.

Die Komponenten funktionieren anders im Design und in der Laufzeit. Ein Doppelklick auf eine Schaltfläche in desgintime erstellt und fügt einen OnClick-Handler. Das erklärt, warum das Verhalten unterschiedlich ist.

Hoffentlich Ich verstehe Ihre Frage richtig. Sie haben eine Komponente auf dem Formular, und Sie sind nicht in der Lage, einen korrekte Eventhandler zuweisen, da die automatisch erstellt Eventhandler eine andere Art als der erwarteten Eventhandler sind?

In diesem Fall Ihre eigenen Eventhandler erstellen und zuweisen. Sie können es sogar in der OnCreate des Formulars zuweisen. Wenn Zuordnung Trog der DFM nicht erfolgreich ist.

Wenn diese aus abwechselnd einen echten Fehler sein, vergessen Sie nicht, es mit Embarcadero Datei. Sie können in der IDE die QA App über das Tools-Menü zugreifen oder auf die Website gehen.

Wie auch immer, Frage beantwortet wird, und es ist klar, dass diese Fehlermeldung einen RAD Studio XE Fehler sein sollte, weil IDE in falschem Weg tatsächliche und benötigten Eigenschaften für Objekt vergleicht.

Vielen Dank sehr viel für die Eingabe.

EDN QC Fall: # 89543


Weitere Informationen:

Dies ist ich Ansatz verwenden Accelerator-Funktionalität für VKPInputBtnCLick Funktion zu verwenden.
 - Verwenden Sie diesen Code Nachricht snipp bilden: Alt-Taste-Handhabungs-Algorithmus
 - Change VK_TAB zu VK_LMENU (links ALT)
 - Nach der ALT-Nachricht erfasst wird, global eindeutigen Wert auf variable
eingestellt  - In FormKeyPress Event-Handler, zu überprüfen, ob eindeutigen Wert globalen Variablen entsprechen, den ich Satz vor  -. Funktion ausführen

Hope hilft es, andere bereit, dies zu tun. Auch einige weitere glatte und saubere Art und Weise diese Funktionalität zu erreichen sind auch willkommen.

Nicht Frage Einstellung noch beantwortet.

  

ist eigentlich als Funktion deklariert, nicht als Methode in der Einheit.

Method Handler müssen Prozeduren, nicht funktioniert. Daher ist es nicht funktioniert.

sagte, als Toby vor langer Zeit (aber Sie haben offensichtlich nicht hören):

  

Versuchen Sie den Handler in der .pas Datei zu löschen ...   Dann versuchen Sie den Handler für die Schaltfläche erstellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top