Nevíte jak udělat MessageDlg česky?Jde o to, aby se místo názvu YES,NO,Cancel v buttonu v MessageDlg zobrazilo např. ANO, NE. Prostě česky. Nechtěl bych to, pokud je to možné řešit pomocí dalšího Formuláře, ale třeba pomocí jiného Message se třemi buttony.
Děkuji
Petr
Fórum › Delphi
MessageDlg česky?
Já to mám řešený přímo v unitě Dialogs.pas
mám nadefinováno:
Hlavicky: array[TMsgDlgType] of string = ('Varování', 'Chyba',
'Informace', 'Volba','');
ButtonNames: array[TMsgDlgBtn] of string = (
'Ano', 'Ne', 'OK', 'Storno', 'Abort', 'Opakuj', 'Ignorovat', 'Všechny', 'Ne všem','Ano všem','Pomoc');
CaptionNames: array[TMsgDlgBtn] of string = (
'&Ano', '&Ne', '&OK', '&Storno', '&Ano', '&Opakuj', '&Ignorovat', '&Všechny','&Ne všem','&Ano všem', '&Pomoc');
Dále pak je přepsán původní kód "LoadResString(Captions[DlgType])" na Caption := Hlavicky[DlgType] a "LoadResString(ButtonCaptions[B])" na Caption := CaptionNames[B];
Pro multilang aplikace to má nevýhodu,že budou popisy vždy česky.
Existují i jiná řešení
Děkuji,děkuji.
Já se tedy přiznám, že s tímto postupem trochu bojuji. Ještě holt nejsem v delphi takový profík. Skromně se zeptám, zda by nebyl jaksi jednodušší postup? A nebo ten předchozí návod "srozumitelněji" popsán i pro amatéra jako jsem já? :) Pokud to nelze jinak, budu s tím bojovat dál a snad na to příjdu ;)
Děkuji
Petr
Jiný způsob-definování svého dialogu
v sekci type nadeklarovat tuto funkci
function MujMessageDlg(const Title:String; const Msg:String; DlgType:TMsgDlgType; Buttons:TMsgDlgButtons; DefButton:Integer; HelpCtx:Longint; X,Y:Integer): Integer;
a v sekci implementation ji nadefinovat (Pokud se tedy pracuje s Form1-jinak tam dát název hlavního formuláře)
function TForm1.MujMessageDlg(const Title:String; const Msg:String; DlgType:TMsgDlgType; Buttons:TMsgDlgButtons;DefButton:Integer; HelpCtx:Longint; X,Y:Integer): Integer;
var cnt : Integer;
btn : TButton;
begin
with CreateMessageDialog(Msg, DlgType, Buttons) do
try
Caption := Title;
HelpContext := HelpCtx;
Left := X;
Top := Y;
{Font.Color := clRed; //tyto hodnoty jsou uvedeny jako poznámky pokud by jsi
// chtěl měnit barvu,velikost fontu atd. tak
//vymazat složené závorky
Font.Size := 7;
Font.Style := [fsBold];
Font.Color := clRed;
Font.Name := 'Verdana';}
for Cnt := 0 to ComponentCount - 1 do
begin
if Components[Cnt] is TButton then
begin
Btn:= TButton(Components[Cnt]);
Btn.Default := Btn.ModalResult = DefButton;
if Btn.Caption = '&Yes' then Btn.Caption := '&Ano';
if Btn.Caption = '&No' then Btn.Caption := '&Ne';
if Btn.Caption = 'Cancel' then Btn.Caption := '&Storno';//'Zavří&t';
if Btn.Caption = '&Abort' then Btn.Caption := '&Ukončit';
if Btn.Caption = '&Retry' then Btn.Caption := '&Znovu';
if Btn.Caption = '&Help' then Btn.Caption := 'Nápově&da';
if Btn.Caption = '&All' then Btn.Caption := '&Vše';
if Btn.Caption = '&Ignore' then Btn.Caption := '&Ignorovat';
if Btn.Default then ActiveControl := Btn;
end;
end;
Result := ShowModal;
finally
free;
end;
end;
a tady je použití při klikutí na Button1
procedure TForm1.Button1Click(Sender: TObject);
begin
if MujMessageDlg('Náze okna', 'Zpráva co? ', mtConfirmation, [mbYes,mbNo], mrYes, 0,Form1.Left+100,Form1.Top+50) = mrYes then
begin
co se má provést (příkazy);
end;
end;
Název okna - to co bude napsáno v hlavičce zprávy
Zpráva co? - text zprávy
mtConfirmation-jaká bude ikonka u zprávy (tady je otazník) další možné jsou
mtInformation (vykřičník)
mtError (křížek)
[mbYes,mbNo] - tlačítka Ano Ne (je možné tam dát samozřejmě i ta ostatní nadefinovaná)
mrYes - defaultní tlačítko (na kterém je po objevení zprávy fokus)
0 - žádný help
Form1.Left+100,Form1.Top+50 - levý horní roh zprávy bude na pozici 100 pixelů nalevo a 50 níže než levý horní roh hlavního formuláře
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Free RS česky — založil fuha
Datum česky — založil Pavel
ICQ konečně česky — založil DeaLer
Z apache na cesky-hosting — založil eda
Datum a čas - český — založil Lighter