Читать «Виртуальная библиотека Delphi» онлайн - страница 112

Unknown

{ Этот Beep сигнализирует вообще об открытии меню }

  MessageBeep(MB_ICONASTERISK);

{ А зтот Beep - только о выборе в меню нового Item }

  if M.Menu = MainMenu1.Handle then MessageBeep(MB_ICONASTERISK);

end;

end.

Разное

1. Передача переменной в отчет ReportSmith.

Следующий код показывает, как передать переменную в отчет.

В примере строковой переменной отчета 'City' присваивается значение 'Bombey'. Подразумевается, что есть готовый отчет с данной переменной. Поместите компонент TReport на форму и установите требуемые свойства для вызова печати отчета. Напишите обработчик OnClick для кнопки Button1 на форме (кнопка — для простоты):

procedure TForm1.Button1Click(Sender: TObject);

begin

  Report1.InitialValues.Clear;

  Report1.InitialValues.Add('@City=<Bombey>');

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

function DelphiLoaded: Boolean;

  function WindowExists(ClassName, WindowName: string): Boolean;

  var

    PClassName, PWindowName: PChar;

    AClassName, AWindowName: array [0..63] of Char;

  begin

    if ClassName = '' then PClassName := nil