Hoe Delphi bronbestanden gebruikt

Van bitmaps tot pictogrammen tot cursors tot stringtabellen, elk Windows-programma gebruikt bronnen. Middelen zijn die elementen van een programma die het programma ondersteunen, maar geen uitvoerbare code zijn. In dit artikel bespreken we enkele voorbeelden van het gebruik van bitmaps, pictogrammen en cursors uit bronnen.

Locatie van bronnen

Het plaatsen van bronnen in het .exe-bestand heeft twee hoofdfuncties voordelen:

  • De bronnen zijn sneller toegankelijk omdat het minder tijd kost om een ​​bron in het uitvoerbare bestand te lokaliseren dan om het vanaf een schijfbestand te laden.
  • Het programmabestand en de bronnen kunnen in een enkele eenheid (het .exe-bestand) worden opgenomen zonder dat er veel ondersteunende bestanden nodig zijn.

De afbeeldingseditor

Allereerst moeten we een bronbestand maken. De standaard extensie voor bronbestanden is.RES. Bronbestanden kunnen worden gemaakt met Delphi's Image Editor.

U kunt het bronbestand elke gewenste naam geven, zolang het de extensie ".RES" heeft en de bestandsnaam zonder de extensie niet hetzelfde is als de bestandsnaam van een eenheid of project. Dit is belangrijk, omdat elk standaard

instagram viewer
Delphi-project dat compileert in een applicatie heeft een bronbestand met dezelfde naam als het projectbestand, maar met de extensie ".RES". U kunt het bestand het beste opslaan in dezelfde map als uw projectbestand.

Bronnen opnemen in applicaties

Om toegang te krijgen tot ons eigen bronbestand, moeten we Delphi vertellen dat hij ons bronbestand moet koppelen aan onze applicatie. Dit wordt bereikt door een compilerrichtlijn toe te voegen aan de broncode. Deze richtlijn moet onmiddellijk de formulierrichtlijn volgen, zoals de volgende:

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

Wis niet per ongeluk het {$ R * .DFM} -gedeelte, aangezien dit de coderegel is die Delphi vertelt om te linken in het visuele deel van het formulier. Wanneer u bitmaps kiest voor snelheidsknoppen, afbeeldingscomponenten of knopcomponenten, neemt Delphi het bitmapbestand op dat u hebt gekozen als onderdeel van de formulierbron. Delphi isoleert uw gebruikersinterface-elementen in het .DFM-bestand.

Om de bron daadwerkelijk te gebruiken, moet u er een paar maken Windows API oproepen. Bitmaps, cursors en pictogrammen die zijn opgeslagen in RES-bestanden kunnen worden opgehaald met behulp van de API-functies LoadBitmap, LoadCursor, en LoadIcon respectievelijk.

Afbeeldingen in bronnen

Het eerste voorbeeld laat zien hoe u een bitmap laadt die is opgeslagen als een resource en deze weergeeft in een TImage component.

procedure TfrMain.btnCanvasPic (Afzender: TObject);
var bBitmap: TBitmap;
beginnen
bBitmap: = TBitmap. Creëren;
proberen
bBitmap. Handle: = LoadBitmap (hInstance, 'ATHENA');
Image1.Width: = bBitmap. Breedte;
Image1.Height: = bBitmap. Hoogte;
Image1.Canvas. Tekenen (0,0, bBitmap);
Tenslotte
bBitmap. Vrij;
einde;
einde;

Opmerking: als de bitmap die moet worden geladen niet in het bronbestand staat, zal het programma nog steeds worden uitgevoerd, maar wordt de bitmap niet weergegeven. Deze situatie kan worden voorkomen door te testen of de bBitmap. Omgaan met is nul na een oproep naar LoadBitmap () en het nemen van de juiste stappen. De probeer / eindelijk een deel in de vorige code lost dit probleem niet op, het is er alleen om ervoor te zorgen dat de bBitmap wordt vernietigd en het bijbehorende geheugen wordt vrijgegeven.

Een andere manier waarop we een bitmap van een bron kunnen weergeven, is als volgt:

procedure TfrMain.btnLoadPicClick (Afzender: TObject);
beginnen
Image1.Foto. Bitmap.
LoadFromResourceName (hInstance, 'EARTH');
einde;

Cursors in bronnen

Scherm. Cursors [] is een matrix cursors geleverd door Delphi. Door bronbestanden te gebruiken, kunnen we aangepaste cursors toevoegen aan de eigenschap Cursors. Tenzij we een van de standaardwaarden willen vervangen, is de beste strategie om cursornummers te gebruiken vanaf 1.

procedure TfrMain.btnUseCursorClick (Afzender: TObject);
const NewCursor = 1;
beginnen
Scherm. Cursors [NewCursor]: =
LoadCursor (hInstance, 'CURHAND');
Image1.Cursor: = NewCursor;
einde;

Pictogrammen in bronnen

Als we naar Delphi's kijken Project-opties-toepassing instellingen, kunnen we zien dat Delphi het standaardpictogram voor een project levert. Dit pictogram vertegenwoordigt de applicatie in de Windows Verkenner en wanneer de applicatie is geminimaliseerd. We kunnen dit eenvoudig wijzigen door op de knop 'Laadpictogram' te klikken.

Als we bijvoorbeeld het programmapictogram willen animeren wanneer het programma is geminimaliseerd, dan volstaat de volgende code.

Voor de animatie hebben we een nodig TTimer component op een formulier. De code laadt twee pictogrammen uit het bronbestand in een reeks TIcon voorwerpen; deze array moet worden gedeclareerd in het openbare deel van het hoofdformulier. We hebben ook nodig NrIco, dat is een Integer-type variabel, verklaard in de openbaar een deel. De NrIco wordt gebruikt om het volgende pictogram bij te houden dat moet worden weergegeven.

openbaar
nrIco: Integer;
MinIcon: array [0..1] van TIcon;
...
procedure TfrMain. FormCreate (Afzender: TObject);
beginnen
MinIcon [0]: = TIcon. Creëren;
MinIcon [1]: = TIcon. Creëren;
MinIcon [0] .Handle: = LoadIcon (hInstance, 'ICOOK');
MinIcon [1] .Handle: = LoadIcon (hInstance, 'ICOFOLD');
NrIco: = 0;
Timer1.Interval: = 200;
einde;
...
procedure TfrMain. Timer1Timer (Afzender: TObject);
beginif IsIconic (toepassing. Omgaan met) vervolgensbeginnen
NrIco: = (NrIco + 1) mod 2;
Toepassing. Icoon: = MinIcon [NrIco];
einde;
einde;
...
procedure TfrMain. FormDestroy (Afzender: TObject);
beginnen
MinIcon [0] .Gratis;
MinIcon [1] .Gratis;
einde;

In de Timer1.OnTimer gebeurtenis handler, Is geminimaliseerd functie wordt gebruikt om te zien of we ons hoofdpictogram moeten animeren of niet. Een betere manier om dit te bereiken zou zijn om de knoppen voor maximaliseren / minimaliseren vast te leggen en vervolgens te handelen.

Laatste woorden

We kunnen alles (nou ja, niet alles) in bronbestanden plaatsen. Dit artikel heeft u laten zien hoe u bronnen kunt gebruiken om bitmap, cursor of een pictogram in uw Delphi-toepassing te gebruiken / weergeven.

Opmerking: wanneer we een Delphi-project op de schijf opslaan, maakt Delphi automatisch één .RES-bestand met dezelfde naam als het project (als er niets anders is, staat het hoofdpictogram van het project erin). Hoewel we dit bronbestand kunnen wijzigen, is dit niet aan te raden.

instagram story viewer