چطور یه ليست از آیکن های برنامه های مورد نياز در برنامه خودم داشته باشم
سلام.
بهم گفتند قسمت بالای پنجره برنامه آیکن برای اجرای برنامه ها داشته باشم.
چند تا مشکل دارم:
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;
نقل قول: چطور یه ليست از آیکن های برنامه های مورد نياز در برنامه خودم داشته باشم
راستی می تونم speedButton رو داخل لیست باکس بذارم؟
یه مشکل دیگه هم دارم.من پراپرتی flat رو true می کنم.نمی دونم چرا در یه برنامه ساده کد بالا رو امتحان می کنم آیکن رو که برای دکمه میذاره،دکمه در حالت فشار دادن قرار نمی گیره ولی در برنامه خودم میذارم انگار کلیک شده.پراپرتی down هم تاثیری نداشت!
نقل قول: چطور یه ليست از آیکن های برنامه های مورد نياز در برنامه خودم داشته باشم
سلام. دان باید به همراه گروپ استفاده بشه.
اسپید رو هم نمی شه داخل لیست باکس گذاشت مگر این که کامپوننتش رو تغییر بدی
نقل قول: چطور یه ليست از آیکن های برنامه های مورد نياز در برنامه خودم داشته باشم
ممنون.به این نتیجه رسیدم که از لیست باکس استفاده کنم و هر رکورد یه بیت مپ باشه.