![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Можно ли присваивать значения полей неинициализированной формы? [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),
это где ты смотрел?