Полная версия этой страницы:
Помогите решить две проблемы
blackphoenix
14:08:2008, 07:27
Здравствуйте. Подскажите пожалуйста как в выражении FP+=StrToInt(LabeledEdit1->Text); игнорировать ошибку, которая возникает если в LabeledEdit1 ничего не введено, или там не цифровая информация.
И второй вопрос :
Для сворачивания программы в системный трей, я использую следующие две процедуры:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Tray->Visible=true;
Form1->Hide();
}
void __fastcall TForm1::N11Click(TObject *Sender)
{
Form1->Show();
Tray->Visible=false;
}
После первого нажатия баттон1, программа нормально сворачивается. После процедуры TForm1::N11Click второе сворачивание программы, не убирает ее из панели задач. Подскажите пожалуйста в чем причина.
З.Ы. Не бейте сильно, я начинающий.
Цитата(blackphoenix @ 14:08:2008 - 09:27)

игнорировать ошибку
Читайте про исключения, и их обработку.
А про "сворачивание" не понял.
blackphoenix
14:08:2008, 09:00
После первого нажатия баттон1, программа нормально сворачивается в трее и исчезает из панели задач.
Процедура TForm1::N11Click вызывается из PopupMenu, которое всплывает от двойного клика по значку программы в трее. Эта процедура также выполняется нормально. А вот все последующие сворачивания, не убирают программы из панели задач, пока по ней не кликнуть мышкой.
Подскажите пожалуйста в чем может быть причина.
мммм трудно сказать, почему именно так ... попробуйте запускать на другой машине, тоже самое будет или нет?
MyQwerty
22:08:2008, 08:30
Цитата(blackphoenix @ 14:08:2008 - 13:27)

FP+=StrToInt(LabeledEdit1->Text); игнорировать ошибку
Можно условием:
if (LabeledEdit1->Text!="") FP+=StrToInt(LabeledEdit1->Text);
MyQwerty Вы эта, думайте когда пишите или нет?
Вопрос: в LabeledEdit1->Text вогнали '123_4ffDD,5' что произойдет в вашем варианте?
MyQwerty
22:08:2008, 08:44
Тогда можно использовать try{} и catch{}
О это уже другое дело, а если покапаться в VCL, то можно найти и такую функцию: TryStrToInt, если конечно версия билдера не ниже 6.
blackphoenix
22:08:2008, 13:34
Спасибо за советы. Я решил эту проблему следующим образом. По событию KeyPress, вызываю подпрограмму, и в ней анализирую нажатую клавишу. Если это цифра, или разделительный знак, то оставляю, если иной символ, то игнорирую.
Цитата(blackphoenix @ 22:08:2008 - 15:34)

По событию KeyPress
Работать не будет.
blackphoenix
26:08:2008, 09:19
Цитата(sax_ol @ 22:08:2008, 15:45 )

Работать не будет.
Работает:
void __fastcall TForm1::LabeledEdit1KeyPress(TObject *Sender, char &Key)
{
if (((Key<'0')||(Key>'9'))&&(Key!=','))
Key=0;
В этом случае, вводятся только цифры и разделительный знака.
blackphoenix Скопируйте (ctrl+c) вот этот текст - '123_4ffDD,5' и всавте (ctrl+v) в свой LabeledEdit1.
Работает?
PS: еще варианты есть ...
blackphoenix
28:08:2008, 09:09
Цитата(sax_ol @ 26:08:2008, 20:22 )

blackphoenix Скопируйте (ctrl+c) вот этот текст - '123_4ffDD,5' и всавте (ctrl+v) в свой LabeledEdit1.
Работает?
PS: еще варианты есть ...
Работает. В данном случае не работает (ctrl+v).
blackphoenix Хоть в данном хоть не в данном, а, как я уже сказал раньше, - "Работать не будет.".
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.