سلام
لو اردت رسم صورة او مجموعة صور داخل StatusBar فاتبع التالي
- ضع StatusBar على الفورم . اضغط ضغط ممتالى عليه لتظهر لك قائمة العناصر , قم باضافة تلات عناصر , وفي كل مرة تضيف فيها عنصر قم بتعديل الخاصية style لكل عنصر و ضعها = psOwnerDraw بدل psText.
- ضع imagelist على الفورم تم قم باضافة تلات صور له ,
سنحتاج الى تعريف المصفوفة message1 ودلك لتخزين اسما عناصر StatusBar التي ستضهر بجانب كل صورة .
لتغيير الصور لكل عنصر سنستخدم الامر
Imagelist1.Draw(StatusBar1.Canvas,Rect.Left,Rect.Top,0);
ويتم استخدامها داخل الحدت DrawPanel الخاص ب StatusBar
الان اليك البرنامج كاملا
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, ImgList;
type
TForm1 = class(TForm)
StatusBar1: TStatusBar;
ImageList1: TImageList;
procedure StatusBar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
message1: array[0..10] of string;
implementation
{$R *.DFM}
procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
begin
with StatusBar1.Canvas do
begin
Brush.Color := clSilver;
FillRect(Rect);
Font.Color := clblack;
Imagelist1.Draw(StatusBar1.Canvas,Rect.Left,Rect.Top,Panel.Index);
TextOut(Rect.left + 20, Rect.top + 2,Message1[Panel.Index]);
End;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
message1[0]:='Item1 ';
message1[1]:='Item 2';
message1[2]:='Item 3';
end;
end.
وشكرا