Программирование в Delphi
Структура программы, обозначения переменных. Функция Length: понятие, использование. Главные задачи Open Picture Dialog. Проверка свойств "меню-вид". Процедура прокрутки влево и вправо. Режим презентации программы Edit и Button. Вызов пунктов справки.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 22.09.2013 |
Размер файла | 1,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
[Введите текст]
Содержание
Введение
Теоретическая часть и постановка задачи
Структура программы
Заключение
Список использованной литературы
Введение
В последнее время резко возрос интерес к программированию. Это связано с развитием и внедрением в повседневную жизнь информационно-коммуникационных технологий. Если человек имеет дело с компьютером, то рано или поздно у него возникает желание, а иногда и необходимость, программировать.
Среди пользователей персональных компьютеров в настоящее время наиболее популярно семейство операционных систем Windows и, естественно, что тот, кто собирается программировать, стремится писать программы, которые будут работать в этих системах.
Несколько лет назад рядовому программисту оставалось только мечтать о создании собственных программ, работающих в среде Windows, т. к. единственным средством разработки был Borland C++ for Windows, явно ориентированный на профессионалов, обладающих серьезными знаниями и опытом.
Бурное развитие вычислительной техники, потребность в эффективных средствах разработки программного обеспечения привели к появлению систем программирования, ориентированных на так называемую "быструю разработку", среди которых можно выделить Borland Delphi и Microsoft Visual Basic. В основе систем быстрой разработки (RAD-систем, Rapid Application Development - среда быстрой разработки приложений) лежит технология визуального проектирования и событийного программирования, суть которой заключается в том, что среда разработки берет на себя большую часть рутинной работы, оставляя программисту работу по конструированию диалоговых окон и функций обработки событий. Производительность программиста при использовании RAD-систем - фантастическая!
Delphi - это среда быстрой разработки, в которой в качестве языка программирования используется язык Delphi. Язык Delphi - строго типизированный объектно-ориентированный язык, в основе которого лежит хорошо знакомый программистам Object Pascal.
В настоящее время программистам стала доступна очередная версия пакета Delphi - Borland Delphi 7 Studio. Как и предыдущие версии, Borland Delphi 7 Studio позволяет создавать самые различные программы: от простейших однооконных приложений до программ управления распределенными базами. В состав пакета включены разнообразные утилиты, обеспечивающие работу с базами данных, XML-документами, создание справочной системы, решение других задач. Отличительной особенностью седьмой версии является поддержка технологии .NET.
Теоретическая часть и постановка задачи
В компьютерном мире существует большое количество различных программ для просмотра изображений: от встроенной windows-овской до всем известной ACDSee, поддерживающей, кстати, большинство видео форматов. Многие программы имеют в своём составе также edit-оры, фотостудии, которые уменьшают производительность компьютера особенно, если он устарел.
Сколько раз, пытаясь просмотреть изображения на компьютере, ждешь, пока загрузится просмоторщик (родной windows-овский, ACDSee, IfranView или что-нибудь в этом роде) с множеством функций, абсолютно ненужных для просмотра. Как неудобно, когда, листая папку общих рисунков, всё время натыкаешься на чужие фотографии. Гораздо лучше в процессе просмотра создать свою папку, и сбросить туда свои фото.
Итак, нам нужна программа, позволяющая просматривать изображения основной группы форматов, пролистывать изображения в папке, создавать свои папки с сохранением в них файлов.
Для этого подходит следующая программа.
При помощи неё вы можете открывать изображения широкого ряда форматов (*.jpg, *.jpeg, *.bmp, *.ico, *.emf, *.wmf) в окне или полноэкранном режиме. В программу встроена функция `Презентация', которая позволяет прямо из программы создать папку с последующим сохранением в неё понравившихся рисунков. Программа хорошо защищена от ввода некорректных данных, (будет выдано сообщение об ошибке либо процедура будет просто остановлена) удаления файлов из просматриваемой папки. Каждая процедура перед выполнением каких-либо действий собирает информацию о наличие открытого рисунка, либо о состоянии пунктов Меню, либо о содержимом строки Edit-а. Программа проста в обращении, не занимает много места и не подгружает систему. Недостатки программы в том, что в ней нет сглаживания (все мелкие рисунки видны в клеточку), нет метода Drag-and-Drop, поэтому все изображения приходится открывать через `Open' или вводить полное имя файла и программа требует некоторой адаптации к той папке, в которую она помещена.
Структура программы
Создание программы начинается с размещения на форме компонентов: Panel1, Panel2, Image1, Edit1, BitBtn1, BitBtn2, Button1, MainMenu1, OpenPictureDialog1, SavePictureDialog1. Они размещаются на форме следующим образом:
Рис. 1
На форму помещается Panel1 - универсальная панель, на которой могут располагаться другие компоненты. На Panel1 помещается компонент Image1, который служит областью для вывода изображений. Сверху размещается Panel2 для вывода комментариев к изображениям. Ниже располагаются две кнопки с возможностью отображения на их поверхности растровых изображений формата *.bmp для прокрутки, далее редактируемая строка Edit1 и кнопка. Произвольным образом на форме размещаются MainMenu1, OpenPictureDialog1, SavePictureDialog1.
Для формы и компонентов задаются параметры:
Form1.Caption - заголовок формы, Form1.Color - цвет формы, Form1.Icon - изображение в левом углу строки заголовка, Form1.Position - место размещения формы в начале диалога.
Panel1.Color - цвет панели.
Image1.Align - при установке значения alClient компонент занимает всю предоставляемую область (в данном случае это Panel1), Image1.Proportional - разрешает пропорционально изменять размеры рисунков.
Panel2.Font - шрифт текста на панели, Panel2.Color - цвет панели, Panel2.Visible - видимость панели.
BitBtn1 и BitBtn2 akLeft, akRight, akTop, akButtom, которые разрешают или запрещают изменять координаты кнопок при изменении размеров формы, BitBtn1.Cursor - вид курсора при наведении на кнопку, BitBtn1.Glyph, где храниться изображение накладываемое на кнопку при запуске (т.к. этот компонент делает фон рисунка прозрачным исходя из цвета нижнего левого пикселя, то рекомендуется сделать его таким цветом, которого нет в рисунке)
Программа в Delphi состоит из набора процедур, каждая из которых выполняется по совершению какого-либо события: нажатия кнопки клавиатуры, клик мыши в определенной области.
Для удобства чтения программы, используемые глобальные переменные имеют следующие обозначения:
FormWidth - ширина формы
FormHeight - высота формы
FormTop - позиция верхней границы формы
FormLeft - позиция нижней границы формы
Open - открытие файла (да или нет)
FOLDER - адрес папки просматриваемого изображения
Mask[1..6] - содержит поддерживаемые расширения файлов
FileNameMask - содержит адрес папки просмотра и маску (расширение) файла поиска
LoadFile - полное имя загруженного файла
ViewName - имя файла для отображения на Panel2
ViewPath - адрес папки для отображения на Panel2
ViewNumber - номер файла в папке для отображения на Panel2
FF - буферная переменная для временного хранения имени найденного файла
A[1..6,1..1400] - массив, содержащий в строках имена найденных файлов (номер строки зависит от расширения).
Max - максимальное количество имён файлов в строке.
MaxSt - максимальное количество строк.
B[1..1400] - массив, содержащий имена всех найденных файлов водной строке. Компонент Image может отображать только определённые типы изображений, поэтому при создании формы происходит событие:
procedure TForm1.FormCreate(Sender: TObject);
begin
Open: =False;
Mask[1]:='*.jpg';
Mask[2]:='*.jpeg';
Mask[3]:='*.bmp';
Mask[4]:='*.ico';
Mask[5]:='*.emf';
Mask[6]:='*.wmf';
end;
Здесь критерию наличия изображения на компоненте Image присваивается значение False (ложь) и создаётся одномерный массив, содержащий поддерживаемые расширения файлов.
Для правильного расположения кнопок прокрутки и отображения имени файла и текущего разрешения изображения создаётся процедура
procedure TForm1.FormResize(Sender: TObject);
begin
BitBtn1.Left:=TRUNC(Form1.Width/2)-41;
BitBtn2.Left:=TRUNC(Form1.Width/2);
Form1.Caption:='Vlad_View '+ExtractFileName(LoadFile)+' ('+IntToStr(Form1.Image1.Width)+' X '+IntToStr(Form1.Image1.Height)+' )';
end;
Создаётся диалоговое меню вида
Рис. 2
Рис. 3
Рис. 4
Изображения для пунктов меню загружаются через инспектор объектов, свойство Bitmap, а горячие клавиши - ShortCut. На выбор пунктов `Показывать имя файла', `Показывать путь', `Показывать номер файла' создаются соответственно три обработчика:
procedure TForm1.N9Click(Sender: TObject);
begin
IF N9.Checked=False THEN BEGIN
N9.Checked:=True;
ViewName:=ExtractFileName(LoadFile);
IF Open=True THEN
Panel2.Visible:=True;
Panel2.Caption:=ViewPath+ViewName+' '+ViewNumber;
Panel2.Width:=Length(Panel2.Caption)*6;
END ELSE
BEGIN
N9.Checked:=False;
ViewName:='';
IF (N10.Checked=False) AND (N11.Checked=False) THEN
Panel2.Visible:=False;
Panel2.Caption:=ViewPath+ViewName+' '+ViewNumber;
Panel2.Width:=Length(Panel2.Caption)*6;
END;
end;
procedure TForm1.N10Click(Sender: TObject);
begin
IF N10.Checked=False THEN BEGIN
N10.Checked:=True;
ViewPath:=ExtractFilePath(LoadFile);
IF Open=True THEN
Panel2.Visible:=True;
Panel2.Caption:=ViewPath+ViewName+' '+ViewNumber;
Panel2.Width:=Length(Panel2.Caption)*6;
END ELSE
BEGIN
N10.Checked:=False;
ViewPath:='';
IF (N9.Checked=False) AND (N11.Checked=False) THEN
Panel2.Visible:=False;
Panel2.Caption:=ViewPath+ViewName+' '+ViewNumber;
Panel2.Width:=Length(Panel2.Caption)*6;
END;
end;
procedure TForm1.N11Click(Sender: TObject);
begin
IF N11.Checked=False THEN BEGIN
N11.Checked:=True;
IF Open=True THEN
Panel2.Visible:=True;
Panel2.Caption:=ViewPath+ViewName+' '+ViewNumber;
Panel2.Width:=Length(Panel2.Caption)*6;
END ELSE
BEGIN
N11.Checked:=False;
IF (N9.Checked=False) AND (N10.Checked=False) THEN
Panel2.Visible:=False;
Panel2.Caption:=ViewPath+ViewName;
Panel2.Width:=Length(Panel2.Caption)*6;
END;
end;
После нажатия на один из пунктов, напротив него появляется `птичка' (свойство Checked), которая определяет - выбран ли пункт. Если хотя бы один из пунктов выбран, и в Image загружено изображение, то Panel2 становиться видимой и на неё выводится информация. Если же выделения снять со всех пунктов, то она опять станет невидимой. Функция Length используется для определения длины строки и задания ширины панели:
Рис. 5
Рис. 6
Диалог начинается с открытия файла просмотра. Для этого используется OpenPictureDialog1:
Рис. 7
procedure TForm1.N2Click(Sender: TObject);
begin
IF OpenPictureDialog1.Execute THEN BEGIN
Open:=True;
BitBtn1.Glyph.LoadFromFile('D:\Documents and Settings\USER\Мои документы\BNTU_WORKS\3-ИЙ СЕМЕСТР\ИНФОРМАТИКА\Информатика_курсач\ПРОБА IMAGE\LEFT2.BMP');
BitBtn2.Glyph.LoadFromFile('D:\Documents and Settings\USER\Мои документы\BNTU_WORKS\3-ИЙ СЕМЕСТР\ИНФОРМАТИКА\Информатика_курсач\ПРОБА IMAGE\RIGHT2.BMP');
Form1.Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
FOLDER:=ExtractFilePath(OpenPictureDialog1.FileName);
LoadFile:=OpenPictureDialog1.FileName;
Edit1.Text:=LoadFile;
N14.Enabled:=True;
Form1.Caption:='Vlad_View '+ExtractFileName(LoadFile)+' ( '+IntToStr(Form1.Image1.Width)+' X '+IntToStr(Form1.Image1.Height)+' )';
IF N9.Checked=True THEN ViewName:=ExtractFileName(LoadFile);
IF N10.Checked=True THEN ViewPath:=ExtractFilePath(LoadFile);
IF (N9.Checked=True) OR (N10.Checked=True) THEN
BEGIN
Panel2.Visible:=True;
Panel2.Caption:=ViewPath+ViewName;
Panel2.Width:=Length(Panel2.Caption)*6;
END;
END;
end;
При успешном выполнении OpenPictureDialog1 переменной Open присваивается значение True. ПроцедураBitBtn1.Glyph.LoadFromFile изменяет изображение кнопки (из неактивной она становиться активной).
Рис. 8 Рис. 9
Проверка свойств Меню-Вид, описанных выше, производится, для того чтобы Panel2 стала активной независимо от времени выбора соответствующих пунктов (до открытия или после).
Для изменения рисунка кнопок прокрутки (`нажатая', 'отпущенная') служат следующие процедуры:
procedure TForm1.BitBtn1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
IF Open=True THEN
BitBtn1.Glyph.LoadFromFile('D:\Documents and Settings\USER\Мои документы\BNTU_WORKS\3-ИЙ СЕМЕСТР\ИНФОРМАТИКА\Информатика_курсач\ПРОБА IMAGE\LEFT3.BMP');
end;
procedure TForm1.BitBtn1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
IF Open=True THEN
BitBtn1.Glyph.LoadFromFile('D:\Documents and Settings\USER\Мои документы\BNTU_WORKS\3-ИЙ СЕМЕСТР\ИНФОРМАТИКА\Информатика_курсач\ПРОБА IMAGE\LEFT2.BMP');
end;
procedure TForm1.BitBtn2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
IF Open=True THEN
BitBtn2.Glyph.LoadFromFile('D:\Documents and Settings\USER\Мои документы\BNTU_WORKS\3-ИЙ СЕМЕСТР\ИНФОРМАТИКА\Информатика_курсач\ПРОБА IMAGE\RIGHT3.BMP');
end;
procedure TForm1.BitBtn2MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
IF Open=True THEN
BitBtn2.Glyph.LoadFromFile('D:\Documents and Settings\USER\Мои документы\BNTU_WORKS\3-ИЙ СЕМЕСТР\ИНФОРМАТИКА\Информатика_курсач\ПРОБА IMAGE\RIGHT2.BMP');
end;
Рис. 10
В отличие от рисунков, загруженных в кнопки при создании программы и не присутствующих в папке, LEFT2.bmp, LEFT3.bmp, RIGHT2.bmp, RIGHT3.bmp должны находиться в папке программы, и ссылка на них задаётся полным адресом. Обращение к ним как к файлам, находящимся в папке программы, становится невозможным из-за наличия OpenPictureDialog1, в результате чего изменяется директория, выбираемая программой по умолчанию.
Для прокрутки изображений необходимо каждый раз найти все файлы изображений поддерживаемых форматов, т.к. во время просмотра могут быть удалены файлы из папки. Процедуры прокрутки влево и вправо отличаются немногим:
ВЛЕВО
procedure TForm1.BitBtn1Click(Sender: TObject);
VAR I:INTEGER;
begin
IF Open=True THEN BEGIN
I:=0;
Max:=0;
MaxSt:=0;
REPEAT
I:=I+1;
FileNameMask:=FOLDER+Mask[I];
IF FindFirst(FileNameMask,faAnyFile,FF)=0 THEN BEGIN
MaxSt:=MaxSt+1;
A[MaxSt,1]:=FF.Name;
J:=1;
IF Max<J THEN Max:=J;
WHILE FindNext(FF)=0 DO BEGIN
J:=J+1;
A[MaxSt,J]:=FF.Name;
IF Max<J THEN Max:=J;
END;
END;
UNTIL I=6;
I:=0;
K:=0;
WHILE I<MaxSt DO BEGIN
I:=I+1;
J:=0;
REPEAT
J:=J+1;
IF FileExists(A[I,J]) THEN BEGIN
K:=K+1;
B[K]:=A[I,J];
END;
UNTIL J=Max;
END;
FOR I:=2 TO K DO
IF FOLDER+B[I]=LoadFile THEN BEGIN
Form1.Image1.Picture.LoadFromFile(B[I-1]);
LoadFile:=FOLDER+B[I-1];
IF N14.Checked=False THEN
Edit1.Text:=LoadFile
ELSE
Edit1.Text:=ExtractFilePath(Edit1.Text)+ExtractFileName(LoadFile);
ViewName:=ExtractFileName(LoadFile);
ViewNumber:='['+IntToStr(I-1)+']';
IF N9.Checked=False THEN ViewName:='';
IF N11.Checked=False THEN ViewNumber:='';
Panel2.Caption:=ViewPath+ViewName+' '+ViewNumber;
Panel2.Width:=Length(Panel2.Caption)*6;
Form1.Caption:='Vlad_View '+ExtractFileName(LoadFile)+' ( '+IntToStr(Form1.Image1.Width)+' X '+IntToStr(Form1.Image1.Height)+' )';
Exit;
END;
END;
end;
ВПРАВО
procedure TForm1.BitBtn2Click(Sender: TObject);
VAR I:INTEGER;
begin
IF Open=True THEN BEGIN
I:=0;
Max:=0;
MaxSt:=0;
REPEAT
I:=I+1;
FileNameMask:=FOLDER+Mask[I];
IF FindFirst(FileNameMask,faAnyFile,FF)=0 THEN BEGIN
MaxSt:=MaxSt+1;
A[MaxSt,1]:=FF.Name;
J:=1;
IF Max<J THEN Max:=J;
WHILE FindNext(FF)=0 DO BEGIN
J:=J+1;
A[MaxSt,J]:=FF.Name;
IF Max<J THEN Max:=J;
END;
END;
UNTIL I=6;
I:=0;
K:=0;
WHILE I<MaxSt DO BEGIN
I:=I+1;
J:=0;
REPEAT
J:=J+1;
IF FileExists(A[I,J]) THEN BEGIN
K:=K+1;
B[K]:=A[I,J];
END;
UNTIL J=Max;
END;
FOR I:=1 TO K-1 DO
IF FOLDER+B[I]=LoadFile THEN BEGIN
Form1.Image1.Picture.LoadFromFile(B[I+1]);
LoadFile:=FOLDER+B[I+1];
IF N14.Checked=False THEN
Edit1.Text:=LoadFile
ELSE
Edit1.Text:=ExtractFilePath(Edit1.Text)+ExtractFileName(LoadFile);
ViewName:=ExtractFileName(LoadFile);
ViewNumber:='['+IntToStr(I+1)+']';
IF N9.Checked=False THEN ViewName:='';
IF N11.Checked=False THEN ViewNumber:='';
Panel2.Caption:=ViewPath+ViewName+' '+ViewNumber;
Panel2.Width:=Length(Panel2.Caption)*6;
Form1.Caption:='Vlad_View '+ExtractFileName(LoadFile)+' ( '+IntToStr(Form1.Image1.Width)+' X '+IntToStr(Form1.Image1.Height)+' )';
Exit;
END;
END;
end;
Переменная I объявлена локально, т. к. она задействована в процедуре FOR. Функция FindFirst(FileNameMask,faAnyFile,FF) переменной FF присваивает имя первого найденного файла, соответствующего маске FileNameMask и атрибуту faAnyFile (любой файл). Также существуют скрытые, архивные и файлы только для чтения. Функция FindNext(FF) находит следующий файл (после FF) и присваивает его значение FF. Обе этих функции при успешном поиске дают значение, равное 0. Только в этом случае имена найденных файлов записываются в строки массива (первая строка - '*.jpg', вторая - '*.jpeg', третья - '*.bmp', четвёртая - '*.ico', пятая - '*.emf', шестая - '*.wmf'). Затем этот массив преобразуется в однострочный. Далее идёт проверка - находится ли программа в режиме презентации, и если нет, то в Edit1 выводится полное имя загруженного файла. В противном случае в Edit1 выводится уже написанный адрес папки плюс имя открытого файла (ExtractFilePath(Edit1.Text)+ExtractFileName(LoadFile)). Также присваиваются значения ViewName и ViewNumber для Panel2.Caption.
Аналогичные процедуры описываются для вращения колёсика мыши.
Режим презентации включается Меню - Вид - Презентация либо по нажатию F5. Кнопка активна только, если открыт файл:
procedure TForm1.N14Click(Sender: TObject);
begin
IF Open=True THEN BEGIN
IF N14.Checked=False THEN
BEGIN
N14.Checked:=True;
Button1.Caption:='Добавить';
END ELSE
BEGIN
N14.Checked:=False;
Button1.Caption:='Показать';
Edit1.Text:='';
END;
END;
end;
В режиме презентации Edit1 и Button1 меняют своё назначение: в строке указывается директория (ее может ещё не существовать) и имя файла (обязательное соответствие его расширения с расширением открытого файла), а кнопка 'Показать' меняется на кнопку 'Добавить':
procedure TForm1.Button1Click(Sender: TObject);
VAR I,J:BYTE;
begin
IF N14.Checked=False THEN
IF FileExists(Edit1.Text) THEN BEGIN
Open:=True;
BitBtn1.Glyph.LoadFromFile('D:\Documents and Settings\USER\Мои документы\BNTU_WORKS\3-ИЙ СЕМЕСТР\ИНФОРМАТИКА\Информатика_курсач\ПРОБА IMAGE\LEFT2.BMP');
BitBtn2.Glyph.LoadFromFile('D:\Documents and Settings\USER\Мои документы\BNTU_WORKS\3-ИЙ СЕМЕСТР\ИНФОРМАТИКА\Информатика_курсач\ПРОБА IMAGE\RIGHT2.BMP');
Form1.Image1.Picture.LoadFromFile(Edit1.Text);
LoadFile:=Edit1.Text;
N14.Enabled:=True;
Form1.Caption:='Vlad_View '+ExtractFileName(LoadFile)+' ( '+IntToStr(Form1.Image1.Width)+' X '+IntToStr(Form1.Image1.Height)+' )';
ViewPath:=ExtractFilePath(LoadFile);
END
ELSE
SHOWMESSAGE('Указанный Вами файл НЕ существует')
ELSE
BEGIN
IF Edit1.Text='' THEN
BEGIN
SHOWMESSAGE('Задайте имя файла');
Exit;
END;
IF Edit1.Text=ExtractFilePath(Edit1.Text) THEN
FOR I:=1 TO 150 DO BEGIN
IF Edit1.Text[I]='\' THEN
BEGIN
MKDir(COPY(ExtractFilePath(Edit1.Text),1,I));
Exit
END;
END
ELSE BEGIN
IF AnsiLowerCase(ExtractFileExt(Edit1.Text)) = AnsiLowerCase(ExtractFileExt(LoadFile)) THEN
BEGIN
FOR J:=1 TO 150 DO
IF Edit1.Text[J]='\' THEN
MKDir(COPY(ExtractFilePath(Edit1.Text),1,J));
IF FileExists(Edit1.Text) THEN BEGIN
IF MessageDlg('Указанный вами файл уже существует. Заменить?',mtWarning,[mbYes,mbNo],0)=mrYes THEN
Image1.Picture.SaveToFile(Edit1.Text);
END
ELSE
Image1.Picture.SaveToFile(Edit1.Text);
END ELSE
SHOWMESSAGE('Неверно указано имя файла');
END;
END;
end;
Таким образом, при нажатии «Добавить» в указанную директорию (если её не существует, она создаётся) будет сохранён открытый файл под указанным именем (по умолчанию записывается оригинальное имя файла, но его можно изменить). Для создания директории используется функция MKDir, но т. к. она создаёт только одну папку в уже существующей, то функция применяется в следующем виде MKDir (COPY(ExtractFilePath(Edit1.Text),1,J)), где функция COPY (ExtractFilePath(Edit1.Text),1,J) используется для вырезания из полного имени файла адрес существующей папки плюс одна, которую нужно создать. Для возможности сохранения файлов с расширением, записанным заглавными буквами, в проверке соответствия расширения используется функция AnsiLowerCase(text), которая изменяет все заглавные буквы в строке на прописные. Если файл существует то будет предложено заменить его или нет. Для этого используется функция MessageDlg('Указанный вами файл уже существует. Заменить?',mtWarning,[mbYes,mbNo],0), которая может принимать значения mrYes или mrNo.
Рис. 11
Если же программа не находится в режиме презентации, то по нажатию 'Показать' будет открыт указанный в строке файл (полное имя файла), если он существует. В противном случае будет выдано сообщение. Также в процедуре описаны стандартные (смотри OpenPictureDialog1) действия для изменения вида кнопок, просмотра адреса и имени файла на Panel2.
Программа поддерживает полноэкранный режим, который вызывается: Меню-Вид-Во весь экран, нажатием Enter либо двойным щелчком по Image1:
procedure TForm1.Image1DblClick(Sender: TObject);
begin
IF Form1.WindowState=wsNormal THEN BEGIN
FormWidth:=Form1.Width;
FormHeight:=Form1.Height;
FormTop:=Form1.Top;
FormLeft:=Form1.Left;
Form1.BorderStyle:=bsNone;
Form1.WindowState:=wsMaximized;
BitBtn1.Visible:=False;
BitBtn2.Visible:=False;
Edit1.Visible:=False;
Button1.Visible:=False;
N1.Visible:=False;
N6.Visible:=False;
N15.Visible:=False;
Panel1.Height:=Form1.Height;
END
ELSE BEGIN
Form1.BorderStyle:=bsSizEable;
Form1.WindowState:=wsNormal;
Form1.Width:=FormWidth;
Form1.Height:=FormHeight;
Form1.Top:=FormTop;
Form1.Left:=FormLeft;
N1.Visible:=True;
N6.Visible:=True;
N15.Visible:=True;
Panel1.Height:=Form1.Height-174;
BitBtn1.Visible:=True;
BitBtn2.Visible:=True;
Edit1.Visible:=True;
Button1.Visible:=True;
END;
end;
Она работает следующим образом: если полноэкранный режим не включён, то:
запоминаются параметры окна (положение, ширина и высота формы)
изменяя свойство Form1.BorderStyle убирается рамка и заголовок формы, а Form1.WindowState - делает размеры формы максимальными
все компоненты формы, кроме Panel1, Image1 и Panel2 делаются невидимыми, а высота Panel1 становится равной высоте формы.
Если полноэкранный режим включён, то:
окно принимает обычный вид, появляется заголовок и рамка
восстанавливаются запомненные параметры окна
все компоненты становятся видимыми, а высота Panel1 отличается от высоты формы на 174.
В программе есть возможность сохранять одиночные файлы стандартным образом Меню-Файл-Сохранить как...:
procedure TForm1.N4Click(Sender: TObject);
begin
IF Open=True THEN BEGIN
IF AnsiLowerCase(ExtractFileExt(LoadFile))='.jpg' THEN
SavePictureDialog1.Filter:='JPEG Image File (*.jpg)|*.jpg|' ELSE
IF AnsiLowerCase(ExtractFileExt(LoadFile))='.jpeg' THEN
SavePictureDialog1.Filter:='JPEG Image File (*.jpeg)|*.jpeg|' ELSE
IF AnsiLowerCase(ExtractFileExt(LoadFile))='.bmp' THEN
SavePictureDialog1.Filter:='Bitmaps (*.bmp)|*.bmp|' ELSE
IF AnsiLowerCase(ExtractFileExt(LoadFile))='.ico' THEN
SavePictureDialog1.Filter:='Icons (*.ico)|*.ico|' ELSE
IF AnsiLowerCase(ExtractFileExt(LoadFile))='.emf' THEN
SavePictureDialog1.Filter:='Enhanced Metafiles (*.emf)|*.emf|' ELSE
IF AnsiLowerCase(ExtractFileExt(LoadFile))='.wmf' THEN
SavePictureDialog1.Filter:='Metafiles (*.wmf)|*.wmf';
SavePictureDialog1.FileName:=LoadFile;
IF SavePictureDialog1.Execute THEN
BEGIN
IF FileExists(SavePictureDialog1.FileName) AND (AnsiLowerCase(ExtractFileExt(SavePictureDialog1.FileName))=AnsiLowerCase(ExtractFileExt(LoadFile))) THEN BEGIN
IF MessageDlg('Указанный вами файл уже существует. Заменить?',mtWarning,[mbYes,mbNo],0)=mrYes THEN
Image1.Picture.SaveToFile(SavePictureDialog1.FileName);
END;
IF ExtractFileExt(SavePictureDialog1.FileName)=ExtractFileExt(LoadFile) THEN
BEGIN
Image1.Picture.SaveToFile(SavePictureDialog1.FileName);
Exit;
END ELSE
IF ExtractFileExt(SavePictureDialog1.FileName)='' THEN
BEGIN
Image1.Picture.SaveToFile (SavePictureDialog1.File Name+ExtractFileExt (LoadFile));
Exit;
END ELSE
SHOWMESSAGE('Неверно указан тип файла');
Exit;
END;
end;
Данная программа не является редактором или преобразователем изображений, поэтому в процедуре сохранения файла для каждого типа файла создаётся свой фильтр SavePictureDialog1.Filter, в который записывается только одно расширение для данного открытого файла. По умолчанию предлагается сохранить файл под тем же именем и в ту же папку. Если файл существует, то будет предложено заменить его. Если было принудительно введено разрешение, не соответствующее фильтру - будет выдано сообщение.
На вызов пунктов справки выполняется только одно действие - сообщение:
программа переменная презентация справка
procedure TForm1.N16Click(Sender: TObject);
begin
SHOWMESSAGE('Данная программа предназначена для просмотра изображений практически всех форматов. Она не загромождена лишними функциями и не занимает много места.');
end;
procedure TForm1.N17Click(Sender: TObject);
begin
SHOWMESSAGE('В режиме презентации необходимо вводить адрес папки с завершающим символом \ (слеш) либо полное имя файла');
end;
procedure TForm1.N18Click(Sender: TObject);
begin
SHOWMESSAGE('Программу составил студент БНТУ Гр. 113314 Селянтьев В.А. Программа не имеет лицензионного соглашения и распространяется в свободном виде. Отзывы и предложения по программе присылайте по адресу: vlad_user@mail.ru');
end.
По нажатию Меню-Файл-Выход или горячих клавиш Alt+F4 программа закрывается:
procedure TForm1.N12Click(Sender: TObject);
begin
Close;
end;
Заключение
Мы получили программу для просмотра изображений с возможностью просматривать все файлы картинок, находящиеся в папке, создавать свои папки и сохранять в них нужные изображения. Эта программа удобна в том случае, когда параллельно выполнению какого-либо объемного процесса выполняется эта программа, практически не влияя на основной процесс, а также для тех, у кого ещё сохранились компьютеры с низкой производительностью.
Для тех, кто хочет создать свою программу для просмотра изображений, советую добавить в неё Drag-and-Drop и сглаживание, а также возможность объявлять программу как приложение файлов рисунков.
Список использованной литературы
1. Фаронов В.В. Delphi6: Учебный курс. - Москва, 2001.
2. Кнут Д. Искусство программирования: Т1 Основные алгоритмы. - 3-е изд. Москва: Вильямс, 2000.
Размещено на Allbest.ru
Подобные документы
Рассмотрение особенностей среды программирования Delphi. Разработка программы для пересчета длины из фунтов в килограммы с использованием следующих объектов: Edit, Label, Button. Значения свойств поля ввода-редактирования и командной кнопки Перерасчет.
практическая работа [177,2 K], добавлен 18.10.2012Написание программы для работы с клиентами средствами языка Delphi, которая предусматривает ввод, редактирование и удаление информации. Разработка алгоритма решения задачи, описание переменных, вспомогательных процедур, входных и выходных данных.
курсовая работа [355,7 K], добавлен 21.09.2010Свойства компонентов Label, Edit, Button, Memo вкладки Standard среды Си++ Builder и использование их в программе. Построение простейших форм приложений по вводу-выводу данных. Порядок действий при вычислении выражений. Линейные вычислительные процессы.
лабораторная работа [191,0 K], добавлен 31.03.2012Разработка программы тестирования студентов по MS PowerPoint с кодом на языке Delphi. Создание алгоритма для решения функциональных требований задачи. Описание переменных, вспомогательных процедур, входных и выходных данных для реализации программы.
курсовая работа [1,5 M], добавлен 21.09.2010Программа операционной системы. Перемещение и копирование объектов. Окна Windows, операционное меню, настройка свойств папки, вызов справки Windows. Работа с дисками, папками и файлами, с приложениями и документами. Стандартные программы Windows.
контрольная работа [21,9 K], добавлен 29.01.2011Создание программы, работающей с набором данных на внешнем устройстве. Описание программного комплекса. Обзор структуры главной программы. Процедура добавления новых элементов, поиска и создания на экране вертикального меню. Проверка работы программы.
курсовая работа [265,6 K], добавлен 28.08.2017Особенности создания программы "Файловый менеджер" в среде объектно-ориентированного программирования Delphi. Назначение и основные функции программы, формулировка задачи. Описание программы, использованные компоненты, интерфейс и порядок применения.
контрольная работа [1,3 M], добавлен 19.06.2012Предмет объектно-ориентированного программирования и особенности его применения в средах Паскаль, Ада, С++ и Delphi. Интегрированная среда разработки Delphi: общее описание и назначение основных команд меню. Процедуры и функции программы Delphi.
курсовая работа [40,8 K], добавлен 15.07.2009Разработка головоломки на основе гравюры Альбрехта Дюрера "Магический квадрат". Главные составные части среды программирования Delphi, особенности ее стандартных компонентов и процесса сохранения программы. Компоненты и алгоритмы создаваемой программы.
курсовая работа [147,1 K], добавлен 05.02.2015Особенности разработки приложений для операционной системы с помощью императивного, структурированного, объектно-ориентированного языка программирования Delphi. Формальное начало программы. Выделение конца программного блока. Листинг и описание программы.
курсовая работа [1,2 M], добавлен 04.08.2014