Ошибка cannot change visible in onshow or onhide

I have a very strange problem with the Delphi 2006 IDE.

If the IDE is minimized, and the PC is locked. I return to the pc, unlock it and maximize the IDE, I sometimes get the error «Cannot change Visible in OnShow or OnHide».

If this happens, I have to kill the IDE with the taskmanager.

Is there anybody out there who has the same problem? And if possible a solution?

I suspect that some third party components are involved, but my coworkers never experience this error.

Jim McKeeth's user avatar

Jim McKeeth

38.2k23 gold badges119 silver badges193 bronze badges

asked Oct 2, 2008 at 7:19

Toon Krijthe's user avatar

Toon KrijtheToon Krijthe

52.8k38 gold badges145 silver badges202 bronze badges

0

Yes I have noticed the same problem when using Terminal Servers. I use GExperts. If you can reproduce the problem you should report it on http://qc.codegear.com/

answered Oct 2, 2008 at 10:46

Lars Truijens's user avatar

Lars TruijensLars Truijens

42.7k6 gold badges124 silver badges141 bronze badges

4

Is this connected to a specific form / forms that you have open at the moment?

If not, then it’s probably not a 3rd party component that causes problems, but an expert you have added to the Delphi. Try disabling all experts. If that solves the problem, add them back one by one.

answered Oct 2, 2008 at 7:47

gabr's user avatar

1

Other way with no need to kill IDE in Taskmanager is to display Taskbar settings and turn off «show above other windows». Use this setting, click OK on IDE err. msg and then set it back. With some practice it could be usefull by time…

Btw: colleague’s IDE layout setting is «classic undocked» and he never had this problem.

But something like bugfix is still missing :/
(WinXP, TurboDelphi 2006)

answered Jan 27, 2009 at 8:34

Update:
This question escalated to a new/related question which was fortunately solved by @RemyLebeau here.

So, instead of reading below, you should go directly to Major flaw — Radio buttons are not correctly set while the form is invisible

Thanks Remy


I have two form. When I click a radiobtn, I want to hide one form and show the second one.

Hide Form1 and show Form2:

procedure TForm1.RadioButton2Click(Sender: TObject);
begin
 Form2.Visible:= TRUE;
 Form1.Visible:= FALSE;
end;

In Form2 I press a button to ‘return’ to Form1:

procedure TForm2.Button1Click(Sender: TObject);
begin
 Form1.RadioButton1.Checked:= TRUE;
 Form1.Visible:= TRUE;  <--- this will 'magically' put the RadioButton1 back to false
end;

However, I get this error when I try to make Form1 visible:

Project Tester.exe raised exception class EInvalidOperation with
message ‘Cannot change Visible in OnShow or OnHide’

Putting a breakpoint in RadioButton2Click I find out that RadioButton1 was magically rechecked during Form1.Visible:= TRUE (during TCustomForm.SetVisible more exactly).

Why is the RadioButton2 ‘magically’ checked during SetVisible?


unit Unit1;

INTERFACE

USES
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus, System.Actions, Vcl.ActnList, Vcl.StdCtrls;

TYPE
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    procedure RadioButton2Click(Sender: TObject);
    procedure RadioButton1Click(Sender: TObject);
  private
  public
  end;

VAR
  Form1: TForm1;

IMPLEMENTATION {$R *.dfm}

USES Unit2;



procedure TForm1.RadioButton1Click(Sender: TObject);
begin
 Caption:= '1';
end;

procedure TForm1.RadioButton2Click(Sender: TObject);
begin
 Caption:= '2';
 Form2.Visible:= TRUE;
 Form1.Visible:= FALSE;
end;

end.

unit Unit2;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm2 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
  public
  end;

VAR
  Form2: TForm2;

IMPLEMENTATION {$R *.dfm}
USES Unit1;


procedure TForm2.Button1Click(Sender: TObject);
begin
 Form1.RadioButton1.Checked:= TRUE;
 Form1.Visible:= TRUE;
end;

end.

shade_

1 / 1 / 0

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

Сообщений: 52

1

13.06.2015, 16:01. Показов 8975. Ответов 13

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Пишу клавиатурный тренажёр, всё работает, но есть одна проблема, есть RadioGroup, в нём пользователь выбирает ввод символов, либо ввод текста, потом открывается другая форма, где собственно и будет вводится текст, всё работает и открывается, я обнуляю ItemIndex, для того что бы пользователь мог вернуться из формы с тренажёром к выбору задания, но выбивает ошибку Cannot change visible OnShow or OnHide,подскажите что я не правильно делаю?

Ошибка Cannot change visible onshow or onhide

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm4.sRadioGroup2Click(Sender: TObject);
begin
if sRadioGroup2.ItemIndex = 0 then
   begin
   Form3.Show;
   Form4.Hide;
   sRadioGroup2.ItemIndex:=-1
   end;
 
   if sRadioGroup2.ItemIndex = 1 then
   begin
   Form7.Show;
   Form4.Hide;
   sRadioGroup2.ItemIndex:=-1
   end;
end;



0



251 / 162 / 24

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

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

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

13.06.2015, 17:11

2

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

OnShow or OnHide

код покажи

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

sRadioGroup2.ItemIndex:=-1

можно над

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

Form7.Show;
* *Form4.Hide;

поставить.



1



1 / 1 / 0

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

Сообщений: 52

13.06.2015, 17:56

 [ТС]

3

planetoxod,

код формы которая открываться должна? или код это формы?
что поставить?

Form7.Show;
* *Form4.Hide;

идёт же и так вроде до обнуления RadioGroup.



0



251 / 162 / 24

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

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

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

13.06.2015, 18:53

4

Стоп строку поставь , где обнуляется, и F8 нажимай до ошибки, какая строка с ошибкой?



0



shade_

1 / 1 / 0

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

Сообщений: 52

13.06.2015, 22:26

 [ТС]

5

planetoxod, ошибку не выдаёт, в том то и дело,что Form7 открывается, на форме все компоненты работают, а ошибка вылетает когда я опять хочу вернуться к Form4.
Вот такой код прописан на Form7, я просто не могу понять эту ошибку

Delphi
1
2
3
4
5
procedure TForm7.N4Click(Sender: TObject);
begin
Form7.Hide;
Form4.Show;
end;

если убираю

Delphi
1
sRadioGroup2.ItemIndex:=-1

то всё работает без проблем, почему ошибку выбивает когда я обнуляю RaioGroup я понять не могу.



0



Пишу на Delphi…иногда

1423 / 1278 / 286

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

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

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

13.06.2015, 22:31

6

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

когда я обнуляю RaioGroup

обработчик OnClick у радиогруппы описан?

Добавлено через 52 секунды
Setting TRadioButton to checked causes OnClick event



0



251 / 162 / 24

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

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

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

13.06.2015, 23:05

7

Я же прошу показать часть кода , где в строке происходит ошибка.

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

1
sRadioGroup2.ItemIndex:=-1

поставь стоп строку



1



shade_

1 / 1 / 0

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

Сообщений: 52

13.06.2015, 23:17

 [ТС]

8

planetoxod, просто выводит сообщение, в строках ничего не показывает, как стоп строку ставить?
cotseec, ну да, всё описано, вот весь код формы

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
unit Unit4;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, sGroupBox, sSkinProvider, sSkinManager,
  Menus;
 
type
  TForm4 = class(TForm)
    sRadioGroup1: TsRadioGroup;
    sRadioGroup2: TsRadioGroup;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    sSkinProvider1: TsSkinProvider;
    procedure sRadioGroup1Click(Sender: TObject);
    procedure sRadioGroup2Click(Sender: TObject);
 
 
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form4: TForm4;
 
implementation
 
uses Unit5, Unit6, Unit3, Unit7, Unit13;
 
{$R *.dfm}
 
 
procedure TForm4.sRadioGroup1Click(Sender: TObject);
begin
if sRadioGroup1.ItemIndex = 0 then
  sRadioGroup2.Visible:=True else
   sRadioGroup2.Visible:=False;
   if sRadioGroup1.ItemIndex = 1 then
   begin
    Form13.Show;
    Form4.Visible:=False;
    end;
end;
 
procedure TForm4.sRadioGroup2Click(Sender: TObject);
begin
if sRadioGroup2.ItemIndex = 0 then
   begin
   Form3.Show;
   Form4.Hide;
      sRadioGroup2.ItemIndex:=-1
   end;
 
   if sRadioGroup2.ItemIndex = 1 then
   begin
   Form7.Show;
   Form4.Hide;
      sRadioGroup2.ItemIndex:=-1
   end;
end;
 
end.

всё описано, по идее должно работать, но блин не работает



0



251 / 162 / 24

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

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

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

13.06.2015, 23:25

9

Сделай так

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

procedure TForm4.sRadioGroup2Click(Sender: TObject);
begin
if sRadioGroup2.ItemIndex = 0 then
* *begin
* *Form3.Show;
sRadioGroup2.ItemIndex:=-1
* *Form4.Hide;
* * *
* *end;
if sRadioGroup2.ItemIndex = 1 then
* *begin
* *Form7.Show;
sRadioGroup2.ItemIndex:=-1
* *Form4.Hide;
* * *
* *end;
end;



1



1 / 1 / 0

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

Сообщений: 52

14.06.2015, 00:08

 [ТС]

10

planetoxod, а зачем звёчдочки?, со звёчдочками компилятор ругается, без них та же ошибка



0



пофигист широкого профиля

4662 / 3096 / 850

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

Сообщений: 17,851

14.06.2015, 00:26

11

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

а зачем звёчдочки?

Нет там никаких звездочек. Это глюк «цитатора». Заменяй их на пробелы.



1



1 / 1 / 0

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

Сообщений: 52

14.06.2015, 09:06

 [ТС]

12

northener, я так и сделал, всё равно такая же ошибка



0



Пишу на Delphi…иногда

1423 / 1278 / 286

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

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

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

14.06.2015, 12:20

13

Лучший ответ Сообщение было отмечено shade_ как решение

Решение

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

по идее должно работать, но блин не работает

вот именно, что по идее, что происходит на самом деле: скрываем форму, меняем значение визуального объекта, которое вызывает обработчик OnClick (ссылка в моем сообщении, там же вариант, как бороться с этим), в котором производится попытка отрисовать изменения, а отрисовывать не на чем — форма невидима, по сему — или сначала «сбрасывать значение», затем скрывать форму или сделать так, как написано по ссылке в #6

а еще лучше пересмотреть алгоритм работы программы



1



1 / 1 / 0

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

Сообщений: 52

14.06.2015, 16:44

 [ТС]

14

cotseec, спасибо за разъснение ошикби, всё заработало



0



Ошибка после обновления с 7.0 на 7.1 Cannot change Visible in OnShow or OnHide

Аватара пользователя


Tim

Чт окт 18, 2018 5:39 pm

Чт окт 18, 2018 5:39 pm

#31909 

На части клиентских машин после обновления с версии 7.0 на 7.1 при запуске программы вылетает ошибка «Cannot change Visible in OnShow or OnHide»
на 70% клиентов всё ок

Сответственно чат не стартует и выдаёт сообщения пока не завершишь процесс в диспетчере задач.
Старые Win 7 и свежие Win 10 со всеми апдейтами — закономерности сходу найти не удалось

скрины и логи отправил на почту

Вложения

chat2.jpg

Под Администратором
chat2.jpg (76.78 КБ) Просмотров: 4040


chat1.jpg

Права пользователя
chat1.jpg (36.72 КБ) Просмотров: 4040

Здравствуйте.

Попробуйте заменить mcclient.exe на проблемных местах. Ссылку на закачку я выслал вам почтой.

Team lead
Чат со мной

Аватара пользователя

Tim

Пт окт 19, 2018 2:20 pm

Пт окт 19, 2018 2:20 pm

#31915 

Файл заменили:

WIN7: При запуске файла от имени администратора ошибки не происходит, чат начинает работать нормально. Если же файл, открытый ранее от имени администратора, закрыть и открыть в обычном режиме — проблема возвращается .

WIN10: После замены файла проблема сохранилась, ошибка та же

логи отправил почтой

Права администратора тут не при чём, если вы запускаете программу от имени другого пользователя — он просто создаст новый профиль.

Смотрю логи.

Team lead
Чат со мной

Я не знаю, с чем может быть связана эта ошибка. Свяжитесь со мной чатом, попробую посмотреть удалённо.

Team lead
Чат со мной

Аватара пользователя

Tim

Пт окт 19, 2018 4:46 pm

Пт окт 19, 2018 4:46 pm

#31922 

Спасибо за подсказку!

Методом тыка оказалось что помогает очистка папки db — после переподключения всё заработало на 9 из 10 проблемных компах. Причем logs.db потом без проблем можно вернуть, вместе с историей

Последний буду мучить в пн, если не получится — свяжусь

В общем-то не за что :)

Team lead
Чат со мной

Вроде нашли причину проблемы. Поправили, на будущее.

Team lead
Чат со мной

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    Пожалуйста, выделяйте текст программы тегом [сode=pas] … [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.


    Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
    1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
    2. Как «свернуть» программу в трей.
    3. Как «скрыться» от Ctrl + Alt + Del (заблокировать их и т.п.)
    4. Как прочитать список файлов, поддиректорий в директории?
    5. Как запустить программу/файл?
    … (продолжение следует) …


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


    Внимание
    Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
    Повторная попытка — 60 дней. Последующие попытки бан.
    Мат в разделе — бан на три месяца…

    >
    Как спрятать форму?

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,
    04.03.05, 16:56

      Senior Member

      ****

      Рейтинг (т): 4

      Надо спрятать форму + добавить иконку в трей.
      Иконку я добавил, но форма не прячеться
      После прочтения DRKB 2.2 был написан такой код

      ExpandedWrap disabled

          type

          TDisconnectForm = class(TForm)

          procedure Ic(n:Integer;Icon:TIcon);

            procedure FormShow(Sender: TObject);

             protected

          procedure IconMouse(var Msg: TMessage); message WM_USER + 1;

        procedure ControlWindow(var Msg: TMessage); message WM_SYSCOMMAND; // WM_SYSCOMMAND       = $0112;

          end;

        var

          DisconnectForm: TDisconnectForm;

          Time:Integer;

        implementation

        uses WarningFormU;

        {$R *.dfm}

        procedure TDisconnectForm.FormShow(Sender: TObject);

        var

        sTime:string;

        begin

        sTime:=Paramstr(1);

        try

        {Проверка полученных данных}

        //Time:=strtoint(stime);

        Time:=2;

        except

        ShowMessage(‘Ошибка в параметре’);

        Close;

        application.Terminate;

        exit;

         end;

        if (time<=0) then begin

        ShowMessage(‘Не положительное число’);

        Close;

        application.Terminate;

        exit;

        end;

        //Праметр задан верно — включаем таймер

        Inc(time);

        ic(1,application.Icon);

        showwindow(handle, SW_hide);

        showwindow(Application.handle, SW_HIDE);

        {

        В DRKB написано что так можно спрятать форму

        Но она не прячеться — она остаеться видимой

        }

        Timer1.Enabled:=true;

        end;

        procedure Tdisconnectform.ControlWindow(var Msg: TMessage);

        begin

        if (Msg.WParam = SC_MINIMIZE) then

         begin

        Ic(1, Application.Icon);

        showwindow(Handle, SW_hide);

        //showwindow(Application.handle, SW_HIDE);

        end

        else

        inherited;

        end;

        Procedure TDisconnectForm.Ic(n:Integer;Icon:TIcon);

        Var Nim:TNotifyIconData;

        begin

         With Nim do Begin

         cbSize:=SizeOf(Nim);

         Wnd:=disconnectform.Handle;

         uID:=1;

         uFlags:= NIF_MESSAGE or NIF_ICON or NIF_TIP;

         hicon:=Icon.Handle;

         uCallbackMessage:=WM_USER+1;

         szTip:=’Tip’

         End;

        Case n OF

         1: Shell_NotifyIcon(NIM_ADD,@Nim); //

         2: Shell_NotifyIcon(NIM_DELETE,@Nim); //

         3: Shell_NotifyIcon(NIM_MODIFY,@Nim); //

         End;

        end;

        procedure Tdisconnectform.IconMouse(var msg:Tmessage);

        var

        p: tpoint;

        begin

        GetCursorPos(p);

        if (Msg.LParam  = WM_RBUTTONUP) then

         begin

         PopupMenu1.Popup(p.X,p.Y);

         PostMessage(Handle, WM_NULL, 0, 0);

         end;

        end;

      Как спрятать форму?


      SPrograMMer



      Сообщ.
      #2

      ,
      04.03.05, 17:42

        У формы вообще то сть свойство Visible и Метод Hide…


        s-mike



        Сообщ.
        #3

        ,
        04.03.05, 18:12

          Хм, а где Application.Minimize?


          мыш



          Сообщ.
          #4

          ,
          04.03.05, 19:36

            также если хочешь чтобы приложение загрузилось сразу без формы, можно написать application.showmainform:=false в файле проекта


            Delphist



            Сообщ.
            #5

            ,
            05.03.05, 04:55

              Senior Member

              ****

              Рейтинг (т): 4

              Цитата

              У формы есть свойство Visible

              Цитата

              Хм, а где Application.Minimize?

              I)Пробуем

              ExpandedWrap disabled

                Visible:=false

              1) В TDisconnectForm.FormShow
              Получаем:
              Debugger Exception Notification

              Project Disconnect.exe raised exception class EInvalidOperation with message
              ‘Cannot change Visible in OnShow or OnHide’. Process stopped. Use Step or
              Run to continue.


              ( Нельзя менять visible в OnShow)

              2) В TDisconnectForm.FormCreate
              Получаем:
              Форма не прячеться ( но иконка в трее есть )

              II)Пробуем

              ExpandedWrap disabled

                Application.Minimize

              1) В TDisconnectForm.FormShow
              Получаем:
              Форма отображаеться.
              Если ее развернуть (из taskbar) и снова свернуть — тогда не отображаеться.

              2) В TDisconnectForm.FormCreate
              Форма все равно не прячеться (она спрятана за остальными окнами)

              III)Пробуем

              ExpandedWrap disabled

                Application.Minimize; Visible:=false;

              1) В TDisconnectForm.FormShow
              Получаем:
              Debugger Exception Notification
              Project Disconnect.exe raised exception class EInvalidOperation with message
              ‘Cannot change Visible in OnShow or OnHide’. Process stopped. Use Step or
              Run to continue.

              2) В TDisconnectForm.FormCreate
              Форма все равно не прячеться (она спрятана за остальными окнами)


              s-mike



              Сообщ.
              #6

              ,
              05.03.05, 05:01

                Цитата Delphist @ 05.03.05, 04:55

                1) В TDisconnectForm.FormShow
                Получаем:
                Debugger Exception Notification

                Project Disconnect.exe raised exception class EInvalidOperation with message
                ‘Cannot change Visible in OnShow or OnHide’. Process stopped. Use Step or
                Run to continue.
                ( Нельзя менять visible в OnShow)

                Компилятор понятно написал, в чем ошибка. Visible формы можно поменять в OnCreate или в design-time.

                Добавлено 05.03.05, 05:08
                Только для главной формы нужно делать так:

                ExpandedWrap disabled

                  procedure TForm1.FormCreate(Sender: TObject);

                  begin

                    Application.ShowMainForm := False;

                  end;

                Сообщение отредактировано: s-mike — 05.03.05, 05:09


                Delphist



                Сообщ.
                #7

                ,
                05.03.05, 09:30

                  Senior Member

                  ****

                  Рейтинг (т): 4

                  Цитата s-mike

                  Только для главной формы нужно делать так:
                  Application.ShowMainForm := False;

                  Сделал, но

                  ExpandedWrap disabled

                    TDisconnectForm.FormShow

                  — так как форма не появляеться,
                  событие OnShow не воникает => код

                  ExpandedWrap disabled

                    ic(1,application.Icon);

                    showwindow(handle, SW_hide);

                    showwindow(Application.handle, SW_HIDE);

                  не выполняеться => прога в трей не прячеться.
                  А по условию (см 1й пост )

                  Цитата

                  Надо спрятать форму + добавить иконку в трей.


                  SPrograMMer



                  Сообщ.
                  #8

                  ,
                  05.03.05, 17:42

                    Давай сделаем маааааленький эксперимент.
                    Кинь на ужасную форму кнопку и при нажатии на неё вызыви код, делающий махинации в трее и плюс убирает форму, ну примерно так:

                    ExpandedWrap disabled

                      procedure TForm1.Button10OnClick(Sender:TObject);

                      Begin

                         HideToSysTray; // прячемся

                         Form1.Visible:=False

                      End;

                    О результатх скажи.


                    Delphist



                    Сообщ.
                    #9

                    ,
                    05.03.05, 20:43

                      Senior Member

                      ****

                      Рейтинг (т): 4

                      2 SPrograMMer
                      Все работает ;)
                      Но надо чтобы форма сама пряталась ( без моего вмешательства )


                      Kanes



                      Сообщ.
                      #10

                      ,
                      05.03.05, 22:03

                        Delphist,

                        Цитата

                        Но надо чтобы форма сама пряталась ( без моего вмешательства )

                        Поясни, не понемаю какая разница :huh: ?????


                        Delphist



                        Сообщ.
                        #11

                        ,
                        06.03.05, 06:43

                          Senior Member

                          ****

                          Рейтинг (т): 4

                          Поясняю

                          Форму можно спрятать так:

                          ExpandedWrap disabled

                            procedure TForm1.Button1Click

                            begin

                            Visible:=false;

                            end;

                          (Форма прячеться по нажатию на кнопку — после моих действий)

                          Можно спрятать так:

                          ExpandedWrap disabled

                            procedure TForm1.FormShow

                            begin

                            Visible:=false;

                            end;

                          (Такой трюк не пройдет, но тем не менее — форму прячет сама прога)


                          SPrograMMer



                          Сообщ.
                          #12

                          ,
                          06.03.05, 08:44

                            Delphist Я знал что после щелчка будет все работать, я просто хотел тебе маааленькую вещь показать — как мне кажется, по крайне мере я так делал когда-то, форма сразу после загрузки ДОЛЖНА показаться, а затем — прячем её. Я имею ввиду то что б можно бвло применить

                            ExpandedWrap disabled

                                Form1.Visible:=False

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

                            ExpandedWrap disabled

                                Procedure TForm1.Timer1Timer(Sender:TObject);

                                Begin  

                                   Timer1.Enabled:=False; // что б больше не реагировал

                                   HideToSysTray; // прячемся в трей

                                End;

                            Теперь то работает?

                            Добавлено 06.03.05, 08:46
                            А то 2SPrograMMer, 2SPrograMMer


                            RPC-13



                            Сообщ.
                            #13

                            ,
                            06.03.05, 11:54

                              не самый подходящий способ, но.. =)

                              в OnCreate гл. формы:

                              сохрани в переменные — положение, длину и ширину формы

                              ExpandedWrap disabled

                                form1.top:=3000;

                                form1.left:=3000;

                              или

                              ExpandedWrap disabled

                                form1.Top:=0;

                                form1.Left:=0;

                                form1.Width:=0;

                                form1.Height:=0

                              в нужный момент присвой форме те переменные которые сохранил.
                              также можно form1.visible=true/false к этому делу подключить.


                              Delphist



                              Сообщ.
                              #14

                              ,
                              06.03.05, 15:26

                                Senior Member

                                ****

                                Рейтинг (т): 4

                                Цитата

                                Теперь то работает?

                                Работает. :)

                                Цитата

                                не будет заметно человеческому глазу.

                                Заметно.
                                Хотя это уже мелочи. ;)

                                2 SPrograMMer,s-mike,мыш:
                                Спасибо


                                miksayer



                                Сообщ.
                                #15

                                ,
                                06.03.05, 17:07

                                  Цитата SPrograMMer @ 04.03.05, 17:42

                                  У формы вообще то сть свойство Visible и Метод Hide…

                                  а если эта форма главная? тогда нужно делать так:

                                  ExpandedWrap disabled

                                    Application.ShowMainForm:=false;

                                  если я, конечно, не ошибаюсь

                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                                  0 пользователей:

                                  • Предыдущая тема
                                  • Delphi: Общие вопросы
                                  • Следующая тема

                                  Рейтинг@Mail.ru

                                  [ Script execution time: 0,0522 ]   [ 16 queries used ]   [ Generated: 9.06.23, 20:00 GMT ]  

                                  Понравилась статья? Поделить с друзьями:
                                • Ошибка cannot be applied to given types
                                • Ошибка cannot find sims 3 root
                                • Ошибка cannot access nls data
                                • Ошибка cannot find project or library
                                • Ошибка canceling statement due to user request