Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Си++ Билдер]кнопка НАЗАД


Автор: ETQW 11.6.2009, 16:16
Знающие люди, просьба помогите, искал в справке, не нашел функцию для возврата файлов, только для перелистывания вперед. А как же тогда сделать кнопку НАЗАД? 0-о ничего не пойму... Вот текст. ниже, сама программа. Программа представляет собой просмотр иллюстраций с возможностью выбора их из каталога  и таймером . 

Цитата

#include <vcl.h>
#pragma hdrstop

#include "ShowPicMainForm.h"

#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
void __fastcall TForm1::Background()
{
    int x=0,y=0; // координаты левого верхнего угла битового образа

    if ( back->Empty ) // битовый образ не был загружен
        return;

    do {
      do {
        Canvas->Draw(x,y,back);
        x += back->Width;
      }
      while (x < ClientWidth);
      x = 0;
      y += back->Height;
    }
    while (y < ClientHeight);
}

// обработка события OnPaint
void __fastcall TForm1::FormPaint(TObject *Sender)
{
    Background(); // обновить фоновый рисунок
}

// обработка события OnResize
void __fastcall TForm1::FormResize(TObject *Sender)
{
    //Background(); // обновить фоновый рисунок
}



#include <FileCtrl.hpp>  // для доступа к SelectDirectory
#include <jpeg.hpp>      // обеспечивает работу с иллюстрациями в формате JPEG

AnsiString aPath;      // каталог, в котором находится иллюстрация
TSearchRec aSearchRec; // рез-т поиска файла
TSearchRec bSearchRec;

void __fastcall TForm1::FormCreate(TObject *Sender)
{
    aPath = ""; // текущий каталог - каталог, из которого запущена программа
    FirstPicture(); // показать картинку, которая есть в каталоге программы
    PredPicture();

     back = new Graphics::TBitmap(); // создать объект - битовый образ

     // загрузить картинку
    try // в процессе загрузки картинки возможны ошибки
    {
        Form1->back->LoadFromFile("square.bmp");
    }
    catch (EFOpenError &e)
    {
        return;
    }
}

// щелчок на кнопке Каталог
void __fastcall TForm1::Button1Click(TObject *Sender)
{
     if (SelectDirectory("Выберикте каталог, в котором находятся иллюстрации",
                     "",aPath) != 0 )
     {
        // пользователь выбрал каталог и щелкнул на OK
        aPath = aPath + "\\";
        if ( FirstPicture() )  // вывести иллюстрацию
            CheckBox1->Enabled = true;
        else
            Label1->Caption = "В каталоге " + aPath +
                      " нет jpg-иллюстраций." ;
     }
}

// вывести первую картинку и найти следующую
bool __fastcall TForm1::FirstPicture()
{
    Image1->Visible = false;   // скрыть компонент Image1
    Button2->Enabled = false;  // кнопка Дальше недоступна
    CheckBox1->Enabled = false;
    CheckBox1->Checked = false;
    Label1->Caption = "";
    if ( FindFirst(aPath+ "*.jpg", faAnyFile, aSearchRec) == 0)
    {
        Image1->Picture->LoadFromFile(aPath+aSearchRec.Name);
        Image1->Visible = true;
        Label1->Caption = aPath + aSearchRec.Name;
        if ( FindNext(aSearchRec) == 0 )  // найти след. иллюстрацию
        {
            // иллюстрация есть
            Button2->Enabled = true; // теперь кнопка Дальше доступна
            CheckBox1->Enabled = true;

            return true;
        }
    }
    return false;
}
bool __fastcall TForm1::PredPicture()
{
    Image1->Visible = false;   // скрыть компонент Image1
    Button3->Enabled = false;
    CheckBox1->Enabled = false;
    CheckBox1->Checked = false;
    Label1->Caption = "";
    if (FindFirst(aPath+ "*.jpg", faAnyFile, bSearchRec)==0)
    {
        Image1->Picture->LoadFromFile(aPath+bSearchRec.Name);
        Image1->Visible = true;
        Label1->Caption = aPath + bSearchRec.Name;
        if ( FindNext(bSearchRec) == 0 )  // найти след. иллюстрацию
        {
            // иллюстрация есть
            Button3->Enabled = true; // теперь кнопка Дальше доступна
            CheckBox1->Enabled = true;

            return true;
        }
    }
    return false;
}

// вывести текущую и найти следующую картинку
bool __fastcall TForm1::NextPicture()
{
    Image1->Picture->LoadFromFile(aPath+aSearchRec.Name);
    Label1->Caption = aPath + aSearchRec.Name;
    if ( FindNext(aSearchRec) != 0 )  // найти след. иллюстрацию
    {
        // иллюстраций больше нет
        Button2->Enabled = false;   // теперь кнопка Дальше недоступна
        CheckBox1->Enabled = false;
        return false;
    }
    return true;
}
bool __fastcall TForm1::PredNPicture()
{
    Image1->Picture->LoadFromFile(aPath+bSearchRec.Name);
    Label1->Caption = aPath + bSearchRec.Name;
    return true;
}

// щелчок на кнопке Дальше
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    NextPicture();
  {
   if(!Timer1->Enabled)
    Timer1->Enabled=false;
   else
    Timer1->Enabled=true;
   }
}
// щелчок на переключателе "непрерывно"
void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
    if ( CheckBox1->Checked)
        Timer1->Enabled = true;  // слайд-шоу
    else
        Timer1->Enabled = false; // по кадрам
}

// Сигнал от таймера - вывести следующую иллюстрацию
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
    if ( ! NextPicture())
        Timer1->Enabled = false;
}

void __fastcall TForm1::Button3Click(TObject *Sender)
{
      PredNPicture();
}
//---------------------------------------------------------------------------



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)