Форум: "Основная";
Текущий архив: 2007.08.05;
Скачать: [xml.tar.bz2];
ВнизДинамическое отображения 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.039 c