發表文章

目前顯示的是有「Visual Studio」標籤的文章

RDLC 報表不預覽直接列印(Print RDLC Report without Preview)

圖片
RDLC 報表在使用時,一般情況下都會開啟預覽畫面,再按列印才能列印出來。 但是如果設計的程式沒有畫面呢?(Console Mode / Service Mode) 所以,這次我就使用 Console 程式設計方式把報表列印出來,並且使用 Class Data Mode 方式處理資料,不使用 RDLC 報表直接連接資料庫。 由於我使用的是 Visual Studio 2017,本身以不含RDLC報表設計功能,所以必須先到 NuGet 安裝 『Microsoft.ReportingServices.ReportViewerControl.Winforms』 這裡測試的方式是把一篇文章(SourceDoc.txt)讀取出來,然後放到 Report1.rdlc 做成的版面上,然後再將它印出來。 1、建立 DataModel.cs 用來儲存資料 namespace PrintRDLCWithoutPreview {     class DataModel     {         public int no { get; set; }         public string line { get; set; }     } } 2、先進行方案的建置,因為RDLC要使用Class Model 資料來源時,需要建置過才能看到。 3、建立 Report1.rdlc 展開專案後可以看到自己定義的 DataModel.cs,選擇它作為資料來源 注意資料集的名稱,待會設定 DataSource 需要用到 拉取要顯示的欄位到需要顯示的類型,由於我們只有文字資料,所以只有拉『line』到顯示『值』上面 如果不需要統計值,直接『下一步』即可 調整位置與版面 4、需要用到的參考,由於會使用到Draw和winform集合的功能,所以必須引入 5、 記得 資料檔案和 RDLC 檔案必須將屬性設成『 一律複製 』,才不會發生找不到檔案問題 6、程式碼(說明在注解上) using System...

在 Visual Studio 2017 下使用 RDLC 報表設計功能

圖片
這個 VS2017 (Visul Studio 2017) 有點詭異,從這個版本開始就看不到RDLC報表設計的功能。 雖然我之前在設計發票時覺得這個報表解析度太低,非常不實用。 在使用 VS2015 (Visul Studio 2015) 時,還是有看到它的存在,但是在 2017 版卻不見了, 也許微軟覺得它也不重要了,大家都用第三方元件(我本身使用 Telerik Report) 但是作為『基本』報表輸出,它還算是很有用處的了。 如果希望在 VS2017 也能夠使用RDLC 設計器,就必須先把它的功能裝回來: 1、先到『工具』→『擴充功能與更新』 2、在搜尋找『RDLC』→『Microsoft RDLC Designer for Visual Studio』→安裝   (下面畫面因為我已經安裝過了,所以沒有出現安裝按鈕) 3、有了這個『Microsoft RDLC Designer for Visual Studio』就可以在新增項目中看到『報表』、『報表精靈』兩格項目了。 接下來,如果你的專案要進行報表的開發,除了RDLC設計功能外,還必須要有 『Microsoft.ReportingServices.ReportViewerControl.Winforms』 如果是web版開發則要用『Microsoft.ReportingServices.ReportViewerControl.Webforms』 4、到 NuGet 安裝 『Microsoft.ReportingServices.ReportViewerControl.Winforms』到專案 5、這個安裝包會安裝同時會安裝『Micrsoft.SqlServer.Type』 接受授權合約以便安裝 6、安裝完後,專案的參考會加入一些東西 接下來就可以去開發 RDLC 報表了

Xamarin : Designer show error : you need to use a theme.appcompat theme (or descendant) with the design library

圖片
這個問題是出現在使用 Visual Studio 2017 Xamarin 建立 Android 單一檢視應用程式時發生的問題,主要原因應該 原因是這個專案預設使用了 appcompat 主題的 android.support.design.widget.CoordinatorLayout 框架,而預設主題無法解析這個框架導致錯誤 如果你在 Designer 的畫面上點擊 show error 就可以看到這個相關訊息 java.lang.IllegalArgumentException was throw  you need to use a theme.appcompat theme (or descendant) with the design library 如果堅持使用 CoordinatorLayout 解決方式就是去更改 Designer 上的 主題(Theme),將它改為 Theme.AppCompat 樣式 就可以正常顯示了

Xamarin : Android : FilePicker 檔案瀏覽

圖片
其實這是用來搞懂 這一篇  Browse Files - Xamarin 範例則來自 GitHub 的 mgmclemore 收集的  A collection of Xamarin.Android sample projects 由於 android 瀏覽檔案時沒有像 Windows 一般有『現成』的檔案瀏覽介面(SHELL)可以使用,所以就非常麻煩的必須自己去作出像檔案瀏覽器一樣的介面。 而且 Xamarin 開發的介面中也沒有可以直接使用的元件,所以這完全必須依賴外部套件才有辦法作出來。 這個套件引用了 Xamarin.Android.Support.v4 這個套件,所以必須先到NuGet去下載這個套件到專案內。

Xamarin : Android : Vibrate 使用裝置震動

圖片
在 Xamarin 下開發 Android 裝置需要振動程式碼如下 void button_vibrator_Click(object sender , EventArgs ea) {     // 建立振動服務     var vibrator = (Vibrator)GetSystemService(Android.Content.Context.VibratorService);     int iDuration = 500; // 500毫秒,振動持續時間       // 執行     vibrator.Vibrate(iDuration); } 這個 Vibrator 需要引用 using Android.OS; 這個服務屬於非同步機制,發出震動後不會等待振動時間完畢,而會繼續執行程式。 另外,還需要賦予適當的使用權限,可以在 專案屬性 調整 或是到 AndroidManifest.xml 裡增加 <uses-permission android:name="android.permission.VIBRATE" /> 建議使用專案屬性調整會比較安全,比較不會打錯字

Xamarin : Android : Using ZXing.Net.Mobile Scan Barcode 掃描讀取條碼/QR碼

圖片
網路上大部份文章在講 Xamarin 開發都用上了 CPL類型的專案, 對於純粹使用 Android 專案使用者要理解真是有點不方便, 這裡是記錄了在 Xamarin 下的 Android 專案如何開發一個讀取 條碼或是 QR碼的功能 個功能是基於 ZXing.Net.Mobile 套件開發的,可以自行把這個套件應用你的專案中 1、假設你經開啟了一個 Android blank Project (空白專案) 2、使用 NuGet 管理員去新增 ZXing.Net.Mobile 套件,並把它安裝到專案中 3、然後到你要呼叫使用 ZXing 操作的 Activity 去新增引用(在這案例裡我是放在 MainActivity.cs 內) using ZXing; using ZXing.Mobile; 4、在顯示畫面(Main.axml)上設計兩個 TextView 和一個 Button,用來啟動掃描和接收掃描的結果 5、然後就是把操作 ZXing 的程式碼加入,在這案例中,我只簡單全部做在 MainActivity 的 OnCreate 內,實際應用上你可以依照需要放置。 using Android.App; using Android.Widget; using Android.OS; using ZXing; using ZXing.Mobile; namespace ZxingTest {     [Activity(Label = "ZxingTest", MainLauncher = true, Icon = "@drawable/icon")]     public class MainActivity : Activity     {         //建立操作物件指標         private TextView _barcodeFormat, _barcodeData;         protected override void OnCreate(Bundle bundle) ...