Главная страница
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.028 c
15-1183665388
SergeIT
2007-07-05 23:56
2007.08.05
Куда мы катимся


2-1184057373
koha
2007-07-10 12:49
2007.08.05
Помогите разобраться с ошибкой


15-1183614347
Qzzma
2007-07-05 09:45
2007.08.05
Книги по Delphi Pascal для "девушек"


3-1177393195
V-A-V
2007-04-24 09:39
2007.08.05
Проблема при добавлении полей в ClientDataSet


15-1184235201
ArtemESC
2007-07-12 14:13
2007.08.05
Новые веяния в играх...