Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.46 MB
Время: 0.041 c
15-1183659935
Rouse_
2007-07-05 22:25
2007.08.05
WNetEnumCachedPasswords


2-1184076465
Knob
2007-07-10 18:07
2007.08.05
Выгрузка данных из таблицы Excel


15-1183748062
Курдль
2007-07-06 22:54
2007.08.05
Хочу на вас заработать бонус! Ну, пожалуйста!


15-1184143953
vitv
2007-07-11 12:52
2007.08.05
Проблема с Java


3-1177490026
zero
2007-04-25 12:33
2007.08.05
Долго выполняеться запрос





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский