Wie kann ich Modifikatortasten erfassen, während eine Delphi app starten einige Verhalten zu zwingen,
Frage
Ich bin eine Anwendung in Delphi zu schreiben, die eine SQLite3 Datenbank verwendet. Ich möchte in der Lage sein, die Anwendung zu starten, während einiger Zusatztasten wie STRG + SHIFT gedrückt halten, Neu-Initialisierung der Datenbank zu signalisieren.
Wie kann ich erfassen, dass die Anwendung gestartet wurde, während diese Tasten gehalten wurden?
Lösung
Tim hat die richtige Antwort, aber Sie könnten ein wenig mehr Rahmen brauchen:
procedure TForm56.Button1Click(Sender: TObject);
begin
if fNeedReinit then
ReinitializeDatabase;
end;
procedure TForm56.FormCreate(Sender: TObject);
begin
fNeedReinit := False;
end;
procedure TForm56.FormShow(Sender: TObject);
begin
fNeedReinit := (GetKeyState(VK_SHIFT) < 0) and (GetKeyState(VK_CONTROL) < 0);
end;
Ändern Button1Click mit Ihrem späteren Ereignisse, das überprüft, ob fNeedReinit eingestellt wurde. Sie können auch KeyPreview auf dem Hauptformular setzen, wenn Sie Schwierigkeiten haben, den Tastenhub zu fangen. Getestet habe ich nur den obigen Code und es funktioniert, aber wenn Sie einen Begrüßungsbildschirm, etc. haben, dann könnte es die Dinge ändern.
Andere Tipps
if (GetKeyState(VK_SHIFT) < 0) and (GetKeyState(VK_CONTROL) < 0) then
ReinitializeDatabase;
Versuchen Sie eine GetAsyncKeyState , < a href = "http://msdn.microsoft.com/en-us/library/ms646301(VS.85).aspx" rel = "nofollow noreferrer"> GetKeyState oder
Sie müssen Tastatur Haken in Ihrer Anwendung erfassen.
Here
und dann die Haken verarbeiten, bevor Sie das Hauptformular zeigen - zum Beispiel vor dem Create und Ausführen in der dpr Datei