FPC: 2.4.1
Появилась необходимость добавить пункт в меню. Пишу следующий код:
- Код: Выделить всё
function GetReportsList(sqltrans:TSQLTransaction;sqlquery:TSQLQuery):fields;
var
sl:TStringList;
ItemName:string;
begin
if not sqltrans.Active then
sqltrans.StartTransaction;
sqlquery.SQL.Text:='select p.* from "GetReportsList" p';
sqlquery.Open;
sl:=TStringList.Create;
while not sqlquery.EOF do
begin
ItemName:=sqlquery.FieldByName('ReportName').Text;
sl.Add(ItemName);
sqlquery.Next;
end;
sqlquery.Close;
sqltrans.Commit;
GetReportsList:=sl;
sl.Free;
end;
- Код: Выделить всё
procedure TfmMain.SelectReport(Sender: TObject);
var
mi: TMenuItem;
ReportName: string;
begin
mi:=Sender as TMenuItem;
ReportName:=mi.Caption;
ureports.CreateReport(fbtrans,fbquery,ReportName);
ureports.ShowReport(fmPreview.htmlPreview);
fmPreview.ShowModal;
end;
- Код: Выделить всё
procedure TfmMain.ReportList(MenuItem:TMenuItem);
var
mi: TMenuItem;
sl: TStringList;
i: integer;
begin
sl:=TStringList.Create;
sl:=ureports.GetReportsList(fbtrans,fbquery);
for i:=0 to sl.Count-1 do
begin
mi:=TMenuItem.Create(MenuItem);
try
mi.Caption:=sl.Strings[i];
//mi.OnClick:=SelectReport;
MenuItem.Add(mi);
finally
mi.Free;
end;
end;
sl.Free;
end;
Возникли следующие вопросы:
1. Закомментированная строка //mi.OnClick:=SelectReport; выдает ошибку Hint: Found declaration: TfmMain.SelectReport(TObject);.
2. При подключении к базе программа валится с ошибкой на External: SIGSEGV.
Искал в гугле по запросу "Добавление MenuItem в Lazarus", дельного ничего не нашел.