用TImage實作文字方塊 |
答題得分者是:RedSnow
|
meatfoot
一般會員 發表:2 回覆:2 積分:0 註冊:2005-04-11 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
meatfoot 您好: 我前幾週正好寫了一支程式,裡邊也有用到類似的動作,我的做法如下:
1. 建立一個文字處理視窗,就是使用一個 Form 配合 Memo 問鍵來做輸入文字的動作,這樣子就可以有多行文字。 2. 產生文字圖像 (文字框) 時,要記錄下對應該圖像的原有文字內容,並且設定圖像的 OnMouseDown, OnMouseMove, OnMouseUp....等事件,以便處理拖曳文字框調整位置和其它的相關動作。 3. 修改文字框內容時,再次叫出第 1 項所述的那個文字輸入視窗,將對應該文字框的原有文字內容導入供修改,修改文字完畢後,重新繪製文字框。
另設一個 Form 來處理文字輸入及修改動作的好處是 - 可以在該 Form 上放置字型種類、大小、顏色....等的選擇與設定項目。 如果您要做到類似 MS Word 那種文字框的效果,那麼您可以將我上述作法中的那個 Form 略過,然後在建立文字框或是編修文字框時,將 Memo 物件放在要處理的位置,再設定 Visible 屬性為 true 即可 (文字部分處理完畢後,再將 Visible 設為 false),不過這麼一來,您就得另外找地方設置處理文字時的字型、大小、顏色....等選擇項目了。 您參考一下吧,若有不清楚的地方,我們再來交換意見。 發表人 - RedSnow 於 2005/04/11 20:50:55
|
meatfoot
一般會員 發表:2 回覆:2 積分:0 註冊:2005-04-11 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
meatfoot 您好: 當您將 Memo 物件的屬性設為:Ctl3D = false,而且 ScrollBars = ssNone、BorderStyle = bsSingle 之後,Memo 物件的外觀 "大致上" 看起來就像您貼上來的圖一樣,只是沒有調整大小的那八個小方塊。 如果您想做到與 MS Word 或是 OpenOffice 那種方式完全一樣的話,您就還得寫一段程式來處理 "調整 Memo 大小" 的動作,很巧的是 - 這個動作我也做過,但不是寫在前篇所講的那支程式裡,而是另外的一支程式,當時是因為看到本站上有人討論到 "Runtime 調整物件大小和位置" 的話題,而自己也對該話題產生了一些興趣,所以動手做了些測試。 我自己寫的方式是使用八個 Panel 物件來做 DragSpot,然後透過 OnMouseDown, OnMouseMove, OnMouseUp 這三個事件來處理 "調整物件大小及位置" 的動作,前述事件除了被調整物件本身要設定之外,另外還要在那八個 Panel 物件也設定,調整物件位置是由物件本身的事件來完成,調整物件大小則是由那八個 Panel 物件的事件來完成。 另外您也可以參考一下站上的一些相關討論: http://delphi.ktop.com.tw/topic.php?topic_id=25473 http://delphi.ktop.com.tw/topic.php?topic_id=31256 http://delphi.ktop.com.tw/topic.php?topic_id=31513 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=31557 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=63002 http://delphi.ktop.com.tw/topic.php?topic_id=32021
|
meatfoot
一般會員 發表:2 回覆:2 積分:0 註冊:2005-04-11 發送簡訊給我 |
ReadSnow兄您好 小弟大概了解您的意思了,小弟現在是利用OnMouseXXX事件來處理縮放, 而至於輸入部分則還沒完成,但是已經有初步想法了,謝謝您的回答~~ 順道一提,小弟在實作縮放時,一直苦為畫出的東西有問題,現象是在產 生繼承自TImage的物件後,雖能夠處理縮放的事件,但在重繪字串時卻發現 會有方塊被截的的現象,後來找到該是Canvas->ClipRect所限制.然 ClipRect為一readonly屬性,小弟苦於無法直接變動,最後才試出以 Picture->Bitmap->Width & Height可以間接改變ClipRect,才算解決了這 個問題.(由於小弟時間不夠,加上object-pascal不熟,雖想自 vcl source裡trace真正的原因已是有點力不從心了)
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |