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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2013, 16:13   #1
Gudzik11
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 138
По умолчанию Панель для быстрого запуска

Скажите как удалить динамически созданные компоненты
создаются они так
Код:
procedure TForm1.MyPc;
var x: int64;
bit, i: integer;
tp: Uint;
tip: string;
Value, Value1:string;
begin
 // Вызываем функцию WinAPI
// Функция возвращает битовую маску установленных логических дисков.
// Бит 0 определяет наличие диска А:, бит 1 - диска B и т.д.
 x:=GetLogicalDrives();
 if x=0 then
  PCForm.Memo1.Lines.Add('Функция GetLogicalDrives завершилась неудачей...')
 else
  begin
// цикл по полученным битам переменной X
  for i:=1 to 64 do
   begin
    // Накладываем битовую маску для выделения бита с поряковым номером 0
     bit:=x and 1;
     // нашли логический диск...
    if bit=1 then
     begin
      // определяем тип логического диска
      tp:=GetDriveType(PChar(chr(64+i)+':'));
      tip:='';
       if tp=0 then tip:='тип устройства не может быть определена';
       if tp=1 then tip:='Корневой каталог не существует';
       if tp=DRIVE_REMOVABLE then tip:='Съемный диск';
       if tp=DRIVE_FIXED then tip:='Локальный диск';
       if tp=DRIVE_REMOTE then tip:='remote (network)';
       if tp=DRIVE_CDROM then tip:='CDROM';
       if tp=DRIVE_RAMDISK then tip:='RAM disk';

       if (tip = 'Локальный диск') or (tip = 'Съемный диск') then
        begin
         Value:=FormatFloat('#.##',GetDiskFree(chr(64+i))/1024/1024/1024);

         PCForm.memo1.Lines.Add(chr(64+i)+': '+tip) ;
         //' '+ chr(64+i)+': '+tip+ '  [  ' + Value + ' GB ]');
           // Иконки
         inc(number);
         PCImage[number]:=TImage.Create(PCForm.Panel5);
         PCImage[number].Parent:=PCForm.Panel5;
         if number=1 then
         begin
          PCImage[number].Left:=10;
          PCImage[number].Top:=10;
          PCImage[number].Width:=70;
          PCImage[number].Height:=70;
          PCImage[number].Stretch:=True;
          PCImage[number].Name:='PCImage'+inttostr(number);
          PCImage[number].Picture.LoadFromFile('ico\My pc\Hdd.png');

         end
         else
          begin
           PCImage[number].Left:= (number * 80)-80;
           PCImage[number].Top:=10;
           PCImage[number].Width:=70;
           PCImage[number].Height:=70;
           PCImage[number].Stretch:=True;
           //PCImage[number].Name:='PCImage'+inttostr(number);
           PCImage[number].Picture.LoadFromFile('ico\My pc\Hdd.png');

          end;
        end
        else
         begin
          // преобразуем счетчик в букву диска и выводим в Memo1
          PCForm.memo1.Lines.Add(' '+ chr(64+i)+': '+tip);
         end;


      end;
    // побитовый сдвиг вправо
     x:= x shr 1;
   end;
  end;
end;
мне нужно чтоб при закрытии 2 формы все компоненты которые были созданы динамически удалялись
Gudzik11 вне форума Ответить с цитированием
Старый 01.12.2013, 16:17   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

они и так удалятся, ничего более не надо. и зачем нужен PCImage?
eval вне форума Ответить с цитированием
Старый 01.12.2013, 16:24   #3
Gudzik11
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 138
По умолчанию

не удаляются вот глянь проект
http://zalil.ru/34831350
Gudzik11 вне форума Ответить с цитированием
Старый 01.12.2013, 16:31   #4
Gudzik11
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 138
По умолчанию

нужно чтоб при следующем открытии формы программа опять сканировала систему на диски и выводила картинку дисков в Image а у меня получается что они остаются на форме и если я начинаю заново открывать 2-ю форму то получаю ошибку
Gudzik11 вне форума Ответить с цитированием
Старый 01.12.2013, 16:31   #5
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

тогда надо более подробно объяснять,
что такое "при закрытии 2 формы", что такое "не удаляются" и т.д.
eval вне форума Ответить с цитированием
Старый 01.12.2013, 16:37   #6
Gudzik11
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 138
По умолчанию

Вот код в котором закрывается 2-я форма
Код:
if (p.x > form1.Width) or ( p.y > Form1.Height ) // Прячет форму

 then
   begin
      if (p.x > PCForm.Left + PCForm.Width) or ( p.y > PCForm.Top + PCForm.Height ) then   // Если форма 1 не открыта
      begin
       Animatewindow(PCForm.Handle,500,AW_HOR_NEGATIVE or AW_SLIDE or AW_HIDE);
       PCForm.Close;
       Animatewindow(form1.Handle,500,AW_HOR_NEGATIVE or AW_SLIDE or AW_HIDE);
       Razmer;
       


      end
   end;
вот тут как то нужно убить те компоненты PCImage чтоб в следующий раз их можно было создать заново
Gudzik11 вне форума Ответить с цитированием
Старый 01.12.2013, 16:43   #7
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

так и не понятно зачем нужен PCImage, следовательно можно предположить, что он не нужен..
при Close форма не уничтожаеться, и все что на ней сооьвеьственно, вам оно надо?

если вы не уничтожаете значит надо убирать контролы руками
eval вне форума Ответить с цитированием
Старый 01.12.2013, 16:51   #8
Gudzik11
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 138
По умолчанию

в PCImage выводиться картинка локальных дисков
Gudzik11 вне форума Ответить с цитированием
Старый 01.12.2013, 16:58   #9
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

как картинка может выводиться в PCImage ? чет вы загибаете
eval вне форума Ответить с цитированием
Старый 01.12.2013, 18:06   #10
Gudzik11
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 138
По умолчанию

PCImage это и есть IMAGE
Gudzik11 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
GPanel --- Панель для быстрого запуска программ VinTagE Софт 17 14.08.2012 12:07
Панелька быстрого запуска!!! BlackFishSQL Общие вопросы Delphi 18 08.04.2011 23:01
Фичи для панели быстрого запуска. Alex Cones Софт 10 18.09.2010 10:14
Simple Dock v.0.1.21 Ещё одна панель быстрого запуска Marsel737 Софт 14 05.09.2010 17:52
Панель быстрого запуска. Небесный Операционные системы общие вопросы 3 18.12.2007 00:21