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

Тема в разделе "Delphi - Компоненты", создана пользователем misterio, 3 ноя 2007.

  1. misterio

    misterio Гость

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

    Код (Text):
     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. ???
     
  2. misterio

    misterio Гость

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

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

    misterio Гость

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

    misterio Гость

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

    misterio Гость

    Ну примерчик простенький любой можно показать?
     
  6. Mr_Duke

    Mr_Duke Гость

    А как присваиваить имена создаваемым объектам
     
  7. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    так же как и другие свойства

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

    Mr_Duke Гость

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

    Mr_Duke Гость

    Ага спасибо, путем перебора все получилось.
     
  10. misterio

    misterio Гость

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

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

    К тому же при использовании метода Free выскакивает Exception.....тоже не корректно....
     
  11. zubr

    zubr Гость

    Код (Text):
    PostMessage(Form1.Handle, WM_CLOSE, 0, 0);
    При этом не забываем в обработчике Form1.Close сделать Action:=caFree;
     
  12. root

    root Гость

    Для: misterio
    ты наверно локально пременную обьявляешь(тоесть ссылка не нее работает пок выполняется код в твоей процедуре или функции) вот она у тебя и nil возврящает. как можно разрушить того чего нет если ты ее глобально обьявишь то тогда стандартным диструктором уничтожай
    а если ты ее локально обьявляешь то тебе необходимо запомнить handle окна и по ему разрушать как сказал zubr

    Пример если обьявить как локальную переменную;
    Код (Text):
    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
    []
     
  13. misterio

    misterio Гость

    Для root :

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

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

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

    misterio Гость

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

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

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

    misterio Гость

    Согласен.

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

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

    Конечно я и сам знаю что такое gooogle, но может всё же знаете хорошенькие ссылочки...??
     
  16. root

    root Гость

    Для: misterio
    RSDN.RU WinAPI - надр читать на сайте win производителя :blink:
     
Загрузка...

Поделиться этой страницей