Delphi-PRAXiS

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 Lokalisierungsproblem beim Modifier bei THotKey-Variante (https://www.delphipraxis.net/142348-lokalisierungsproblem-beim-modifier-bei-thotkey-variante.html)

LHUser 26. Okt 2009 21:50


Lokalisierungsproblem beim Modifier bei THotKey-Variante
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

bitte nicht böse sein: Ich habe das gleiche Thema schon einmal in einem anderen Forum gepostet, aber da dort anscheinend niemand helfen kann, versuch ichs hier mal.

Ich habe hier eine Komponente aus dem Internet, die praktisch ein THotKey plus Windowstaste als zusätzlichen Modifier ist.

Nun gibt es damit das Problem, dass die Tasten, die lokalisiert werden müssen, nicht zur Laufzeit sondern schon zur Entwurfszeit lokalisiert werden. Das bedeutet, dass da dann auch in einem englischen Betriebssystem "Strg+X" steht.

Ich habe herausgefunden, dass "SmkcCtrl" den String für die Modifier bereitstellt. Ich habe den (recht kurzen) Quelltext mal angehangen.

Weiterhin habe ich versucht, das betreffende Array, wo die Strings für Strg usw. drin stehen in die public-Definition zu schreiben. Damit habe ich nun auch von meiner Form-Klasse Zugriff auf dieses Array.

Leider hat eine Änderung über

HotKeyEx1.MenuKeyCaps[mkcCtrl] := 'Hallo';

keinen Einfluss auf die Komponente. Auch ein neues Create() bringt keinen Erfolg.

Es wäre wirklich super, wenn ihr mir da helfen könntet, denn ich bin etwas ratlos, da Komponenten ja nun mal zur Entwurfszeit eingebunden werden :(

Ciao LHUser

The_Unknown 27. Okt 2009 21:59

Re: Lokalisierungsproblem beim Modifier bei THotKey-Variante
 
Kann mir hier auch niemand helfen :(? Ich dachte, das wäre für die Gurus keine große Sache :cry:

himitsu 31. Okt 2009 20:28

Re: Lokalisierungsproblem beim Modifier bei THotKey-Variante
 
Wenn ich mich recht erinnere, dann hat Delphi selber eine Funktion, welche solche Tasten-Codes (Word) in Lesbares (String) umwandelt ... vermutlich wird da einfach diese Funktion genutzt.

Ja und Delphi bringt seine eigenen Konstanten/Texte mit.

deutsches Delphi = deutscher Text
englisches Delphi = englischer Text


[add]
wenn du über die Delphi-SourceCodes verfügst
Const.pas
Delphi-Quellcode:
SmkcBkSp = 'Rück';
SmkcTab = 'Tab';
...
SmkcDown = 'Ab';
SmkcIns = 'Einfg';
SmkcDel = 'Entf';
SmkcShift = 'Umsch+';
SmkcCtrl = 'Strg+';
SmkcAlt = 'Alt+';

und genutzt wird es z.B. von Delphi-Referenz durchsuchenShortCutToText

The_Unknown 31. Okt 2009 21:11

Re: Lokalisierungsproblem beim Modifier bei THotKey-Variante
 
Vielen, vielen Dank erst mal für deine Antwort :thumb:

Nun erstellt man mit Delphi nicht nur für eine Sprache, sondern halt auch für mehrere. Wie kann ich dies denn zur Laufzeit noch verändern? Wäre es beispielsweise möglich, direkt in die *.pas-Datei eine prüfung der Sprache von Windows einzubauen, oder ist es dann schon zu spät?

Edit: Bitte nicht über den doppelten Usernamen wundern. Ich wusste nicht mehr, dass es meinen alten Account von 2007 noch gibt. Das heißt also The_Unknown=LHUser und demnach kann der Account LHUser von den Mods ruhig gelöscht werden ;) Sorry dafür.

himitsu 31. Okt 2009 21:31

Re: Lokalisierungsproblem beim Modifier bei THotKey-Variante
 
ja, hier wird halt keiner so schnell gelöscht :)
das löschen kannst du auch selber machen ... siehe Profil
(oder, wenn es dir wichtig ist, an den Admin 'ne PN ... vielleicht ändert er ja noch den User im Post auf dich ab)


Zum Problem:
das ist zu spät,
denn es handelt sich dort um Konstanten :zwinker:

Aber es gibt da gewisse Tricks:
- diese Konstanten sind als "ResourceString" definiert, daß heißt, du kannst nach dem Compilieren mit einem ResourceEditor diese String ändern, das geht auch über ein eigenes Programm mittels Delphi-Referenz durchsuchenUpdateResource.

- es gibt auch Zusatzmodule, welche dieser eventuell mit übersetzen GNU GetText
schau dich dafür mal im Forum um, da gibt es sehr viele Threads zum Thema Lokalisierung, mit Unmassen an Lösungswegen

The_Unknown 31. Okt 2009 22:03

Re: Lokalisierungsproblem beim Modifier bei THotKey-Variante
 
Zitat:

Zitat von himitsu
Aber es gibt da gewisse Tricks:
- diese Konstanten sind als "ResourceString" definiert, daß heißt, du kannst nach dem Compilieren mit einem ResourceEditor diese String ändern, das geht auch über ein eigenes Programm mittels Delphi-Referenz durchsuchenUpdateResource.

Meinst du die Konstanten in den Delphi Sources? Falls ja, wie kann ich auf diese zugreifen?

Ich erzähle einfach mal, wie ich es verstanden habe:
Ein laufender Prozess kann nicht seine eigenen Ressourcen verändern, daher könnte man das von einer anderen (temporären) Anwendung machen lassen und die Hauptanwendung natürlich vorher schließen.

Nun hapert es, wie gesagt, daran, die Ressource in meiner EXE aus einer Fremdanwendung heraus zu verändern.
Kannst du mir hier aushelfen?

Edit: Was mir gerade noch einfällt, kriege ich da keine Probleme mit Antivirenprogrammen bzw. dem UAC, wenn ich einfach an "fremden" Anwendungen herumwerkle?

Dankesähr :)

P.S.: Vielleicht kennen wir uns, ich wohne auch in der Elbflorenz ;)

himitsu 31. Okt 2009 22:49

Re: Lokalisierungsproblem beim Modifier bei THotKey-Variante
 
Ja, man kann sich nicht selber verändern (jedenfalls nicht direkt ... siehe z.B. UpdaterUpdater ... im Prinzip kopiert man sich selber, verändert die Kopie und tauscht sich über 'nen "Trick" aus)

anderes Problem: Seit Vista hat man standardmäßig keine Schreibrechte mehr im Programmverzeichnis.

Und ja, der Virenscanner könnte/wird vermutlich etwas durchdrehn.



weiteres Problem: ResourceStrings haben keinen Namen ... sie sind durchnummeriert.
Und es gibt keine Feste Bindung, zwischen Nummer und Inhalt (Delphi legt die so an, wie er sie grade findet)


Darum verwieß ich ja auf andere Hier im Forum suchenLokalisierungsmöglichkeiten.
Es gibt ja fertige Codes, welche recht gut funktionieren.

PS: wer weiß :angel:

The_Unknown 31. Okt 2009 23:15

Re: Lokalisierungsproblem beim Modifier bei THotKey-Variante
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von himitsu
Darum verwieß ich ja auf andere Hier im Forum suchenLokalisierungsmöglichkeiten.
Es gibt ja fertige Codes, welche recht gut funktionieren.

Was meinst du da speziell?

Ich habe es jetzt übrigens nun doch so weit, dass er die entsprechenden Strings zur Laufzeit abhängig von einem Registry-Key (wo dann die Sprache hinterlegt ist) setzt. Das klappt auch soweit.
Nur die Umwandlung zurück in einen echten Shortcut will er nicht so recht machen.

Es wäre wirklich super, wenn du dir den Teil in der Komponente mal anschauen könntest. Ist ja eine seeehr kleine Datei. Danke schonmal !!!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 Uhr.

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