Технологии
Решено
Как клавише клавиатуры присвоить действие - вопрос №87704
У меня 2 вопроса: 1)У меня например есть определенная папка с картинками и мне нужно чтобы при нажатие на кнопку открывалась картинка и я мог переключать между ними посредствои действий Вперед и Назад. Так вот как такое реализовать?! 2) Как сделать тоже самое только на клавиши клавиатуры.
Желательно с кодом т.к в делфи занялся совсем недавно. Спасибо))
июнь 9, 2011 г.
-
Всего ответов: 4
-
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 />
-
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.Лучший ответ по мнению автора -
2. В свойстве формы нужно поставить KeyPreview = true. ТОгда будет срабатывать всегда при нажатии на клавишу влево. Это вызов той же процедуры, но через клавишу
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case key of
VK_LEFT: Button1.Click;
end;
end;
Похожие вопросы