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

Unknown

begin

 {Get the state of the caps lock key}

 flag := not GetKeyState(VK_CAPITAL) and 1 = 0;

 {If the caps lock key is on then turn it off}

 if flag then SimulateKeystroke(VK_CAPITAL, 0);

 for i := 1 to Length(s) do begin

  w := VkKeyScan(s[i]);

  {If there is not an error in the key translation}

  if ((HiByte(w) <> $FF) and (LoByte(w) <> $FF)) then begin

   {If the key requires the shift key down - hold it down}

   if HiByte(w) and 1 = 1 then SimulateKeyDown(VK_SHIFT);

   {Send the VK_KEY}

   SimulateKeystroke(LoByte(w), 0);

   {If the key required the shift key down - release it}

   if HiByte(w) and 1 = 1 then SimulateKeyUp(VK_SHIFT);

  end;

 end;

 {if the caps lock key was on at start, turn it back on}

 if flag then SimulateKeystroke(VK_CAPITAL, 0);

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

 {Toggle the cap lock}

 SimulateKeystroke(VK_CAPITAL, 0);

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

 {Capture the entire screen to the clipboard}

 {by simulating pressing the PrintScreen key}

 SimulateKeystroke(VK_SNAPSHOT, 0);

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

 {Capture the active window to the clipboard}

 {by simulating pressing the PrintScreen key}

 SimulateKeystroke(VK_SNAPSHOT, 1);

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

 {Set the focus to a window (edit control) and send it a string}

 Application.ProcessMessages;

 Edit1.SetFocus;

 SendKeys('Delphi Is RAD!');

end;

Вопрос:

Я загружаю TImageList динамически. Как сделать картинки из TImageList прозрачными?

Ответ:

См. ответ.

Пример:

procedure TForm1.Button1Click(Sender: TObject);

var

 bm : TBitmap;

 il : TImageList;

begin

 bm := TBitmap.Create;

 bm.LoadFromFile('C:\DownLoad\TEST.BMP');

 il := TImageList.CreateSize(bm.Width,bm.Height);

 il.DrawingStyle := dsTransparent;

 il.Masked := true;

 il.AddMasked(bm, clRed);

 il.Draw(Form1.Canvas, 0, 0, 0);

 bm.Free;

 il.Free;

end;

Вопрос:

Как заставить TMediaPlayer проигрывать одно и тоже бесконечно? AVI например?

Ответ:

В примере AVI файл проигрывается снова и снова — используем событие MediaPlayer'а Notify

Пример:

procedure TForm1.MediaPlayer1Notify(Sender: TObject);

begin

 with MediaPlayer1 do if NotifyValue = nvSuccessful then begin

  Notify := True;

  Play;

 end;

end;

Вопрос:

При выполнении диалога FontDialog со свойством Device равным fdBoth or fdPrinter, появляется ошибка "There are no fonts installed".

Ответ:

Эти установки должны показать шрифты совместимые либо с принтером либо с экраном. В примере диалог Windows ChooseFont вызывается напрямую чтобы показать список шрифтов, совместимых одновременно и с экраном и с принтером.