Как изображение при нажатии на миниатюры в Delphi 2010 - PullRequest
0 голосов
/ 19 ноября 2011

Я новичок в delphi и работаю над кодом, который совсем не документирован. Поэтому мы решили переделать код, и я единственный в моей команде. Никто не знает, как кодировать в Delphi. Мое требование примерно так.

Я хочу создать эскиз для изображения, например, давайте возьмем прямоугольник, заполненный красным, и отобразим его в основной форме. Пользователь щелкает эту миниатюру, и когда пользователь щелкает в любом месте области отображения, этот объект должен появиться. Может кто-нибудь дать мне несколько советов или ссылку, чтобы продолжить это? Это было бы очень полезно.

1 Ответ

0 голосов
/ 21 ноября 2011

Вам необходимо установить некоторую связь между миниатюрами и основным изображением.
Позвольте мне предположить, что у вас есть основные изображения, хранящиеся в файловой системе.
Если все ваши эскизы имеют одинаковый размер, имеет смыслсохраните их в imagelist.
Обычным элементом управления для просмотра изображений является ListView.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, ComCtrls, ImgList;

type
  TForm9 = class(TForm)
    ImageList1: TImageList;
    ListView1: TListView;
    Image1: TImage;
    procedure ListView1SelectItem(Sender: TObject; Item: TListItem; Selected: Boolean);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    ListOfNames: TStringList;
  public

  end;

var
  Form9: TForm9;

implementation

{$R *.dfm}

procedure TForm9.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  ListOfNames.Free;
end;

procedure TForm9.FormCreate(Sender: TObject);
begin
  ListOfNames:= TStringList.Create;
  ListOfNames.Add('c:\pictures\filename1.bmp');
  ListOfNames.Add('c:\pictures\filename2.bmp');
end;

procedure TForm9.ListView1SelectItem(Sender: TObject; Item: TListItem; Selected: Boolean);
var
  ImageIndex: integer;
  Filename: string;
begin
  ImageIndex:= Item.Index;
  Filename:= ListOfNames[ImageIndex];
  Image1.Picture.LoadFromFile(Filename);
end;

end.

Вот текст для файла DFM:

object Form9: TForm9
  Left = 0
  Top = 0
  Caption = 'Form9'
  ClientHeight = 468
  ClientWidth = 676
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  OnClose = FormClose
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 13
  object Image1: TImage
    Left = 328
    Top = 64
    Width = 289
    Height = 318
    Stretch = True
  end
  object ListView1: TListView
    Left = 16
    Top = 232
    Width = 250
    Height = 150
    Columns = <>
    LargeImages = ImageList1
    TabOrder = 0
    OnSelectItem = ListView1SelectItem
  end
  object ImageList1: TImageList
    Left = 16
    Top = 192
  end
end

Вам необходимо добавить несколько изображений в imagelist. Они будут показаны в ListView.
Нажатиена элементе в списке просмотра вызовет событие и покажет изображение в TImage.

...