Здравствуйте еще раз Alegun.
Опять создаю динамические компоненты, на этот раз TSpeedButton.
По onclick гружу в него иконку с выбранного файла opendialog.
Если просто создать несколько кнопок - сохраняет замечательно.
Но вот с картинками проблемы, не сохраняются.
Процедура OnClick:
Код:
sb: TsSpeedButton;
S:array[1..20] of string;
....
implementation
.....
procedure TForm1.SBOnClick(Sender: TObject);
var Icon: TIcon;
Pch: array[0..256] of Char;
Ici: Word;
begin
if S[(sender as TsSpeedButton).tag]='' then
begin
if sOpenDialog1.Execute then
begin
S[(sender as TsSpeedButton).tag]:=sOpenDialog1.FileName;
(sender as TsSpeedButton).Glyph:=nil;
Icon:=TIcon.Create;
StrPCopy(Pch,S[(sender as TsSpeedButton).tag]);
Icon.Handle:= ExtractAssociatedIcon(hInstance, Pch, Ici);
(sender as TsSpeedButton).Glyph.Width:= Icon.Width;
(sender as TsSpeedButton).Glyph.Height:= Icon.Height;
(sender as TsSpeedButton).Glyph.Canvas.Draw(0, 0, Icon);
Icon.Free;
end;
if S[(sender as TsSpeedButton).tag]='' then
begin
(sender as TsSpeedButton).Glyph:=nil;
end
else
end
else
begin
ShellExecute (Form1.Handle, nil, PChar(S[(sender as TsSpeedButton).tag]), nil, nil, SW_RESTORE);
end;
end;
Сам код работает именно так как мне надо. Проблема только с сохранением glyph`a динамически созданного TSpeedButton`a.
Второй день ломаю голову. Толкните в правильном направлении, пожалуйста.
Заранее спасибо!
З.Ы. Не стал создавать новую тему, так как кнопка создается "Динамически" и пытаюсь сохранить вашим способом.