Как клавише клавиатуры присвоить действие - вопрос №87704

У меня 2 вопроса: 1)У меня например есть определенная папка с картинками и мне нужно чтобы при нажатие на кнопку открывалась картинка и я мог переключать между ними посредствои действий Вперед и Назад. Так вот как такое реализовать?! 2) Как сделать тоже самое только на клавиши клавиатуры.

Желательно с кодом т.к в делфи занялся совсем недавно. Спасибо))

Лучший ответ по мнению автора

1. Вот полный код. Нужно добавить две кнопки и Image компонент с вкладки additional. Только поменяйте путь к картинке для тестирования.

 

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Jpeg, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);
  private
     procedure OpenJpeg(Path: string);
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.OpenJpeg(Path: string);
var
  JpegIm: TJpegImage;
  bm: TBitMap;
begin
  bm := TBitMap.Create;
  JpegIm := TJpegImage.Create;
  JpegIm.LoadFromFile(Path);
  bm.Assign(JpegIm);
  Image1.Picture.Bitmap := bm;
  bm.Destroy;
  JpegIm.Destroy;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  OpenJpeg('D:\Develop\Progy\ASP.NET\MvcEntity\MvcEntity\Content\Grid\Employees\4.jpg');
end;

end.

10.06.11
Лучший ответ по мнению автора

Другие ответы

1.

В комплект поставки Delphi входит модуль JPEG. Он позволяет работать с изображениями в формате JPEG. Эта программа открывает выбранный файл и выводит изображение на форму.

 

<strong>uses</strong> Jpeg;<br <br <strong>procedure</strong> TForm1.Button1Click(Sender: TObject);<br <strong>var</strong><br JpegIm: TJpegImage;<br bm: TBitMap;<br <strong>begin</strong><br <strong>if</strong> OpenDialog1.Execute = false <strong>then</strong><br Exit;<br bm := TBitMap.Create;<br JpegIm := TJpegImage.Create;<br JpegIm.LoadFromFile(OpenDialog1.FileName);<br bm.Assign(JpegIm);<br Image1.Picture.Bitmap := bm;<br bm.Destroy;<br JpegIm.Destroy;<br <strong>end</strong>;<br <br Далее. Вам нужно только загружать следующую кратинку при нажатии на кнопки. Для этого Вам нужно <br сделать выбор папки и загрузку всех файлов из папки(путь к файлам в список) и при нажатии просто <br выбирать следующий или предыдущий путь.<br <br <a href="http://www.delphisources.ru/pages/faq/base/files_search.html">Ссылка</a>, как получить фсе файлы из папки.<br <br 2. У формы есть событие KeyDown, где пишем<br <br procedure TfrmMain.FormKeyDown(Sender: TObject; var Key: Word;<br   Shift: TShiftState);<br begin<br   case Key of<br     VK_LEFT: {тут что-то делаем: вызываем процедуру, что висит на кнопке, btnModem.Click;} ;<br     VK_RIGHT: {тут что-то делаем: вызываем процедуру, что висит на кнопке, btnModem.Click;} ;<br   end;<br <br end;<br <br
09.06.11

Сылка на код, для открытия каритнки

09.06.11

2. В свойстве формы нужно поставить KeyPreview = true. ТОгда будет срабатывать всегда при нажатии на клавишу влево. Это вызов той же  процедуры, но через клавишу

 

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case key of
    VK_LEFT:  Button1.Click;
  end;
end;

10.06.11
Посмотреть всех экспертов из раздела Технологии > Delphi
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store