Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Иконка из DLL в форму


Автор: Rodman 29.5.2008, 13:57
Дароф

Как добавить иконку в заголовок динамически созданной формы? С учетом того, что форма создается в DLL, и иконку хранить нужно тоже в DLL. И как в DLL запихнуть иконку?

Сенкс

Автор: Alexeis 29.5.2008, 14:04
Rodman, у формы есть замечательно свойство Icon, думаю оно вполне подойдет  smile

Добавлено через 31 секунду
Цитата(Rodman @  29.5.2008,  12:57 Найти цитируемый пост)
хранить нужно тоже в DLL. И как в DLL запихнуть иконку?

Dll может иметь свои ресурсы!

Автор: Rodman 29.5.2008, 14:37
Код

var
fSelCom     : TForm;

..................

Application.CreateForm(TForm, fSelCom);
  with fSelCom do
    begin
      visible:=false;
      width:=300;
      height:=300;
      caption:='четотам';
      borderStyle:=bsSingle;
      position:=poDesktopCenter;
      BorderIcons:=BorderIcons - [biMaximize] - [biMinimize];
..........
    end;

а вот что сделать дальше, чтобы не путь к иконке хранился, а сама иконка в dll'ке?

Автор: THandle 29.5.2008, 14:39
Rodman, пример в аттаче.

Добавлено через 1 минуту и 38 секунд
Если надо, то опишу процесс действий smile 

Автор: Alexeis 29.5.2008, 14:41
Код

{$R Icon.res}


Создать ресурс с иконкой в каком нить ресхакере или руками при помощи Brcc32.exe

Создание ресурсов это избитый вопрос, так что погугли по форуму.

Автор: THandle 29.5.2008, 15:02
Rodman, опишу как это делалось:

Создаешь обычное вин32 приложение, на форму бросаешь кнопку, в обработчике OnClick:

Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  LoadLibrary('Project2.dll');
end;


Компилируешь и закрываешь этот проект.

Создаешь новый проект - DLL.
Создаешь форму. Назsвыешь как хочешь(у меня Form2).
Бросаешь на форму кнопку(это просто пример).
В обработчике пишешь:

Код

procedure TForm2.Button1Click(Sender: TObject);
begin
  Form2.Icon.Handle := LoadIcon(HInstance, 'Icon1');
end;


То есть загружаешь иконку.

Дальше в коде самой библиотеки пишешь:

Код

begin
  Form2 := TForm2.Create(nil);
  Form2.ShowModal;
  Form2.Free;
end.





Дальше создаешь саму иконку в любом редакторе и сохраняешь в папку с проектом например под названием Icon1.ico.

Дальше создаешь текстовый файл, в нем пишешь:
Цитата


ICON1 ICON Icon1.ico


Сохраняешь как Res.rc

Дальше вызываешь командную строку.
В ней пишешь:

Цитата

Brcc32 project_path\Res.rc


Где project_path путь к проекту.


В проекте библиотеки пишешь:

Код

{$R res.res}


Компилируешь библиотеку. Запускаешь приложение. Жмешь кнопки. Смотришь на иконку формы в длл. Должна измениться.

Автор: Rodman 29.5.2008, 20:34
Сенкс

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)