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

Delphi Sources



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

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

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

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
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,723
Репутация: 52347
По умолчанию

dfm-файл покажите
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
  #3  
Старый 18.06.2009, 16:35
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 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, время: 00:33.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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