搞不懂什么意思。导航不是有专门的控件吗?还有HotImage这样的控件?

解决方案 »

  1.   

    1)www.midatech.com/jiangtao下图形热区的控件.
    2)没有,自己写,
    for i:=0 to Table.Fields.Count-1 do
    begin
      Table.FiledbYName(Table.Fields[i].Name);
    end;
      

  2.   

    1、我想你可以用TImage,然后准备两幅图,然后监测当鼠标在其上时用亮的一幅,当鼠标移开时用暗的一幅;
    2、我也不太懂你的意思,是否取出某个数据集(Dataset)中某一列所有数据的意思?
    如果你是输出到ListBox中,可以这样写:
    Dataset.First;
    while not Dataset.EOF do
    begin
      ListBox.Items.Add( Dataset.FieldByName(FieldName).AsString );
      Dataset.Next;
    end;kxy的代码有些奇怪。
      

  3.   

    Table.FiledbYName(Table.Fields[i].Name);
    只是一个意思, something := Table.FiledbYName(Table.Fields[i].Name).AsXXXX;
      

  4.   

    第一个问题:
    如果你想自己做,可以使用MOUSEMOVE事件来处理,但是,在DELPHI中,你可以继承它的两个内部消息:CM_MOUSEENTER和CM_MOUSELEAVE,这样你可以获得两个事件,即当鼠标移进时的事件可鼠标离开时的事件。
    然后准备三幅状态的图片,普通,移动和按下时的效果,然后分别在不同的事件里为IMAGE调用它。如果您希望有如何做的源码,可以通知我,我寄一份给你。
    当然为了方便,你也可以下载控件。
    第二个问题:
    使用DBGRID就可以了。要点是在程序中,动态地为数据源中的某一列创建一个Column,这可以使用  DbGrid.Columns.add(好象是吧,具体因为Delphi有Code sight,我一般不记的)。把这列的DATAFIELD指向相应的数据源字段,然后该DBGRID仅拥有这个数据源该列的所有内容。
      

  5.   

    试下此代码:某类型变量:=Table1.FieldByName('字段名').AsString;
                                                       .AsInteger;等等
      

  6.   

    to:Venne
    搞三副图片是不是有点占空间,直接对一副图片处理如何?比如用canvas的TransparentStretchBlt(对图象的每个点做加重颜色操作),可是这样得到的效果感觉比较硬,不太好,如何既用一副图又能使图象的变化比较柔和呢?
      

  7.   

    YJQ:
      :)
      我想你可能理解错我的意思了,我的意思是准备按钮的三幅图片的状态,当然这三幅图片可以放在一幅图上,根据索引号然后动态地从资源中从API函数把某个状态切换出来。就象SpeedButton干得那样。
      当然你说的效果我没试过,因为我觉得那样做出的界面是不是太粗糙了?我是做多媒体应用程序的,我想我的客户也不会接受。我们经常花非常多的时间制作各种按钮,这大概也是很多制作精美的程序所必须的过程。
      为了模拟极品飞车的的按钮效果,(我怀疑它是计算出来的)我曾为一个按钮做了十幅图片。但一般都不会太大,而且我自己写了一个BitmapList,可以非常快地存取外部资源,所以没有考虑过对一幅图直接处理的情况(主要是计算量太大)。
      

  8.   

    实在不好意思我的问题没有陈诉明白,我的第二问题意思是在Delphi中有什么样的下拉框数据控件只用选属性,不用写代码可实现,下拉框中的值是数据源某一字段的所有记录。
    第一问题是我写一段小程序实现鼠标移动到一个图片上让它变亮,移动离开后恢复原样。
    我是用属性实现的,在切换中有闪动现象,请问怎样避免?谢谢大家!!!
      

  9.   

    关于闪烁,是你在使用IMAGE的Visible属性的开关时,整个窗口会重画造成的,不要使用两个以上的IMAGE来表现你的按钮状态的暗或亮的状态。
    比较好的办法是使用Bitblt函数:其方法是:
    procedure ChangeImage(img:TImage;filename:String);
    var
      bmp:Tbitmap;
    begin
      bmp:=TBitmap.create;
      bmp.width:=img.width;
      bmp.height:=img.heiht;
      bmp.loadfromfile(Filename);{这里注明你可以从多种途径获得该位图}
      With img do begin
       bitblt(canvas.handle,0,0,width,height,bmp.canvas.handle,
           0,0,SRCCOPY);
      end;
      bmp.free;
    end;
    使用这种方法可以无闪烁,当然,你不用API函数的话,也可以使用Canvas封装的CopyRect方法。
    如果这个都嫌麻烦,你可以使用Image.picture.loadfromfile方法,或者其它途径来改变这个IMAGE的显示,也不会闪烁了,但会写很多无聊的代码。第二个问题的话,好象只能使用代码了,DBLISTBOX或者DBCOMBOBOX只会改变DATASET里面的数据,而不会填充数据,其实写代码也很简单啊:(假设这个字段是个字符串型的值)
    procedure  FillData(ComboBox:TcomboBox;DataSet:Tdataset;FieldName:String);
    var
      i:integer;
    value:string;
    begin
      Dataset.first;
      for i:=1 to Dataset.recordcount do begin  
       if DataSet.FieldValues[fieldname]<>NULL then     
       value:=DataSet.fieldvalues[fieldname]{这里可以多写点代码处理不同类型的数据}
      else
        value:='NULL';
         
         ComBoBox.items.add(value);
         dataset.next;
      end;
      
    end;
      

  10.   

    >>实在不好意思我的问题没有陈诉明白,我的第二问题意思是在Delphi中有什么样的下拉>>框数据控件只用选属性,不用写代码可实现,下拉框中的值是数据源某一字段的所有记>>录。
    haha,这次我就不同意venne啦。
    用TDBLookupComboBox,在Data Controls栏。
    设ListSource,和KeyField属性,搞定:)
      

  11.   

    不同意Venne的地方:
    1、
    bmp.width:=img.width;
    bmp.height:=img.heiht;
    bmp.loadfromfile(Filename);{这里注明你可以从多种途径获得该位图}
    既然要load,设置宽高就没用了,因为Load以后宽高是位图文件的实际宽高。
    2、
    同意ahfei,可以用TDBLookupComboBox。不用编码。
    添加该数据源及DataSource,然后ListSource指向该DataSource, 设置ListField为显示的字段,KeyField为索引字段。一般来说KeyField为代码值,而ListField为代码的描述或名称字段。当然,如果不用数据感知控件,就得编码了。或许谁能编一个控件。
      

  12.   

    to kxy:>Table.FiledbYName(Table.Fields[i].Name);
    >只是一个意思, something := Table.FiledbYName(Table.Fields[i].Name).AsXXXX;绕大弯路了吧?
    难道不能写成:something := Table.Fields[i].AsXXXX ?