Технологии

Решено

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

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

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

июнь 9, 2011 г.

  • Всего ответов: 4

  • Евгений - аватарка

    Евгений

    9-й в

    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 />

    июнь 9, 2011 г.
  • Евгений - аватарка

    Евгений

    9-й в

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

    июнь 9, 2011 г.
  • Евгений - аватарка

    Евгений

    9-й в

    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, 2011 г.
    Ответ понравился автору
    Лучший ответ по мнению автора
  • Евгений - аватарка

    Евгений

    9-й в

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

     

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

    июнь 10, 2011 г.

Похожие вопросы