Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Key wird nicht gelöscht, warum? (https://www.delphipraxis.net/195064-key-wird-nicht-geloescht-warum.html)

Fukiszo 30. Jan 2018 13:33

AW: Key wird nicht gelöscht, warum?
 
ok nochmal ausführlicher:
in meiner TForm hab ich einen Knopf der permanent den Fokus bekommt wenn nicht gerade ein "Edit" passiert.
Alle funktionen enden damit den knopf den fokus zu geben (ist von hause aus DefaultButton)
Ob nun ein Escape darin vorkommt oder nicht lass ich jetzt mal so im raum stehen da ja mein problem die Return-Taste ist.

Hat jemand einen konstruktiven Vorschlag wie ich Return da rausbekommen kann?
Oder muss ich eine Button class erstellen die sowas verhindert, sich "normal wie unter windows" zu benehmen?

Grüße und verzeiht falls ich das eine oder andere falsch versteh

himitsu 30. Jan 2018 13:43

AW: Key wird nicht gelöscht, warum?
 
Vorschlag:
Nicht der Button bekommt den Fokus, sondern die Form, also
Delphi-Quellcode:
Form.SetFocus
oder besser
Delphi-Quellcode:
Form.ActiveControl:=nil;
.

Der Knopf bekommt nicht Default=True. hat der Knopf den Fokus, dann kann Enter/Space/Maus das OnClick normal auslösen.
Space wird im OnKeyPress/Down/Up der Form behandelt. (KeyPreview=False)
Und das ESC kann über Cancel=True eines anderen Buttons oder auch über OnKeyPress/Down/Up der Form behandelt werden.



Die Dialog-Standard-Funktionen (Cancel und Default) werden über die ganze Form/Dialog behandelt.
Nur z.B. Memos behandeln ihr [ENTER] vorher und geben es nicht an die Form weiter.
Wie gesagt, ENTER/ESC haben Sonderaufgaben und werden von Windows bissl anders behandelt. Ist wie beim Strg+Alt+Entf, was sich auch nicht so leicht abschalten/überschreiben lässt.

Fukiszo 30. Jan 2018 13:49

AW: Key wird nicht gelöscht, warum?
 
Das klingt gut, danke fürs umdenken.
Jetzt muss ich den knopf eh umarbeiten da er momentan nur sichtbar wird wenn er den fokus bekommt.
teufelskreis hehe aber ich pflanz den nun immer sichtbar rein und versuch es so wie du vorgeschlagen hast.

Danke!

Delphi-Quellcode:
Wie gesagt, ENTER/ESC haben Sonderaufgaben und werden von Windows bissl anders behandelt
danke auch nochmals für erläuterung!

Delphi.Narium 30. Jan 2018 13:50

AW: Key wird nicht gelöscht, warum?
 
Eventuell im Form KeyPreview auf True und dann im OnKeyDown des Forms bei Return Key auf 0 setzen?
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  KeyPreview := True; // Kann man auch im Objektinspektor setzen.
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  case key of
    // Windows.VK_SPACE : ZeigeWas; // ist nicht erforderlich, da beim Betätigen der Leertaste,
    // mit Focus auf dem Button, sowieso das OnClick des Buttons ausgelöst wird.
    Windows.VK_RETURN : key := 0;
    // Windows.VK_ESCAPE : Application.Terminate;
    Windows.VK_ESCAPE : Close; // Halte ich für sinnvoller.
  end;
end;

LTE5 30. Jan 2018 13:51

AW: Key wird nicht gelöscht, warum?
 
Ich habe mal denselben Fehler gemacht wie du, und habe mich abhängig von irgendwelchen Sichtbarkeiten gemacht.
Ich sag nur.... tu's nicht :thumb:

Fukiszo 30. Jan 2018 20:06

AW: Key wird nicht gelöscht, warum?
 
Zitat:

Zitat von LTE5 (Beitrag 1392558)
Ich habe mal denselben Fehler gemacht wie du, und habe mich abhängig von irgendwelchen Sichtbarkeiten gemacht.
Ich sag nur.... tu's nicht :thumb:

Ja danke, bin schon dabei hehe
War halt ein netter Fade in/out effekt der nun flöten geht, funktionalität hat vorrang.

Grüße

Fukiszo 31. Jan 2018 00:11

AW: Key wird nicht gelöscht, warum?
 
Liste der Anhänge anzeigen (Anzahl: 2)
Da es mich doch irgendwie nicht loslässt hab ich mal ein Beispiel "Spiel" gebastelt wo die Eingabe-Taste der Feind ist.
Kann jemand dafür eine Lösung finden das Return nicht zum Sieg des "Spiels" führt?

Ich bin gespannt ob das machbar ist ansonsten..... Catch the Button :D

Im Anhang ist nur der komplette Source, standard VCL programmiert.

Viel Spass beim spielen,


Grüße

Redeemer 31. Jan 2018 10:55

AW: Key wird nicht gelöscht, warum?
 
TApplicationEvents.OnShortcut?

Fukiszo 31. Jan 2018 11:34

AW: Key wird nicht gelöscht, warum?
 
Der Source ist ja nur 5.4kb groß, bitte runterladen und deine methode testen.
Mir sagt "TApplicationEvents.OnShortcut" leider nichts, wahrscheinlich wegen meinem alten Delphi 7.
Aber ich besser mich ja schon was Delphi 7 betrifft, D2010 kommt nun rauf.

Grüße

Delphi.Narium 31. Jan 2018 11:53

AW: Key wird nicht gelöscht, warum?
 
Es gibt auch in Delphi 7 die Komponente TApplicationEvents. Die pappt man auf's Formular und nutzt das Ereignis OnShortcut.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:06 Uhr.
Seite 2 von 3     12 3      

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 by Thomas Breitkreuz