AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Key wird nicht gelöscht, warum?

Ein Thema von Fukiszo · begonnen am 30. Jan 2018 · letzter Beitrag vom 31. Jan 2018
Antwort Antwort
Seite 2 von 3     12 3      
Fukiszo
(Gast)

n/a Beiträge
 
#11

AW: Key wird nicht gelöscht, warum?

  Alt 30. Jan 2018, 12:33
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.153 Beiträge
 
Delphi 12 Athens
 
#12

AW: Key wird nicht gelöscht, warum?

  Alt 30. Jan 2018, 12:43
Vorschlag:
Nicht der Button bekommt den Fokus, sondern die Form, also Form.SetFocus oder besser 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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (30. Jan 2018 um 12:56 Uhr)
  Mit Zitat antworten Zitat
Fukiszo
(Gast)

n/a Beiträge
 
#13

AW: Key wird nicht gelöscht, warum?

  Alt 30. Jan 2018, 12:49
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!

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

Geändert von Fukiszo (30. Jan 2018 um 12:52 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.419 Beiträge
 
Delphi 7 Professional
 
#14

AW: Key wird nicht gelöscht, warum?

  Alt 30. Jan 2018, 12:50
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;
  Mit Zitat antworten Zitat
LTE5

Registriert seit: 13. Nov 2017
355 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#15

AW: Key wird nicht gelöscht, warum?

  Alt 30. Jan 2018, 12:51
Ich habe mal denselben Fehler gemacht wie du, und habe mich abhängig von irgendwelchen Sichtbarkeiten gemacht.
Ich sag nur.... tu's nicht
  Mit Zitat antworten Zitat
Fukiszo
(Gast)

n/a Beiträge
 
#16

AW: Key wird nicht gelöscht, warum?

  Alt 30. Jan 2018, 19:06
Ich habe mal denselben Fehler gemacht wie du, und habe mich abhängig von irgendwelchen Sichtbarkeiten gemacht.
Ich sag nur.... tu's nicht
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
  Mit Zitat antworten Zitat
Fukiszo
(Gast)

n/a Beiträge
 
#17

AW: Key wird nicht gelöscht, warum?

  Alt 30. Jan 2018, 23:11
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

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

Viel Spass beim spielen,


Grüße
Miniaturansicht angehängter Grafiken
pushthebutton.jpg  
Angehängte Dateien
Dateityp: 7z PushTheButton_SourceOnly.7z (5,3 KB, 2x aufgerufen)
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.017 Beiträge
 
Delphi 2009 Professional
 
#18

AW: Key wird nicht gelöscht, warum?

  Alt 31. Jan 2018, 09:55
TApplicationEvents.OnShortcut?
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Fukiszo
(Gast)

n/a Beiträge
 
#19

AW: Key wird nicht gelöscht, warum?

  Alt 31. Jan 2018, 10:34
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
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.419 Beiträge
 
Delphi 7 Professional
 
#20

AW: Key wird nicht gelöscht, warum?

  Alt 31. Jan 2018, 10:53
Es gibt auch in Delphi 7 die Komponente TApplicationEvents. Die pappt man auf's Formular und nutzt das Ereignis OnShortcut.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz