|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#16
|
|||
|
|||
Здравствуйте еще раз 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; Второй день ломаю голову. Толкните в правильном направлении, пожалуйста. Заранее спасибо! З.Ы. Не стал создавать новую тему, так как кнопка создается "Динамически" и пытаюсь сохранить вашим способом. |
#17
|
||||
|
||||
И вам не хворать
Я делал в подобной ситуации примерно так - загонял глифы с кнопок в имиджлист а присвоение их для BitBtn Код:
with tbitbtn.Create(self) do begin parent:= ... ImageList1.GetBitmap({номер глифа в имиджлисте} 2, Glyph); OnClick:= ... // etc. end; вам главное понять - что бы не требовалось воткнуть и куда, оно должно быть записано заранее. И всё удастся Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Gareth (29.10.2014)
|