Mega Code Archive

 
Categories / Delphi / VCL
 

Listing A Systems Drives In A ComboBox, Listbox,...Using Images

Title: Listing A System's Drives In A ComboBox, Listbox,...Using Images Question: This Program Shows How To Put Images In A: * ComboBox * ListBox * TabControl * ToolBar I Listed The Systems Drives For This Example (Removable Disk, Fixed, CD-Rom, Remote & Ramdisk). Each Of These Disks Has Its Own Picture. Each Picture Is Stored In An ImageList. DON''T FORGET TO SET THE STYLE OF THE LISTBOXES, COMBOBOXES,... TO OWNERDRAWN... The ToolBar Has An ImageList Of Its Own Where The Images Will Be Put In During The DriveScanning Routine (Same For The TabControl) For The ListBox & ComboBox, the below mentionned code should be simple to understand... Answer: 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.