Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.11;
Скачать: CL | DM;

Вниз

TAction   Найти похожие ветки 

 
Михаил. Т   (2003-08-29 16:16) [0]

Я пишу программу где есть возможность переключения между языками. Мне нужно при определенных условиях присваивать всем Action на форме тот же Caption, что и у пункта меню которому назначен этот Action. Делаю примерно так.

Function GetMenuItemFromAction(Action:TAction):TMenuItem;
var
i:integer;
begin
for i:=0 to FrmEditor.ComponentCount-1 do
begin
if FrmEditor.Components[i] is TMenuItem then
begin
if Not (TMenuItem(FrmEditor.Components[i]).Action=nil) And (TMenuItem(FrmEditor.Components[i]).Action.Name=Action.Name) then
result:=TMenuItem(FrmEditor.Components[i]);
end;
end;
end;

Функция возвращает опреденный пункт в соответствии с Action.

А вот так я делаю при смене языков.

for i:=0 to FrmEditor.ComponentCount-1 do
begin
if FrmEditor.Components[i] is TAction then
begin
TAction(FrmEditor.Components[i]).Caption:=GetMenuItemFromAction(TActio n(FrmEditor.Components[i])).Caption;
End;

Вроде должно работать, но вылезает Access violation. Подскажите, что я делаю не так.


 
don-do   (2003-08-29 16:31) [1]

Не знаю что ты задумал.
но это лажа
TMenuItem(FrmEditor.Components[i]).Action.Name=Action.Name
=> TMenuItem(FrmEditor.Components[i]).Action=Action
да и при присвоении TMenuitem.Action Caption меню становиться равным Action.Caption
Так что тебе достаточно поменять Action.Caption, а остальное сделает за тебя Delphi.


 
Михаил. Т   (2003-08-29 16:41) [2]

> TMenuItem(FrmEditor.Components[i]).Action=Action
Я пробовал. Тот же результат.

> да и при присвоении TMenuitem.Action Caption меню становиться > равным Action.Caption

Мне не надо присваивать TMenuitem.Action. Мне надо присваивать Action"у Caption, который я читаю из некоего файла.


 
don-do   (2003-08-29 16:46) [3]

Дык и присваивай, зачем меню-то искать.


 
Михаил. Т   (2003-08-29 16:55) [4]

> Дык и присваивай, зачем меню-то искать.

Читай внимательно вопрос. Там написано "присваивать всем Action на форме". Именно всем, а не одному известному.


 
Vlad   (2003-08-29 16:56) [5]

> if Not (TMenuItem(FrmEditor.Components[i]).Action=nil) And (TMenuItem(FrmEditor.Components[i]).Action.Name=Action.Name)
Вот когда Action=nil, тогда и будет Access Violation на этой строчке


 
Михаил. Т   (2003-08-29 17:15) [6]

Это я уже давно сделал. А вообще все уже работает. Просто функция немного корявой была. Вот так надо:

Function GetMenuCaptionFromAction(Action:TAction):String;
var
i:integer;
begin
for i:=0 to FrmEditor.ComponentCount-1 do
begin
if FrmEditor.Components[i] is TMenuItem then
begin
if Not (TMenuItem(FrmEditor.Components[i]).Action=nil) And (TMenuItem(FrmEditor.Components[i]).Action=Action)then
Result:=TMenuItem(FrmEditor.Components[i]).Caption;
end;
end;
end;

И соответственно:

for i:=0 to FrmEditor.ComponentCount-1 do
begin
if FrmEditor.Components[i] is TAction then
begin
TAction(FrmEditor.Components[i]).Caption:=GetMenuCaptionFromAction(TAc tion(FrmEditor.Components[i]));
end;
end;

Но все равно, спасибо.



Страницы: 1 вся ветка

Текущий архив: 2003.09.11;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.008 c
14-33792
Шерлок Холмс
2003-08-21 00:59
2003.09.11
Спать охота.


14-33776
Soft
2003-08-23 13:39
2003.09.11
ИСПОВЕДЬ ХЭККЕРА


3-33454
mOOx_
2003-08-21 12:20
2003.09.11
Событие на коннект


4-33838
Jungle
2003-07-13 01:12
2003.09.11
Как заблокировать доступ к диску (логическому или физическому)


3-33458
zzzrrv
2003-08-21 09:51
2003.09.11
Индексирование Dbf





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский