Ошибка в statusbar
Прога должна связываться с бд и выводить инфу оттуда. В строке TStatusBar.Panels[1].Text := IntToStr(dstBrigades.RecordCount); пишет ошибку при запуске [DCC Error] main030.pas(49): E2233 Property 'Panels' inaccessible here.
По идее в этой строке вместо TStatusBar должно быть написано StatusBar1, но когда так пишу то он подчеркивает эту строку и пишет ошибку "Неопределенный идентификатор".
Как это исправить? Пишу на Delphi7
unit main030;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DM, Grids, DBGrids, StdCtrls, Menus, ComCtrls, ExtCtrls, ActnList;
type
TfmMain = class(TForm)
Panel1: TPanel;
MainMenu1: TMainMenu;
mFile: TMenuItem;
mRefresh: TMenuItem;
mExit: TMenuItem;
buRefresh: TButton;
buExit: TButton;
DBGrid1: TDBGrid;
StatusBar1: TStatusBar;
// procedure mFileClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
end;
var
fmMain: TfmMain;
implementation
{$R *.dfm}
procedure FormShow(Sender: TObject);
begin
//Открыть базу данных
with DM.Datamodule1 do
begin
//Устанавливаем связь с базой данных
dbBrigades.Connected := True;
//Активизируем запрос
dstBrigades.Active := True;
//Выводим количество записей в таблице
TStatusBar.Panels[1].Text := IntToStr(dstBrigades.RecordCount);
end;
end;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
begin
with DM.Datamodule1 do
begin
//Запрос закрывается.
dstBrigades.Active := False;
//Закрываем связь с базой данных
dbBrigades.Connected := False;
end;
end;
end.
Ответы (2 шт):
Уберите из кода все рукописные артефакты (если наворотили слишком много, то лучше начать новый проект), в частности:
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
...
procedure FormShow(Sender: TObject);
begin
//Открыть базу данных
with DM.Datamodule1 do
begin
//Устанавливаем связь с базой данных
dbBrigades.Connected := True;
//Активизируем запрос
dstBrigades.Active := True;
//Выводим количество записей в таблице
TStatusBar.Panels[1].Text := IntToStr(dstBrigades.RecordCount);
end;
end;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
begin
with DM.Datamodule1 do
begin
//Запрос закрывается.
dstBrigades.Active := False;
//Закрываем связь с базой данных
dbBrigades.Connected := False;
end;
end;
Выберите форму в дизайнере, слева в инспекторе объектов перейдите на вкладку Events, щёлкните даблкликом на OnShow и OnClose - создадутся заготовки методов
Впишите нужный код
В секции implementation вместо
procedure FormShow(Sender: TObject);
должно быть
procedure TfmMain.FormShow(Sender: TObject);
Это метод класса TfmMain, а не процедура.
Тогда и ошибка "Неопределенный идентификатор" пропадет, т.к. StatusBar1 - член класса TfmMain и доступен из всех его методов.