|
Вопрос # 4 637/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
Есть компонент label, в нем текст: "00:00:00" (ЧЧ:ММ:СС), есть так-же time. А нужно чтобы через единицу времени (скорее всего секунду) изменялся цвет шрифта часов, минут, и секунд чередуя красный, синий и белый цвета соответственно. То есть сначала ЧЧ - красный, ММ - синий, СС - Белый, потом ЧЧ- белый, ММ - красный, СС - синий и т.д. И вообще возможно ли это без использования циклов и дополнительных timer'ов?
Я совсем ещё нубик в этом деле, помогите пожалуйста, иначе следующая встреча с преподом грозит мне отчислением... :D
 |
Вопрос задал: Byte (статус: Посетитель)
Вопрос отправлен: 5 октября 2010, 23:44
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: Егор
Здравствуйте, Byte!
Таймер нужен. Один. Поместить весь текст в одну метку (label) не получится, т.к. для метки можно указать лишь один цвет - для всего текста сразу, а не для отдельных частей. Можно использовать какие-либо другие компоненты (например, RichEdit), которые допускают использование разных цветов для шрифта, но в данном случае самый простой выход - использовать пять меток: "чч" ":", "мм", ":" и "сс". Для каждой метки задаётся свой цвет по отдельности. Весь код будет в одном обработчике таймера.
И чего вы так боитесь циклов? Пишите программы - побольше. И перестанете бояться циклов. Да и других конструкций тоже.
Код программы ниже. На форме нужны будут компоненты: пять меток (первая должна быть белой, третья - красной, пятая - синей). Должен быть таймер. И в список используемых моделей нужно добавить модуль DateUtils (7-я строчка, последнее слово).
Приложение: Переключить в обычный режим- unit Unit1;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, ExtCtrls, StdCtrls, DateUtils;
-
- type
- TForm1 = class(TForm)
- Label1: TLabel;
- Label2: TLabel;
- Label3: TLabel;
- Label5: TLabel;
- Label4: TLabel;
- Timer1: TTimer;
- procedure Timer1Timer(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.dfm}
-
- procedure TForm1.Timer1Timer(Sender: TObject);
- var
-
-
- begin
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- end;
-
- end.
-
 |
Ответ отправил: Егор (статус: 10-ый класс)
Время отправки: 6 октября 2010, 04:59
Оценка за ответ: 5
Комментарий к оценке: Спасибо огромное. То что нужно! Циклов я не боюсь, преподаватель требовала без циклов другие задачи делать и я подумал что эту тоже, но ежели не возможно - пусть так принимает.
|
Ответ #2. Отвечает эксперт: min@y™
А можно обойтись вообще без Label и рисовать текст прямо на Canvas чего-либо.
Я тоже написал рабочий пример, прицепляю к ответу. К ответу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки ответа)
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 6 октября 2010, 08:52
Оценка за ответ: 4
Комментарий к оценке: Спасибо, вариант хороший, но это мы не проходили, это нам не задавали, парам-пам-пам :)
Возьму на будущее.
|
Мини-форум вопроса
Всего сообщений: 22; последнее сообщение — 7 октября 2010, 17:38; участников в обсуждении: 3.
Страницы: [« Предыдущая] [1] [2]
|
Byte (статус: Посетитель), 7 октября 2010, 17:36 [#21]:
min@y™: Дело в том что четырьмя баллами я оценил не код, а ответ на мой вопрос)
|
|
Byte (статус: Посетитель), 7 октября 2010, 17:38 [#22]:
Вадим К: Видимо она просто не заметила... Спасибо, возьму на заметку
|
Страницы: [« Предыдущая] [1] [2]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|