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

Unknown

Пример:

uses Printers, CommDlg;

procedure TForm1.Button1Click(Sender: TObject);

var

 cf : TChooseFont;

 lf : TLogFont;

 tf : TFont;

begin

 if PrintDialog1.Execute then begin

  GetObject(Form1.Canvas.Font.Handle, sizeof(lf),@lf);

  FillChar(cf, sizeof(cf), #0);

  cf.lStructSize := sizeof(cf);

  cf.hWndOwner := Form1.Handle;

  cf.hdc := Printer.Handle;

  cf.lpLogFont := @lf;

  cf.iPointSize := Form1.Canvas.Font.Size * 10;

  cf.Flags := CF_BOTH or CF_INITTOLOGFONTSTRUCT or CF_EFFECTS or CF_SCALABLEONLY or CF_WYSIWYG;

  cf.rgbColors := Form1.Canvas.Font.Color;

  if ChooseFont(cf) <> false then begin

   tf := TFont.Create;

   tf.Handle := CreateFontIndirect(lf);

   tf.COlor := cf.RgbColors;

   Form1.Canvas.Font.Assign(tf);

   tf.Free;

   Form1.Canvas.TextOut(10, 10, 'Test');

  end;

 end;

end;

Вопрос:

Как сменить дисковод, откуда MediaPlayer проигрывает аудио CD?

Ответ:

См. пример.

Пример:

MediaPlayer1.FileName := 'E:';

Вопрос:

Как убрать кнопку с названием моей программы из Панели Задач(Taskbar)?

Ответ:

Ваш файл проекта должен выглядеть приблизительно так:

program Project1;

uses Windows, Forms, Unit1 in 'Unit1.pas' {Form1}, Unit2 in 'Unit2.pas' {Form2};

{$R *.RES}

begin

 Application.Initialize;

 Application.ShowMainForm := False;

 Application.CreateForm(TForm1, Form1);

 Application.CreateForm(TForm2, Form2);

 ShowWindow(Application.Handle, SW_HIDE);

end.

В разделе "initialization" (в самом низу) каждого unit'а добавьте

begin

 ShowWindow(Application.Handle, SW_HIDE);

end.

Вопрос:

Как преобразовать цвета в строку — название цвета VCL?

Ответ:

Модуль graphics.pas содержит функцию ColorToString() которое преобразует допустимое значение TColor в его строковое представление используя либо константу — название цвета (по возможности) либо шестнадцатиричную строку. Обратная функция — StringToColor()

Пример:

procedure TForm1.Button1Click(Sender: TObject);

begin

 Memo1.Lines.Add(ColorToString(clRed));

 Memo1.Lines.Add(IntToStr(StringToColor('clRed')));

end;

Вопрос:

При показе максимизированной формы она перекрывает task bar и не выравнивается по верху экрана. В чем тут дело?

Ответ:

Это может произойти когда свойство position формы установленно в poScreenCenter. Установите position = poDefault.

Вопрос:

Как заставить TEdit не 'пикать' при нажатии недопустимых клавиш?

Ответ:

Перехватите событие KeyPress и установите key = #0 для недопустимых клавиш.

Пример:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

 if ((UpCase(Key) < 'A') or (UpCase(Key) > 'Z')) then Key := #0;