![]() |
|
|||||||
| ثبت نام | کتابخانه فایل ها | مرکز پشتیبانی | راهنما | لیست کاربران | کلوب های کاربران | همه قسمت ها ، به عنوان خوانده شده علامت گذاری شوند |
| برنامه نویسی در VB.Net سوالات خود درباره برنامه نویسی در Visual Basic.Net را در این بخش مطرح کنید. |
![]() |
|
|
ابزار های تاپیک | طریقه نمایش |
|
|
#1 |
|
کاربر دائمی
![]() تاریخ عضویت: مهر 1386
محل زندگی: c:\windows\system32
پست: 185
تشکرها: 12
72 بار تشکر شده در 52 پست
|
به نام خدا موضوع : ساخت 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
__________________
برنامه نویسی هنر استفاده از دستورات است. اگر می خواهی برنامه ات کرک نشود اصلا برنامه ننویس! |
|
|
|
| 5 کاربر از reza1944 به خاطر این مطلب مفید تشکر کرده اند: |
![]() |
| بوک مارک کردن این تاپیک |
| کاربرانی که این تاپیک را مشاهده میکنند: 1 (0 کاربران و 1 مهمان) | |
| ابزار های تاپیک | |
| طریقه نمایش | |
|
|