我把一个BCB的控件引入到DELPHI中,结果编译怎么也通不过。请问要怎么样导入才能用????
还有一个问题就是,BCB中有一个控件(TrayIcon)能把程序做成像OICQ一样在任务栏显示,请问DELPHI中相应的控件是什么?

解决方案 »

  1.   

    BCB的控件如果是BCB用C++写的,DELPHI是无法编译的。TrayIcon控件在ELPHI中无现成的相应的控件
      

  2.   

    能告诉我应该怎么实现类似TrayIcon的吗?不管能否答上,只要给个相应,就结贴给分
      

  3.   

    unit TrayIcon;
    interfaceuses
      SysUtils, Windows, Messages, Classes, Graphics, Controls, ShellAPI,
      Forms;const WM_TOOLTRAYICON = WM_USER+1;
          WM_RESETTOOLTIP = WM_USER+2;type
      TTrayIcon = class(TComponent)
      private
        IconData: TNOTIFYICONDATA;
        fIcon : TIcon;
        fToolTip : String;
        fWindowHandle : HWND;
        fActive : boolean;
        fShowDesigning : Boolean;
      { Events }    fOnClick     : TNotifyEvent;
        fOnDblClick  : TNotifyEvent;
        fOnRightClick : TMouseEvent;    function AddIcon : boolean;
        function ModifyIcon : boolean;
        function DeleteIcon : boolean;    procedure SetActive(Value : boolean);
        procedure SetShowDesigning(Value : boolean);
        procedure SetIcon(Value : TIcon);
        procedure SetToolTip(Value : String);
        procedure WndProc(var msg : TMessage);    procedure FillDataStructure;
      protected
        constructor create(aOwner : TComponent); override;
        destructor destroy; override;
      public
      published
        property Active : boolean read fActive write SetActive;
        property ShowDesigning : boolean read fShowDesigning write SetShowDesigning;
        property Icon : TIcon read fIcon write SetIcon;
        property ToolTip : string read fTooltip write SetToolTip;    property OnClick     : TNotifyEvent read FOnClick write FOnClick;
        property OnDblClick  : TNotifyEvent read FOnDblClick write FOnDblClick;
        property OnRightClick : TMouseEvent  read FOnRightClick write FonRightClick;
      end;procedure Register;implementationprocedure TTrayIcon.SetActive(Value : boolean);
    begin
       if value <> fActive then begin
         fActive := Value;
         if not (csdesigning in ComponentState) then begin
            if Value then begin
               AddIcon;
            end else begin
               DeleteIcon;
            end;
         end;
      end;
    end;procedure TTrayIcon.SetShowDesigning(Value : boolean);
    begin
      if csdesigning in ComponentState then begin
         if value <> fShowDesigning then begin
            fShowDesigning := Value;
            if Value then begin
               AddIcon;
            end else begin
               DeleteIcon;
            end;
         end;
      end;
    end;procedure TTrayIcon.SetIcon(Value : Ticon);
    begin
      if Value <> fIcon then
        begin
          fIcon.Assign(value);
          ModifyIcon;
        end;
    end;procedure TTrayIcon.SetToolTip(Value : string);
    begin
       if length( Value ) > 62 then
          Value := copy(Value,1,62);
       fToolTip := value;
       ModifyIcon;
    end;constructor TTrayIcon.Create(aOwner : TComponent);
    begin
      inherited create(aOwner);
      FWindowHandle := AllocateHWnd( WndProc );
      FIcon := TIcon.Create;
      SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
    end;destructor TTrayIcon.destroy;
    begin
      if (not (csDesigning in ComponentState) and fActive)
         or ((csDesigning in ComponentState) and fShowDesigning) then
            DeleteIcon;  FIcon.Free;
      DeAllocateHWnd( FWindowHandle );
      inherited destroy;
    end;procedure TTrayIcon.FillDataStructure;
    begin
      with IconData do
      begin
         cbSize := sizeof(TNOTIFYICONDATA);
         wnd := FWindowHandle;
         uID := 0; // is not passed in with message so make it 0
         uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
         hIcon := fIcon.Handle;
         StrPCopy(szTip,fToolTip);
         uCallbackMessage := WM_TOOLTRAYICON;
      end;
    end;function TTrayIcon.AddIcon : boolean;
    begin
       FillDataStructure;
       result := Shell_NotifyIcon(NIM_ADD,@IconData);  
       if fToolTip = '' then
          PostMessage( fWindowHandle, WM_RESETTOOLTIP,0,0 );
    end;function TTrayIcon.ModifyIcon : boolean;
    begin
       FillDataStructure;
       if fActive then
          result := Shell_NotifyIcon(NIM_MODIFY,@IconData)
       else
          result := True;
    end;function TTrayIcon.DeleteIcon : boolean;
    begin
       result := Shell_NotifyIcon(NIM_DELETE,@IconData);
    end;procedure TTrayIcon.WndProc(var msg : TMessage);
    var MouseCo: TPoint;
    begin
       with msg do
         if (msg = WM_RESETTOOLTIP) then
            SetToolTip( fToolTip )
         else if (msg = WM_TOOLTRAYICON) then
         begin
           case lParam of
             WM_LBUTTONDBLCLK: if assigned (FOnDblClick) then FOnDblClick
                                                              (self);
             WM_LBUTTONUP    : if assigned(FOnClick)then FOnClick(self);
             WM_RBUTTONUP    : if assigned (FOnRightClick)then
                               begin
                                  GetCursorPos(MouseCo);
                                  FOnRightClick(self,mbRight,[],
                                                MouseCo.x, MouseCo.y);
                               end;
           end;
         end
         else // Handle all messages with the default handler
            Result := DefWindowProc(FWindowHandle, Msg, wParam, lParam);
    end;procedure Register;
    begin
      RegisterComponents('Win32', [TTrayIcon]);
    end;end.
      

  4.   

    抄的:)
    有空可以下一个大富翁离线包,很有用。
    http://cakk.126.com/