Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизПочему может не срабатывать TGauge.Visible? Найти похожие ветки
← →
Zheksonz (2012-02-28 20:05) [0]
TStatusBar
является "предком" двухTGauge
, на панелях которого они отображаются во время некоторых процессов. Один по командеGauge1.Visible = false
; становится невидимым, а второйGauge2.Visible = false
нет(( Обычно источником подобной мистики является моя невнимательность, а иногда и тупость, но в этот раз я всё проверил вдоль и поперёк. StatusBar.Refresh делу не помог(( Может есть какое-то ограничение на количество отображаемых Gauge в Statusbar_е?
← →
Zheksonz (2012-02-28 20:31) [1]кинул на новую форму StatusBar и два Gauge, так же раскинул их по панелям. Так всё работает, в программе же, несмотря на то, что принципиальных отличий в работе именно StatusBar_а и Gauge - нет. Мистика!
← →
Zheksonz (2012-02-28 20:52) [2]хм((((((((((
Gauge.Visible := true;
вначале процедуры, до начала цикла, делает видимым объект, а после окончания цикла, в конце процедуры, обнуление Gauge проходит успешно, аGauge.Visible := false
нет(((
← →
Zheksonz (2012-02-28 21:37) [3]и всё-таки мистика!
убрал изFormCreate
код цепляющий g2 на StatusBar1 и по вызовуg2.Visible := false;
g2 на форме перестал отображаться. Т.е. в самом g2 нет проблем, как и в алгоритме использования. А что же в этом StatusBar_е может быть не так? Ведь второй Gauge, отображаемый в этом же StatusBar_е, только на другой панели, работает нормально.
Вот код привязки обоих Gauge:
with g1 do
begin
Parent := StatusBar1;
Progress := 0;
Top := 2;
Left := StatusBar1.Panels[0].Width;
Height := StatusBar1.Height - Top;
Width := 98;
end;
with g2 do
begin
Parent := StatusBar1;
Progress := 0;
Top := 2;
Left := StatusBar1.Panels[0].Width + StatusBar1.Panels[1].Width;
Height := StatusBar1.Height - Top;
Width := 98;
end;
← →
Anatoly Podgoretsky © (2012-02-28 22:40) [4]> Zheksonz (28.02.2012 20:05:00) [0]
TStatusBar не является предком TGauge
← →
Zheksonz (2012-02-28 22:45) [5]
> Anatoly Podgoretsky © (28.02.12 22:40) [4]
Предком нет, а родителем, учитываяGauge.Parent := StatusBar1;
?
← →
Zheksonz (2012-02-28 22:46) [6]И ведь не в этом суть, а почему не включается невидимость компонента?
← →
Zheksonz (2012-02-28 23:39) [7]Если смотрю отладчиком, то
Gauge.Progress
иGauge.Visible
принимают необходимые значения, 0 и false соответственно.
Удивительно же то, что после прогона ф-ции с отладчиком объект становится невидимым, без отладчика же, по крайней мере визуально, значение не меняется на 0 и Gauge остаётся видимым.
Ставил задержку перед выполнением этих операций, ставил Application.ProcessMessages, делал Refresh и Repaint StatusBar_а и Gaugе... всё бестолку. Заново закидывал эти компоненты, на случай если наклацал случайно в свойствах лишнего... в общем поизвращался на славу!
Вот и в чём кака?
← →
Германн © (2012-02-28 23:47) [8]DFM файл можешь показать?
← →
Zheksonz (2012-02-28 23:53) [9]
> Германн © (28.02.12 23:47) [8]
Он 43 кб.
В общем сдался я, вернее решил остановить накапливание зря потраченного времени...
Заменил Gauge обычным ProgressBar_ом, ничего не меняя в алгоритме, и всё заработало как нужно.
← →
Забаненный (2012-02-29 01:00) [10]
> Parent := StatusBar1;
а не лучше ли родителем делать панель? и если уж так хочется гауг, то дай ему еще родителя, ее видимостью управляй. ту же панель, например.
← →
Zheksonz (2012-02-29 01:34) [11]
> Забаненный (29.02.12 01:00) [10]
На будущее буду иметь в виду, но сейчас возвращаться к Gauge нет смысла. ProgressBar вполне устраивает. Спасибо.
← →
Германн © (2012-02-29 01:46) [12]
> Zheksonz (28.02.12 23:53) [9]
>
>
> > Германн © (28.02.12 23:47) [8]
>
>
> Он 43 кб.
Можно выложить на Webfile или ещё куда-нибудь.
Вот просто интересно сколько в этом файле есть TGauge?
← →
Забаненный (2012-02-29 02:51) [13]Кстати да, даже в ХЕ2 такие грабли по-прежнему могут быть.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.057 c