Witam,
próbowałem spolszczyć komunikaty i podtawowe przyciski, YES/NO/CANCEL
w tym celu dokonałem edycji pliku Consts.pas, niestety w kompilowanych programach w zapytaniach przyciski mrYes itp dalej mam po ang.
Co mogłem zrobić źle?
Witam,
próbowałem spolszczyć komunikaty i podtawowe przyciski, YES/NO/CANCEL
w tym celu dokonałem edycji pliku Consts.pas, niestety w kompilowanych programach w zapytaniach przyciski mrYes itp dalej mam po ang.
Co mogłem zrobić źle?
consts.pas jest kompilowane do consts.dcu, tylko pytanie w ktorym momencie?
moze zmieniles w pas a dcu wciaz jest "po staremu"...?
Pytanie tez czy na pewno to siedzi w const? bo np teksty przyciskow komunikatow siedza w dialogs, przynajmniej na d7.
Do pytającego. Teksty podstawowych komunikatów oraz etykiety przycisków jak i tytuły okienka dla
MessageDlg faktycznie siedzą w consts.dcu i można kiedyś było pobrać ten plik po polsku, o ile mnie
pamięć nie myli z polskiej strony borlanda. Jednak jeżeli zależy Tobie tylko na spolszczeniu tego, co
znajduje się na MessageDlg to skorzystaj z funkcji CreateMessageDialog, poniżej przykładowy kod.
EDIT: teraz doczytałem że chodzi o Delphi 2010, bo w Delphi 7 nie bylo problemo z tym, jednak co
do spolszczenia nazw przycisku czy tytułu komunikatu to polecam zastosować opisaną tutaj metodę.
//...
procedure TMainForm.FormCreate(Sender: TObject);
begin
Application.Title := MainForm.Caption;
MainForm.Position := poScreenCenter;
MainForm.ActiveControl := ShowMsgDlgButton;
end;
procedure TMainForm.FormActivate(Sender: TObject);
begin
ShowWindow(Application.Handle, SW_HIDE);
end;
procedure TMainForm.CBXOnClick(Sender : TObject);
begin
with Sender as TCheckBox do
begin
if Checked then
begin
ShowMessage('Zaznaczyłeś');
end
else
begin
ShowMessage('Odznaczyłeś');
end;
end;
end;
procedure TMainForm.ShowMsgDlgButtonClick(Sender: TObject);
var
Dlg : TForm;
CBX : TCheckBox;
begin
Dlg := CreateMessageDialog('Czy na pewno chcesz zamknąć program?',
mtConfirmation, [mbYes, mbNo]);
Dlg.Caption := Application.Title;
Dlg.BorderIcons := [];
Dlg.Height := 130;
Dlg.ActiveControl := TButton(Dlg.FindComponent('Yes'));
TImage(Dlg.FindComponent('Image')).Picture.Assign(Application.Icon);
TButton(Dlg.FindComponent('Yes')).Caption := 'Tak';
TButton(Dlg.FindComponent('No')).Caption := 'Nie';
TButton(Dlg.FindComponent('Yes')).Top := 70;
TButton(Dlg.FindComponent('No')).Top := 70;
CBX := TCheckBox.Create(Dlg);
CBX.Parent := Dlg;
CBX.Caption := 'Zawsze pytaj';
CBX.Left := (Dlg.Width - CBX.Width) div 2;
CBX.Top := 40;
CBX.Checked := False;
CBX.OnClick := CBXOnClick;
Dlg.ShowModal;
case Dlg.ModalResult of
mrYes : begin
Caption := 'Tak';
end;
mrNo : begin
Caption := 'NIE';
end;
end;
if CBX.Checked then
begin
Caption := Caption + #32 + '- Zaznaczony';
end
else
begin
Caption := Caption + #32 + '- Odznaczony';
end;
end;
olesio napisał(a):
EDIT: teraz doczytałem że chodzi o Delphi 2010, bo w Delphi 7 nie bylo problemo z tym, jednak co
do spolszczenia nazw przycisku czy tytułu komunikatu to polecam zastosować opisaną tutaj metodę.
O masakra... ładny WTF ten kod.
Jak tak ma wyglądać odpalenie prostego dialogu to ja przepraszam.
A wystarczy użyć zamiast MessageDlg
funkcji Application.MessageBox
.
Albo funkcje MessageBox*
z modułu Windows
i ma się wszystkie dialogi w aplikacji w języku pod jakim pracuje Windows.
Czyli jeszcze lepiej, imo...
coder-bis napisał(a):
Odświeżam watek:
Jak zabrać się za spolszczenie komunikatów/klawiszy w najnowszej wersji Delphi: Tokyo?
Tam juz nie ma nawet pliku consts.pas ...
OK, doszedłem jak to zrobić, i zostawiam dla potomności:
coder-bis napisał(a):
Odświeżam watek:
Jak zabrać się za spolszczenie komunikatów/klawiszy w najnowszej wersji Delphi: Tokyo?
To jeszcze tego nie ogarnęli?
coder-bis napisał(a):
OK, doszedłem jak to zrobić, i zostawiam dla potomności:
A zadziała to przy kompilacji z BPLami?
Azarien napisał(a):
coder-bis napisał(a):
Odświeżam watek:
Jak zabrać się za spolszczenie komunikatów/klawiszy w najnowszej wersji Delphi: Tokyo?
To jeszcze tego nie ogarnęli?
Przecież to Delphi. A ja spytam, co gdy będzie trzeba wiele wersji językowych aplikacji? Powinno to siedzieć w zasobach, a nie hardkorowany string. A zasoby dla różnych języków, tak to przecież działa w całym systemie Windows
@kulson Zasoby przed utworzeniem pliku wykonywalnego są tak samo kompilowane RC do RES więc można porównać kompilację PAS do DCU wiec po prostu weź nie pier*. Poza tym tu chodzi o standardowe komunikaty błędów itp w praktyce nic co rzeczywiście komuś potrzebne po polsku ale po hejtować zawsze można.
Co do wielu wersji językowych Delphi od nie pamiętam kiedy ma do tego narzędzie choć go nie lubię.
kulson napisał(a):
Azarien napisał(a):
coder-bis napisał(a):
Odświeżam watek:
Jak zabrać się za spolszczenie komunikatów/klawiszy w najnowszej wersji Delphi: Tokyo?
To jeszcze tego nie ogarnęli?
Przecież to Delphi.
No i?
A ja spytam, co gdy będzie trzeba wiele wersji językowych aplikacji?
Co ma być?
Języki można przełączyć dynamicznie, a rozwiązań do tego jest od metra.
Od wbudowanego i opartego na resourcestring
po wiele customowych.
Powinno to siedzieć w zasobach, a nie hardkorowany string. A zasoby dla różnych języków, tak to przecież działa w całym systemie Windows
I tak można to zrobić.
A to, że ktoś nie wie jak, to nie wina Delphi.
Prawda hate-boy?
somedev