Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.08.2013, 19:10   #1
LomoCoder
Пользователь
 
Регистрация: 27.07.2013
Сообщений: 47
По умолчанию XPManifest run-time

Здравствуйте! Мне нужно создать компонент TXPManifest на форме зделаной в рантайме. Пробывал так:
Код:
uses Controls, StdCtrls, Forms, Dialogs, Windows, Graphics, ExtCtrls,
     XPMan;
type
  TForm1 = class(TForm)
  Button1:TButton;
    XPManifest1: TXPManifest;
  private
  public
    constructor Create;
  end;
constructor TForm1.Create;
begin
  inherited Create(nil);
  Caption := 'TMForm1';
  Width := 298;
  Height := 256;
  Color := -16777201;

  XPManifest1 := TXPManifest.Create(Self);
  XPManifest1.Active := true;

  Button1 := TButton.Create(Self);
  With Button1 do begin
    Left := 100;
    Top := 114;
    Width := 75;
    Height := 25;
    Caption := 'Button1';
    TabOrder := 0;
   Parent := Self;
  end;
 end;
var
   F:TForm1;
begin
   F := TForm.Create;
   try
     F.ShowModal;
   finally
     F.Free;
 end;
end.
Но что-то стиль не меняется остается классический, подскажите пожалуйста как правильно его создавать, что-то не могу допетрить)
LomoCoder вне форума Ответить с цитированием
Старый 05.08.2013, 19:27   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Никак. XPManifest - всего-лишь подключает ресурс в exe.
Создание в run-time бесполезно. Для применения ресурса нужен перезапуск exe.

как вариант:
Рядом с exe создайте файл <имя exe>.manifest запихайте туда содержимое XPManifest'а, и перезапустите exe.
Человек_Борща вне форума Ответить с цитированием
Старый 05.08.2013, 19:47   #3
LomoCoder
Пользователь
 
Регистрация: 27.07.2013
Сообщений: 47
По умолчанию

Дак это придется все время таскать манифест с ехесшником?
LomoCoder вне форума Ответить с цитированием
Старый 05.08.2013, 20:10   #4
LomoCoder
Пользователь
 
Регистрация: 27.07.2013
Сообщений: 47
По умолчанию

А ведь в RAD Studio стиль форм под виндовс автоматически идет, можно так же сделать на Delphi 7?
LomoCoder вне форума Ответить с цитированием
Старый 05.08.2013, 20:11   #5
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,799
По умолчанию

Вообще довольно странно, что манифест в Delphi реализовали в виде компонента, а не опции компоновщика или хотя бы директивы компилятора. Чтобы лучше понять его логику, представь, что компонент манифеста является заменой несуществующей опции компилятора {$APPTYPE XPMANIFEST}.
Vapaamies вне форума Ответить с цитированием
Старый 05.08.2013, 20:23   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Цитата:
Дак это придется все время таскать манифест с ехесшником?
Зачем?
Если в программе нет компонента XPMonifest но иногда хочется "Включить скин", то создается рядом с exe, файл с расширением .manifest и при запуске exe, система находит его и применяет содержимое файла к exe. Чтобы выключить скин, нужно удалить манифест. И перезапустить exe, чтобы применить изменения.

Если XPManifest есть в программе, как компонент на форме, то вкл/выкл не прокатит. Манифест линкуется в exe при компиляции и остаётся там до второго пришествия.

Манифест нельзя применить к какой-то форме, он применяется ко всему приложению в целом.

Vapaamies, согласен, но манифест это лишний вес, зачем его линковать, когда оно не надо? Захочет скин, найдет и положит на форму.

Последний раз редактировалось Человек_Борща; 05.08.2013 в 20:25.
Человек_Борща вне форума Ответить с цитированием
Старый 05.08.2013, 20:33   #7
LomoCoder
Пользователь
 
Регистрация: 27.07.2013
Сообщений: 47
По умолчанию

А понял, но мне это не подойдет т.к. у меня свой компилятор
LomoCoder вне форума Ответить с цитированием
Старый 05.08.2013, 20:50   #8
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,799
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Vapaamies, согласен, но манифест это лишний вес, зачем его линковать, когда оно не надо?
Имел в виду, что в новых версиях Delphi манифесты наконец-то переехали на свое законное место -- в свойства проекта.
Vapaamies вне форума Ответить с цитированием
Старый 05.08.2013, 21:16   #9
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Vapaamies, вас удивит что компонент так же остался?
Человек_Борща вне форума Ответить с цитированием
Старый 06.08.2013, 21:30   #10
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,799
По умолчанию

Человек_Борща, не изучал, но он наверняка оставлен только для обратной совместимости, а в новых проектах достаточно лишь поставить галку для поддержки тем.
Vapaamies вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Компонент работает в run-time, но не работает в design-time hon Компоненты Delphi 3 20.02.2013 20:17
Run-Time Check Failure#3 Ruko! Помощь студентам 5 23.09.2012 15:43
Access Run Time vlkr Microsoft Office Access 3 13.06.2012 16:29
Run-time error 13 olimpus Microsoft Office Excel 11 25.12.2010 22:49
Заполнение cxLookupComboBox в run time fake2 БД в Delphi 0 17.05.2010 08:31