Thema: Delphi TBitBtn.Kind und Sprache

Einzelnen Beitrag anzeigen

Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.490 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: TBitBtn.Kind und Sprache

  Alt 10. Okt 2013, 16:18
Ich mache das so:
Delphi-Quellcode:
var
   StringPointerList : array of Pointer;

{$WARNINGS OFF}
procedure CleanStringPointerList;
var
   i : integer;
begin
   for i := Low(StringPointerList) to High(StringPointerList) do
   begin
      // Uiii... prüfen auf memoryleak in > 2009
      StrDispose(PAnsiChar(StringPointerList[i]));
   end;
   SetLength(StringPointerList, 0);
end;

procedure HookResourceString(ResStringRec: pResStringRec; NewStr: PChar);
var
  OldProtect: DWORD;
begin
  VirtualProtect(ResStringRec, SizeOf(ResStringRec^), PAGE_EXECUTE_READWRITE, @OldProtect);
  ResStringRec^.Identifier := Integer(NewStr);
  VirtualProtect(ResStringRec, SizeOf(ResStringRec^), OldProtect, @OldProtect);
end;

procedure SetSysResStr(AConstant : Pointer; const AConstantName : string);
var
   p : PChar;
begin
   // Das ggf. an die benutzte Delphi-Version anpassen
   {$IFDEF VER250}
   p := StrNew(PWideChar(LocalizerOnFly.GetTraslatedRS(AConstantName)));
   {$ELSE}
   p := StrNew(PChar(WideStringToString(LocalizerOnFly.GetTraslatedRS(AConstantName),0)));
   {$ENDIF}
   SetLength(StringPointerList, High(StringPointerList)+2);
   StringPointerList[High(StringPointerList)] := p;
   HookResourceString(AConstant, p);
end;

finalization
   CleanStringPointerList;
Und Aufruf dann
SetSysResStr(@SMsgDlgError, 'SMsgDlgError'); Wenn Du etwas anderes als Localizer einsetzt, kannst Du das LocalizerOnFly.GetTraslatedRS(AConstantName) entsprechend abändern und z.b. den Text als Konstante reingeben
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat