end;
implementation
{$R *.RES}
procedureTForm1.WMMenuSelect( varM: TWMMenuSelect);
begin
inherited;
{ Этот Beep сигнализирует вообще об открытии меню }
MessageBeep(MB_ICONASTERISK);
{ А зтот Beep - только о выборе в меню нового Item }
ifM.Menu = MainMenu1.Handle thenMessageBeep(MB_ICONASTERISK);
end;
end.
1. Передача переменной в отчет ReportSmith.
Следующий код показывает, как передать переменную в отчет.
В примере строковой переменной отчета 'City' присваивается значение 'Bombey' . Подразумевается, что есть готовый отчет с данной переменной. Поместите компонент TReport на форму и установите требуемые свойства для вызова печати отчета. Напишите обработчик OnClick для кнопки Button1 на форме (кнопка — для простоты):
procedureTForm1.Button1Click(Sender: TObject);
begin
Report1.InitialValues.Clear;
Report1.InitialValues.Add( '@City=');
Report1.Run;
end;
2. Как получить русские буквы в DBD?
Имя шрифта для отображения русских букв берется из файла PDOXWIN.INI секция [Properties] строка SystemFont. Если очень хочется, то можно исправить имя 'PDOXWIN.INI' на 'DBD.INI' в файле DBSRV.DLL (он лежит там же где и DBD.EXE) по смещению $E9D8 (не забудьте после 'DBD.INI' поставить шестнадцатеричный ноль), и в секции [Properties] файла DBD.INI добавить строку типа
SystemFont = Courier New Cyr
По умолчанию имя фонта для отображения русских букв — Arial.
Действительно, если у Вас Pan Euro или русская версия Windows95, то DBD не будет показывать шрифты Cyr в Preferences/General/Default system font.
Решить эту проблему можно двумя способами:
1. записать в каталог WINDOWS/FONTS шрифты Arial Cyr от русских Windows и сделать ShutDown. После загрузки Arial Cyr будет доступен для выбора.
2. поменять шрифт в Registry вручную например на MS Sans Serif - HKEY_CURRENT_USER/SOFTWARE/Borland/DBD/7.0/Preferences/Propertiesключ SystemFont.
3. Как печатать отчеты из приложения Delphi без использования ReportSmith?
1. Лучше всего использовать специализированные генераторы отчетов в виде компонентов, например QuickReport или Ace Reporter.
2. Можно использовать печать формы, например: Form1.Print .
3. Можно использовать свойство Canvas объекта Printer .
4. Как узнать количество точек на дюйм для принтера?
VertPixelsPerInch := GetDeviceCaps(Printer.Handle, LogPixelsX);
HorzPixelsPerInch := GetDeviceCaps(Printer.Handle, LogPixelsY);
5. Как определить, приложение запущено из под Delphi IDE или как отдельный файл?
Для этого следует проверить существование определенных окон:
Delphi 1.0
functionDelphiLoaded: Boolean;
functionWindowExists(ClassName, WindowName: string): Boolean;
var
PClassName, PWindowName: PChar;
AClassName, AWindowName: array[0..63] ofChar;
begin
ifClassName = '' thenPClassName := nil
elsePClassName := StrPCopy(@AClassName[0], ClassName);
ifWindowName = ''then PWindowName := nil
elsePWindowName := StrPCopy(@AWindowName[0], WindowName);
Result := FindWindow(PClassName, PWindowName) <> 0;
end;
begin
Result := WindowExists( 'TPropertyInspector', 'Object Inspector')
andWindowExists( 'TMenuBuilder', 'Menu Designer')
andWindowExists( 'TApplication', 'Delphi')
andWindowExists( 'TAlignPalette', 'Align')
andWindowExists( 'TAppBuilder', '');
end;
Delphi 2.0
functionDelphiLoaded: Boolean;
functionWindowExists(ClassName, WindowName: string): Boolean;
begin
Result := FindWindow(PChar(ClassName), PChar(WindowName)) <> 0;
end;
begin
Result := WindowExists( 'TPropertyInspector', 'Object Inspector')
andWindowExists( 'TMenuBuilder', 'Menu Designer')
andWindowExists( 'TApplication', 'Delphi')
andWindowExists( 'TAlignPalette', 'Align')
andWindowExists( 'TAppBuilder', '');
end;
Другой вариант для Delphi 1.0, работает только в EXE файлах (не в DLL).
functionInIDE: Boolean;
begin
Читать дальше