На главную Наши проекты:
Журнал   ·   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_
  
> showmessage на заднем плане из за формы по верх всех окон , как исправить?
    showmessage на заднем плане из за формы по верх всех окон
    как исправить?

    Добавлено
    заменил на MessageBox с указанием handle Окна родителя. все норм стало. закрыто
      Можно что-то типа такого:
      ExpandedWrap disabled
        procedure MyShowMessage(const Msg: string);
        begin
          with CreateMessageDialog(Msg, mtCustom, [mbOK]) do
            try
              HelpContext := 0;
              HelpFile := '';
              FormStyle := fsStayOnTop;
              Position := poScreenCenter;
              ShowModal;
            finally
              Free;
            end;
        end;
        Filka, жалко нет функции CreateOpenDialog :-?
        у меня сейчас такая же проблема только с вызовом OpenDialog1.Execute, на задний фон уходит тоже.
        может подскажешь что нибудь?
          Цитата Emmys @
          жалко нет функции CreateOpenDialog

          GetOpenFileName
            Emmys
            ExpandedWrap disabled
              procedure TForm1.Button1Click(Sender: TObject);
              var
                P: PHandle;
                H: THandle;
              begin
                P := @Application.Handle;
                H := P^;
                P^ := FindWindow('Shell_TrayWnd', nil);
                try
                  OpenDialog1.Execute;
                finally
                  P^ := H;
                end;
              end;
            Но лучше так не делать :)
              Filka, ПОМОГЛО но я не понял в чем суть куда... при чем тут Shell_TrayWnd
              и почему так лучше не делать
                Цитата Emmys @
                суть куда...
                TOpenDialog - обёртка над функцией GetOpenFileName. В неё передаётся структура OPENFILENAME. У неё есть поле hwndOwner (A handle to the window that owns the dialog box.)
                При вызове метода Execute:
                ExpandedWrap disabled
                  hWndOwner := Application.Handle;

                Цитата Emmys @
                при чем тут Shell_TrayWnd
                Чтобы OpenDialog появлялся поверх других окон, нужно сделать, чтобы hWndOwner = HWND окна, которое имеет стиль WS_EX_TOPMOST.
                Панель задач - окно, которое есть всегда (практически) и оно поверх других окон...

                Цитата Emmys @
                почему так лучше не делать
                Т.к. изменяется Application.Handle... Можно, если осторожно :)
                  Emmys
                  Ещё можно так:
                  ExpandedWrap disabled
                    procedure TForm1.OpenDialog1Show(Sender: TObject);
                    begin
                      SetWindowPos(GetParent(OpenDialog1.Handle), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);
                    end;
                  1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                  0 пользователей:


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