Topic: Как перевести контекстное меню всех таблиц?

В контекстном меню таблиц пункты имеют английские надписи:
Find, Copy cell, Copy row, Copy all, Show record.
Для перевода на русский язык этих надписей можно использовать такой скрипт:
       Frm_1.TableGrid_1.dbPopupMenu.Items.Find('Find').Caption := 'Найти';
       Frm_1.TableGrid_1.dbPopupMenu.Items.Find('Copy cell').Caption := 'Копировать значение в ячейке';
       Frm_1.TableGrid_1.dbPopupMenu.Items.Find('Copy row').Caption := 'Копировать строку';
       Frm_1.TableGrid_1.dbPopupMenu.Items.Find('Copy all').Caption := 'Копировать все строки';
       Frm_1.TableGrid_1.dbPopupMenu.Items.Find('Show record').Caption := 'Показать запись';
Но, этот скрипт работает только по конкретной таблице конкретной формы.
Каким образом можно сделать перевод контекстного меню сразу по всем таблицам всех форм?

Re: Как перевести контекстное меню всех таблиц?

В последней бета версии уже сделан перевод
https://www.dropbox.com/s/eqbkgnnacgkku … a.rar?dl=0

Dmitry.

Re: Как перевести контекстное меню всех таблиц?

Можно попробовать через CASE

Re: Как перевести контекстное меню всех таблиц?

Обращаю внимание разработчика, что если в новой бета версии оставить код самостоятельного перевода контекстного меню, например, такой: Frm_1.TableGrid_1.dbPopupMenu.Items.Find('Find').Caption := 'Найти'; то при открытии формы с таблицей выпадает ошибка:
Access violation at address 00E3A564 in module 'kp_maker.exe'. Read of address 00000000.

Re: Как перевести контекстное меню всех таблиц?

В событии OnShow вместо имени формы пиши TAForm(Sender). Сработает при условии что элементы требующие перевода далее идентичны на всех формах. И в переменное Sender хранится указатель на форму.

Re: Как перевести контекстное меню всех таблиц?

mikhail_a wrote:

Обращаю внимание разработчика, что если в новой бета версии оставить код самостоятельного перевода контекстного меню, например, такой: Frm_1.TableGrid_1.dbPopupMenu.Items.Find('Find').Caption := 'Найти'; то при открытии формы с таблицей выпадает ошибка:
Access violation at address 00E3A564 in module 'kp_maker.exe'. Read of address 00000000.

Для перевода меню используйте данный метод

procedure Form1_OnShow (Sender: TObject; Action: string);
begin
    Form1.TableGrid1.dbPopupMenu.Items[0].Caption := 'Показать запись2';
    Form1.TableGrid1.dbPopupMenu.Items[1].Caption := 'Удалить запись2';
    Form1.TableGrid1.dbPopupMenu.Items[3].Caption := 'Копировать ячейку2';
    Form1.TableGrid1.dbPopupMenu.Items[4].Caption := 'Копировать2';
    Form1.TableGrid1.dbPopupMenu.Items[5].Caption := 'Копировать все2';
    Form1.TableGrid1.dbPopupMenu.Items[7].Caption := 'Найти2';
end;
Dmitry.