HyperLink


Bejelentkezés
E-mail: 
Jelszó: 






Skip Navigation Links
 

Tetszőleges állomány hozzáadása a projekthez makróval


Példaprogram letöltése

19093 bájt

A Visual Studio.NET keretrendszer saját objektummodellel rendelkezik, melyben külön objektumok képviselik a betöltött projekteket, illetve azok állományait. Az objektummodell elemei makrókból is elérhetők, így hasznos funkciókat valósíthatunk meg viszonylag kevés kódolás árán. Cikkünkben egy olyan makrót készítünk, mely lehetővé teszi, hogy a rendszer egy tetszőleges – általunk dialógusablakból kiválasztható - állományát adjuk a megnyitott projekthez. A hozzáadott állomány megjelenik a projekt mappájában, és erőforrásai között is.

A mellékelt makró használata előtt be kell azt töltenie a keretrendszer makrói közé. Ennek módjáról a cikk „Kezdeti lépések” című szakaszában olvashat.
A makró segítségével tehát egy állományt választhatunk ki egy FileDialog típusú dialógusablakban, majd a kiválasztott fájlt a projekt részévé tesszük.
Kezdeti lépések
A keretrendszer Macro Explorer ablakában találunk egy Macros csomópontot, mely alapértelmezésben már tartalmaz betöltött makró projekteket. Ezekhez fűzzük a saját projektünket, melyet a mellékelt példa Macro mappájában helyeztünk el.
A Macros csomópont gyorsmenüjében válasszuk a „Load Macro Project” feliratú menüpontot, majd a felbukkanó keresőablakban keressük meg a saját makró-projektünket.


Miután a projektet megtaláltuk és betöltöttük, megjelenik egy AnyToProjectMacro csomópont, melynek Module1 nevű modulja tartalmazza az aláírást generáló AddToProject metódust.
Makró elkészítése
A makró metódusának meghívásakor meg kell jelenítenünk egy dialógusablakot, mely a Windows-os alkalmazások OpenFileDialog komponense által megjelenített dialógusablakkal azonos objektum. Ennek megjelenítéséhez a Windows-os alkalmazásban a ShowDialog metódust használjuk, melynek nem adunk meg paramétert, hiszen az ablak tulajdonosa a Windows-os Form objektum.
Makrók esetében – mert ezek nem rendelkeznek főablak-osztállyal – nem tudunk megadni szülőobjektumot. Létre kell tehát hozni egy osztályt, mely az IWin32Window osztályból származik, és ebben megadni, hogy a Visual Studio.NET keretrendszer főablaka lesz a fájl-dialógusablak tulajdonosa. Az osztály deklarációja a következő:
Public Class Win32 Implements System.Windows.Forms.IWin32Window
  Overridable ReadOnly Property Handle() As System.IntPtr Implements System.Windows.Forms.IWin32Window.Handle
    Get
      Dim iptr As New System.IntPtr(DTE.MainWindow.HWnd)
      Return iptr
    End Get
  End Property
End Class
Az osztályban az interfész Handle property-jét kell felüldefiniálni.
A következő lépés, hogy létrehozzuk a dialógusablak példányt, valamint egy objektumot a dialógusablak bezárásakor kapott eredmény tárolására.
Dim filedialog As Forms.FileDialog
filedialog = New Forms.OpenFileDialog()
...
Dim result As Forms.DialogResult
Majd példányosítjuk a fent létrehozott osztályt.
ptr = New Win32()
Egy változóban lekérdezzük a rendszermeghajtó betűjelét, hogy ezt megadhassuk a fájl-dialógusablak kezdőkönyvtárának.
initdirectory = System.Environment.SystemDirectory()
initdirectory = Left(initdirectory, InStr(initdirectory, "\", CompareMethod.Text))
filedialog.InitialDirectory = initdirectory
Utolsó lépésként megnyitjuk a dialógusablakot, majd amennyiben választottunk ki állományt, a kapott fájl nevét és elérési útvonalát átadjuk a DTE.ItemOperations.AddExistingItem metódusának.
If filedialog.ShowDialog(ptr) = result.OK Then
  filename = filedialog.FileName
  DTE.ItemOperations.AddExistingItem(filename)
  ...
A makró ezennel kész, egy kattintással kiválaszthatjuk, és a projekthez adhatjuk a kívánt állományt.

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2003 évkönyv 700. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2010 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |