Столькнулся с такой проблемой в коде, которую не могу решить.
Описание системы:
Ubuntu 14.04, Lazarus 1.6, FPC 3.0, x86_64-linux-gtk2.
Есть вспомогательный класс T_Global, располагающийся в модуле U_Globals.pas. В нем описаны всякие вспомогательные методы, требующиеся один раз где-либо в специфическом коде или наоборот, в нескольких других классах. Так же использую его для хранения глобальных переменных.
- Код: Выделить всё
- unit U_Globals;
 {$mode objfpc}{$H+}
 type
 { T_Global }
 T_Global = class
 public
 class function getWorkDir: String;
 class function getIniFileName:String;
 class function getTransFileName(const aLng: String):String;
 class function getNameFromClassName(Obj:TObject):String;
 class function isFileReadOnly(const aFileName:String): Boolean;
 class function makeMenuItem(const aOwner:TComponent; const aAction: TAction): TMenuItem;
 end;
 .......
И вот, при использовании внутри другого метода объекта возникает ошибка:
- Код: Выделить всё
- u_projectsform.pas(411,19) Error: identifier idents no member "makeMenuItem"
хотя код в этом модуле очень даже безобидный
- Код: Выделить всё
- ...
 with T_Global do
 begin
 M := T_Global.makeMenuItem(Self, newProject);
 //makeMenuItem(Self, newProject);
 pm_lvProj.Items.Add(M);
 M := T_Global.makeMenuItem(Self, editProject);
 pm_lvProj.Items.Add(M);
 M := T_Global.makeMenuItem(Self, copyProject);
 pm_lvProj.Items.Add(M);
 M := T_Global.makeMenuItem(Self, deleteProject);
 pm_lvProj.Items.Add(M);
 pm_lvProj.Items.Add(T_Global.makeMenuItem(Self, nil));
 M := T_Global.makeMenuItem(Self, connectDB);
 pm_lvProj.Items.Add(M);
 M := T_Global.makeMenuItem(Self, disconnectDB);
 pm_lvProj.Items.Add(M);
 lv_Prj.PopupMenu := pm_lvProj;
 end;
 ....
При этом модуль описан в секции uses, методы и переменные стопроцентов существуют и даже Лазарус их находит по щелчку мыши.
Может кто-нибудь подсказать, что я делаю не так? Вероятно нужны какие либо специфические дефайны для использования таких методов и переменных?



