Динамическое создание & управление...

  • Автор темы misterio
  • Дата начала
M

misterio

#1
Динамическое создание я нашёл на форуме, а вот как его использовать....??
Пример пишем так :

Код:
 procedure TForm1.Button1Click(Sender: TObject);
var dynamic_button : TButton;
begin
dynamic_button := TButton.Create(Form1);
dynamic_button.Parent := self;
with dynamic_button do
begin
Height := 30;
Width := 80;
Left := 96;
Top := 9;
Caption := 'Dynamic Button';
end;
end;
А теперь как сделать так, чтобы при нажатии на появивщуюся кнопку, исчезала(удалялась из памяти) сама Button1. ???
 
M

misterio

#2
Ну ладно, я некорректно задал может вопрос. Вообщем как сделать обработчик событий на Динамическую кнопку, чтобы польза была, действие какое-то.

Код:
if (sender is TButton) then
sender.Free;
А если кнопок 2 или более, то как же этот случай?
 
M

misterio

#3
Та код та я писал! Вот по примеру как в Дельфи ....процедурку создал...действие...и т.д.
Только вот кнопочка не реагировала...а реагировала либо форма, либо другая кнопка..ггг
 
M

misterio

#4
у вас ошибка в 17 строке
Что...за?? Нельзя более-менее человеческим языком писать... :D (вы бы еще по пикселям координаты назвали) Или это прикол такой, типа : "знаеш парень отстань, иди почитай где-нить в книжке... "
 
M

misterio

#5
Ну примерчик простенький любой можно показать?
 
M

Mr_Duke

#6
А как присваиваить имена создаваемым объектам
 

morpheus

скриптописец
07.08.2006
3 915
1
#7
так же как и другие свойства

Код:
...
with dynamic_button do
begin
Height := 30;
Width := 80;
Left := 96;
Top := 9;
Caption := 'Dynamic Button';
Name := 'MY_COOL_NAME'
...
 
M

Mr_Duke

#8
sax_ol извините за ламерские вопросы я просто начинающий.
Я на первой форме нажатием кнопки создаю несколько объектов edit, как мне обратиться к полям edit на второй форме?
 
M

Mr_Duke

#9
Ага спасибо, путем перебора все получилось.
 
M

misterio

#10
Хм...вот сижу я думаю....

У нас есть Form1 на ней создано Button1 - естественно всё динамически создано. Процедуру исчезновения после нажатия на кнопку я понял.
А вот как быть, чтобы исчезла динамически созданная Form1??

К тому же при использовании метода Free выскакивает Exception.....тоже не корректно....
 
Z
#11
Код:
PostMessage(Form1.Handle, WM_CLOSE, 0, 0);
При этом не забываем в обработчике Form1.Close сделать Action:=caFree;
 
R
#12
Для: misterio
ты наверно локально пременную обьявляешь(тоесть ссылка не нее работает пок выполняется код в твоей процедуре или функции) вот она у тебя и nil возврящает. как можно разрушить того чего нет если ты ее глобально обьявишь то тогда стандартным диструктором уничтожай
а если ты ее локально обьявляешь то тебе необходимо запомнить handle окна и по ему разрушать как сказал zubr

Пример если обьявить как локальную переменную;
Код:
var
Form1: TForm1;
f:tform;
hw: HWND;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
var f: tform;// если закоментировать то получим глобальную переменную
begin
f:=TForm.Create(self);
//hw= f.handle; если запомним то сможем разрушить 
f.Show;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
f.Destroy;
//PostMessage(hw, WM_CLOSE, 0, 0); рушим через API
end;
//Неработает потому что f=nil
[]
 
M

misterio

#13
Для root :

Спасибо, ошибку свою понял. Фишку с Handle не знаю, да и про WM_CLOSE тоже. Где бы про это почитать.?

PostMessage(hw, WM_CLOSE, 0, 0); рушим через API
Кстате если использовать этот код, то при повторном нажатии на btn (при повторном создании динамической формы), оно ругаеться что форма уже есть.

Как это можно обойти? Просто уничножать? Или установить проверку типа : "Если форма в памяти есть, то просто показать ее". Как правильнее?
 
M

misterio

#14
прям вот так и говорит?
Ага, стишки рассказывает еще. :)
Я думаю все поняли что я имею введу.

а смысл? если хотите уменьшить размер ехе, то с VCL это не пройдет, надо переходить на WinAPI,но и смысл сего действа тож - "?"
Смысл в том, чтобы научиться и понять что к чему.Размер екзешника вообщене причём. Я вообще могу обойтись без динамических компонентов, но начинать же надо когда-то??

P.S. гг...написал сообщение и про привычке нажал CTRL+SHIFT+S ;)
 
M

misterio

#15
Согласен.

Дак вот я конкретно задам вопрос:

Подскажите ссылки где описано использование дин. компонентов, WinAPI...и т.д. и на этом топик можно закрыть.

Конечно я и сам знаю что такое gooogle, но может всё же знаете хорошенькие ссылочки...??
 
R
#16
Для: misterio
RSDN.RU WinAPI - надр читать на сайте win производителя :blink: