Головна сторінка
Top.Mail.Ru Яндекс.Метрика
Форум: "Основна";
Поточний архів: 2002.12.23;
Завантажити: [xml.tar.bz2];

Вниз

Просте запитання. Знайти схожі гілки


solo   (2002-12-13 23:11) [0]

Здравствуйте уважаемые, вроде на первый взгляд все просто, но торможу :((
КОД:
TObj = class
private
FButton: TButton;
FPanel: TPanel;
procedure OnButtonClick(Sender: TObject);
public
constructor Create;
end;
<Skip>
constructor TObj.Create;
begin
FPanel:= TPanel.Create(Form3);
FPanel.Parent:= Form3;

FButton:= TButton.Create(FPanel);
FButton.Parent:= FPanel;
FButton.OnClick:= OnButtonClick;
end;

procedure TObj.OnButtonClick(Sender: TObject);
begin
FPanel.Free;
end;
<Skip>

Вообщем понятно, есть панель, и лежащая на ней кнопка. Надо, по щелчку на

кнопке закрывать панель. Вылетает "Access violation". Подскажите:
1) как реализовать задуманное
2) почему "Access violation"
3) что почитать, чтобы получше разобраться в подобных вещах.



Вообще   (2002-12-14 03:21) [1]

говоря - "закрывать" панель и FPanel.Free - это "Две Большие Разницы"!



oldman   (2002-12-14 06:03) [2]

Стандартная ошибка!!!



Fantasist   (2002-12-14 06:26) [3]


> Oldman © (14.12.02 06:03)
> Стандартная ошибка!!!


Хороший ответ. :)


Прежде всего:


> FPanel:= TPanel.Create(Form3);


вот таким кодом ты делаешь Form3 владельцем FPanel. Владелец удаляет все свои компоненты при разрушении. Так что если хочешь сам удалять панель пиши: FPanel:= TPanel.Create(nil).

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



oldman   (2002-12-14 06:50) [4]

unit Unit1;

інтерфейс

використовує
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Buttons, ExtCtrls, StdCtrls;

тип
TForm1 = class (TForm)
SpeedButton1: TSpeedButton;
procedure SpeedButton1Click (Sender: TObject);
procedure OnButtonClick(Sender: TObject);
приватний
FPanel: TPanel;
FButton: TButton;
громадськість
end;

було
Form1: TForm1;

реалізація

{$ R * .DFM}

procedure TForm1.SpeedButton1Click (Sender: TObject);
починати
FPanel:= TPanel.Create(Form1);
FPanel.Parent:= Form1;
FButton:= TButton.Create(FPanel);
FButton.Parent:= FPanel;
FButton.OnClick:= OnButtonClick
end;

procedure TForm1.OnButtonClick(Sender: TObject);
починати
FPanel.Free;
end;

end.


И что интересно, никакого "Access violation"



oldman   (2002-12-14 07:05) [5]

Если SpeedButton1 выкинуть, а его OnClick повесить на Form1.OnActivate тоже работает...



Song   (2002-12-14 10:53) [6]

2Fantasist © (14.12.02 06:26)
>>Так что если хочешь сам удалять панель пиши: FPanel:= TPanel.Create(nil).
Самому можно удалять с любым Parent"ом.



Fantasist   (2002-12-14 23:40) [7]


> Самому можно удалять с любым Parent"ом


Parent и Owner - совершенно разные вещи.



Тем   (2002-12-15 02:50) [8]

не менее!
Убивать в обработчике OnClick кнопки ее владельца (Owner) - ???
Просто нет слов!



сторінки: 1 вся гілка

Форум: "Основна";
Поточний архів: 2002.12.23;
Завантажити: [xml.tar.bz2];

Вгору





Пам'ять: 0.57 MB
Час: 0.027 c
6-74868
НЕ
2002-10-28 15:22
2002.12.23
Час на віддаленій машині


1-74800
Сергій
2002-12-11 14:18
2002.12.23
приклад програмного створити папку і програм в меню Start-> Pro


14-74919
Sergey13
2002-12-02 08:50
2002.12.23
Музика для мобільника


14-74983
Ketmar
2002-12-03 17:40
2002.12.23
де взяти вихідні для Q2 BSP Builder і супутніх tools?


14-74997
Yury
2002-12-04 11:54
2002.12.23
PDF файл





африкаанс албанський арабська вірменин азербайджанець баскський білоруський болгарська каталонський Китайська (спрощене письмо) Китайський традиційний) хорватський чеська данську мову нідерландський Ukranian естонець Філіппінська фінську мову французький
галісійська грузинський німецький грецький гаїтянський креольський давньоєврейську хінді угорський ісландський індонезієць ірландський італійський японський корейський латиська литовець македонець малайський мальтійський норвежець
перс полірування португальська румунський російська сербський словацький словенський іспанська суахілі шведську мову тайський турецька український урду в'єтнамський валлійський ідиш бенгальський боснійський
кебуано есперанто гуджараті хауса хмонг ігбо яванський каннада кхмерская Лао латинь маорі маратхі монгольський непальська панджабі сомалійський тамільська телугу йоруба
зулуський
Англійська Французький Німецький Італійський Португальська Русский Іспанська