Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Закрытая тема
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.06.2009, 15:56
jekahm jekahm вне форума
Новичок
 
Регистрация: 01.06.2009
Сообщения: 54
Репутация: 27
По умолчанию ImageViewer

Пишу прогу ImageViever, но не получается осуществить переход между изображениями с помощью SpeedButton'ов! Помогите, пожалуйста, разобраться, что не так с моим кодом!

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, Buttons, ExtDlgs;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    Image1: TImage;
    OpenPictureDialog1: TOpenPictureDialog;
    SavePictureDialog1: TSavePictureDialog;
    procedure FormCreate(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
    aPath: string; // каталог, который выбрал пользователь
    aSearchRec : TSearchRec; // информация о файле
    Pictures : TStringList;  // список иллюстраций
    n: integer; // номер иллюстрации, отображаемой в данный момент

  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Pictures := TStringList.Create;
  SpeedButton2.Enabled := False;
  SpeedButton3.Enabled := False;
  with OpenPictureDialog1 do
  begin
    Options := Options + [ofPathMustExist, ofFileMustExist];
    InitialDir := ExtractFilePath(Application.ExeName);
  end;
  with SavePictureDialog1 do
  begin
    InitialDir := ExtractFilePath(Application.ExeName);
  end;
  
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
  begin
    Form1.Caption := OpenPictureDialog1.FileName;
    Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
  end;
   if Pictures.Count > 1 then
        SpeedButton3.Enabled := True;

    // отобразить иллюстрацию
     n := 0; // номер отображаемой иллюстрации
    try
       Form1.Image1.Picture.LoadFromFile(aPath + Pictures[n]);
       except on EInvalidGraphic do Form1.Image1.Picture.Graphic := nil;
    end;
    if Pictures.Count = 1 then
        SpeedButton3.Enabled := False;
end;

procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
// вывести картинку
   n := n+1;
   try
       Form1.Image1.Picture.LoadFromFile(aPath + Pictures[n]);
       except on EInvalidGraphic do Form1.Image1.Picture.Graphic := nil;
   end;

   if n = Pictures.Count-1 then
      SpeedButton2.Enabled := False;

   // если кнопка "Предыдущая" не доступна,
   // сделать ее доступной
   if (n > 0 ) and SpeedButton3.Enabled = False then
        SpeedButton3.Enabled := True;

end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
 // вывести картинку
   n := n-1;
   try
       Form1.Image1.Picture.LoadFromFile(aPath + Pictures[n]);
       except on EInvalidGraphic do Form1.Image1.Picture.Graphic := nil;
   end;

   if n = 0 then
      SpeedButton3.Enabled := False;

   // если кнопка "Следующая" не доступна,
   // сделать ее доступной
   if (n < Pictures.Count) and SpeedButton2.Enabled = False then
        SpeedButton2.Enabled := True;
end;

end.
  #2  
Старый 18.06.2009, 16:29
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

dfm-файл покажите
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
  #3  
Старый 18.06.2009, 16:35
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

И еще, я так и ненашел где вы в Pictures что-то добавляете, зато проверка на Pictures.Count у вас имеется.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
  #4  
Старый 18.06.2009, 18:40
Аватар для mak-karpov
mak-karpov mak-karpov вне форума
Активный
 
Регистрация: 18.09.2008
Сообщения: 235
Версия Delphi: 2010 и 7
Репутация: 1242
По умолчанию

На самом деле это достаточно просто. Вот ссыль : http://mak-karpov.narod.ru/ImgView.rar
  #5  
Старый 21.06.2009, 16:29
jekahm jekahm вне форума
Новичок
 
Регистрация: 01.06.2009
Сообщения: 54
Репутация: 27
По умолчанию

Большое всем спасибо! Разобрался! Можна закрывать тему!
Закрытая тема


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:51.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter