制作VB控件,希望有个FontName属性能列出当前系统所有字体名
点属性窗口能出来一个下拉菜单选某个系统字体,注意是下拉菜单
看到别人的控件实现这个效果,请问怎么实现?

解决方案 »

  1.   

    我的意思是点FontName这个属性时,就像点了枚举型的属性一样,会出现一个下拉列表,但当前系统的所有字体怎么能在做属性的时候枚举出来?
      

  2.   

    新建一个窗体,窗体上放两个控件,list1和command1
    程序运行,单击命令按钮,将所有系统字体名称添加到列表框。代码如下:
    Private Sub Command1_Click()
     Dim i As Integer
     For i = 0 To Screen.FontCount - 1
         List1.AddItem Screen.Fonts(i)
     Next i
    End Sub
      

  3.   

    去年结贴不好,原来的结贴是不是csdn自动给你结的?
      

  4.   

    回复:jjhhgg1111我说的是制作控件的属性
      

  5.   

    回复:jjhhgg1111
    你是没做过控件吧,知道什么叫做控件么
      

  6.   

    你在控件里面放个Label的数组,数组的数量调整为字体的数量,控件的字体调整为对应的字体
    放置一个滚动条。
    滚动条滚动是,调整需要显示的几个Label的位置到显示位置。或者就用有限的几个Label,拖动滚动条时,把滚动条对应的字体和接下了的几个字体赋值给你的价格label
      

  7.   

    都是所问非所答,感觉这问题不算是什么大的技术问题啊。VB的属性窗口里能加Label标签?多可笑啊。
    至少问的也是Property Let中应该写什么来实现的。
    这里真的没高手了么?
      

  8.   

    这是最简单的方法。除此以外,还可以用API!
      

  9.   


    我看见别人的控件里有一个叫FontName的属性,在“VB的属性栏里”这个FontName是个下拉菜单,点一下就会出现当前系统中所有的字体名。按理来说枚举的类型是会出现下拉的效果的,偏偏这个属性,我用VB的对象浏览器查询,发现竟然是String类型的。众所周知,枚举类型是可以从对象浏览器中看到的,这个FontName只是一个String类型。即便是枚举,也没法枚举出每台机器上的所有字体名。
      

  10.   

    属性页会有神奇的效果,让VB属性栏里的FontName列出当前系统的所有字体?
    属性页的我会做,我想了解属性栏中的怎么做。
      

  11.   


    Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
    改为
    Private Sub UserControl_ReadProperties(PropBag As ListBox)
    然后参考#3楼给PropBag.AddItem 试试,仅供参考
      

  12.   

    Private Sub Combo1_Click()
    Label1.Font = Combo1.Text
    End SubPrivate Sub Form_Load()
    Dim i As Integer
     For i = 0 To Screen.FontCount - 1
      Combo1.AddItem Screen.Fonts(i)
     Next i
    End Sub
      

  13.   

    你好,控件属性中不会用到Form_Load事件。
      

  14.   

    记得应该是在UserControl页面,选择“工具-过程属性”菜单,再点击“高级”,然后其中绑定属性页面....手边没vb,具体看MSDN...
      

  15.   

    对象浏览器对于这个控件的这个属性的描述:FontName As String。不是枚举类型。如图所示,也不可能是枚举。
      

  16.   

    String类型还会出现枚举类型的效果,我觉得只能是某种方式的绑定,或者拿一段程序在Readproperty事件中枚举出来,不过之前还没有见到过类似的例子,不知道怎么去实现。
      

  17.   

    也许VB6.0就没有方法实现,但这个控件是用VB写的,至于是哪个版本我还不确定。
      

  18.   

    其实你并不需要这样做,可以直接设计一个Font属性,当单击这个属性时,就可以出现字体对话框,很方便,代码如下:Private Sub UserControl_InitProperties()
    Set Font = New StdFont
    End SubPublic Property Get Font() As StdFont
    Set Font = gFont
    End PropertyPublic Property Set Font(NewFont As StdFont)
    Set gFont = NewFont
    Set Label1.Font = NewFont
    PropertyChanged "Font"
    End Property
    当然,如果你真的要枚举字体的话,API有一个函数可以枚举可用的字体,但我也不太清楚怎么用,自己看看去吧。