Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];

Вниз

уничтожение динамически созданных объектов   Найти похожие ветки 

 
uses-mind.dll   (2004-11-04 19:16) [0]

возник такой трабл:

procedure TForm1.Button1Click(Sender: TObject);
var
 MyGrid: TStringGrid;
 n: integer;
begin
 {MyGrid.free; - если так писать, то уничтожается Button1.
  интересно почему ? :confused:}
 MyGrid:=TStringGrid.Create(self);
 MyGrid.Parent:=self;
 MyGrid.FixedCols:=0;
 MyGrid.ColCount:=n;
 MyGrid.RowCount:=n;
 MyGrid.Width:=(n*31+5);
 MyGrid.Height:=(n*21+5);
end;

а в действительности нужно, чтобы при создании Grid к примеру разсером (n-1)*(n-1) предыдущий Grid(тот который n*n) уничтожался, а кнопка при этом оставалась и могла повторять операции: уничтожение существующего грида и создание нового бесконечное количество раз (по нажатии на неё).
если кто знает - помогите. заранее благодарен ...


 
begin...end ©   (2004-11-04 19:29) [1]

Во-первых: какой объект предполагалось уничтожить вот здесь:

> var
>  MyGrid: TStringGrid;
> MyGrid.free  

?

Во-вторых, зачем каждый раз уничтожать и создавать таблицы, когда в них можно уменьшать количество строк и столбцов?

В-третьих, если это действительно надо, то ссылку на объект (MyGrid) и текущий размер таблицы нужно хранить за пределами процедуры TForm1.Button1Click.


 
Anatoly Podgoretsky ©   (2004-11-04 19:56) [2]

Любые созданые объекты уничтожаются методом Free, но только после создания и всего один раз после создания.


 
uses-mind.dll   (2004-11-04 21:23) [3]

to begin...end:
1. предполагалось MyGrid ... а если его нету, т.е. при первом нажатии на кнопку - ничего не уничтожается. так предполагалось ...
2. можно и уменьшать, только таблицу предполагается ещё и заполнять по алгоритму, что зависит от количества строк и столбцов.
3. не знаю, как. я только начал учить дэльфи пару дней назад :)


 
Defunct ©   (2004-11-05 03:25) [4]

> 3. не знаю, как. я только начал учить дэльфи пару дней назад :)

опишите в объявлении класса формы, в секции public или private

TForm1 = class(TForm)
...
...
public
 MyGrid : TStringGrid;
end;


 
KisaNetik   (2004-11-05 03:49) [5]


> MyGrid:=TStringGrid.Create(self);
>  MyGrid.Parent:=self;

Меня интересую вот эти строки, попробуй так:
MyGrid:=TStringGrid.Create(Form1);


 
Defunct ©   (2004-11-05 04:06) [6]

> MyGrid:=TStringGrid.Create(Form1);

что за глупость!
никогда не следует писать Form1, вообще надо избавляться от привычки использовать глобальные переменные. Более того никогда не надо советовать начинающим использовать глобальные пременные. Это дурной тон программирования!


 
KisaNetik   (2004-11-05 04:37) [7]


> Это дурной тон программирования!

Да, согласен, но прблема должна решиться. Если у него нет кучи динамически создаваемых форм с кнопкой на этих формах а всё на одной форме - всё будет пахать нормально...


 
KSergey ©   (2004-11-05 05:47) [8]

> KisaNetik   (05.11.04 04:37) [7]
> Да, согласен, но прблема должна решиться.

Вы вообще понимаете откуда у него проблема? Судя по этому утверждению - нет.

Автору: почитайте тут
http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=342


 
PVOzerski ©   (2004-11-05 10:34) [9]

Зато могу предположить, почему уничтожается Button1. Потому что ты вызываешь метод Free для объекта, который на самом деле - место, куда указывает 4 байта мусора. Сдается мне, что это регистр, в который перед вызовом TForm1.Button1Click положили Sender. Можешь проверить дизассемблированием :^)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.035 c
14-1099574409
1C
2004-11-04 16:20
2004.11.21
И объясните, плз, соответствие обозначении...


1-1099494539
Настенька!!!
2004-11-03 18:08
2004.11.21
Цвет ячейки стриннгрида


3-1098083158
Maxim_____
2004-10-18 11:05
2004.11.21
CASE средство с возможностью экспорта-импорта DDL


3-1098194711
MORA
2004-10-19 18:05
2004.11.21
ограничения целостности


4-1097173262
Destroyer
2004-10-07 22:21
2004.11.21
Как поменять несколько байт в чужом приложении?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский