Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.08.05;
Скачать: CL | DM;

Вниз

Динамическое отображения TSpeedButton   Найти похожие ветки 

 
Valkyre ©   (2007-05-25 08:31) [0]

Пытаюсь создать аналог панели задач Windows для некоторых окон моего приложения. Делаю так:


procedure TcfmDesktop.imgFormListMouseEnter(Sender: TObject);
var I: Integer; B: TSpeedButton; Cur: TForm;
function _ex(const H: Integer): Boolean;
var K: Integer;
begin
 Result := False;
 for K := 0 to pWindowsBar.ComponentCount-1 do begin
   if pWindowsBar.Components[K].Tag=H then begin
     Result := True;
     Break;
   end;
 end;
end;
begin

 try
 for I := 0 to pWindowsBar.ComponentCount-1 do begin
   if pWindowsBar.Components[I] is TSpeedButton then
     pWindowsBar.Components[I].Free;
 end;
 except
   showmessage("ашибка тута");
 end;

 try
 for I := 0 to Screen.FormCount-1 do if Screen.Forms[I].Visible then begin
   Cur := Screen.Forms[I];
   if _ex(Cur.Handle) then Continue;
   
//   if Cur.FindComponent("sgList")<>nil then begin
     B := TSpeedButton.Create(nil);
     B.Caption := iifstr(Cur.Caption="", "[без заголовка]", Cur.Caption);
     B.Transparent := True; B.Width := Cur.Canvas.TextWidth(B.Caption)+2;
     if (B.Width>100) then B.Width := 100;
     B.Flat := _iif((Cur.Visible) and (Cur.Active), False, True);
     B.OnClick := btnActivateWindowClick;
     B.Tag := Cur.Handle;
     B.Align := alLeft;
     B.Parent := pWindowsBar;
//    end;
 end;
 except
   Showmessage("здеся");
 end;

 pWindowsBar.Show;
//  tmrWinPanel.Enabled := False;
end;


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

Подскажите, пожалуйста, как можно с этим бороться?


 
ANB ©   (2007-05-25 12:18) [1]


> pWindowsBar.Components

Коллекция не та. Посмотри отладчиком - входит ли туда вообще выполнение. Controls вроде как верно (проверять лень).


 
ЮЮ ©   (2007-05-25 12:21) [2]

for I := 0 to pWindowsBar.ComponentCount-1 do begin
  if pWindowsBar.Components[I] is TSpeedButton then
    pWindowsBar.Components[I].Free;
end;
except
  showmessage("ашибка тута");
 ашибка тута НЕИЗБЕЖНА и часть компонентов не удалится из-за неё
end;


надо

for I := pWindowsBar.ComponentCount - 1 downto 0 do begin



Страницы: 1 вся ветка

Текущий архив: 2007.08.05;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.032 c
15-1183979611
antonnn
2007-07-09 15:13
2007.08.05
IE не проигрывает flash


15-1183538222
IMHO
2007-07-04 12:37
2007.08.05
Слово о Ботвиннике (шахматах и переборных задачах)


15-1183812054
Piter
2007-07-07 16:40
2007.08.05
Есть у кого опыт обладания скутером?


6-1167194866
merko$
2006-12-27 07:47
2007.08.05
Как прочитать файл.txt на удаленном ПК


15-1184145951
zdm77
2007-07-11 13:25
2007.08.05
Прокси