سلام.
بهم گفتند قسمت بالای پنجره برنامه آیکن برای اجرای برنامه ها داشته باشم.
چند تا مشکل دارم:
1.بعضی برنامه ها آیکن گویا ندارند و باید نام برنامه هم نمایش داده بشه در حالی که کمبود فضای خالی دارم.
2.کدی که پیدا کردم نمی دونم چرا آیکن رو کوچک می کنه(مثلا من برای برنامه آیکن 48*48 تعریف کردم اما این کد 32*32 نشون میده)
3.از چه کامپوننتی استفاده کنم؟ُSpeedButton-BitBtn-ListBox.
فعلا سوال اول برام مهمتره.سوال دوم رو برای کنجکاوی در مورد کد جواب میخوام.سومی هم که فکر کنم BitBtn خوب باشه یا فوقش لیست باکس با ترسیم خودم.
ممکنه یه نگاه به کد بندازید؟
procedure TForm1.GetProgramIcon();
var
IconIndex: word;
Buffer: array[0..2048] of char;
IconHandle: HIcon;
Bitmap : TBitmap;
OpenDialog: TOpenDialog;
MyIcon:TIcon;
begin
OpenDialog := TOpenDialog.Create(nil);
try
if OpenDialog.Execute then
begin
StrCopy(@Buffer, PChar(OpenDialog.FileName));
IconIndex := 0;
IconHandle := ExtractAssociatedIcon(HInstance, Buffer, IconIndex);
MyIcon:=TIcon.Create;
if IconHandle <> 0 then
MyIcon.Handle := IconHandle;
Bitmap := TBitmap.Create;
try
Bitmap.Width := MyIcon.Width;
Bitmap.Height := MyIcon.Height;
Bitmap.Canvas.Draw(0, 0, MyIcon);
SpeedButton1.Glyph.Assign(Bitmap);
finally
Bitmap.Free;
MyIcon.Free;
end;
end;
finally
OpenDialog.Free;
end;
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
GetProgramIcon();
end;