Нав

Чӣ тавр Delphi файлҳои захиравиро истифода мебарад

Чӣ тавр Delphi файлҳои захиравиро истифода мебарад


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

Аз нуқтаҳо ба нишонаҳо то курсорҳо ба ҷадвалҳои сатрӣ, ҳар як барномаи Windows захираҳоро истифода мебарад.Захираҳо он унсурҳои барномае мебошанд, ки барномаро дастгирӣ мекунанд, аммо рамзи иҷрошаванда нестанд. Дар ин мақола, мо якчанд мисолҳои истифодаи bitmap, нишонаҳо ва курсорҳоро аз захираҳо дида мебароем.

Ҷойгиршавии захираҳо

Ҷойгиркунии захираҳо дар файли .exe ду асос дорадбартариҳои:

  • Ба захираҳо зудтар дастрас шудан мумкин аст, зеро барои дарёфт кардани манбаъ дар файли иҷрошаванда вақти камтар сарф мешавад, нисбат ба он, ки он аз файли диск бор кунад.
  • Файли барнома ва манбаъҳо метавонанд дар як воҳиди ягона дошта бошанд (файли .exe) бидуни зарурати бисёр файлҳои дастгирӣ.

Муҳаррири тасвир

Пеш аз ҳама, мо бояд як файли захиравӣ эҷод кунем. Васеъкунии пешфарз барои файлҳои захиравӣ ин аст.RES. Файлҳои захираҳоро бо муҳаррири тасвирии Delphi эҷод кардан мумкин аст.

Шумо метавонед файли захираро ҳар чизе ки мехоҳед, номгузорӣ кунед, агар он васеъшавии ".RES" -ро дошта бошад, ва номи файл бидуни васеъшавӣ бо ягон воҳиди номӣ ё номи лоиҳа якхел нест. Ин хеле муҳим аст, зеро бо нобаёнӣ, ҳар як лоиҳаи Delphi, ки ба замима муроҷиат мекунад, як файли захиравӣ бо номи файли лоиҳа дорад, аммо бо паҳншавии ".RES" дорад. Беҳтар аст, ки файлро дар ҳамон директорияе, ки файли лоиҳаи шумо аст, нигоҳ доред.

Аз он ҷумла Захираҳо дар Барномаҳо

Барои дастрасӣ ба файли захираҳои шахсии худ, мо бояд ба Delphi бигӯем, ки файли захиравии худро бо барномаи мо пайваст кунад. Ин тавассути илова кардани дастури мураккаб ба рамзи манбаъ анҷом дода мешавад. Дастурамали мазкур бояд фавран дастури шакли зеринро иҷро кунад, ба монанди:

{$ R * .DFM}
{$ R DPABOUT.RES}

Қисмати {$ R * .DFM} -ро тасодуфан нест накунед, зеро ин хатти рамзест, ки ба Delphi мегӯяд, ки дар қисми визуалии форма пайванд мешавад. Вақте ки шумо тугмаҳои суръатро барои тугмаҳои суръат, ҷузъҳои тасвир ё ҷузъҳои тугма интихоб мекунед, Delphi файли суръатфизоеро, ки шумо ҳамчун як қисми манбаи форма интихоб кардаед, дар бар мегирад. Delphi унсурҳои интерфейси корбарии шуморо ба файли .DFM ҷудо мекунанд.

Барои истифодаи воқеии манбаъ, шумо бояд якчанд Windows API занг занед. Нишондиҳандаҳо, курсорҳо ва нишонаҳои дар файлҳои RES нигоҳдошташуда бо истифодаи функсияҳои API барқарор карда мешаванд LoadBitmap, LoadCursor, ва LoadIcon мутаносибан.

Суратҳо дар Захираҳо

Намунаи аввал нишон медиҳад, ки чӣ гуна битмапи захирашавандаро бор кардан ва дар a TImage ҷузъи.

тартиби TfrMain.btnCanvasPic (Ирсолкунанда: TObject);
var bBitmap: TBitmap;
Оғоз
bBitmap: = TBitmap.Create;
кушиш кунед
bBitmap.Handle: = LoadBitmap (hInstance, 'ATHENA');
Image1.Width: = bBitmap.Width;
Image1.Height: = bBitmap.Height;
Image1.Canvas.Draw (0,0, bBitmap);
дар охир
bBitmap.Free;
Поён;
Поён;

Эзоҳ: Агар bitmap, ки бояд бор карда шавад, дар файли манбаъ нест, барнома ҳоло ҳам кор мекунад, он суръатро нишон дода наметавонад. Ин вазъро метавон бо роҳи озмоиш пешгирӣ кард то бубинад, ки оёbBitmap.Хандл пас аз занг ба сифр астLoadBitmap () ва андешидани чораҳои дахлдор. Қисми кӯшиш / дар ниҳоят дар коди қаблӣ ин мушкилотро ҳал намекунад, маҳз дар ин ҷо боварӣ ҳосил кардан лозим аст, ки bBitmap нобуд карда мешавад ва хотираи ба он алоқаманд озод карда шудааст.

Роҳи дигаре, ки мо барои намоиши харитаи суръат аз манба истифода бурда метавонем, инҳоянд:

тартиби TfrMain.btnLoadPicClick (Ирсолкунанда: TObject);
Оғоз
Тасвири 1.Пиктура.Bitmap.
LoadFromResourceName (hInstance, 'EARTH');
Поён;

Курсорҳо дар Захираҳо

Screen.Cursors як қатор курсорҳо аз ҷониби Delphi мебошад. Бо истифодаи файлҳои захиравӣ, мо ба курсорҳои хусусӣ ба моликияти Cursors илова карда метавонем. Агар мо намехоҳем ягон пешфарзро иваз кунем, беҳтарин стратегия истифодаи рақамҳои курсор аз 1 мебошад.

тартиби TfrMain.btnUseCursorClick (Ирсолкунанда: TObject);
const NewCursor = 1;
Оғоз
Screen.CursorsNewCursor: =
LoadCursor (hInstance, 'CURHAND');
Image1.Cursor: = NewCursor;
Поён;

Нишонаҳо дар Захираҳо

Агар ба Delphi назар кунемЛоиҳа-Параметрҳо-Ариза дар танзимот, мо ёфта метавонем, ки Delphi тасвири пешфарзро барои лоиҳа таъмин мекунад. Ин нишона замимаро дар Windows Explorer муаррифӣ мекунад ва вақте ки ин барнома хурд карда мешавад. Мо инро бо пахши тугмаи 'Load Icon' ба осонӣ иваз карда метавонем.

Агар мо хоҳем, масалан, вақте ки программа хурд карда мешавад, нишони барномаро аниматсия кунем, пас рамзи зерин кор мекунад.

Барои аниматсия ба мо лозим астТТимер ҷузъи дар шакли. Код ду тасвирро аз файли захиравӣ ба массиви бор мекунадTIcon объектҳо; ин қатор бояд дар қисми оммавии шакли асосӣ эълом карда шавад. Мо ҳам ниёз доремNrIco, ки ин тағирёбандаи навъи Integer аст, дар эълонҷамъиятӣ қисми. ДарNrIco барои нигоҳ доштани нишонаи навбатӣ барои нишон додан истифода мешавад.

ҷамъиятӣ
nrIco: Integer;
MinIcon: array0… 1 аз TIcon;

тартиби TfrMain.FormCreate (Ирсолкунанда: TObject);
Оғоз
MinIcon0: = TIcon.Create;
MinIcon1: = TIcon.Create;
MinIcon0.Handle: = LoadIcon (hInstance, 'ICOOK');
MinIcon1.Handle: = LoadIcon (hInstance, 'ICOFOLD');
NrIco: = 0;
Вақтсанҷи 1. Фосила: = 200;
Поён;

тартиби TfrMain.Timer1Timer (Ирсолкунанда: TObject);
startif IsIconic (Application.Handle) баъд Оғоз
NrIco: = (NrIco + 1) мод 2;
Application.Icon: = MinIconNrIco;
Поён;
Поён;

тартиби TfrMain.FormDestroy (Ирсолкунанда: TObject);
Оғоз
MinIcon0.Рӯй;
MinIcon1.Free;
Поён;

Дар Вақтсанҷи1.OnTimer баргузоркунандаи чорабинӣ, Исмин карда шудааст функсия истифода бурда мешавад, то бубинем, ки мо тасвири асосии худро зинда кунем ё не. Роҳи беҳтарини иҷрои ин ин гирифтани аксҳои хурд / кам кардан ва ба кор даровардани он аст.

Калимаҳои ниҳоӣ

Мо ҳама чизро (инчунин, на ҳама чизро) дар файлҳои захиравӣ ҷойгир карда метавонем. Ин мақола ба шумо нишон дод, ки чӣ гуна истифода бурдани захираҳоро барои истифода / намоиши суръат, нишоннамо ё нишона дар барномаи Delphi кунед.

Эзоҳ: Вақте ки мо як лоиҳаи Delphi -ро ба диск ҳифз мекунем, Delphi ба таври худкор як файли .RES-ро эҷод мекунад, ки бо лоиҳа ҳамҷинс аст (агар чизи дигаре набошад, нишонаи асосии лоиҳа дар дохили он аст). Гарчанде ки мо метавонем ин файли захираро тағйир диҳем, ин тавсия дода намешавад.



Шарҳҳо:

  1. Barisar

    Ман дар назар дорам, ки шумо дуруст нестед. Ворид кунед, мо онро муҳокима мекунем. Ба ман дар PM нависед, мо онро ҳал мекунем.

  2. Strong

    Ман мехостам бо шумо дар ин мавзӯъ сӯҳбат кунам.

  3. Togal

    Ин мавзӯъ танҳо беҳамто аст :), ба ман хеле маъқул аст)))

  4. Avery

    Маро як лаҳза нагиред?



Паём нависед