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

如何固定專案內的字型

尚未結案
yx_huang77
一般會員


發表:46
回覆:64
積分:22
註冊:2004-03-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-04 16:04:07 IP:220.142.xxx.xxx 未訂閱
請問如何將專案內的字型不隨windows的字型改變而跟著改變
bigdogchina
版主


發表:238
回覆:523
積分:312
註冊:2003-04-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-05 10:56:08 IP:211.162.xxx.xxx 未訂閱
yx_huang77大大,您好! 看看下面的idea,能否對您解決問題有所幫助< > 幾乎每個視覺化元件都擁有<>>屬性,所以若我們在設計時修改了某個元件的字體,那該元件的字體資訊也會隨著元件的其他資訊存儲在>>的資料繼承機制,由<>>類提供。 物件屬性繼承能力的讀寫功能由>> 負責寫入屬性 ② <>> 負責讀出屬性 但是這兩個方法都是聲明在<>>段,外界無法使用(呀呀呀,看得著吃不著 < >),所以必須派生新的類,將方法釋放出來才行。 那就來包裝一下,看看下面的這個 class="code"> unit KTopStream; interface uses Windows, SysUtils, Classes, Forms, TypInfo; procedure SavePropertyToStream(Stream: TStream; Instance: TPersistent; PropName: string); procedure LoadPropertyFromStream(Stream: TStream; Instance: TPersistent); implementation type TMyWriter = class(TWriter) public procedure WriteProperty(Instance: TPersistent; PropInfo: Pointer); end; TMyReader = class(TReader) public procedure ReadProperty(Instance: TPersistent); end; procedure TMyWriter.WriteProperty(Instance: TPersistent; PropInfo: Pointer); begin inherited WriteProperty(Instance, PropInfo); end; procedure TMyReader.ReadProperty(Instance: TPersistent); begin inherited ReadProperty(Instance); end; procedure SavePropertyToStream(Stream: TStream; Instance: TPersistent; PropName: string); begin with TMyWriter.Create(Stream, 4096) do try WriteListBegin; WriteProperty(Instance, GetPropInfo(Instance.ClassInfo, PropName)); WriteListEnd; finally Free; end; end; procedure LoadPropertyFromStream(Stream: TStream; Instance: TPersistent); begin with TMyReader.Create(Stream, 4096) do try ReadListBegin; while not EndOfList do ReadProperty(Instance); ReadListEnd; finally Free; end; end; end. 利用上面單元中的SavePropertyToStream函數和LoadPropertyFromStream函數,就可以很方便的操作,維持元件的字體資訊以及其他資訊。 下面的例子是將Form的Font資訊寫如test.dat文件:

….
uses KTopStreams;
….
procedure TForm1.Button1Click(Sender: TObject);
var
  Stream: TStream;
begin
  Stream := TFileStream.Create('test.dat',fmCreate of fmOpenWrite);
  with Stream do
  try
    SavePropertyToStream(Stream,Form1,'Font');  //寫入字體設置
  finally
    Free;
  end;
end;
當您需要的時候,再把Font資訊從test.dat中用LoadPropertyFromStream()讀出來,這樣就可以讓您的字體不隨Windows的字體改變而改變了 我也是一知半解,如有謬誤,請您多多指教! < class="code"> =============== 人生在勤,不索何获? ===============
------
人生在勤,不索何获?
系統時間:2024-06-02 0:48:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!