Столькнулся с такой проблемой в коде, которую не могу решить.
Описание системы:
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, методы и переменные стопроцентов существуют и даже Лазарус их находит по щелчку мыши.
Может кто-нибудь подсказать, что я делаю не так? Вероятно нужны какие либо специфические дефайны для использования таких методов и переменных?