Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];

Вниз

Странное поведение Visible   Найти похожие ветки 

 
alex_ran   (2002-11-15 11:29) [0]

Уважаемые мастера. Пишу небольшую программку для ведения табеля отработанных часов. Значения для каждого дня месяца заносятся в свой DBEdit. 1-й день - DBEdit1,..., 31-день - DBEdit31.
Для удобства юзера из этих DBEdit-ов формируется подобие календаря. Поэтому была введена процедура CalendareConstructor, опирающаяся на значение года - Edit1 и месяца ComboBox1, в обработчике onChange которого она и запускается, а Edit1.onChange ссылается на ComboBox1.onChange. В ней задаются координаты каждого DBEdit-а и его Enable и Visible. Все работает, но...
По запуску приложения в onCreate главной формы значения Edit1 и ComboBox1 инициализируются значениями текущей даты, после чего вызывается CalendareConstructor, при этом координаты, Enable срабатывают, а Visible - нет, т.е. например сейчас в ноябре DBEdit31.Enable=False и это работает, а DBEdit31.Visible=False не работает - компонент виден !!!?. В отладчике проверял Visible=False. Причем нормальное поведение восстанавливается после смены месяца, но не года. И только после первой смены месяца начинает работать и смена года.
Разрешить эту проблему удалось отключением (ComboBox1 и Edit1).onChange в onCreate формы и включением в onActivate. Все заработало.
Вот работающий код:

procedure TForm1.FormCreate(Sender: TObject);
var Day, Month, Year : Word;
begin
Edit1.OnChange:=nil;
ComboBox1.OnChange:=nil;
DecodeDate(Now(), Year, Month, Day);
Edit1.Text:=IntToStr(Year);
ComboBox1.ItemIndex:=Month-1;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
CalendareConstructor;
Edit1.OnChange:=ComboBox1Change;
ComboBox1.OnChange:=ComboBox1Change;
end;

А вот неработающий:
procedure TForm1.FormCreate(Sender: TObject);
var Day, Month, Year : Word;
begin
DecodeDate(Now(), Year, Month, Day);
Edit1.Text:=IntToStr(Year);
ComboBox1.ItemIndex:=Month-1;
CalendareConstructor;
end;

Вопрос, хотя сейчас все и работает, но хотелось бы понять с чем связано такое поведение Visible?


 
gvb   (2002-11-15 11:45) [1]

Свойства элементов формы задаются приложением позднее, чем на этапе конструктора формы. Я предпочитаю такую работу делать в FormShow.



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

Форум: "Основная";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.009 c
14-82971
nick_vstu
2002-11-05 10:32
2002.11.25
Вам нравится група Ленинград?


1-82739
Zike
2002-11-15 11:01
2002.11.25
Получение нескольких Результатов функции


3-82586
Maloi
2002-11-07 22:25
2002.11.25
Помогите! Как отловить ID только что добавленной записи?


1-82781
Sectey
2002-11-13 14:49
2002.11.25
Явно правельный код, с совершенно не явным смыслом.


1-82798
Comp
2002-11-12 19:50
2002.11.25
Инсталляция





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский