Czy w MessageDlg da się zastąpić standardowe teksty (opis okienka 'Confirm' oraz opisy buttonów 'Yes', 'No') własnymi? Jeśli tak, to jak to się robi?
0
0
A poszukać się chce ?
Bodajże w pliku "const.pas" jest to zdefiniowane.
0
Inna metoda to używać MessageBoxów, te zawsze będą mieć przyciski w języku systemu, a i ich wygląd będzie zależał od tego jakie kompozycje są w systemie. Jeżeli jednak wolisz MessageDlg to mozna jak pisał poprzednik korzystać z przetłumaczonego consts.pas albo z CreateMessageDialog.
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;
0
Dziękuję. Mniej więcej sobie powinienem teraz poradzić.
(Z tym nieużywaniem prefiksów też postaram się pamiętać).