全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:961
推到 Plurk!
推到 Facebook!

請問如何在顯示時讓文字寬度變小??

尚未結案
kswedu
一般會員


發表:9
回覆:13
積分:4
註冊:2004-04-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-14 00:26:27 IP:211.76.xxx.xxx 未訂閱
也就是把文字壓扁塞進固定長度的表格中,要如何做請教各位先進.
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-16 15:59:55 IP:61.63.xxx.xxx 未訂閱
引言: 也就是把文字壓扁塞進固定長度的表格中,要如何做請教各位先進. < face="Verdana, Arial, Helvetica"> kswedu你好: 我之前在究研這一篇時: < href="http://delphi.ktop.com.tw/topic.php?TOPIC_ID=45583">http://delphi.ktop.com.tw/topic.php?TOPIC_ID=45583 有些小小心得,提出來分享看看< >! 就是比如說一個>>,還不止這一個,但我忘了< >!功能都差不多,但都有使用上的限制! 也就是說不是>注意 1. 本範例是在一個TEdit上動態顯示一個給定字串不同字寬的樣式,因為不知kswedu兄要放入何種表格! 2. 按▲鍵放寬字串,按▼鍵縮減字寬 3. 不同元件可能會需要額外不同的對應 4. 字寬縮小到一定地步時會有反效果,這不是程式的bug,而是SetTextCharacterExtra這隻function原本的表式方式! In Unit.h

~~~
class TForm1 : public TForm
{
__published:        // IDE-managed Components
        TEdit *Edit1;
        TCSpinButton *CSpinButton1;
        void __fastcall CSpinButton1DownClick(TObject *Sender);
        void __fastcall CSpinButton1UpClick(TObject *Sender);
private:        // User declarations
        void __fastcall EditWndProc(TMessage&);
        TWndMethod OldEditWndProc;
public:                // User declarations
        __fastcall TForm1(TComponent* Owner);
};    ~~~
In Unit.cpp ~~~

TForm1 *Form1;    int GapCnt=0;    //---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 OldEditWndProc=Edit1->WindowProc;
 Edit1->WindowProc=EditWndProc;
 }
//---------------------------------------------------------------------------
void __fastcall TForm1::EditWndProc(TMessage& Message)
{
 OldEditWndProc(Message);     if (Message.Msg==WM_PAINT || Message.Msg==WM_MOUSEMOVE || Message.Msg==WM_LBUTTONDOWN || Message.Msg==WM_LBUTTONDBLCLK || Message.Msg==WM_KILLFOCUS || Message.Msg==WM_SETFOCUS) {
     HDC dc=GetDC(Edit1->Handle);
     SetTextCharacterExtra(dc,GapCnt);
     SelectObject(dc,Edit1->Font->Handle);
     TextOut(dc,1,1,"ILOVEYOU",8);
     ReleaseDC(Edit1->Handle,dc);
 }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CSpinButton1DownClick(TObject *Sender)
{
 GapCnt--;
 Edit1->Invalidate();
 SendMessage(Edit1->Handle,WM_PAINT,0,0);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CSpinButton1UpClick(TObject *Sender)
{
 GapCnt  ;
 Edit1->Invalidate();
 SendMessage(Edit1->Handle,WM_PAINT,0,0);
}    
圖例: 發表人 - m8815010 於 2004/04/16 16:56:04 發表人 - m8815010 於 2004/04/16 16:57:56
kswedu
一般會員


發表:9
回覆:13
積分:4
註冊:2004-04-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-16 17:15:22 IP:211.76.xxx.xxx 未訂閱
感謝 m8815010詳盡的解說,我的問題以解決,謝謝..
系統時間:2024-07-09 1:39:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!