比如:
有一个字体文件:c:\a.ttf,我要将窗体的字体改成它.而不是先安装再使用.

解决方案 »

  1.   

    procedure TForm1.FormCreate(Sender: TObject); 
    begin 
      AddFontResource(PChar(ExtractFilePath(ParamStr(0) + 'YourFont.TTF'))); 
      SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0); 
    end; 
    procedure TForm1.FormDestroy(Sender: TObject); 
    begin 
      RemoveFontResource(PChar(ExtractFilePath(ParamStr(0) + 'YourFont.TTF'))); 
      SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0); 
    end;
      

  2.   

    >>有一个字体文件:c:\a.ttf,我要将窗体的字体改成它.而不是先安装再使用.如你這種要求, 我建議, 你在Form Create事件中處理!
    先檢查當前系統有沒有相應的字體, 如果有, 用個循環, 
    將所有控件有Font 屬性的改為你要求設置的字體的Name
      

  3.   

    回复人: sailxia(小帆) ( ) 信誉:100  2004-07-13 11:44:00  得分: 0  
     
     
       procedure TForm1.FormCreate(Sender: TObject); 
    begin 
      AddFontResource(PChar(ExtractFilePath(ParamStr(0) + 'YourFont.TTF'))); 
      SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0); 
    end; 
    procedure TForm1.FormDestroy(Sender: TObject); 
    begin 
      RemoveFontResource(PChar(ExtractFilePath(ParamStr(0) + 'YourFont.TTF'))); 
      SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0); 
    end;
      
     
      

  4.   

    另外一个问题:
    我怎么知道刚加入到系统中的a.ttf的字体名称呢?不知道它的名称怎么引用它呢?
    比如:label1.Font.Name := ???? ,????为a.ttf文件所包含的字体的名称.
      

  5.   

    screen.Fonts,加入前和加入後的比較;這樣麻煩些,簡單的來說,既然是你自己要應用的字體,你先在自己的系統安裝一下,這樣不就知道了字體的FamilyName了嗎?然後,在應用的時候就使用這個FamilyName就可以了.除非你做未知字體的瀏覽器類的.
      

  6.   

    忘記了是FaceName還是FamilyName了,這幾天事情忙的頭暈...不好意思.