Ovo je bas elegenatno, ali primenljivo samo na Yes, No, Ignore, Yes to all, i slicne dijaloge.
Drugo resenje - mozes da prevedes Consts.pas i DBConsts.pas (zapravo sve *consts.pas), prekompajliras i sve sto si preveo ces imati u programu.
Trece resenje je runtime zamena resurasa ali je komplikovana i moze da se radi samo na resursima koji poticu is ovih *Consts.pas fajlova.
Code:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Consts {mora da se ukljuci}, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
end;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
MessageDlg('asdf', mtError, [mbOK, mbYesToAll, mbNo, mbNoToAll, mbIgnore], 0);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
tmpInt : integer;
NewText1, NewText2: string;
begin
NewText1 := 'asdfasdf';
NewText2 := 'zxcvzxcv';
VirtualProtect(@SMsgDlgOK, sizeof(PResStringRec), PAGE_EXECUTE_READWRITE, @tmpInt);
PResStringRec(@SMsgDlgOK).Identifier := Integer(PChar(NewText1));
VirtualProtect(@SMsgDlgOK, sizeof(PResStringRec), tmpInt, @tmpInt);
VirtualProtect(@SMsgDlgYesToAll, sizeof(PResStringRec), PAGE_EXECUTE_READWRITE, @tmpInt);
PResStringRec(@SMsgDlgYesToAll).Identifier := Integer(PChar(NewText2));
VirtualProtect(@SMsgDlgYesToAll, sizeof(PResStringRec), tmpInt, @tmpInt);
end;
end.
Cetvrto resenje je upotreba API funkcija za zamenu resurasa (Srki_82 ih je naveo u slicnoj raspravi, pretrazi forum). Ovim funkcijama menjas vec kompajliran program i po meni nije prakticno.
Peto i najkompletnije resenje (a i moj favorit) je instalacija srpskog interfejsa.
[Ovu poruku je menjao obucina dana 02.02.2006. u 16:22 GMT+1]