Forum Replies Created
-
AuthorPosts
-
kxekxeParticipant
ну я так и подумал что для анимации… ладно спасибо =)
kxekxeParticipantу меня твой пример ваще картинку не загружает.. хз почему – не стал разбираться.. екзешник в след раз тож кидай, а то ктото не сможет ваще запустить проект…
попробуй загружать не через Glyph а через Images := IL1 и ImageIndex
и скин другой поставь для проверки… на этом скине у меня помойму тоже чтото было с картинками непонятное…kxekxeParticipantНадо путь к компонетам добавить…
tools-options-Library Win32-library path и там добавить папку D2009kxekxeParticipantво блин =) надо перечитать мануал.. а то так бы по старинке и выгребал бы названия скинов из папки.
и про AutoHotkeys не знал..
спасибо stalker18, узнал много нового =)kxekxeParticipantДело в том, что амперсанда в моём Item не было. А если скинов будет много, то это влияет на увеличение кода, т.к. на каждый Item писать свой обработчик. А я бы хотел один для всех написать.не знаю как ты создаешь итемы.. я создаю динамически по названию файла в директории скинов
и там же один раз указываю какой обработчикprocedure TForm.FillPopupSkins;
var
vlist: TStringList;
I: Integer;
vItem: TMenuItem;
begin
vlist := TStringList.Create;
try
ListFilesInDirectory('c:skins', vlist, 'asz'); // получаем скины в vList
for I := 0 to vList.Count – 1 do
Begin
vItem := TMenuItem.Create(self);
with vItem do
Begin
Caption := ChangeFileExt(vlist.Strings,''); // название скина
OnClick := ItemClick; // обработчик
End;
SubMenu.Insert(i, vItem); // submenu – пункт в popupmenu
End;
finally
FreeAndNil(vlist);
end;
end;после такого создания в кепшоне итема амперсанд автоматом подставляеться.
могу демку скинуть, хотя, думаю, тут и так наглядноkxekxeParticipantПроверил ShowMessage`ем ((TMenuItem *)Sender)->Caption и понял, что не пркатит этот номер, т.к. Sender в этом случае Action для PopupMenu.Вот как я делал через popupmenu…
на каждый итем вешал событие OnClickи в обработчике писал
procedure TForm.ItemClick(Sender: TObject);
begin
// убераем амперсант из кепшона итема
SkinManager.SkinName := ReplaceStr(TMenuItem(Sender).Caption, '&', '');
end;работает.
kxekxeParticipantотлично.. спасибо за быстрое реагирование
kxekxeParticipant -
AuthorPosts