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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2008, 23:13   #1
ZhekON
Форумчанин
 
Аватар для ZhekON
 
Регистрация: 24.01.2007
Сообщений: 323
По умолчанию Как убрать/уничтожить с формы компонент TImage?

ВОПРОС :
у меня есть код

Код:
    if (bitsaved[n].px>bitsaved[n+1].px) and (bitsaved[n].py>bitsaved[n+1].py) then
       with form1 do
       begin
         (FindComponent('List'+inttostr(nomber_of_canvas)) as TImage).destroy;
         CurentCanvas:=(FindComponent('List'+inttostr(nomber_of_canvas-1)) as TImage).Picture.Bitmap.Canvas;
       end;
что в нём неправильно? почему выбивает ошыбки? и собственно сам вопрос : КАК убрать(уничтожить) из форми компонент TImage? как видите я писал через .destroy но правильно ли ето? или нужно использовать .Free?
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?
ZhekON вне форума Ответить с цитированием
Старый 23.02.2008, 08:47   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

лучше Free использовать
может надо изменять значение nomber_of_canvas? а то ты имадж удалил, а в следующий раз опять его будешь пытаться удалять.
pu4koff вне форума Ответить с цитированием
Старый 23.02.2008, 23:30   #3
ZhekON
Форумчанин
 
Аватар для ZhekON
 
Регистрация: 24.01.2007
Сообщений: 323
По умолчанию В чём дело?

такс... с тем я розобралсо вопрос в другом: почему выбивает ошыбку вот здесь

Код:
var curentCanvas:Tcanvas;
CurentCanvas:=(FindComponent('List'+inttostr(nomber_of_canvas-1)) as TImage).Picture.Bitmap.Canvas;
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?
ZhekON вне форума Ответить с цитированием
Старый 24.02.2008, 13:10   #4
mrandrey
Форумчанин
 
Регистрация: 30.03.2007
Сообщений: 124
По умолчанию

var curentCanvas:Tcanvas;
CurentCanvas:=(FindComponent('List' +inttostr(nomber_of_canvas-1)) as TImage).Picture.Bitmap.Canvas;

скорее всего компонент который ты находишь не является компонентом класса timage, хотя точно сказать из этого обрывка не могу!
Тут без 100г не розберешся.....
Спасибо не нужно, а на весы слева кликнуть не помешает!!!
mrandrey вне форума Ответить с цитированием
Старый 24.02.2008, 21:37   #5
ZhekON
Форумчанин
 
Аватар для ZhekON
 
Регистрация: 24.01.2007
Сообщений: 323
По умолчанию

если компонент типа TImage после кода
Код:
(FindComponent('List'+inttostr(nomber_of_canvas)) as TImage).free;
ищезает с форми(тоесть ми его нашли и удалили) так к чему ети слова:
Цитата:
скорее всего компонент который ты находишь не является компонентом класса timage

Как ещё можно найти компонент на форме и присвоить его канву другой переменной?
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?

Последний раз редактировалось Stilet; 27.02.2008 в 14:46.
ZhekON вне форума Ответить с цитированием
Старый 27.02.2008, 14:52   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Перед тем как делать free компоненты убедись что FindComponent не возвращает nil.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.02.2008, 20:26   #7
ZhekON
Форумчанин
 
Аватар для ZhekON
 
Регистрация: 24.01.2007
Сообщений: 323
По умолчанию

вобщем там чтото такое выходит сначала не равно nil вроде как а потом равно и всё время курсор на етой строке останавливается :
Цитата:
CurentCanvas:=(FindComponent('List' +inttostr(nombe r_of_canvas-1)) as TImage).Picture.Bitmap.Canvas;
Для упрощения задачи я привиду вам алгоритм создания компонента и его поиск ниже :
Код:
var
  Form1: TForm1;
  nomber_of_canvas:integer;
  Canvas_nomer:array[1..1000] of TImage;
  curentCanvas:Tcanvas;

implementation

{$R *.dfm}

procedure SetCanvas;
begin
  nomber_of_canvas:=nomber_of_canvas+1;
  Canvas_nomer[nomber_of_canvas]:=timage.Create(form1.ScrollBox1);
  Canvas_nomer[nomber_of_canvas].Parent:=form1.ScrollBox1;
  Canvas_nomer[nomber_of_canvas].Name:='List'+inttostr(nomber_of_canvas);
  Canvas_nomer[nomber_of_canvas].Picture.LoadFromFile(extractfilepath(application.ExeName)+'Res\LIST_VER1.BMP');
  Canvas_nomer[nomber_of_canvas].AutoSize:=true;
  Canvas_nomer[nomber_of_canvas].Center:=true;
  canvas_nomer[nomber_of_canvas].Align:=alBottom;
  curentCanvas:=Canvas_nomer[nomber_of_canvas].Picture.Bitmap.Canvas;
end;

...........

     with form1 do
       begin
       if  (FindComponent('List'+inttostr(nomber_of_canvas)) as TImage)<>nil then
         (FindComponent('List'+inttostr(nomber_of_canvas)) as TImage).free
       else showmessage('BOOM!!!!!');

         nomber_of_canvas:=nomber_of_canvas-1;
       if  (FindComponent('List'+inttostr(nomber_of_canvas)) as TImage)<>nil then
         CurentCanvas:=(FindComponent('List'+inttostr(nomber_of_canvas)) as TImage).Picture.Bitmap.Canvas
       else showmessage('BOOM!!!!!');
       end;
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?
ZhekON вне форума Ответить с цитированием
Старый 09.03.2008, 21:04   #8
ZhekON
Форумчанин
 
Аватар для ZhekON
 
Регистрация: 24.01.2007
Сообщений: 323
По умолчанию

а где же совети ... ответи... такой вродьбы несложный вопрос.. ех... что же делатЬ???
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?
ZhekON вне форума Ответить с цитированием
Старый 09.03.2008, 21:15   #9
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

поторопился. Извиняюсь

Последний раз редактировалось alexBlack; 09.03.2008 в 21:20.
alexBlack вне форума Ответить с цитированием
Старый 09.03.2008, 21:22   #10
ZhekON
Форумчанин
 
Аватар для ZhekON
 
Регистрация: 24.01.2007
Сообщений: 323
По умолчанию

alexBlack ... чтО??
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?
ZhekON вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как программно удалить компонент от формы или другого компонента (контейнера)? SkAndrew Общие вопросы Delphi 3 27.05.2008 15:20
Перемещение формы за компонент Zeraim Общие вопросы Delphi 2 20.05.2008 09:26
Как убрать компонент SeRhy Помощь студентам 2 29.10.2007 17:29
DLL:переменная-ссылка на компонент формы Саня Общие вопросы Delphi 9 03.08.2007 10:38
Как убрать с компонент штрихованную окаймовку? Hintman Компоненты Delphi 7 20.05.2007 13:58