AGB  ·  Datenschutz  ·  Impressum  







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

Regionale Einstellungen

Ein Thema von Cogito · begonnen am 9. Mai 2012 · letzter Beitrag vom 24. Mai 2012
Antwort Antwort
Seite 3 von 3     123   
Cogito

Registriert seit: 12. Jun 2008
280 Beiträge
 
#21

AW: Regionale Einstellungen

  Alt 18. Mai 2012, 07:45
.... hat hier jemand eine Idee wie das zu bewerkstelligen ist?
Die windowsinterne Umsetzung des virtuellen Tastencodes (VK_SEPARATOR) der "Kommataste" auf dem Nummernblock wird durch die Ausführung der Funktion SetDecimalSeparator() nicht beeinflusst, bleibt also konstant wie vom System vorgegeben.

Wenn man also das Dezimalzeichen - aus welchem Grund auch immer - mittels SetDecimalSeparator() ändert und folglich zweckmäßigerweise die entsprechende Änderung auch durch den Druck der "Kommataste" des Nummernblocks gewährleisten will, kann man das nur durch Abfangen der geeigneten Message ermöglichen. Dies bezieht sich dann auf die gesamte Application, unabhängig von den verwendeten Komponenten zur Eingabe.
Code:
  {...}
  private
    { Private-Deklarationen }
    procedure AppOnMessage(var Msg: TMsg; var Handled: Boolean);
  {...}
 
procedure TForm1.AppOnMessage(var Msg: TMsg; var Handled: Boolean);
begin
  case Msg.Message of
    WM_KEYDOWN,
    WM_KEYUP:
      if (Msg.wparam = VK_DECIMAL) and (Odd(GetKeyState(VK_NUMLOCK))) then
      begin
        Msg.wparam := 190; // für Punkt
        // oder Msg.wparam := 188; // für Komma
        Msg.lparam := MakeLParam(LoWord(msg.lparam), (HiWord(Msg.lparam) and $FE00) + MapVirtualKey(Msg.wparam, 0));
      end;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 Application.OnMessage := AppOnMessage;
end;
Nee sorry, die Routine scheint nicht zu funktionieren bzw. zeigt keinerlei verändertes Verhalten.
Vielleicht wäre es einfacher in meiner Applikation den Punkt als Dezimalseparator zu definieren? Dann bräuchte ich nichts am System zu verändern. Weiß jemand ob das funktionieren kann, ich meine, global für die Anwendung den Punkt als Dezimaltrenner zuzulassen?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Regionale Einstellungen

  Alt 18. Mai 2012, 07:57
Delphi-Referenz durchsuchenDecimalSeparator und Delphi-Referenz durchsuchenThousandSeparator
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Cogito

Registriert seit: 12. Jun 2008
280 Beiträge
 
#23

AW: Regionale Einstellungen

  Alt 18. Mai 2012, 08:06
Ich hab die Lösung gefunden, es ist so simpel: Es gibt die globale Variable SysUtils.DecimalSeparator die dafür verantwortlich ist, wie Delphi das Dezimaltrennzeichen interpretiert. Das hat also gar nichts mit den regionalen Einstellungen des Systems oder sonstwelchen Einstellungen zu tun wie es scheint. Vielen Dank allen hier!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Regionale Einstellungen

  Alt 18. Mai 2012, 08:14
Achwas
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
Cogito

Registriert seit: 12. Jun 2008
280 Beiträge
 
#25

AW: Regionale Einstellungen

  Alt 24. Mai 2012, 10:51
Mist, doch noch nicht (ganz) gelöst. Der Kunde hat sich darauf comitted, als Dezimaltrennzeichen immer ein Komma zu verwenden. Jedoch gibt es unterschiedliche Tastaturen und alle diejenigen, die das Programm nutzen, möchten die Kommataste auf dem numerischen Block der Tastatur benutzen. Das Problem ist nun, das einige dort kein Komma haben, ich aber auch nicht an den Systemeinstellungen rumfummeln möchte, weil das eventuell wieder Einfluss darauf haben könnte, das andere Programme dann nicht mehr richtig funktionieren. Gibt es also eine Möglichkeit, das Dezimaltrennzeichen immer auf Komma zu stellen (Ja: Decimalseparator := ',') und die Taste im Num-Block IMMER als ein Komma zu interpretieren?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 11:40 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