Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Можно ли присваивать значения полей неинициализированной формы? [D6, XP]


DROWSY ©   (2010-10-04 06:58:00) 

Обычная неавтоинкрементная форма:
type
 TForm1 = class(TForm)
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

Если её не инициировать (Form1:=nil), то
почему присвоение Form1.Caption := '  ';  не вызывает какого-нибудь исключения, типа AcessViolation?


Игорь Шевченко   (2010-10-06 00:14:00) [1]

Сколько ж дивных открытий можно сделать, не счесть их. А если о каждом писать, форума не хватит.


Плохиш   (2010-10-06 00:01:00) [2]


> DROWSY   (04.10.10 06:58)  


> Если её не инициировать (Form1:=nil)

Form1 - это не форма.


Юрий Зотов   (2010-10-05 16:51:00) [3]

Видимо, имелась в виду неавто создаваемаяформа.


Правильный$Вася   (2010-10-05 14:18:00) [4]


> Обычная неавтоинкрементная форма

а что это?
у тебя они что, много одинаковых под разными последовательными номерами?

мож, я отстал от жизни и такие формы действительно появились?


Anatoly Podgoretsky   (2010-10-04 13:15:00) [5]

> бумбум  (04.10.2010 12:34:14)  [14]

С огнем играешь


Anatoly Podgoretsky   (2010-10-04 13:03:00) [6]

> 12  (04.10.2010 12:15:13)  [13]

Потому и нет исключения, поскольку адрес верный.


бумбум   (2010-10-04 12:34:00) [7]

А вот так форма меняет название

procedure TForm1.btn1Click(Sender: TObject);
var
 b:Tbutton;
begin
 b.Caption := 'as';
end;


12   (2010-10-04 12:15:00) [8]

такой код еще смешнее - и мало что нет AV, так еще и не та кнопка меняет название

procedure TForm1.btn1Click(Sender: TObject);
var
  b:Tbutton;
begin
  b.Caption := 'as';
  ShowMessage( b.Caption );
end;


Anatoly Podgoretsky   (2010-10-04 11:50:00) [9]

> DROWSY  (04.10.2010 06:58:00)  [0]

А что тогда Обычная автоинкрементная форма?


Amoeba_   (2010-10-04 10:31:00) [10]


> DROWSY   (04.10.10 08:10) [8]
> А как ещё создать динамически создать на форме компонент?
>

Читать это:
Жизнь и смерть в режиме run-time
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=342


RWolf   (2010-10-04 09:31:00) [11]


> DROWSY   (04.10.10 07:40) [2]
> Кроме того, ставил точку останова на TForm1.onCreate - не вызывается.

как же она вызовется, если форму не создавали?

> Pan := TPanel.Create(Form1);
> память под эту панель где-то выделилась,

да, это полноценная панель, можно пользоваться.

то как освободить
> память от этой панели?

Pan.Free, как всегда.


brother   (2010-10-04 08:11:00) [12]

Одна ветка - один вопрос ;)


DROWSY   (2010-10-04 08:10:00) [13]

А как ещё создать динамически создать на форме компонент?


DROWSY   (2010-10-04 08:06:00) [14]


> по встречке тоже можно ездить


> Pan := TPanel.Create(Form1);

Этим ПДД нарушаю?


Palladin   (2010-10-04 08:04:00) [15]


> Pan := TPanel.Create(Form1);не вызывает исключения.

по встречке тоже можно ездить


DROWSY   (2010-10-04 07:56:00) [16]

А, например,

Pan := TPanel.Create(Form1);
не вызывает исключения.
И вопрос:
память под эту панель где-то выделилась, а если
деструстор формы не вызывается (так как форма не создана),
то как освободить память от этой панели?


brother   (2010-10-04 07:48:00) [17]

я не знаю, где и что у тебя но:
program Project1;

uses
 Forms,
 Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
{  Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.Run;}

 Form1.Caption:= '234'; // нет AV но и нет присвоения
 form1.AlphaBlend:= true; // AV
end.


DROWSY   (2010-10-04 07:44:00) [18]

Исключение появляется только при вызове Form1.Show или Form1.ShowModal.


DROWSY   (2010-10-04 07:40:00) [19]

В отладчике перед присвоением, например.
Кроме того, ставил точку останова на TForm1.onCreate - не вызывается.


brother   (2010-10-04 07:27:00) [20]

> Можно ли присваивать значения полей неинициализированной
> формы

нет

> Если её не инициировать (Form1:=nil),

это где ты смотрел?


Наверх

Титульная страница Поиск, карта сайта Написать письмо