如果有源码给我一份啊。[email protected]

解决方案 »

  1.   

    TAppBar+TOutLookBar
    TOutLookBar很容易,去找一个TmxOutLookBar控件就可以
    TAppBar可以看D5DG上面专门有一节讨论这个问题,用这个可以做到类似于QQ和任务栏自动隐藏,竖排的功能
      

  2.   

    我就用delphi自己的东西,做出来其臭无比unit CliMBUnt;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Buttons, ExtCtrls, ComCtrls, ImgList, StdCtrls,StrUtils;type
      TCliMBFrm = class(TForm)
        Panel1: TPanel;
        SpeedButton1: TSpeedButton;
        SpeedButton2: TSpeedButton;
        SpeedButton3: TSpeedButton;
        SpeedButton4: TSpeedButton;
        Panel2: TPanel;
        Panel3: TPanel;
        Panel4: TPanel;
        Bevel1: TBevel;
        Bevel3: TBevel;
        SpeedButton5: TSpeedButton;
        SpeedButton6: TSpeedButton;
        Panel5: TPanel;
        Bevel4: TBevel;
        SpeedButton7: TSpeedButton;
        SpeedButton8: TSpeedButton;
        Panel6: TPanel;
        Bevel5: TBevel;
        SpeedButton9: TSpeedButton;
        SpeedButton10: TSpeedButton;
        Label1: TLabel;
        Panel7: TPanel;
        ScrollBox1: TScrollBox;
        Label2: TLabel;
        SpeedButton11: TSpeedButton;
        SpeedButton12: TSpeedButton;
        ScrollBox3: TScrollBox;
        Label4: TLabel;
        SpeedButton18: TSpeedButton;
        SpeedButton19: TSpeedButton;
        Panel8: TPanel;
        SpeedButton14: TSpeedButton;
        Panel9: TPanel;
        SpeedButton13: TSpeedButton;
        Panel10: TPanel;
        SpeedButton15: TSpeedButton;
        ScrollBox2: TScrollBox;
        Label3: TLabel;
        SpeedButton16: TSpeedButton;
        SpeedButton17: TSpeedButton;
        procedure SpeedButton9Click(Sender: TObject);
        procedure Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
          Y: Integer);
        procedure Label1MouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure Label1MouseLeave(Sender: TObject);
        procedure Label1MouseUp(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure SpeedButton11Click(Sender: TObject);
        procedure SpeedButton12Click(Sender: TObject);
        procedure SpeedButton13Click(Sender: TObject);
        procedure FormCanResize(Sender: TObject; var NewWidth,
          NewHeight: Integer; var Resize: Boolean);
        procedure FormShow(Sender: TObject);
        procedure SpeedButton14Click(Sender: TObject);
        procedure SpeedButton15Click(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
      private
        { Private declarations }
        FMaxHeight : Integer;
        Procedure CreateSpeedButton(vFDName,vIP : Variant);
        Function MaxHeight: Integer;
        Procedure vClick(Sender : TObject);
      public
        { Public declarations }
        SrvIP , SrvPort : String;
        FIP , FFDName : Variant;
      end;var
      CliMBFrm: TCliMBFrm;implementation
    uses
      CDMUnt,CliChatUnt;{$R *.dfm}{ TCliMBFrm }procedure TCliMBFrm.CreateSpeedButton(vFDName,vIP : Variant);
    var
      vSpeedButton : TSpeedButton;
      vLabel : TLabel;
      vInteger ,vTop , vLeft : Integer;
    begin
      vTop := 0;
      vLeft := 30;
      For vInteger := VarArrayLowBound(vIP,1) to VarArrayHighBound(vIP,1) do
      begin
        vSpeedButton := TSpeedButton.Create(ScrollBox1);
        vSpeedButton.Parent := ScrollBox1;
        vSpeedButton.Left := vLeft;
        if vInteger = 0 then
          vSpeedButton.Top := 0 else
          vSpeedButton.Top :=  50 + vTop;
        vTop := vSpeedButton.Top;
        ShowMessage('a');
        vSpeedButton.Name := 'CM' + IntToStr(vFDName[vInteger]);
        ShowMessage('b');
        //vSpeedButton.Tag := vIP[vInteger];
        ShowMessage('c');
        vSpeedButton.Hint := vIP[vInteger];
        ShowMessage(vIP[vInteger]);
        vSpeedButton.ShowHint := True;
        vSpeedButton.Glyph.LoadFromFile('G:\dprogram\CM\Image\11111.bmp');
        vSpeedButton.Width := 35;
        vSpeedButton.Height := 35;
        vSpeedButton.Flat := True;
        vSpeedButton.OnClick := vClick;
        vSpeedButton.Show;
        vLabel := TLabel.Create(ScrollBox1);
        vLabel.Parent := ScrollBox1;
        vLabel.Left := vLeft;
        vLabel.Top := vSpeedButton.Top + vSpeedButton.Height;
        vLabel.Caption := IntToStr(vFDName[vInteger]);
        vLabel.Width := 100;
        vLabel.Height := 20;
        vLabel.OnMouseDown := Label1.OnMouseDown;
        vLabel.OnMouseMove := Label1.OnMouseMove;
        vLabel.OnMouseUp := Label1.OnMouseUp;
        vLabel.OnMouseLeave := Label1.OnMouseLeave;
      end;
      Label2.Top := vTop;
    end;
      

  3.   

    procedure TCliMBFrm.SpeedButton9Click(Sender: TObject);
    var
      vIndex : Integer;
    begin
      FFDName:= DataModuleFrm.CliSocketConnection.AppServer.LoadFD(
        StrToInt(Self.Caption),FIP);
      if VarIsArray(FFDName) and VarIsArray(FIP) then
      begin
        //ShowMessage(IntToStr(FFDName[0]));
        CreateSpeedButton(FFDName,FIP);
      end;
    end;procedure TCliMBFrm.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      TLabel(Sender).Font.Color := ClBlue;
    end;procedure TCliMBFrm.Label1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      TLabel(Sender).Font.Color := ClBlue;
    end;procedure TCliMBFrm.Label1MouseLeave(Sender: TObject);
    begin
      TLabel(Sender).Font.Color := ClBlack;
    end;procedure TCliMBFrm.Label1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      TLabel(Sender).Font.Color := ClBlack;
    end;procedure TCliMBFrm.SpeedButton11Click(Sender: TObject);
    var
      vTopx , vTopy : Integer;
    begin
      vTopx := SpeedButton11.Top;
      vTopy := SpeedButton12.Top;
      ScrollBox1.ScrollBy(0,-20);
      SpeedButton11.Top := vTopx;
      SpeedButton12.Top := vTopy;
    end;procedure TCliMBFrm.SpeedButton12Click(Sender: TObject);
    var
      vTopx , vTopy : Integer;
    begin
      vTopx := SpeedButton11.Top;
      vTopy := SpeedButton12.Top;
      ScrollBox1.ScrollBy(0,20);
      SpeedButton11.Top := vTopx;
      SpeedButton12.Top := vTopy;
    end;procedure TCliMBFrm.SpeedButton13Click(Sender: TObject);
    begin
      ScrollBox1.Height := 0;
      ScrollBox2.Height := FMaxHeight;
      ScrollBox3.Height := 0;
    end;function TCliMBFrm.MaxHeight: Integer;
    begin
      Result := 0;
      if ScrollBox1.Height > Result then
        Result := ScrollBox1.Height;
      if ScrollBox2.Height > Result then
        Result := ScrollBox2.Height;
      if ScrollBox3.Height > Result then
        Result := ScrollBox3.Height;
      //..
    end;procedure TCliMBFrm.FormCanResize(Sender: TObject; var NewWidth,
      NewHeight: Integer; var Resize: Boolean);
    begin
      //FMaxHeight := MaxHeight;
    end;procedure TCliMBFrm.FormShow(Sender: TObject);
    begin
      FMaxHeight := MaxHeight;
    end;procedure TCliMBFrm.SpeedButton14Click(Sender: TObject);
    begin
      ScrollBox1.Height := FMaxHeight;
      ScrollBox2.Height := 0;
      ScrollBox3.Height := 0;
    end;procedure TCliMBFrm.SpeedButton15Click(Sender: TObject);
    begin
      ScrollBox1.Height := 0;
      ScrollBox2.Height := 0;
      ScrollBox3.Height := FMaxHeight;
    end;procedure TCliMBFrm.FormDestroy(Sender: TObject);
    begin
      Application.Terminate;
      Exit;
    end;procedure TCliMBFrm.vClick(Sender: TObject);
    var
      CliChatFrm: TCliChatFrm;
    begin
      //..
      CliChatFrm := TCliChatFrm.Create(Nil);
      CliChatFrm.Label2.Caption :=
         RightStr(TSpeedButton(Sender).Name,Length(TSpeedButton(Sender).Name) - 2) +
         '正在与' + Self.Caption + '愉快的聊天';
      CliChatFrm.Show;
    end;end.
    {}
      

  4.   

    类型库的一部分。{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
    function TCMEmp001.GetServerProperties: TCMEmp001Properties;
    begin
      Result := FProps;
    end;
    {$ENDIF}function  TCMEmp001.AS_ApplyUpdates(const ProviderName: WideString; Delta: OleVariant; 
                                        MaxErrors: Integer; out ErrorCount: Integer; 
                                        var OwnerData: OleVariant): OleVariant;
    begin
      Result := DefaultInterface.AS_ApplyUpdates(ProviderName, Delta, MaxErrors, ErrorCount, OwnerData);
    end;function  TCMEmp001.AS_GetRecords(const ProviderName: WideString; Count: Integer; 
                                      out RecsOut: Integer; Options: Integer; 
                                      const CommandText: WideString; var Params: OleVariant; 
                                      var OwnerData: OleVariant): OleVariant;
    begin
      Result := DefaultInterface.AS_GetRecords(ProviderName, Count, RecsOut, Options, CommandText, 
                                               Params, OwnerData);
    end;function  TCMEmp001.AS_DataRequest(const ProviderName: WideString; Data: OleVariant): OleVariant;
    begin
      Result := DefaultInterface.AS_DataRequest(ProviderName, Data);
    end;function  TCMEmp001.AS_GetProviderNames: OleVariant;
    begin
      Result := DefaultInterface.AS_GetProviderNames;
    end;function  TCMEmp001.AS_GetParams(const ProviderName: WideString; var OwnerData: OleVariant): OleVariant;
    begin
      Result := DefaultInterface.AS_GetParams(ProviderName, OwnerData);
    end;function  TCMEmp001.AS_RowRequest(const ProviderName: WideString; Row: OleVariant; 
                                      RequestType: Integer; var OwnerData: OleVariant): OleVariant;
    begin
      Result := DefaultInterface.AS_RowRequest(ProviderName, Row, RequestType, OwnerData);
    end;procedure TCMEmp001.AS_Execute(const ProviderName: WideString; const CommandText: WideString; 
                                   var Params: OleVariant; var OwnerData: OleVariant);
    begin
      DefaultInterface.AS_Execute(ProviderName, CommandText, Params, OwnerData);
    end;function  TCMEmp001.ResultLogn(UserName: SYSINT; const UserPass: WideString; 
                                   const UserIP: WideString): WordBool;
    begin
      Result := DefaultInterface.ResultLogn(UserName, UserPass, UserIP);
    end;function  TCMEmp001.LoadFD(UserName: Integer; var IPList: OleVariant): OleVariant;
    begin
      Result := DefaultInterface.LoadFD(UserName, IPList);
    end;{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
    constructor TCMEmp001Properties.Create(AServer: TCMEmp001);
    begin
      inherited Create;
      FServer := AServer;
    end;function TCMEmp001Properties.GetDefaultInterface: ICMEmp001;
    begin
      Result := FServer.DefaultInterface;
    end;{$ENDIF}procedure Register;
    begin
      RegisterComponents(dtlServerPage, [TCMEmp001]);
    end;end.
      

  5.   

    用ExpressBars控件吧,www.51delphi.com下载
      

  6.   

    唉,有N个人问了N遍了。LMD,ABC都有。另外,郝新庚大虾的主页上也有他自己做的。haoxg.yeah.net自己看吧。
      

  7.   

    TMS控件
    LMD控件
    EXPRESS BAR控件..
    好多啊..找一个..
    如果要知道别人怎么做的..
    看它们的源码就OK了..
    上面的东西..窑洞有下..