Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2014, 14:15   #1
Sallivan_Bidl
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 16
По умолчанию Работа с компонентами Edit и Label

Здравствуйте уважаемые программисты! Я сам не программист, но для решения одной задачи (уменьшить время на работе, которое я трачу на "ручную" обработку текстовых файлов, содержащих численную информацию) я решил написать программу в C++ Builder (его я немножко знал - в универе давали краткий курс).
Написанная программа - см. прикрепленный файл - работает, но есть вещи, которые "режут глаз": текстовые метки Label2-Label4, которые изначально настроены как невидимые, становятся видимыми при исполнении одновременно все вместе и (как бы это сказать) не в месте их расположения в тексте программы, а по факту в самом конце, т.е. после заполнения StringGrid1 и Memo2. Исполнение этой программы - процесс не мгновенный и я не могу понять, почему Label"ы" 2-4 и Edit1 как бы тормозят и изменяются позже по времени, чем другие объекты. В общем все изменения Label"ов" 2-4, Edit1 и Edit2 происходят одновременно и в самом конце. В чем тут причина, подскажите пожалуйста. Просто эти объекты в моей программе играют роль этакого счетчика % выполнения программы и такое их поведение с этой точки зрения не интересно. И почему "тормоза" не касаются например вывода в Memo3? Может тут есть какие-то приоритеты по выводу инфы, о которых я ничего не знаю? Помогите разобраться пожалуйста.
Вложения
Тип файла: txt Листинг проги.txt (6.3 Кб, 127 просмотров)

Последний раз редактировалось Sallivan_Bidl; 19.08.2014 в 16:14.
Sallivan_Bidl вне форума Ответить с цитированием
Старый 19.08.2014, 14:33   #2
Sallivan_Bidl
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 16
По умолчанию

И еще вопрос. Очень хочу знать ответ на вопрос vaximan из темы "Чтение и вывод из файла". Как сохранить содержимое Memo2 в файл я разобрался (Button4Click), а вот как ввести построчно файл в Memo1 - не знаю. Я его туда тупо копирую Ctrl+V, а может есть другой и простой способ, как открыть файл для чтения построчно в Memo1 (примерчик кода бы). Буду очень признателен за помощь по первому и второму вопросу.
Sallivan_Bidl вне форума Ответить с цитированием
Старый 19.08.2014, 14:39   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Исполнение этой программы - процесс не мгновенный и я не могу понять, почему Label"ы" 2-4 и Edit1 как бы тормозят и изменяются позже по времени, чем другие объекты. В общем все изменения Label"ов" 2-4, Edit1 и Edit2 происходят одновременно и в самом конце. В чем тут причина, подскажите пожалуйста
чтобы что-то было "нарисовано" необходимо чтобы отработал цикл обработки сообщений Windows. Данный цикл "автоматически" выполняется как раз в конце каждого события (точнее события как раз вызываются в этом цикле). Чтобы "нарисовать" внутри длительной процедуры можно использовать "ручной" вызов обработки сообщений (Application->ProcesssMessage; ) в тех местах где были внесены изменения (или просто при каждой итерации цикла).
Код:
 for (n=1; n<=N; n++)
    { Application->ProcessMessage;//все изменения накопленные к данному моменту будут отображены
НО! Данный код может значительно замедлить работу программы, поскольку рисование потребляет много времени.

Цитата:
Как сохранить содержимое Memo2 в файл я разобрался (Button4Click),
Код:
Memo2->Lines->SaveToFile(FileNameRez);
а вот как ввести построчно файл в Memo1 - не знаю.
Код:
Memo1->Lines->LoadFromFile(FileNameIshod);
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 19.08.2014 в 14:43.
evg_m вне форума Ответить с цитированием
Старый 19.08.2014, 14:52   #4
Sallivan_Bidl
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 16
По умолчанию

Т.е. если я напишу
Код:
Label2->Visible=1; Label2->ProcessMessage;
моя текстовая метка сразу станет видимой?
Sallivan_Bidl вне форума Ответить с цитированием
Старый 19.08.2014, 14:57   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

нет
Код:
 Label2->ProcessMessage;
Да
Код:
Application->ProcessMessage;
Для Label можно попробовать
Код:
Lable2->Visible=1; 
Label2->Update;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 19.08.2014 в 15:02.
evg_m вне форума Ответить с цитированием
Старый 19.08.2014, 15:08   #6
Sallivan_Bidl
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 16
По умолчанию

Спасибо большое за помощь, я хочу еще уточнить по поводу "LoadFromFile". Вот на примере моей функции Button4Click для "LoadFromFile" все будет аналогично, или нужно писать цикл для построчного переноса строки текста из исходного файла в строку Memo1? Мой исходный файл - txt-формата и мне как бы хотелось открыть его по-вкусному через окошко, а не делать Ctrl+V, вот и все. Но полистав у Дейтеля про файловый ввод-вывод - не понял ничего, ужаснулся и отказался от идеи.
Sallivan_Bidl вне форума Ответить с цитированием
Старый 19.08.2014, 15:10   #7
Sallivan_Bidl
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 16
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
нет
Код:
 Label2->ProcessMessage;
Да
Код:
Application->ProcessMessage;
Для Label можно попробовать
Код:
Lable2->Visible=1; 
Label2->Update;
Спасибо, попробую.
Sallivan_Bidl вне форума Ответить с цитированием
Старый 19.08.2014, 15:44   #8
Sallivan_Bidl
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 16
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
нет
Код:
 Label2->ProcessMessage;
Да
Код:
Application->ProcessMessage;
Для Label можно попробовать
Код:
Lable2->Visible=1; 
Label2->Update;
Спасибо, Update работает! Ура! Проверю теперь насколько увеличилось время выполнения программы.
Растолкуйте пожалуйста еще про LoadFromFile, то о чем я спрашивал. Аналогия SaveDialog1+SaveToFile - OpenDialog1+LoadFromFile
по коду будет работать или открыть файл сложнее, чем его сохранить?
Просто SaveToFile - это я из примера из универской методички передрал, а вот с открытием файла в том примере слишком сложно было (структура использовалась) и я решил не заморачиваться.
Sallivan_Bidl вне форума Ответить с цитированием
Старый 19.08.2014, 18:11   #9
Sallivan_Bidl
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 16
По умолчанию СПАСИБО!!!

СПАСИБО!!! Все работает, в т.ч. и функция LoadFromFile.
У меня получилась вкусненькая программа, которая сильно облегчит жизнь мне и некоторым моим коллегам! Очень признателен evg_m за помощь!!!!!
Фактически это мой первый опыт прикладного программирования. Хорошо, что он получился удачным!
Sallivan_Bidl вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическая Индикация на Label или Edit ддимочка C++ Builder 4 08.09.2013 19:25
Работа с формами и компонентами kholoshchak Общие вопросы Delphi 0 02.06.2011 12:10
Работа с компонентами из ресурсов Defunate Общие вопросы Delphi 5 29.05.2011 15:57
Label напротив Edit pahanzona Общие вопросы Delphi 9 26.02.2011 10:40
Работа с компонентами Ky3Heu, Общие вопросы Delphi 2 24.04.2009 11:58