Қадам 3 – INI-файлын қолдану
Енді бағдарлама жұмысының алгоритімінің басын келесі түрдей ауыстырамыз:
Бағдарлама ашылған жерден INI-файлын осы папкада іздейміз.
Егер де ол бар болса, оны INI-файлында көрсетілген МҚ – ның жолына сәйкес ашамыз. Егер де ол жоқ болса, оны INI-файлында МҚ – ның жолы болмайды да келесі f) пунктіне көшеміз.
Егер де ашылған папкада INI-файлы жоқ болса, онда e) пунктіне көшеміз.
Егер де INI-файлы болса және де Database секциясы немесе PathBase кілті табылмаса, онда қате туралы мәлімет шығарамыз да келесі f) пунктіне көшеміз.
Ашылған бағдарлама папкасында МҚ файылын іздейміз. Егер ол болса, оны ашып жұмысты орындаймыз. Егер де ол жоқ болса, онда f) пунктіне көшеміз.
МҚ – ының файылын табу үшін экранға диалогты терезесін шығарамыз. Егер қолданушы оны диалогты терезеде таба алмаса, онда олармен қоштасып жұмысты аяқтаймыз.
Қолданушы МҚ – ының файылын диалогты терезеде тапса, онда оны бағдарламада берілген жолды сақтау керек. Нақтыландыратын жауапты табылған жолды INI-файлына сақтаймыз.
Табылған МҚ - мен байланысамыз да бағдарламаның жұмысын бастаймыз.
Жаңа алгоритмді тексеру және нақтылау үшін төмендегі мысалдарды орындаймыз:
Қолданылатын модульдерге inifiles модулін қосамыз.
Модуль формасының мәтініне өзгертулер енгіземіз, төмендегі қара шрифтпен жазылғандарды:
function FindFileBD(nmFileBD,nmIniFil:string;var scon:string; var dlg:TOpenDialog): string;
var sb,sIni:string;IniFil:TIniFile;
begin
sb:='';sIni:=ExtractFilePath(ParamStr(0))+ nmIniFil;
if FileExists(sIni) then
begin
IniFil := TIniFile.Create(sIni);
try
sb:=IniFil.ReadString('Database', 'PathBase', '');
if sb='' then ShowMessage('Ошибка INI-файла !'+#13#10+sIni);
finally
IniFil.Free;
end;
end;
if sb='' then sb:= ExtractFilePath(ParamStr(0))+ nmFileBD;
if Not(FileExists(sb)) then
begin
//Настройка диалога:
dlg.Filter:='Файл ' +nmFileBD+'|'+nmFileBD;
dlg.Title :='Найдите файл базы данных !';
dlg.InitialDir:=ExtractFilePath(ParamStr(0));
if dlg.Execute then begin
sb:=dlg.FileName;ChangeBasePath(scon,sb);
if MessageDlg('Сохранить путь к БД в настройках программы?',
mtConfirmation,[mbYes,mbNo],0)=mrYes then begin
IniFil := TIniFile.Create(sIni);
try
IniFil.WriteString('Database', 'PathBase', sb);
except
ShowMessage('Ошибка INI-файла !'+#13#10+sIni);
end;
IniFil.Free;
end;
end else begin
ShowMessage('Не найден файл БД:'+#13#10+sb+#13#10+'До свидания !');
sb:='';
end;
end;
Result:=sb;
if sb<>'' then ChangeBasePath(ConStr,sb);
end;
procedure TfmMain.FormCreate(Sender: TObject);
var sbase:string;
begin
sbase:=FindFileBD('BDMyWorld.mdb','MyWorld.INI',ConStr,dlgBD);
if sbase<>'' then begin
ADOQuery1.Active :=False;
ADOQuery1.ConnectionString :=ConStr;
ADOQuery1.Active :=True;
NameSortField:=DBGrid1.Columns[0].FieldName;Desc:=False;
NewQuerySQL;
end else Application.Terminate;
end;
Назар аударыңыз! Келесі қадамға бармай тұрып, Active қасиетіне ADOQuery1 копонентасына False! мәнін беріңіз.
Қолданылған модельдерге inifiles модулін қосыңыз және проекті компилировать ету керек. Менюдан CTRL+F9 таңдап және далее, қате болмаса келесі істі орындаңыз.
Бағдарламаны проводник арқылы жіберіп, төмендегі тізімдер арқылы оның жұмысын тексеріңіз:
МҚ – ның файлы да INI-файлы да жіберу папкасында жоқ.
Тек қана INI-файлы жіберу папкасында бар.
МҚ – ның файлы да INI-файлы да жіберу папкасында бар.
INI-файлының ішінде қате бар, мысалы, Database секциясы жоқ, немесе PathBase кілті, немесе МҚ – на жол дұрыс көрсетілмеген.
Қандай да жағдайда бағдарлама жоғарыда жазылған алгоритмге сай жұмыс істеуі қажет.
Тәжірибелік жұмыс№5. «MyWorld» МҚ құру.
Работа с графическими изображениями и буфером обмена
BDMyWorld.mdb жобасы бар папканы қайтарыңыз.Мәліметтер қорында маңызды ролді Memo- өрісі атқарады. Бұл өріс құрамында өлшемі анықталмаған көпжолды мәтін болады.
1 –қадам Жаңа өріс құру және бастапқы форманы баптау.
Ms-Access-те BDMyWorld.mdb файлын ашыңыз және содан кейін конструктор режимінде «Страны» кестесін ашыңыз. Осы кестеде жаңа өріс құрып, суретте көрсетілгендей етіп толтырыңыз:
Ms-Access-ті жауып, Delphi-ге оралыңыз. Щелкните дважды мышью по компоненту ADOQuery1 компононтін екі рет шертіп, содан кейін пайда болған өрісті редактрлеу терезесінде тышқанның оң жағын шертіңіз. Қалқып шығатын менюден «Add Fields» пунктін таңдаңыз. Жаңа өрістер тізімде болуы керек.Редактор өрісін жабыңыз.
DataControls бетінен біздің бастапқы формамыздың проектісіндегі DBImage-дің 3 компонентіне paLeft панелін ретпен жоғарыдан төмен орналастырыңыз.
Инспекторе объектте барлық жаңа компоненттердің DataSource қасиетіне DataSource1 мағынасын орнатыңыз. ShowHint және Stretch қасиеттеріне True мағынасын орнатыңыз. Сонымен қатар төмендегі кестеде көрсетілген қасиеттерді де кестедегідей етіп орнатыңыз:
Имя
компонента
|
Значения свойств
|
DataFild
|
Align
|
Hint
|
DBImage1
|
Flag
|
alTop
|
ФЛАГ
|
DBImage2
|
Map
|
alTop
|
КАРТА
|
DBImage3
|
FOTO
|
alClient
|
ФОТОГРАФИЯ
|
Қалқып шығатын көмек беруші тез қалқып шығуы үшін бастапқы формадағы OnCreate өңдеушісінің соңына төменде қалың қаріппен белгіленген процедураны жазыңыз:
procedure TfmMain.FormCreate(Sender: TObject);
var sbase:string;
begin
sbase:=FindFileBD('BDMyWorld.mdb','MyWorld.INI',ConStr,dlgBD);
if sbase<>'' then begin
ADOQuery1.Active :=False;
ADOQuery1.ConnectionString :=ConStr;
ADOQuery1.Active :=True;
NameSortField:=DBGrid1.Columns[0].FieldName;Desc:=False;
NewQuerySQL;
end else Application.Terminate;
Application.HintPause :=0;
end;
DBImage компонентінің формасының өлшемін өзгерткенкезде әрқашан бірдей биіктікте болуы үшін, OnResize формасының төменде көрсетілген процедурасын жазыңыз:
procedure TfmMain.FormResize(Sender: TObject);
begin
DBImage1.Height:=paLeft.Height div 3;
DBImage2.Height:=paLeft.Height div 3;
end;
Жаңа өріске суретті графикалық файлдарды ашу жолы арқылы орналастырамыз, сонымен қатар алмасу буферінің көмегі арқылы . Әрбір компонент үшін кнопка құру ыңғайсыз болғандықтан, керек командаларды орындайтын қалқымалы меню құрамыз.
Win32 бетінен ImageList компонентін формаға орналастырамыз және Name қасиетіне imClip мағынасын таңдаймыз, ал Width және Height қасиеттеріне 16 деген мән беріңіз. Содан кейін осы объектке екі рет шертіп, пайда болған Add кнопкасын басу арқылы ../STUDENT/Заготовки/Buttons папкасынан табуға болатын керек суреттерді қосыңыз :
Төменде көрсетілгендей етіп 12 суретті ретімен орналастырыңыз:
Имя файла с картинкой
|
№ (индекс) в наборе
|
penEnabled.bmp
|
0
|
OpenDisabled.bmp
|
1
|
PasteEnabled.bmp
|
2
|
PasteDisabled.bmp
|
3
|
CopyEnabled.bmp
|
4
|
CopyDisabled.bmp
|
5
|
CutEnabled.bmp
|
6
|
CutDisabled.bmp
|
7
|
SaveEnabled.bmp
|
8
|
SaveDisabled.bmp
|
9
|
ClearEnabled.bmp
|
10
|
ClearDisabled.bmp
|
11
|
|
|
Формаға PopupMenu компонентін орналастырыңыз және оның Name қасиетіне MenuClip мағынасын беріңіз. Кейін оған екі рет шертіп, дизайнер менюінде төменде көрсетілген пункттерді формалап оған төмендегі кестеде көрсетілген қасиеттерді беріңіз:
Name
|
Caption
|
ImageIndex
|
ShortCut
|
cmOpen
|
Открыть
|
0
|
F3
|
cmPaste
|
Вставить
|
2
|
Ctrl+V
|
cmCopy
|
Копировать
|
4
|
Ctrl+C
|
cmCut
|
Вырезать
|
6
|
Ctrl+X
|
cmSave
|
Сохранить как …
|
8
|
Shift+F2
|
cmClear
|
Очистить
|
10
|
Ctrl+Del
|
DBImage1, DBImage2 және DBImage3 компоненттерінің PopupMenu қасиетіне MenuClip мағынасын беріңіз.
Достарыңызбен бөлісу: |