delphi中的ComboBox组件的使用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi中的ComboBox组件的使用?相关的知识,希望对你有一定的参考价值。

我想通过该组件,设置固定的下拉选项,比如:A B C D E五个!
怎么设置?

ComboBox组件可以吗?还有其他组件吗?请详细回答!

三项操作:(括号内为多行文本)
1.对象属性中的“Items”设置成
A
B
C
D
E

2.对象属性中的“Style”设置成csDropDownList
3.对象属性中的“ItemIndex”设置成0
保存编译运行
参考技术A combobox可以设置,在combobox的item属性中依次输入A、B、C、D、E,输入效果为
A
B
C
D
E,
然后把ItemIndex”设置成0(默认为-1,显示combobox1),运行一下,就可以看到你想要的效果了。
Style”默认就是csDropDownList,不需要设置;
参考技术B 在程序的运行中(如在窗体的新建、显示等事件中)
with ComboBox1 do
begin
clear;
Items.add('A');
Items.add('B');
Items.add('C');
Items.add('D');
Items.add('E');
ItemIndex :=0;
end;
另外还有ListBox、DBListBox、DBComboBox等均能完成以上功能,不过后两个用于数据库中。

DELPHI 2009 中的 .NET 组件

【中文标题】DELPHI 2009 中的 .NET 组件【英文标题】:.NET component in DELPHI 2009 【发布时间】:2010-12-10 02:34:05 【问题描述】:

能否告诉我.NET 组件是否可以与 Delphi 2009 一起使用,如果可以,请给我一些示例代码。

提前致谢。

【问题讨论】:

【参考方案1】:

是的,可以在 win32 程序中使用 .net 组件。不幸的是,自己做起来并不简单,我强烈推荐Hydra。

【讨论】:

【参考方案2】:

Win32 的 Delphi 中没有。

您可以为此使用 Delphi PRISM。

您也可以查看CrossTalk或Hydra

【讨论】:

【参考方案3】:

有几种方法可以做到这一点,传统的 COM/Interop 只是其中一种方法。

另一种方法是使用 CLR 中内置的现有基础架构来支持 COM/Interop 和混合模式 C++/CLI。

CLR 非常支持编组与 IUnknown 之间的接口引用(并且每个 Delphi 接口都满足该要求) 您可以将 .Net 程序集转换为真正的 DLL 并使用任何语言导出函数 我编写了一个完全透明的 MSBuild 任务:http://sites.google.com/site/robertgiesecke/Home/uploads/unmanagedexports 结合这两件事,您可以将 .Net 组件作为接口参考,而无需与 COM 和 clsids/progids 进行斗争

你很幸运,我已经在另一个论坛上回答了一个非常相似的问题。所以我已经有了一些示例代码。 ;-)

我在这里展示的可能不是你的那杯茶。

它至少需要一些 .Net 知识,您可能不想过多地参与其中。 双方都需要手动步骤,即使您获得的灵活性很容易使其物有所值,但灵活性可能根本不是必需的。因此,经典 COM 可能是一种选择。

归根结底,我自己不会使用经典 COM。除非它真的有意义。 (就像为 Office 编写 COM-Addins)

在 VisualStudio 中,您可以使用重构/提取接口向导从您的组件中获取具有您需要的方法的接口。

你需要提供这3个属性

[ComVisible(true)] 
[Guid("Create a GUID yourself"), 
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IYourInterface
“ComVisible”是必需的,否则 CLR 不会创建所需的运行时可调用包装器 (RCW)(将从 Delphi 中看到) 需要 GUID 来识别接口,在 Delphi 和 .Net 版本的接口中 GUID 必须相同 “ComInterfaceType.InterfaceIsIUnknown”告诉 CLR RCW 应该实现 IUnknown。 没有它,您将无法在 Delphi 中使用它。因为在 Delphi 中,每个接口都是 IUnknown。

为了简单起见,我假设你的组件只有一个简单的方法。 在 VisualStudio 中创建一个类库,然后按照其他页面中的步骤进行操作。 (为了能够导出函数)

[ComVisible(true)] 
[Guid("Create a GUID yourself"), 
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IYourInterface

   void DoSomething(int value);


public class YourComponent : IYourInterface

   public void DoSomething(int value)
   
     return value + 1;
   


static class Exports

   [DllExport("createyourcomponent")]
   public static void CreateInstance([MarshalAs(UnmanagedType.Interface)]out IYourInterface instance)
   
     instance = new YourComponent();
   

在 Delphi 中,您可以根据需要将此接口包装在组件中。 这将隐藏涉及 .Net 的事实:

type
  IYourInterface = interface
  ['Create a GUID yourself']//Control+Shift+G in Delphi
    // important, safecall is used by COM/Interop
    procedure DoSomething(aValue : Integer); safecall; 
  end;  

  TYourComponent = class(TComponent)
  private
    fInnerInstance : IYourInterface;
  public
    procedure DoSomething(aValue : Integer);
    constructor Create(aOwner : TComponent);
  end;

implementation

procedure CreateManagedInstance(out aInstance : IYourInterface); 
  stdcall; external 'YourDotNetLibraryName' 
               name 'createyourcomponent';

constructor TYourComponent.Create(aOwner : TComponent);
begin
  inherited Create(aOwner);
  CreateManagedInstance(fInnerInstance);
end;

procedure TYourComponent.DoSomething(aValue : Integer);
begin
  fInnerInstance.DoSomething(aValue);
end;

免责声明:我手边没有 IDE,因此示例代码中可能存在拼写错误或其他错误...

【讨论】:

【参考方案4】:

您可以将 .NET 组件与作为 RAD 工作室的一部分的 Delphi for .NET 一起使用

【讨论】:

不再是,Delphi.NET 自 2009 年以来已被 Delphi Prism 取代。 Delphi for .NET 是 Rad Studio 2009 的一部分

以上是关于delphi中的ComboBox组件的使用?的主要内容,如果未能解决你的问题,请参考以下文章

delphi中的combobox问题

在delphi中如何用combobox实现分级读取数据库中的内容

delphi 中combobox控件怎么显示所选择选项

如何使用delphi combobox

delphi7 中用button动态查询sql

C#中的combobox组件应该怎么用?