Список дисков в ComboBox, ListBox ... Использование изображений
Не забудьте установить свойство Style в OwnerDraw...
ToolBar имеет собственный ImageList, куда будут помещены изображения.
unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ImgList, ExtCtrls, ComCtrls, ToolWin; type TForm1 = class(TForm) ComboBox1: TComboBox; Button1: TButton; ImageList1: TImageList; ImageList2: TImageList; ImageList3: TImageList; ImageList4: TImageList; ImageList5: TImageList; ImageList6: TImageList; ListBox1: TListBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; TabControl1: TTabControl; ToolBar1: TToolBar; ImageList7: TImageList; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure ListBox1DrawItem( Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); private { Private declarations } procedure MyDraw(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); var Drive : Char; i,j : integer; begin For i:=ToolBar1.ComponentCount -1 downto 0 do begin ToolBar1.Components[i].Destroy; end; ToolBar1.Visible := False; i := 0;ImageList1.Clear; //To Get The Drives Listed From A to Z In A Toolbar //You Have To Go From 'z' downto 'a' Or The Toolbar //Will Display The Drives Beginning With The Last One. For Drive := 'z' downto 'a' do begin Case GetDriveType(PChar(Drive + ':\')) of DRIVE_REMOVABLE : begin With TToolButton.Create(Toolbar1) do begin Parent := Toolbar1; Style := tbsButton; ImageList7.AddImages(ImageList2); Height := Toolbar1.Height; ImageIndex := i; Inc(i); Caption := UpperCase(Drive) + ':\'; end; end; DRIVE_FIXED : begin With TToolButton.Create(Toolbar1) do begin Parent := Toolbar1; Style := tbsButton; ImageList7.AddImages(ImageList3); Height := Toolbar1.Height; ImageIndex := i; Inc(i); Caption := UpperCase(Drive) + ':\'; end; end; DRIVE_CDROM : begin With TToolButton.Create(Toolbar1) do begin Parent := Toolbar1; Style := tbsButton; ImageList7.AddImages(ImageList4); Height := Toolbar1.Height; ImageIndex := i; Inc(i); Caption := UpperCase(Drive) + ':\'; end; end; DRIVE_REMOTE : begin With TToolButton.Create(Toolbar1) do begin Parent := Toolbar1; Style := tbsButton; ImageList7.AddImages(ImageList5); Height := Toolbar1.Height; ImageIndex := i; Inc(i); Caption := UpperCase(Drive) + ':\'; end; end; DRIVE_RAMDISK : begin With TToolButton.Create(Toolbar1) do begin Parent := Toolbar1; Style := tbsButton; ImageList7.AddImages(ImageList6); Height := Toolbar1.Height; ImageIndex := i; Inc(i); Caption := UpperCase(Drive) + ':\'; end; end; end; end; Dec(i); ToolBar1.Visible := True; ComboBox1.Clear;ImageList1.Clear;ListBox1.Clear;TabControl1.Tabs.Clear; For Drive := 'a' to 'z' do begin Case GetDriveType(PChar(Drive + ':\')) of DRIVE_REMOVABLE : begin ComboBox1.Items.Add(UpperCase(Drive) + ':\'); ListBox1.Items.Add(UpperCase(Drive) + ':\'); TabControl1.Tabs.Add(UpperCase(Drive) + ':\'); ImageList1.AddImages(ImageList2); end; DRIVE_FIXED : begin ComboBox1.Items.Add(UpperCase(Drive) + ':\'); ListBox1.Items.Add(UpperCase(Drive) + ':\'); TabControl1.Tabs.Add(UpperCase(Drive) + ':\'); ImageList1.AddImages(ImageList3); end; DRIVE_CDROM : begin ComboBox1.Items.Add(UpperCase(Drive) + ':\'); ListBox1.Items.Add(UpperCase(Drive) + ':\'); TabControl1.Tabs.Add(UpperCase(Drive) + ':\'); ImageList1.AddImages(ImageList4); end; DRIVE_REMOTE : begin ComboBox1.Items.Add(UpperCase(Drive) + ':\'); ListBox1.Items.Add(UpperCase(Drive) + ':\'); TabControl1.Tabs.Add(UpperCase(Drive) + ':\'); ImageList1.AddImages(ImageList5); end; DRIVE_RAMDISK : begin ComboBox1.Items.Add(UpperCase(Drive) + ':\'); ListBox1.Items.Add(UpperCase(Drive) + ':\'); TabControl1.Tabs.Add(UpperCase(Drive) + ':\'); ImageList1.AddImages(ImageList6); end; end; end; ComboBox1.Itemindex := 0; ListBox1.Itemindex := 0; end; procedure TForm1.MyDraw(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); begin With (Control As TComboBox).Canvas do begin FillRect(Rect); ImageList1.Draw(Combobox1.Canvas,Rect.Left,Rect.Top + 2,Index,True); TextOut(Rect.Left + 20,Rect.Top,(Control as TComboBox).Items[Index]); end; end; procedure TForm1.FormCreate(Sender: TObject); begin ComboBox1.OnDrawItem := MyDraw; end; procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); begin With (Control As TListbox).Canvas do begin FillRect(Rect); ImageList1.Draw(Listbox1.Canvas,Rect.Left,Rect.Top,Index,True); TextOut(Rect.Left + 20,Rect.Top + 2,(Control As TListBox).Items[Index]); end; end; end.
Комментарии