جامعه برنامه نویس

برگشت   جامعه برنامه نویس > برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > برنامه نویسی در VB.Net

اطلاعیه

برنامه نویسی در VB.Net
سوالات خود درباره برنامه نویسی در Visual Basic.Net را در این بخش مطرح کنید.


پاسخ
 
ابزار های تاپیک طریقه نمایش
قدیمی یک شنبه 18 مرداد 1388, 02:14 صبح   #1
reza1944
کاربر دائمی
 
آواتار reza1944
 
تاریخ عضویت: مهر 1386
محل زندگی: c:\windows\system32
پست: 185
تشکرها: 12
72 بار تشکر شده در 52 پست
Lightbulb ایجاد Office 2007 Com Add-ins

به نام خدا


موضوع : ساخت Com Add ins برای Office 2007

نیاز به : VS2008 و Office 2007


درجه: متوسط به بالا

منابع: MSDN و وب سایت Microsoft و تجربیات فردی خودم




بخشها:

آشنایی
ایجاد یک پروژه
ایجاد محیط ribbon (visual designer)
مثال و توضیحات در مورد آن
خصوصیات propertis
ایجاد در محیط ribbon (XML)
آشنایی با تگ های XML
مثال XML و توضیحات در مورد آن



آشنایی:
بعد از مدتها وقت پیدا کردم تا یک مطلب شاید مفید برای بچه های این فروم بنویسم شاید تا الان در مورد vs2008 و قسمت آفیس یا ایجاد یک Add in بحثهای کمی مطرح شده باشه که در این بخش میخوام در مورد این قسمت در vb بیشتر آشنا بشیم.
COM Add-in: می توان گفت این قسمت همان پلاگین برای آفیس است یعنی چیزهای که به آفیس اضافه شده و کارهای بیشتری را انجام میدهند نمونه آن Office Classic menu را نام برد یا Export Xps , PDF و ...
این آموزش با Visval Studio 2008 و در موردOffice 2007 داده شده است. این نسخه از آفیس و ویژوال را اگر بر روی سیستم خود نصب نکرده اید نصب کنید و ادامه آموزش را بخوانید.
با استفاده از این قسمت می تونید برای مایکروسافت آفیس add in های شخصی بنویسید و از اونها استفاده کنید.
ایجاد یک پروژه:
ویژوال استودیو رو اجرا کنید و بعد به قسمت آفیس بروید


حالا میتونید هر نوع فایل آفیس ، قالب و add_in برای آفیس 2003 و آفیس 2007 را درست کنید.
در مورد add_in برای ورد 2007 صحبت میکنیم و چگونگی درست کردن آن و استفاده از آن را توضیح میدهم.
با انتخاب گزینه word 2007 add-in بعد از انتخاب نام پروژه و محل ذخیره آن وارد محیط زیر میشویم.


در ایجاد کلاسی به نام thisaddin وجود دارد که داری رویدادهای است دو رویدادی که وجود دارد یکی startup یا لحظه شروع کار addin و دیگری shutdown یا لحظه خروج از addin شما است.
در قسمت مشخص شده روی پروژه کلیک راست کرده و از منوی add گزینه new item را انتخاب میکنیم.

در این قسمت می توانید یک کلاس یک ماژول و حتی یک فروم را هم به پروژه اضافه کنید اما قسمت مهم این بخش office است که دو ایتم در آن موجود می باشد.




یکی از انها طراحی ribbon افیس در محیط گرافیکی و نوشتن دستورات آن یکی دیگر هم طراحی در محیط XML و نوشتن دستورات آن که در این قسمت با محیط گرافیکی آن آشنا میشوید.

ایجاد محیط ribbon (visual designer):
روی ribbon (visual designer) کلیک کنید تا محیط ریبون آفیس به نمایش در بیاید.
در قسمت ابزار ( (toolboxبرنامه یک تب به نام office ribbon controls اضافه می شود که سری از آتمها دکمه و combo box و ... برای کار اضافه شده است .




با کلیک راست بر روی قسمت ریبون می توانید tab اضافه کنید و از قسمت ابزار ها هم میتوانید گروپ و غیره را اصافه کنید. با کلیک بر روی دکمه آفیس وی توانید یک دکمه به لیست منوها اضافه کنید .اگر پرو‍ژه را اجرا کنید محیط ورد برای شما باز شده و تمامی تب ها و منو های اضافه شده را در ان ببینید. یعنی شما یک پلاگین (addin) برای آفیس درست کرده اید.
با این شروع و توضیحات داده شده با یک مثال بقیه قسمتها را نیز توضیح میدهم .
مثال و توضیحات در مورد آن:
مثال: با نصب پلاگین در ورد یک می توان تمامی عکسهای یک مسیر را جستجو و به در یکtaskpan قرار داده با انتخاب و کلیک بر روی عکس مورد نظر عکس به محیط ورد وارد شود و نوشته ای هم در محیط نوشته شود.
یک پروژه جدید را اضافه کرده و واردمحیط طراحی میشویم. لیبل گروپ را به image list تغییر می دهیم سه دکمه (یکی (togglebuttonبرای انتخاب عکسها و یکی برای پاک کردن لیست و دیگری برای نمایش task pan در group اضافه میکنیم.


قسمتی که در اینجا وجود دارد انتخاب آیکن برای دکمه ها است. یکی از راههای ان انتخاب تصویر موردنر خود برای دکمه است و دیگری در قسمت خصوصیات دکمه یک خصوصیت با نام OfficeImageId وجود دارد که میتوانید از ایکنهای خود آفیس استفاده کنید. روش استفاده از آن باید از وب سایت شرکت مایکروسافت Office2007ControlIDs را دانلود کنید و نام تمامی کنترل ها در آن وجود دارد و نام تصویر مورد نظر را در خصوصیت بنویسید تا نمایش داده شود. مثال می خواهیم برای دکمه imports از ایکن open خود افیس استفاده کنیم پس در قسمت OfficeImageId مینویسیم FileOpen



خصوصیات propertis:
میبینم که عکس دکمه import به عکس open ورد تغییر کرد
خصوصیت دیگر key tip که برای shortcut key میتوانیم از آن استفاده کنیم. این قسمت بیشتر از سه حرف را نمی تواند قبول کند.
Screen tip هم عنوان و supertip هم برای نوشتن توضیحات یک tooltip دو خصوصیت دیگر است .
Description هم برای نوشیتن توضیحات و نمایش آن در بخش منوی آفیس است.
خصوصیت Control size هم برای نمایش کنترل و آیکن آن در دو نمایی کوچک و بزرگ است.
Position خصوصیت دیگر است که تعیین قرار گیری هر یک از اشیا را مشخص میکند که در مورد آن حرف میزنم.
بقیه خصویات هم مانند آشنا است و نیازی به توضیح ندارد.
می خواهیم task pan را طراحی کنیم پس یک user control به برنامه اضافه میکنم و یک list box و picturebox و دکمه import و clear و insertرا به آن اضافه میکنیم.


برسی کدهای user control

Dim a As New Word.Global
این دستور نقش همهی را دارد چون ما میتوانیم با این دستور با محیط کار ورد ارتباط برقرار کنیم
a.Application.Selection.InlineShapes.AddPicture(pp ic)

این دستور هم باعث میشود که عکس مورد نظر در محل فعلی درج شود . اگز بخواهیم با خود محیط ورد بیشتر ارتباط برقرار کرده و از تمام امکانات آن در محیط کد نویسی استفاده کنیم a.Applicationدستوری است که میتوانید با محیط و تغییر یک فایل ورد مورد استفاده قرار گیرد. ایجاد هدر و فودر و نوشتن در محیط ورد و تمامی کارها که در محیط ورد انجام میشود در این تابع Word.Global و Application کنجانده شده و میتوان از آن استفاده کرد.


برسی کدهای Ribbon1

Dim tl As Microsoft.Office.Tools.CustomTaskPane
Dim tpuc As New UserControl1

دستور اول برای تعریف یک تسک پنل است. خط بعدی نیز یک متغییر از نوع UserControl1 را ایجاد میکنیم.





دستورات زیر در هنگام لود ریبون اجرا میشوند.


tl = Globals.ThisAddIn.CustomTaskPanes.Add(tpuc, "Image List")


tl.DockPosition = Microsoft.Office.Core.MsoCTPDockPosition.msoCTPDoc kPositionLeft


AddHandler tl.VisibleChanged, AddressOf HandleVisibleChanged


دستور نخست یک تسک پنل را با UserControl1 یا متغییر tpuc ایجاد کرده در tl قرار میدهدو dock پنل در سمت چپ ورد قرار میگیرد و نمایش و عدم نمایش پنل نیز در HandleVisibleChanged برسی میشود.
بقیه دستورات قابل فهم و ساده میباشند و در پروژه موجود میباشد.
برای درست کردن تسک پنل حتما باید یک UserControl1 را ایجاد کنیم.
می خواهیم در این بخش با Position یک شی بیشتر آشنا بشیم.
Position یک شی یعنی قرار گرفتن آن تب در کدام قسمت ریبون و یا قرار گرفتن گروپ در کدام تب ریبون و یا قرار گرفتن یک دکمه در کدام قسمت یک گروپ ریبون.
به طور مثال میخوامیم تب image insert را کi ایجاد کردهایم قبل از تب insert ورد قرار دهیم برای این کار خصوصیت Position تب image insert را باز کرده PositionType را برابر با BeforeOfficeId قرار داده و خصوصیت officeid که در زیر مجموعه برای ما ظاهر میشود برابر با TabInsert قرار میدهیم.
باز هم تکرار میکنم که تمام ایدی ها در فایل Office2007ControlIDs وجود دارد که از سایت مایکروسافت قابل دانلود است.
http://www.microsoft.com/downloads/d...displaylang=en




حال با اجرای مجدد میبینیم تب که ایجاد کرده ایم قبل از تب insert آفیس قرار میگیرد.
اگر هم بخواهیم به جر تب که درست کرده ایم تمامی تب های آفیس حذف شوند می توانیم خصوصیت StartFromScratch رابرابر با true قرار دهید.
DialogBoxLauncher: این قسمت دکمه ای است که در هر یک از گروپ ها میتواند به نمایش در بیاید. برای نمایش این دکمه گروپ را انتخاب و AddDialogBoxLauncher را فعال کنید برای عدم نمایش آن RemoveDialogBoxLauncher را انتخاب کنید. یک گروپ هم به جز رویداد کلیک DialogBoxLauncher هیچ رویداد دیگری ندارد و میتوانید برای این دکمه کد نویسی کنید




با توضیحات داده شده حالا می توانید یک addin مثل office class menu برای آفیس بنویسید و از آن استفاده کنید.




ایجاد در محیط ribbon (XML):
قسمت دوم استفاده از XML :
من تا سال قبل XML را بلد نبودم و اون رو به جز یک سری دستورات عجق وجق نمیدونستم و حتی نمیدونستم بفهمم که مفهوم اونها چیه تا دی ماه بود که در تاپیک سی شارپ با مبحث WPF آشنا شدم و XML رو تا حدود های یاد گرفتم.
XML بسیار آسون تر از اون چیزی که میبیینم. دستورات آون راحته برای یادگیری بهتر میتونید تاپیک wpf سی شارپ رو نگاه بندازید و من در مورد اون حرف نمیزنم.



حال اگر این بار ribbon (XML) رو انتخاب کنیم دو فایل یکی XML برای طراحی ریبون و محیط مورد نظرمون و دیگری .vb کد نویسی برایقسمتهایی آن است.
آشنایی با تگ های XML :
محیط XML برای طراحی بازتر و می توان کارهای جدید تر را در این قسمت هم انجام داد از قبیل اضافه کردن qat یا همان ابزار دسترسی سریع (quick access toolbar).






<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon>

</ribbon>

میتوانید تگ های مورد نظر رو در بین تگ ribbon وارد کنید







<tabs>
<tab idMso="TabAddIns">
<group id="MyGroup"
label="My Group">
</group>
</tab>
</tabs>


تگ زیر را در نظر بگیرید تگ tabs برای قرار دادن تب های مختلف در آن است.
تگ داخلی یک تب تعریف و در تگ داخلی تر هم یک گروپ باکس تعریف شده است اما برای نمایش ریبون در هنگام اجرا باید دستور زیر را در داخل ThisAddIn.vb کپی کنید.

Protected Overrides Function CreateRibbonExtensibilityObject() As Microsoft.Office.Core.IRibbonExtensibility
Return New Ribbon1()
End Function


Ribbon1 نام ریبون از نوع XML است که به بروژه اضافه کرده اید.


مثال XML و توضیحات در مورد آن:


حال یک مثال کمی بزرگتر و پیچیده تر را برسی میکنیم.

<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="Ribbon_Load">
<ribbon startFromScratch="true">
<qat>
<sharedControls>
<button id="myqatSample" />
</sharedControls>
</qat>
<officeMenu>
<button id="SampleGrpmnu" label="Sample" imageMso="Cut"
onAction="SampleGrp_Click" />
</officeMenu>
<tabs>
<tab id="TabSmple" label="SampleTab">
<group id="MyGroup" label="My Group">
<button id="SampleGrp" label="Sample" imageMso="Cut"
onAction="SampleGrp_Click" size="large" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>

این یک مثال جالب است و از همه نوع تگی در آن وجود دارد
Qat که در بالا توضیح داده شد زمانی نمایش داده میشود که startFromScratch دارای مقدار ture باشد. تگ به اشتراک گذاری کنترل های qat و در تگ بعدی اضافه کردن یک دکمه.

تگ officeMenu یک تگ برای قرار دادن کنترل مورد نظر در قسمت منوی آفیس قرار میگیرد یک دکمه تعریف که با کلیک بر روی آن رویداد SampleGrp.Click اتفاق می افتد. imageMso برابر با cut است که آیکن cut آفیس به نمایش در میآید.

یک تب و یک گروپ نیز تعریف شده است و در داخل گروپ یک یک دکمه تعریف که با کلیک بر روی آن رویداد SampleGrp.Click اتفاق می افتد. imageMso برابر با cut است که آیکن cut آفیس به نمایش در میآید. اندازه آن بزرگ انتخاب شده است.

با اجرا این تگ چنین چیزی را مشاهده میکنید.








حال اگر بخواهیم برای onaction کدی بنویسیم باید آن را در قسمت ribbon1.vb وارد میکنیم.

حال یه این کد نگاه کنید:


Public Sub SampleGrp_Click(ByVal control As Microsoft.Office.Core.IRibbonControl)
MsgBox(control.Id + "Click!")

End Sub










بی شک قدرت مایکروسافت ویژوال استودیو برای درست کردن Com Add ins بیشتر از آن چیزی است که در این مطلب گنجانده شده است این مطلب تنها بخش کوچکی ازآن است.

اگر مطلب مورد نظر دارای کمی و کاستی های هم هست از همه برو بچهای فرم برنامه نویس معضرت می خواهم. توانم را به کار بردم تا مطلبی جمع و جور و در حد نورمال را آماده کنم تا تمامی شما از آن استفاده کنید .



ms-help://MS.MSDNQTR.v90.en/odc_office2007_ta/html/a4fd6d18-d4a8-4e64-bd89-f437208573d3.htm



ms-help://MS.MSDNQTR.v90.en/odc_office2007_ta/html/6b904f55-525f-4520-9b81-a017db65657b.htm



ms-help://MS.MSDNQTR.v90.en/odc_office2007_ta/html/a16c7df5-93f3-4920-baa8-7b7290794c15.htm



ms-help://MS.MSDNQTR.v90.en/odc_ac2007_ta/html/1a944fa3-4eb1-4005-917b-81278e02d2be.htm












امضاء


امضا ندارم اثر انگشت میزنم Reza1944




فایل های ضمیمه
نوع فایل: rar Create Office Add-in.rar‏ (451.6 کیلوبایت, 114 دیدار)
__________________
برنامه نویسی هنر استفاده از دستورات است.
اگر می خواهی برنامه ات کرک نشود اصلا برنامه ننویس!
reza1944 آفلاین است   پاسخ با نقل قول
5 کاربر از reza1944 به خاطر این مطلب مفید تشکر کرده اند:
پاسخ

بوک مارک کردن این تاپیک


کاربرانی که این تاپیک را مشاهده میکنند: 1 (0 کاربران و 1 مهمان)
 
ابزار های تاپیک
طریقه نمایش

قوانین ایجاد تاپیک در تالار
شما نمی توانید تاپیک جدید ایجاد کنید
شما نمی توانید به تاپیک ها پاسخ دهید
شما نمی توانید ضمیمه ارسال کنید
شما نمی توانید پاسخ هایتان را ویرایش کنید

BB code روشن است
خندانک ها روشن هستند
[IMG] روشن است
HTML خاموش است

پرش




واحد زمان برحسب ساعت لندن +3.5. ساعت هم اکنون 17:32 عصر است.


Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 1388, Jelsoft Enterprises Ltd.
خدمات میزبانی این سایت تحت پوشش شرکت ایران هاست می باشد.