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

Unknown

Вопрос:

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

Ответ:

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

Пример:

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

begin

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

end;

Вопрос:

Как получить число и список всех компонентов, расположенных на TNoteBook?

Ответ:

В примере список выводится на Listbox.

Пример:

procedure TForm1.Button1Click(Sender: TObject);

var

 n: integer;

 p: integer;

begin

 ListBox1.Clear;

 with Notebook1 do begin

  for n := 0 to ControlCount - 1 do begin

   with TPage(Controls[n]) do begin

    ListBox1.Items.Add('Notebook Page: ' + TPage(Notebook1.Controls[n]).Caption);

    for p := 0 to ControlCount - 1 do ListBox1.Items.Add(Controls[p].Name);

    ListBox1.Items.Add(EmptyStr);

   end;

  end;

 end;

end;

Вопрос:

Я хочу вставить escape code в строку при использовании функции Format(). Например, я хочу создать строку, содержащую символ табуляции. В "C" я бы написал что-то вроде sprintf(buffer, "%s\t%s", str);. А как это будет на Pascal'e?

Ответ:

Функция Format Pascal'я не использует escape codes. Вместо этого нужно вставить в строку действительное значение символа в кодировке ASCII.

Пример:

Buffer := Format('%s'#9'%s', [Str1, Str2]);

ShowMessage(Format('%s'#9'%s', ['Column1', 'Column2']));

Вопрос:

Как показать первый кадр AVI-файла?

Ответ:

См. пример.

Пример:

procedure TForm1.Button1Click(Sender: TObject);

begin

 Application.ProcessMessages;

 MediaPlayer1.Open;

 Application.ProcessMessages;

 MediaPlayer1.Step;

 Application.ProcessMessages;

 MediaPlayer1.Previous;

end;

Вопрос:

Когда пользователь щелкает по listview, он переходит в режим редактирования. Как перевести его в режим редактирования по нажатию клавиши (например F2)?

Ответ:

Перехватите F2 на событии keydown.

Пример:

procedure TForm1.ListView1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

 if Ord(Key) = VK_F2 then ListView1.Selected.EditCaption;

end;

Вопрос:

Когда я добавляю обьект в список TStrings как мне его потом уничтожить?

Ответ:

Просто вызовите метод free этого обьекта.

Пример:

procedure TForm1.FormCreate(Sender: TObject);

var Icon: TIcon;

begin

 Icon := TIcon.Create;

 Icon.LoadFromFile('C:\Program Files\BorlandImages\CONSTRUC.ICO');

 ListBox1.Items.AddObject('Item 0', Icon);

end;

procedure TForm1.FormDestroy(Sender: TObject);

begin

 ListBox1.Items.Objects[0].Free;

end;

Вопрос:

Вместо печати графики я хочу использовать резидентный шрифт принтера. Как?

Ответ:

Используте функцию Windows API — GetStockObject() чтобы получить дескриптор (handle) шрифта по умолчанию устройства (DEVICE_DEFAULT_FONT) и передайте его Printer.Font.Handle.