Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Синтаксис
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.02.2013, 22:07
Аватар для Fantomas_RUS
Fantomas_RUS Fantomas_RUS вне форума
Прохожий
 
Регистрация: 12.10.2010
Сообщения: 47
Репутация: 11
По умолчанию Ошибка cannot focus a disabled or invisible window

Создаю программно при щелчке на кнопку форму, так же программно на ней размещаю кнопку и пытаюсь эту форму показать как ShowModal. Выскакивает ошибка cannot focus a disabled or invisible window.
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);

var Forma : TForm;
    BitButton1 : TBitBtn;
    BitButton2 : TBitBtn;
    BitButton3 : TBitBtn;
    A : TDBGrid;
    B:TDBLookupListBox;


begin

Forma := TForm.Create(Self);
With Forma do
  begin
  Parent := Self;
  Left := 100;
  Top := 100;
  Height := 300;  // Высота формы
  Width := 300;   // Ширина формы
  BorderStyle := bsDialog;
  end;

BitButton1 := TBitBtn.Create(Forma);
With BitButton1 do
  begin
  Parent := Forma;
  Left := 20;
  Top := 235;
  Height := 25;  // Высота
  Width := 75;   // Ширина
  Caption :='Добавить';
  Visible := true;
  end;

Forma.ShowModal;
end;
В чём проблема не пойму, если кнопку не создавать всё нормально...

Последний раз редактировалось Fantomas_RUS, 01.02.2013 в 23:05.
Ответить с цитированием
  #2  
Старый 01.02.2013, 22:28
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Что-то я не пойму эту хитрость:
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);

end; 
...
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 01.02.2013, 23:01
Аватар для Fantomas_RUS
Fantomas_RUS Fantomas_RUS вне форума
Прохожий
 
Регистрация: 12.10.2010
Сообщения: 47
Репутация: 11
По умолчанию

Скопировал не совсем верно.....

Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
 
var Forma : TForm;
    BitButton1 : TBitBtn;
    BitButton2 : TBitBtn;
    BitButton3 : TBitBtn;
    A : TDBGrid;
    B:TDBLookupListBox;
 
 
begin
 
Forma := TForm.Create(Self);
With Forma do
  begin
  Parent := Self;
  Left := 100;
  Top := 100;
  Height := 300;  // Высота формы
  Width := 300;   // Ширина формы
  BorderStyle := bsDialog;
  end;
 
BitButton1 := TBitBtn.Create(Forma);
With BitButton1 do
  begin
  Parent := Forma;
  Left := 20;
  Top := 235;
  Height := 25;  // Высота
  Width := 75;   // Ширина
  Caption :='Добавить';
  Visible := true;
  end;
 
Forma.ShowModal;
end;

Последний раз редактировалось Fantomas_RUS, 01.02.2013 в 23:07.
Ответить с цитированием
  #4  
Старый 01.02.2013, 23:07
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

.............
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #5  
Старый 01.02.2013, 23:08
Аватар для Fantomas_RUS
Fantomas_RUS Fantomas_RUS вне форума
Прохожий
 
Регистрация: 12.10.2010
Сообщения: 47
Репутация: 11
По умолчанию

Цитата:
Сообщение от angvelem
И что изменилось? Как был бред так и остался.
Вроде обновил
Ответить с цитированием
  #6  
Старый 01.02.2013, 23:17
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Изменил немного
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
  MyForm        : TForm;
  BitButton1    : TButton;
begin
  MyForm := TForm.Create(Self);
  with MyForm do
  begin
    Left   := 100;
    Top    := 100;
    Height := 300;  // Высота формы
    Width  := 300;   // Ширина формы
    BorderStyle := bsDialog;

    BitButton1 := TButton.Create(MyForm);
    with BitButton1 do
    begin
      Parent  := MyForm;
      Left    := 20;
      Top     := 235;
      Height  := 25;  // Высота
      Width   := 75;   // Ширина
      Caption :='Добавить';
      Visible := True;
    end;
  end;
  MyForm.ShowModal;
  MyForm.Free;
end;

Твоё обновление не сразу прошло, вот и не видел.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #7  
Старый 01.02.2013, 23:29
Аватар для Fantomas_RUS
Fantomas_RUS Fantomas_RUS вне форума
Прохожий
 
Регистрация: 12.10.2010
Сообщения: 47
Репутация: 11
По умолчанию

Странно, сперва попытался согласно твоему примеру подкорректировать свой, ошибка осталось. Потом полностью вставил твой пример, ошибка исчезла. Так на самом деле в чём косяк то был?
Ответить с цитированием
  #8  
Старый 01.02.2013, 23:32
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Пытался Parent использовать и забыл кнопку занести внутрь создания.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #9  
Старый 01.02.2013, 23:50
Аватар для Fantomas_RUS
Fantomas_RUS Fantomas_RUS вне форума
Прохожий
 
Регистрация: 12.10.2010
Сообщения: 47
Репутация: 11
По умолчанию

Цитата:
Сообщение от angvelem
Пытался Parent использовать и забыл кнопку занести внутрь создания.
Так метод Parent он же "Свойство Parent указывает родителя (визуальный контейнер) элемента управления." Так как он мешает на рисоваться кнопке в созданной форме, или вопрос не о чём?
Ответить с цитированием
  #10  
Старый 01.02.2013, 23:54
Аватар для Fantomas_RUS
Fantomas_RUS Fantomas_RUS вне форума
Прохожий
 
Регистрация: 12.10.2010
Сообщения: 47
Репутация: 11
По умолчанию

Цитата:
Сообщение от angvelem
Изменил немного
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
  MyForm        : TForm;
  BitButton1    : TButton;
begin
  MyForm := TForm.Create(Self);
  with MyForm do
  begin
    Left   := 100;
    Top    := 100;
    Height := 300;  // Высота формы
    Width  := 300;   // Ширина формы
    BorderStyle := bsDialog;

    BitButton1 := TButton.Create(MyForm);
    with BitButton1 do
    begin
      Parent  := MyForm;
      Left    := 20;
      Top     := 235;
      Height  := 25;  // Высота
      Width   := 75;   // Ширина
      Caption :='Добавить';
      Visible := True;
    end;
  end;
  MyForm.ShowModal;
  MyForm.Free;
end;
А форме ты не задаешь что, ли Parent?
Ответить с цитированием
  #11  
Старый 01.02.2013, 23:58
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

С чего это? Ты ведь её не на родительской форме создаёшь, а делаешь самостоятельным окном.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Этот пользователь сказал Спасибо angvelem за это полезное сообщение:
Fantomas_RUS (02.02.2013)
  #12  
Старый 02.02.2013, 00:23
Аватар для Fantomas_RUS
Fantomas_RUS Fantomas_RUS вне форума
Прохожий
 
Регистрация: 12.10.2010
Сообщения: 47
Репутация: 11
По умолчанию

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


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:13.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter