AGB  ·  Datenschutz  ·  Impressum  







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

Form1.KeyUp problem

Ein Thema von JnZn558 · begonnen am 10. Aug 2010 · letzter Beitrag vom 12. Aug 2010
Antwort Antwort
JnZn558

Registriert seit: 22. Aug 2004
98 Beiträge
 
#1

Form1.KeyUp problem

  Alt 10. Aug 2010, 13:37
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  KeyPreview := True;
  FormColor := Form1.Color;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if ssCtrl in Shift then Form1.Color := clAqua;
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if ssCtrl in Shift then Form1.Color := FormColor;
end;
mein problem hier ist, dass beim Form1.FormKeyUp Form1.Color nicht wieder hergestellt wird. heisst sozusagen Shift enthaelt ssCtrl nicht, aber warum, bei keydown geht das.
Peace on the world
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Form1.KeyUp problem

  Alt 10. Aug 2010, 13:50
Wo ist das Problem?

Wenn die [Strg]-Taste gedrückt wird, wird das Form blau, wenn die Bstb-Taste losgelassen wird, dann wird wieder "zurück gefärbt!
(D2006)

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
knochen

Registriert seit: 26. Aug 2009
81 Beiträge
 
Delphi 2006 Professional
 
#3

AW: Form1.KeyUp problem

  Alt 10. Aug 2010, 14:52
Wenn du die Crtl Taste loslässt, ist die Bedingung ja nicht mehr wahr. Es muss also heißen:

if not (ssCtrl in Shift) then Form1.Color := clBtnFace;

Grüße
A fool with a tool remains a fool.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Form1.KeyUp problem

  Alt 10. Aug 2010, 15:28
Dann darf die STRG-Taste aber nicht gedrückt sein. Wieso nicht einfach
Delphi-Quellcode:
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  Color := FormColor;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
JnZn558

Registriert seit: 22. Aug 2004
98 Beiträge
 
#5

AW: Form1.KeyUp problem

  Alt 10. Aug 2010, 19:15
danke sehr

so Ich hab es nun so ausprobiert, mit Ctrl klappts wunderbar, bei Alt Taste geht bei 2. druecken nicht wie bei 1.mal, zweites mal druecken muss die alt taste laenger gedrueckt halten, bis es die farbe aendert warum ist das so??
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if ssAlt in Shift then Form1.Color := clAqua;
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if not ( ssAlt in Shift ) then Form1.Color := FormColor;
end;
Peace on the world

Geändert von JnZn558 (10. Aug 2010 um 19:37 Uhr)
  Mit Zitat antworten Zitat
knochen

Registriert seit: 26. Aug 2009
81 Beiträge
 
Delphi 2006 Professional
 
#6

AW: Form1.KeyUp problem

  Alt 11. Aug 2010, 06:38
bei Alt Taste geht bei 2. druecken nicht wie bei 1.mal, zweites mal druecken muss die alt taste laenger gedrueckt halten, bis es die farbe aendert warum ist das so??
Das ist so, weil die Alt-Taste das Systemmenu der Form aktiviert. Ausprobieren mit <Alt>, danach(!) <Cursor down>. Heißt, das Systemmenu ist nach dem ersten Drücken aktiv, nur nich ausgeklappt.
Gegenprobe: Form1.BorderStyle auf bsNone setzten. Jetzt funktioniert es so wie erwartet.
Fazit: Die Alttaste ist für solch eine Aktion eher ungeeignet.

Grüße
A fool with a tool remains a fool.
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#7

AW: Form1.KeyUp problem

  Alt 11. Aug 2010, 07:39
Dann darf die STRG-Taste aber nicht gedrückt sein. Wieso nicht einfach
Delphi-Quellcode:
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  Color := FormColor;
end;
Weil wenn man folgende Tasten drückt:
  1. ↓ CTRL
  2. ↓ Andere Taste (z.B. A)
  3. ↑ Diese andere Taste
  4. ↑ CTRL
Dann wird zu früh die Color zurückgesetzt. Wobei ich mich Frage ob das nicht auch der Fall ist, wenn man auf not(ssCtrl in Shift) testet.

MfG
Fabian
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
JnZn558

Registriert seit: 22. Aug 2004
98 Beiträge
 
#8

AW: Form1.KeyUp problem

  Alt 12. Aug 2010, 17:12
bei Alt Taste geht bei 2. druecken nicht wie bei 1.mal, zweites mal druecken muss die alt taste laenger gedrueckt halten, bis es die farbe aendert warum ist das so??
Das ist so, weil die Alt-Taste das Systemmenu der Form aktiviert. Ausprobieren mit <Alt>, danach(!) <Cursor down>. Heißt, das Systemmenu ist nach dem ersten Drücken aktiv, nur nich ausgeklappt.
Gegenprobe: Form1.BorderStyle auf bsNone setzten. Jetzt funktioniert es so wie erwartet.
Fazit: Die Alttaste ist für solch eine Aktion eher ungeeignet.

Grüße
danke sehr, dies hat mich aufgeklaert
Peace on the world
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:22 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