2008-11-26 67 views
0

我正試圖在VB6或VB.Net中編寫一個打印佈局編輯器,並且正在尋找一些參考文章來幫助我開始。如何編寫表單編輯器?

這個想法是,通過允許用戶繪製客戶地址,發票號碼,行數,總數等的框,編輯器將用於定義發票或報表佈局的打印「區域」。然後程序將圖瞭解如何將各種盒子的尺寸和位置轉換爲打印位置以存儲在佈局定義文件中,佈局定義文件隨後由帳戶系統用於打印各種報告。請注意,由於各種原因(主要是賬戶系統不是Windows),將文本放入Word或類似產品並讓他們打印文檔不是一種選擇。我當然可以手動編輯文檔佈局文件,但它不是非常用戶友好的。如你所想,搜索「表單編輯器」,「佈局編輯器」等等會帶來數百個不相關的結果。令人沮喪的是,我看到了一篇非常相關的文章,但失去了書籤。

我希望有人有一些指針。


謝謝,這聽起來比我想象的更復雜。我真的希望我能找到我失去的原始文章,因爲它很清楚如何在vb.net中去解決這個問題。因爲它是一個打印表單的佈局,我認爲這樣可以減少複雜性 - 我只需要存儲每個打印區域的大小和位置,以及字體,對齊和顏色信息,以及可能的如果需要徽標,則用於圖形的文件名。佈局定義文件格式完全在我的控制之下。

回答

1

首先,您應該對您使用的語言/ API有深入的瞭解,實際上您應該指定是否使用Windows.Forms,WPF,GTK#等。你是非常好

然後,你應該考慮一個表單編輯器的格式來存儲表單。通常,表單編輯器使用XML。如果你也想遵循這個趨勢,你真的應該學習一個很好的VB的XML API。

最後,仔細規劃步驟:

  1. 你想使用您的API提供的自定義文本字段控件,或者你想手動繪製它們(如果是的話,那麼你就需要學習繪圖API)?
  2. 確保您很好地理解佈局定義文件格式。

現在是時候開始概念驗證了:創建一個簡單的編輯器,可以加載/保存表單並向它們添加按鈕。這可能是最困難的一步弄清楚。你可能需要處理事件和其他一些事情,但最終它會起作用(如果沒有,那麼你可能會再問)。 最後,只需添加您需要的功能,如佈局定義文件輸出,新控件,控制移動/調整大小等。

如果您需要其他任何東西(包括更具體的說明),請問。

0

我還記得在10年前的iirc vb6中開發了這種打印輸出格式編輯器。不知道我仍然可以找到消息來源:確實我發現這個問題,因爲我需要寫另一個,並希望找到一些代碼開始,而不是從頭開始再次。 反正,我的方式做實現了它,或多或少,是這樣的:

頁面背景
  • 一個自定義的控制,顯示光網格,並反應到鼠標事件(例如,顯示在右邊的菜單點擊);
  • 每個字段都是無窗口自定義控件,也顯示一個光柵,每個(固定寬度)字符都有一個單元格。它也對鼠標事件作出反應,以便它可以移動並調整大小;當我說無窗口的時候我的意思是「沒有hwnd」,這種優化允許放置很多控件實例而不用擔心對資源的影響;如果你打算使用.net,你可以不在乎,但如果你使用VB6,它確實有所幫助;
  • 一個屬性網格,如vb6顯示所選字段的屬性之一。在我的情況下,我可以設置文本的樣式(壓縮,擴展,粗體)和運行時使用的表達式來檢索要打印的值;
  • 加載佈局文件將調整頁面的大小並實例化文件中每個字段的字段控件;
  • 保存寫出了頁面屬性(大小,名稱等),然後枚舉字段的集合並寫出它們的屬性;
  • 我沒有使用xml,因爲文件格式已經被修復,因爲它被做了實際打印的引擎所使用; xml只會讓我的生活更輕鬆,無需爲數據文件格式編寫自定義分析器。
  • 該要求只處理點陣打印機,但幸運的是我沒有削減任何角落,我可以很容易地適應它,以處理更精確的位置和大小的領域。我的意思是簡單地說,我抵制了使用行和列座標並用緹代替的誘惑;它更多地考慮了數學,但沒有明確的火箭科學。

總而言之,這不是很難做,它出來非常好,它有點像「水晶報告」的形式編輯器。
我記得花了一些時間才弄清細節,例如以不同的字符寬度對齊網格,在改變文字樣式(如濃縮或展開)時調整字段的大小,而不會因爲舍入誤差而跳過,這類事情。不要讓這讓你感到恐慌,請記住,你從一開始就不必關心所有事情,只是稍微注意一點,不要阻止在稍後的時間裏做這件事。

現在我不會建議vb6很多,除非這是你最好的知識,並且需要生成一個不依賴於目標機器上安裝的.net框架的.exe。
如果您選擇使用.net,我認爲如果您不知道它,它將是一個學習wpf的好機會,它使得一些令人印象深刻的圖形甚至超過了windows.forms。