На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Panel , не устанавливается цвет панели
    проблема:

    ложу на форму панель, устанавливаю цвет, например черный
    запускаю - все ок
    тепер ложу на форму манифест
    запускаю - цвет панели = цвет формы
    причем в run-time цвет панели не меняется
    (ParentColor=False)

    глюк? или так должно быть?
    как победить?
      Цитата Scorpy @
      глюк? или так должно быть?

      Так и должно быть.

      Цитата Scorpy @
      как победить?

      Победить -довольно муторно. ИМХО, лучше кинуть на панельку какой-нибудь TShape и не мучаться (в аттаче картинка - это без манифеста, с манифестом цветной будет только верхняя панель).
      Сообщение отредактировано: Krid -

      Прикреплённый файлПрикреплённый файлp1.JPG (13.04 Кбайт, скачиваний: 369)
        хм... ну раз без напильника никак... :(
        спасибо
          Где-то на форуме, вроде была статья про XP Themes. И на rsdn, кажется что-то видел. А вообще, повторюсь, - дело муторное (особенно с такими custom'ными компонентами, как Panel). Проще, по-моему вот так... ;)
            А что мешает сделать наследничка от панели, где запретить темы?
              Цитата s-mike @
              запретить темы?

              как?
                Цитата Scorpy @
                как?

                Очень просто ;) :
                ExpandedWrap disabled
                  unit Unit1;
                   
                  interface
                   
                  uses
                    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
                    Dialogs, ExtCtrls, XPMan;
                   
                  type
                    TForm1 = class(TForm)
                      Panel1: TPanel;
                      XPManifest: TXPManifest;
                      procedure FormCreate(Sender: TObject);
                    end;
                   
                  var
                    Form1: TForm1;
                   
                  implementation
                   
                  {$R *.dfm}
                   
                  uses
                    Themes;
                   
                  type
                    TMyPanel = class(TPanel)
                    public
                      constructor Create(AOwner: TComponent); override;
                    end;
                   
                  { TMyPanel }
                   
                  constructor TMyPanel.Create(AOwner: TComponent);
                  begin
                    inherited Create(AOwner);
                   
                    if ThemeServices.ThemesEnabled then
                      ControlStyle := ControlStyle - [csParentBackground] + [csOpaque];
                  end;
                   
                  procedure TForm1.FormCreate(Sender: TObject);
                  var
                    R: TRect;
                  begin
                    with TMyPanel.Create(Self) do
                    begin
                      Parent := Self;
                      Color := clGreen;
                      R := Panel1.BoundsRect;
                      R.Left := R.Left + 300;
                      R.Right := R.Right + 300;
                      BoundsRect := R;
                    end;
                  end;
                   
                  end.
                  сеньк
                  если так, то и компонент писать не надо :)
                    Цитата Scorpy @
                    если так, то и компонент писать не надо :)

                    Дык компонентом удобнее, не надо писать каждый раз. :rolleyes:
                      s-mike, запретить-то можно конечно (и для отдельного окна, если их в проге несколько, к примеру), только вот Scorpy хотел, чтоб совсем "без напильника" :)
                        Цитата Krid @
                        s-mike, запретить-то можно конечно (и для отдельного окна, если их в проге несколько, к примеру), только вот Scorpy хотел, чтоб совсем "без напильника" :)

                        Да какой это напильник? Так, мелкое усовершенствование, его даже в имеющихся программах легко внедрить, поменять только названия классов панелей.
                          Кста, раз пошел "базар в тему" :) Можно, например такие чтуки чудить (в аттаче). Да, темы должны быть включены и манифест лежать на форме. Вот код

                          ExpandedWrap disabled
                            unit Unit1;
                             
                            interface
                             
                            uses
                              Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
                              Dialogs, ExtCtrls, StdCtrls, ComCtrls, XPMan;
                             
                             
                            type
                              TForm1 = class(TForm)
                                Button1: TButton;
                                Button2: TButton;
                                Button3: TButton;
                                Button4: TButton;
                                Button5: TButton;
                                XPManifest1: TXPManifest;
                                procedure FormCreate(Sender: TObject);
                              private
                                procedure Unload2Themes(var M:TMSG); message WM_USER+1;
                              public
                                { Public declarations }
                              end;
                             
                            var
                              Form1: TForm1;
                             
                            implementation
                             
                            {$R *.dfm}
                             
                            function SetWindowTheme(hwnd: HWND; pszSubAppName: LPCWSTR;
                                                    pszSubIdList: LPCWSTR): HRESULT; stdcall;  external 'uxtheme.dll';
                             
                             
                            procedure TForm1.Unload2Themes(var M: TMSG);
                            begin
                              SetWindowTheme(Button4.Handle, ' ', ' ');
                              SetWindowTheme(Button5.Handle, ' ', ' ');
                              SetWindowTheme(Form1.Handle, ' ', ' ');
                            end;
                             
                            procedure TForm1.FormCreate(Sender: TObject);
                            begin
                             PostMessage(Handle,WM_USER+1,0,0)
                            end;
                             
                            end.

                          ЗЫ работает только с виндовыми контролами.
                          Прикреплённый файлПрикреплённый файлt.jpg (8.8 Кбайт, скачиваний: 336)
                            Krid, тоже любопытно, спасибо.
                            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                            0 пользователей:


                            Рейтинг@Mail.ru
                            [ Script execution time: 0,0411 ]   [ 16 queries used ]   [ Generated: 28.04.24, 15:28 GMT ]