Delphi как изменить иконку формы

Delphi замена иконок в программах | программирование

От моих подписчиков мне на e-mail очень часто приходит следующий вопрос: Как заменить иконку в программе и иконку скомпилированного файла? Сейчас я хочу рассказать раз и навсегда как легко и быстро это сделать.

Для начала заменим иконку в программе (рис.1). Открываем Delphi. Создаем новый или открываем имеющийся проект, выбираем форму (Form) и в Инспекторе объектов (Object Inspector) находим строчку Icon. Жмем на кнопку с тремя точками и выбираем нужную иконку.

Замена иконки в программе delphi

Строчка Icon

Так с заменой иконки в программе разобрались теперь перейдем к замене иконки в скомпилированном файле (exe’шнике). В главном меню выбираем Project => Options или нажимаем комбинацию клавиш Shift+Ctrl+F11. В открывшимся окне переходим на вкладку Applicaton, давим на кнопку Load Icon и выбираем нужную иконку.

Delphi Замена иконки в exe'шнике

Легко и просто, не правда ли, остается только посоветовать вам отличную программу для создания красивых иконок, которой пользуюсь я сам: AWIcons

P.S. Вы можете перепечатывать данную статью при условии сохранения авторского блока и ссылки на http://delphiexpert.ru как на сайт — источник.

Похожие материалы

  • Ошибки которые отнимают у вас прибыль
  • Быстрый поиск исходников, Delphi статьи
  • Продавать свои программы ВОЗМОЖНО !
  • 5 шагов к успеху в информационном бизнесе
  • Дизайн ваших продающих сайтов

Последние из рубрики

  • Delphi. Работаем с файлами
  • Загрузка настроек программы из файла. Delphi
  • Как вставить красивую кнопку в программу

5683 / 2274 / 466

Регистрация: 20.11.2009

Сообщений: 7,655

Записей в блоге: 1

1

Изменение иконки программы

24.01.2011, 15:14. Показов 14646. Ответов 10


В общем задача такая не трудная, но я не знаю даже с чего и начать ее решать , мне понадобилось программно менять иконку на окне (маленький значок в верхнем левом углу любого окна)



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

24.01.2011, 15:14

Ответы с готовыми решениями:

Изменение иконки приложения
Здравствуйте , помогите поменять иконку и чтоб при запуске была другая иконка.

Изменение иконки у чужого exe
Возникла такая необходимость сменить иконку у exe файла, т.е. изменить ресурс, удалить старые…

Иконки для программы…
Помогите найти иконки для программы на автомобильную тему…. Может у кого есть? А то весь Рунет…

Иконки для программы
Помогите, пожалуйста, найти иконку для кнопки "отменить фильтр".
Думаю, это должна быть…

10

Mobile Software Engineer

Эксперт С++

5365 / 1584 / 956

Регистрация: 23.01.2011

Сообщений: 3,214

24.01.2011, 16:14

2

вам нужно сменить иконку на форме или же и ярлык программы тоже?



0



85 / 85 / 59

Регистрация: 14.05.2010

Сообщений: 223

24.01.2011, 16:25

3

вот я попробовал такой способ:
[delphi]
self.Icon.LoadFromFile(‘E:Icon1.ico’);
// второй способ для иконки из .exe
var I: TIcon;
begin
I := TIcon.Create;
i.Handle:=shellapi.ExtractIcon(self.Handle,’C:doc maker.exe’,0);
self.Icon:= i;



0



Mobile Software Engineer

Эксперт С++

5365 / 1584 / 956

Регистрация: 23.01.2011

Сообщений: 3,214

24.01.2011, 16:45

4

вот так вот сделайте:
в верхней панели — Project — Options — Application — Load icon



0



Mobile Software Engineer

Эксперт С++

5365 / 1584 / 956

Регистрация: 23.01.2011

Сообщений: 3,214

24.01.2011, 16:49

5

вот скрин…думаю понятно

Миниатюры

Изменение иконки программы
 



0



Фрилансер

452 / 433 / 117

Регистрация: 01.06.2010

Сообщений: 1,314

24.01.2011, 16:52

6

Ev[G]eN, ты мозг включи!!! Тс пишет

мне понадобилось программно менять иконку на окне

а ты ему скрины в DesignTime предлагаешь!!!



0



Mobile Software Engineer

Эксперт С++

5365 / 1584 / 956

Регистрация: 23.01.2011

Сообщений: 3,214

24.01.2011, 16:53

7

не внимательно про4ел…



0



Arcor

5683 / 2274 / 466

Регистрация: 20.11.2009

Сообщений: 7,655

Записей в блоге: 1

24.01.2011, 18:21

 [ТС]

8

Цитата
Сообщение от Ev[G]eN
Посмотреть сообщение

вот скрин…думаю понятно

Позновательно !!! Но мне во все не это нужно как вам уже написали

Добавлено через 8 минут
[QUOTE=Zaxelf;1313456]вот я попробовал такой способ:

Delphi
1
self.Icon.LoadFromFile('E:Icon1.ico');

Мне вот крит выдает постояно….

Добавлено через 7 минут
Понятно почему крит был, причина была в моем ico файле… видимо создана была неправильно, сейчас решилось все



0



85 / 85 / 59

Регистрация: 14.05.2010

Сообщений: 223

24.01.2011, 19:13

9

так я собственно, полагаю, что правильно понял Ваш вопрос, именно та самая иконка, в том самом углу и программно…



0



5683 / 2274 / 466

Регистрация: 20.11.2009

Сообщений: 7,655

Записей в блоге: 1

24.01.2011, 21:52

 [ТС]

10

Цитата
Сообщение от Zaxelf
Посмотреть сообщение

так я собственно, полагаю, что правильно понял Ваш вопрос, именно та самая иконка, в том самом углу и программно…

Дада все как нужно, только как еще поменять иконку когда она в трее находится(на нижней синей полоске у Windows XP)



0



Zaxelf

85 / 85 / 59

Регистрация: 14.05.2010

Сообщений: 223

24.01.2011, 22:02

11

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure trayiconn.show(traylabel : string);
 var
  n : TNotifyIconData ;
  h : thandle;
 begin
 with n do
  begin
   cbSize := SizeOf(TNotifyIconData);
   Wnd := H;
   uID := 1;
   uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
   hIcon := Application.Icon.Handle;
   StrPCopy(szTip,traylabel);
  end;
  Shell_NotifyIcon(NIM_ADD, @n);
  end;

//ну видимо перед использовванием этой процедуры надо заменить её в углу формы, я давно не использую иконку в трее, если работать не будет напиши в прошлом году, когда я этим пользовался — работало нормально



0



  Пришло время погрузиться в практическую часть и в этом уроке мы рассмотрим форму и ее основные свойства.
Как вы уже знаете, все свойства любого объекта в Delphi располагаются в Object Inspector.

Открываем Delphi, создаем новый проект и выделяем форму. Вкратце пробежимся по основным её свойствам.

Первое свойство, которое мы рассмотрим это свойство Align. Отвечает оно за позиционирование нашей формы на мониторе.
Открываем это свойство и видим несколько значений.

Align

  • alBottom — прилипание формы к низу экрана
  • alClient — растягивание формы на весь экран
  • alCustom — по умолчанию
  • alLeft — прилипание формы к левому краю экрана
  • alNone — без выравнивания
  • alRight — прилипание формы к правому краю экрана
  • alTop — прилипание формы к верху экрана

Следующие свойство AlphaBlend. Это свойство отвечает за прозрачность формы. Выставляем его значение True и ниже видим свойство AlphaBlendValue.
Оно может принимать значения от 1(полная прозрачность) до 255(полная не прозрачность). Выставляем значение 200 и видим прозрачную форму.

AlphaBlend

Выключаем прозрачность формы и двигаемся дальше.

Следующие свойство AutoScroll. Принимает значения Boolean. Я думаю по названию свойства понятно его назначение.
Если какой-либо компонент выходит за границы формы, то на форме автоматически появляется скролл.

Следующие свойство AutoSize, оно находит и подгоняет оптимальный размер формы.
Если мы сейчас выставим значение True и кинем на форму компонент Memo, то это свойство при компиляции уберет все пустые места на форме и как бы обтянет компонент Memo.
Из-за этого мы не сможем изменить размер формы.

AutoSize

Вернем свойству AutoSize значение False и продолжим рассматривать остальные свойства.

Свойство BorderIcons. В нём мы можем задать, какие кнопки мы будем видеть в шапке формы.
Сейчас у нас видны кнопки «свернуть», «развернуть» и «закрыть».
Если мы всем этим кнопкам выставим значение False, то шапка формы будет совершенно пустая.

BorderIcons
BorderIcons

Возвращаем все значения обратно и переходим к следующему свойству.

Свойство BorderStyle, оно отвечает за стиль границ нашей формы. Вы можете сами поэкспериментировать с различными значениями.
Хотелось бы только выделить значение bsNone, то есть после компиляции наша форма совсем не будет иметь границ, это позволяет разрабатывать свои дизайны и скины для формы.

Далее рассматриваем свойство Caption. Оно есть практически у каждого компонента. Сейчас оно имеет значение Form1, давайте изменим его на Программа и мы видим, что заголовок нашей формы поменялся.

Свойство Color отвечает за цвет формы. Очень простое свойство и я думаю вам будет полезнее поэкспериментировать самим.

Свойство Cursor отвечает за то, какой будет курсор при наведении на форму. Выставим значение crHourGlass и скомпилируем программу.
Мы видим, что появляется как бы ложный курсор, обозначающий зависание программы.

Вы наверняка видели в различных программах всплывающие подсказки, которые появляются при задержки курсора на каком-нибудь компоненте.
Свойство Hint как раз отвечает за текст этой подсказки. Напишем Форма и скомпилируем программу. Задерживаем курсор на форме и ничего у нас не всплывает :).
А всё потому, что мы не включили отображение этой подсказки. Включить его можно в свойстве ShowHint, выставив значение True.
Если сейчас скомпилировать и задержать курсор на форме, то мы увидим подсказку.

Далее свойство Icon, оно отвечает за иконку в левом верхнем углу формы. Выделяем свойство Icon, нажимаем на кнопку с тремя точками и у нас открывается окно загрузки иконки.

Icon

Нажимаем на кнопку Load… и выбираем картинку с расширением .ico. Иконки от Delphi лежат в папке C:Program Files (x86)Common FilesBorland SharedImagesIcons.
После того, как выбрали иконку, нажимаем кнопку

и после компиляции видим, что значок программы изменился.
Icon

В свойстве Left задается расстояние в пикселях от левого края экрана до левого края формы.

В свойстве Name пишется имя формы, по которому мы будем обращаться в окне редактора кода.

Свойство Position отвечает за позицию формы после компиляции. Поэкспериментируйте со значениями.

Далее свойство Top, оно аналогично свойству Left, только отсчет пикселей идет от верхнего края экрана и до верхнего края формы.

Свойства Width и Height отвечают за ширину и высоту формы в пикселях.

Свойство Enabled отвечает за активность. Давайте сейчас кинем на форму компонент Button и изменим у него свойство Enabled, выставив значение False.
Компилируем программу и видим, что наша кнопка не активна и на нее нельзя нажать.

Enabled

Ну и последнее свойство, которое мы разберем в этом уроке, свойство Visible. Это свойство отвечает за видимость компонента.
Измените это свойство у кнопки, выставив значение False и скомпилируйте программу, кнопки вы не найдете.

На последок хочу отметить, что большинство свойств у компонентов одинаковое. В этом уроке я рассказал не про все свойства, а только самые основные.
В дальнейших уроках, если мы будем сталкиваться с новым свойством, то я обязательно про него расскажу.

Ну вот и всё! Удачи!
Встретимся в следующем уроке!

Изменять иконку приложения или окна во время его работы


А мне постоянно хочется передвинуть иконки телеканалов подалье в игол, чтобы не мешались :))) а иногда floating для них выключить.

Изменять иконку приложения или окна достаточно просто — для этого у TApplication и TForm предусмотрено свойство Icon. Смена иконки может вестись обычным присвоением свойству Icon нового значения:

Form1.Icon := Image1.Picture.Icon;

При этом происходит не присвоение указателя (как казалось бы), а копирование данных посредством вызова Assign, который производится в методе TForm.SetIcon

Загрузка иконки из ресурса

Загрузка производится типовым вызовом API:

Form1.Icon.Handle := LoadIcon(hInstance, 'имя иконки в ресурсе');

Причем имя в ресурсе желательно писать всегда в верхнем регистре

Все сказанное выше пригодно и для приложения, только в этом случае вместо Form1 выступает Application. Для принудительной перерисовки кнопки приложения в панеле задач можно применить вызов

InvalidateRect(Application.Handle, nil, True);

Пример организации простейшей анимации иконки приложения

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  inc(IconIndex);
  case IconIndex of
    1 : Application.Icon.Assign(Image1.Picture.Icon);
    2 : Application.Icon.Assign(Image2.Picture.Icon);
    else IconIndex := 0;
  end;
  InvalidateRect(Application.Handle, nil, True);
end;

При этом естественно предполагается, что в Image1 и Image2 загружены иконки.

How do I change the program icon for a Delphi console application?

The application settings is greyed in a console application.

Bye.

asked Oct 26, 2009 at 21:48

RRUZ's user avatar

According to a July 2007 blog article by Nibu Thomas, there seems to be a SetConsoleIcon WinAPI function.

Alternatively just put the icon in a resource file. Windows should use the first icon it encounters in the application’s resources as the application icon.

TLama's user avatar

TLama

74.5k17 gold badges208 silver badges380 bronze badges

answered Oct 26, 2009 at 21:55

jpfollenius's user avatar

jpfolleniusjpfollenius

16.3k10 gold badges90 silver badges156 bronze badges

0

If the option to change the icon is disabled, then it is because you have deleted or neglected to add the following line from your DPR file:

{$R *.res}

Put it back, or add it if you never had it. The icon setting will be re-enabled, as will the version-information settings. If the resource file does not exist, then the IDE will create it for you. Do not edit that resource file (such as to add your own icons or other resources); it is for the IDE’s use only.

answered Oct 26, 2009 at 22:33

Rob Kennedy's user avatar

Rob KennedyRob Kennedy

161k21 gold badges276 silver badges463 bronze badges

3

if you add

application.Run; 

somewhere in your dpr file you can use the project->options to change the icon.
After you have changed the icon just remove «application.Run;» again and you can compile/build with new icon.

answered Jan 25, 2010 at 14:09

Ulrik's user avatar

UlrikUlrik

1111 silver badge2 bronze badges

4

Simply change the Icon in your apps resource file (say your app project is called ConsoleApp.dpr, your app resource file will be ConsoleApp.res)

The main icon resource in there is intuatively called MAINICON, just replace it.

Here is a step by step for C++ Builder (the steps are basically the same in Delphi)

answered Oct 26, 2009 at 22:03

Tim Jarvis's user avatar

Tim JarvisTim Jarvis

18.2k9 gold badges54 silver badges91 bronze badges

  1. add {$R *.res} in your DPR file
  2. comment {$APPTYPE CONSOLE} line in your DPR file
  3. edit Project -> Options -> Application -> Icon
  4. uncomment {$APPTYPE CONSOLE} line in your DPR file

Tested with Delphi XE

answered Jul 17, 2013 at 13:47

Stéphane B.'s user avatar

Stéphane B.Stéphane B.

3,2002 gold badges28 silver badges35 bronze badges

How do I change the program icon for a Delphi console application?

The application settings is greyed in a console application.

Bye.

asked Oct 26, 2009 at 21:48

RRUZ's user avatar

According to a July 2007 blog article by Nibu Thomas, there seems to be a SetConsoleIcon WinAPI function.

Alternatively just put the icon in a resource file. Windows should use the first icon it encounters in the application’s resources as the application icon.

TLama's user avatar

TLama

74.5k17 gold badges208 silver badges380 bronze badges

answered Oct 26, 2009 at 21:55

jpfollenius's user avatar

jpfolleniusjpfollenius

16.3k10 gold badges90 silver badges156 bronze badges

0

If the option to change the icon is disabled, then it is because you have deleted or neglected to add the following line from your DPR file:

{$R *.res}

Put it back, or add it if you never had it. The icon setting will be re-enabled, as will the version-information settings. If the resource file does not exist, then the IDE will create it for you. Do not edit that resource file (such as to add your own icons or other resources); it is for the IDE’s use only.

answered Oct 26, 2009 at 22:33

Rob Kennedy's user avatar

Rob KennedyRob Kennedy

161k21 gold badges276 silver badges463 bronze badges

3

if you add

application.Run; 

somewhere in your dpr file you can use the project->options to change the icon.
After you have changed the icon just remove «application.Run;» again and you can compile/build with new icon.

answered Jan 25, 2010 at 14:09

Ulrik's user avatar

UlrikUlrik

1111 silver badge2 bronze badges

4

Simply change the Icon in your apps resource file (say your app project is called ConsoleApp.dpr, your app resource file will be ConsoleApp.res)

The main icon resource in there is intuatively called MAINICON, just replace it.

Here is a step by step for C++ Builder (the steps are basically the same in Delphi)

answered Oct 26, 2009 at 22:03

Tim Jarvis's user avatar

Tim JarvisTim Jarvis

18.2k9 gold badges54 silver badges91 bronze badges

  1. add {$R *.res} in your DPR file
  2. comment {$APPTYPE CONSOLE} line in your DPR file
  3. edit Project -> Options -> Application -> Icon
  4. uncomment {$APPTYPE CONSOLE} line in your DPR file

Tested with Delphi XE

answered Jul 17, 2013 at 13:47

Stéphane B.'s user avatar

Stéphane B.Stéphane B.

3,2002 gold badges28 silver badges35 bronze badges

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Delphi unknown error during init delphi
  • Delphi try except error
  • Delphi thread error неверный дескриптор 6
  • Delphi socket error 11004
  • Delphi socket error 11001

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии