Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.07.2010, 13:28   #1
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию удаление компонента по его handle

Собствено как это сделать програмно?
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 16.07.2010, 13:29   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Например:
DestroyWindow(Button1.Handle);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.07.2010, 16:53   #3
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Вот и я так делал но не чего не получаеться он его просто прячет.
Вот как я это делал
Код:
procedure TFrame3.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 nagata:=true;
x2:=x;
y2:=y;
if Parent=form1.sScrollBox1 then begin
form1.image3.left:=left-10;
form1.image3.top:=top-10;
form1.image3.show;
//form1.Image3.SendToBack;
end;
obekt:=handle; // записываю в переменную handle
end;
//-------------------------------------------------
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if key=46 then begin
DestroyWindow(obekt); // по нажатию Delete удаляем

image3.Hide;
end;
end;
Но когда я начал креатить новый фрейм удалённый появляеться
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 16.07.2010, 17:05   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А зачем ты Дельфийские компоненты таким вульгарным способом удаляешь?
Пиши просто <Имя компонента>:=nil;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.07.2010, 17:59   #5
Sanprof
Форумчанин
 
Аватар для Sanprof
 
Регистрация: 28.01.2008
Сообщений: 267
По умолчанию

FreeAndNil(Obj) Obj - это ваш компонент.
Не забываем говорить спасибо за помощь - это ведь так приятно
Sanprof вне форума Ответить с цитированием
Старый 16.07.2010, 20:35   #6
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Если можно то по handle, а то я не могу знать имя удаляевомого фрейма.
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 17.07.2010, 01:50   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

внутри своей программы не знать имя?
но хендл же вы как то получаете
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 17.07.2010, 09:29   #8
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Цитата:
внутри своей программы не знать имя?
Понимаете я создаю новые фреймы и не могу знать какие у них имена во всяком случае как string можно изменить в Twincontrol?
Цитата:
но хендл же вы как то получаете
просто обьявил в главной форме переменную класа HWND а по нажатию на фрейм он просто зная эту переменую...
в #3 сообщения там написанно как я это делал
Воображение важнее, чем знания. (Albert Einstein)

Последний раз редактировалось dmitriegorovih; 17.07.2010 в 09:36.
dmitriegorovih вне форума Ответить с цитированием
Старый 17.07.2010, 12:23   #9
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

dmitriegorovih
Делается это массивом, можно так сделать:

var
MeComp : array[0..250] of TMyComp;

begin
MeComp[0] := TMyComp.create;
...

И удаляй
MeComp[0].free;
[0] - Это и есть хендл


или же пользуйся классом TList;
там можно добавлять объекты
и можно удалять их
и прочее...


end;
VintProg вне форума Ответить с цитированием
Старый 17.07.2010, 17:19   #10
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Код:
var
  Form1: TForm1;
  kom: array [0..255] of Tframe2;
  r:integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
inc(r);
kom[r]:=Tframe2.Create(self);
kom[r].Parent:=self;
end;
При втором клике вот что выдаёт
Цитата:
A component named Frame2 already exists
Я так понимаю это означает что компонент с таким именим уже существует
Цитата:
или же пользуйся классом TList;
там можно добавлять объекты
и можно удалять их
Добавлять я нашёл а как удалять?
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование Self.Handle при создании и уничтожении компонента spamer Общие вопросы Delphi 19 11.03.2010 00:51
Как узнать handle окна имея handle обного из его компонентов SeRhy Win Api 2 18.10.2009 19:31
Как узнать HANDLE компонента который находится под курсором мыши SeRhy Общие вопросы Delphi 7 04.02.2009 20:39
Как нажать на Button в чужом приложении зная его HANDLE SeRhy Win Api 2 04.02.2009 13:43
Создание компонента, определить handle носителя. Deight Компоненты Delphi 6 22.11.2008 09:45