Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Samrisbe
1356 / 726 / 66
Регистрация: 28.01.2011
Сообщений: 2,026
1

Планировщик в деталях

15.12.2012, 18:01. Просмотров 976. Ответов 16
Метки нет (Все метки)

Всем добро!
Тема с динамически создаваемыми Ляблами немного отклонилась от заданного вектора по моей вине, создал новую тему в которой искренне прошу проявить уважение к вашему слуге , резиденту CуberForuma, старине Samrisbe и помочь ему с решением простой задачи которая вот уже месяц нарушает его сон!

Собственно сама задача:
На фото 1 В компоненте ScrollBox1 создаю Ляблы вот таким способом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
static int sec = 0; // переменная для определения номера Лябла
  static int top = 0; // переменная для определения высоты Лябла
 
    if (++sec == 1) {
      TLabel *lbl1 = new TLabel(this);
      lbl1->Parent = ScrollBox1;
      top = lbl1->Top;
      lbl1->Left = 5;
      lbl1->OnClick = lbl1Click ;
      lbl1->Caption = lbl1->Caption +  "Start " + (FormatDateTime("hh:mm:ss", DateTimePicker1->Time));
      lbl1->Caption = lbl1->Caption +   " Stop "  + (FormatDateTime("hh:mm:ss", DateTimePicker2->Time));
    }
Вот что меня беспокоит на сегодняшний день помимо политической нестабильности на ближнем востоке:

1 Сохранить данные о созданном Лябле в ИНИ и при следующем пуске программы создать его автоматически.
2 Создать событие в котором мы по клику мышки меняем шрифт в Лябле на подчеркнутый или наоборот.
3 Удаляем подчеркнутый Лябл кнопкой.
4 Сортируем Ляблы по нажатию кнопки по мере увеличения времени в них (Caption).
При этом мне надо будет брать данные с задания и чтото исполнять когда наступит совпадение реального времени со временем в Ляблах.
0
Изображения
Тип файла: jpg 1.jpg (16.6 Кб, 11 просмотров)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2012, 18:01
Ответы с готовыми решениями:

Планировщик заданий
ПОМОГИТЕ,ПОЖАЛУЙСТА...создать программу,которая включает службу планировщика задания"schedule" и...

Помогите сделать планировщик для батника bat
Проблема такая нужно создать планировщик, который можно было открыть либо веб браузере , либо как...

TStringGrid в деталях
Нужно вернуть значение aCol, aRow при двойном клике по ячейке, для определённых действий, например...

Задача об окрашенных деталях.
Задача: В ящике имеется 15 деталей, среди которых 10 окрашенных. Сборщик наудачу извлекает три...

Advanced зaдача о бракованных деталях
Привет всем! Неделю сражаюсь с одной задачкой для дисера, никак не могу одолеть... Вобщем есть у...

16
Avazart
Эксперт С++
8000 / 5819 / 575
Регистрация: 10.12.2010
Сообщений: 26,840
Записей в блоге: 19
15.12.2012, 18:47 2
А чем собственно RichEdit не угодил ?

Или ListView ? Почему Label ?
1
LK
Заблокирован
15.12.2012, 19:23 3
Samrisbe, вы же знаете порядок - вы делаете, показываете код, здесь код смотрят и прикалываются.

Меня вот это на старте беспокоит:
C++
1
2
lbl1->Caption = lbl1->Caption +  "Start " + (FormatDateTime("hh:mm:ss", DateTimePicker1->Time));
lbl1->Caption = lbl1->Caption +   " Stop "  + (FormatDateTime("hh:mm:ss", DateTimePicker2->Time));
Так у нас постоянно в заголовок просится стоп, что, в общем-то понятно, но я бы как-нибудь подпортил ему такую самоуверенность, типа:
C++
1
2
3
4
5
6
7
8
9
bool davajdavay;
AnsiString status;
if (davajdavay) {
  status = "Start ";
}
else if (!davajdavay) {
  status = " Stop ";
} 
lbl1->Caption = lbl1->Caption +  status + (FormatDateTime("hh:mm:ss", DateTimePicker1->Time));
н-да... восток - дело тонкое...

Добавлено через 3 минуты
ой, вы ж это в одном лябле пишете, я так понял , тогда, пардон

Добавлено через 2 минуты
И для чего так много ляблов, пишите в один:
C++
1
Label->Caption = "Кто-то\nкого-то\nкогда-то\nза что-то..."
Добавлено через 17 минут
или так
C++
1
2
3
4
5
6
7
8
9
bool davajdavay;
AnsiString status;
if (davajdavay) {
  status = lbl1->Caption = lbl1->Caption+"Start "+(FormatDateTime("hh:mm:ss", DateTimePicker1->Time));
}
else if (!davajdavay) {
  status = lbl1->Caption = lbl1->Caption+" Stop "+(FormatDateTime("hh:mm:ss", DateTimePicker1->Time))+"\n";
} 
lbl1->Caption = status;
2
Samrisbe
1356 / 726 / 66
Регистрация: 28.01.2011
Сообщений: 2,026
15.12.2012, 19:33  [ТС] 4
Цитата Сообщение от Avazart Посмотреть сообщение
А чем собственно RichEdit не угодил ?
Я передумал и решил двигатса в направлении которое рекомендовал уважаемый Avazart.
создаю событие:
C++
1
2
RichEdit1->Text = RichEdit1->Text +  "Start " + (FormatDateTime("hh:mm:ss", DateTimePicker1->Time));
   RichEdit1->Text = RichEdit1->Text +   " Stop "  + (FormatDateTime("hh:mm:ss", DateTimePicker2->Time));
1 Сохранить данные о созданном событии в ИНИ и при следующем пуске программы отображать.
2 По клику мышки меняем шрифт в конкретной строке на подчеркнутый или наоборот.
3 Удаляем подчеркнутую строку кнопкой.
4 Сортируем строки по нажатию кнопки по мере увеличения времени в них.
При этом мне надо будет брать данные с задания и чтото исполнять когда наступит совпадение реального времени со временем в строках.
Как такое реализовать?
LK ссори...
0
15.12.2012, 19:33
LK
Заблокирован
15.12.2012, 19:45 5
Цитата Сообщение от Samrisbe Посмотреть сообщение
Я передумал и решил двигатса в направлении которое рекомендовал уважаемый Avazart.
создаю событие:
C++
1
2
RichEdit1->Text = RichEdit1->Text +  "Start " + (FormatDateTime("hh:mm:ss", DateTimePicker1->Time));
   RichEdit1->Text = RichEdit1->Text +   " Stop "  + (FormatDateTime("hh:mm:ss", DateTimePicker2->Time));
1 Сохранить данные о созданном событии в ИНИ и при следующем пуске программы отображать.
2 По клику мышки меняем шрифт в конкретной строке на подчеркнутый или наоборот.
3 Удаляем подчеркнутую строку кнопкой.
4 Сортируем строки по нажатию кнопки по мере увеличения времени в них.
При этом мне надо будет брать данные с задания и чтото исполнять когда наступит совпадение реального времени со временем в строках.
Как такое реализовать?
LK ссори...
Правильно передумал, но не
C++
1
RichEdit1->Text = RichEdit1->Text +   " Stop "  + (FormatDateTime("hh:mm:ss", DateTimePicker2->Time));
, а может что-нибудь типа
C++
1
2
RichEdit1->Strings[0]->Add(" Start "  + (FormatDateTime("hh:mm:ss", DateTimePicker2->Time));
RichEdit1->Strings[0] = RichEdit1->Strings[0]+" Stop "  + (FormatDateTime("hh:mm:ss", DateTimePicker2->Time));
1. У вас есть темка по ИНИ, вы сами ее неоднократно предлагали нуждающимся. Потерялась?
2. RichEdit1->Strings[х, SelectStart, SelectEnd
3. RichEdit1.Delete(RichEdit1->Strings[х])
4. Загоняете в стринглист и сортируете

Я бы вообще-то все эти махинации с добавлениями, удаления и пр. извращениями делал бы в стрингглисте, в рич эдит только отображал результат, т.е., следовал совету про мухи и котлеты, пардон, о коде и дизайне .
не-за-что, хотя я, собственно, не понял, об чем базар.
1
BRcr
4027 / 2316 / 292
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
15.12.2012, 19:57 6

Не по теме:

Цитата Сообщение от Samrisbe Посмотреть сообщение
Вот что меня беспокоит на сегодняшний день помимо политической нестабильности на ближнем востоке:
:D сам придумал или подсказал кто?..


Мухи и котлеты - это совершенно верно. Создай класс задания, храни все в нем по конкретному заданию - обрабатывать будешь уже удобный набор классов, а не искать что-то где-то в тексте richedit. В richedit только обновляй информацию.
1
LK
Заблокирован
15.12.2012, 19:59 7
Об Ини...
Я бы сохранил строки из ричэдита в обычный текстовый файл, для сохранения также форматирования предусмотрел маркер, типа
C++
1
2
3
if (RichEdit->Strings[x]).Style=fsBold)
  RichEdit->Strings[x] = "[b]"+RichEdit->Strings[x];
}
Схема, естественно... При обратной загрузке смотрел маркер, наводил красоту, маркер отрезал. Как-то так...
1
Samrisbe
1356 / 726 / 66
Регистрация: 28.01.2011
Сообщений: 2,026
15.12.2012, 20:04  [ТС] 8
Цитата Сообщение от LK Посмотреть сообщение
RichEdit1->Strings
C++
1
[C++ Error] Unit1.cpp(3513): E2316 'Strings' is not a member of 'TRichEdit'
Что не так...
И не спрашивай почему проект пишу в 6 Buildere!

Насчет подчеркнутый или нет мне сохранять не надо это нужно лишь для того чтоб удалить конкретную строку (задание).

Добавлено через 3 минуты
Цитата Сообщение от BRcr Посмотреть сообщение
сам придумал или подсказал кто
LK подсказал
0
LK
Заблокирован
15.12.2012, 20:05 9
не хочешь - как хочешь ...
0
Samrisbe
1356 / 726 / 66
Регистрация: 28.01.2011
Сообщений: 2,026
15.12.2012, 20:10  [ТС] 10
Цитата Сообщение от LK Посмотреть сообщение
не хочешь - как хочешь ...
Сансей я не хотел задеть или проявить неуважение к тебе и остальным учасникам форума, я просто попросил немного помочь у тех кто может себе позволить потратить немного времени на безвозмездную помощь.
0
LK
Заблокирован
15.12.2012, 20:23 11
то была задолбанная шутка ( (С) BRcr )
1
Samrisbe
1356 / 726 / 66
Регистрация: 28.01.2011
Сообщений: 2,026
15.12.2012, 20:28  [ТС] 12
Добавлено через 1 минуту
Цитата Сообщение от LK Посмотреть сообщение
то была задолбанная шутка ( (С) BRcr )
В его возрасте можно шутить шаблонно... Хоть он образованный и востребованный в обществе человек!
0
BRcr
4027 / 2316 / 292
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
15.12.2012, 20:34 13

Не по теме:

Шаблонно шутить не рекомендуется в любом возрасте. Просто конкретно эту шутку юмора я вижу впервые.:pardon:


Цитата Сообщение от Samrisbe Посмотреть сообщение
Как в Memo делать одну из строк подчеркнутой?
В мемо никак. Делай в richedit.
1
Samrisbe
1356 / 726 / 66
Регистрация: 28.01.2011
Сообщений: 2,026
15.12.2012, 20:40  [ТС] 14
Как выделить строку в RichEdit1 по которой кликнул?

мимо темы: без обид BRcr, я люблю пошутиь и шутки придумывать походу у меня получается лучше чем программировать...
Товарисчи вернемся к решению текущей задачи)

Добавлено через 6 минут
Ато я уже Архангельского достал с книжной полки
0
LK
Заблокирован
15.12.2012, 21:00 15
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
TPoint p;
p.X;
p.Y;
int i,j;
GetCursorPos(&p);
//Получаем экранные координаты указателя мыши
p= ScreenToClient(p);
//Переводим их в координаты ричэдита
i = SendMessage(RichEdit1->Handle, EM_CHARFROMPOS, 0, (LPARAM) &p);
// красим 
RichEdit1->SelStart = SendMessage(RichEdit1->Handle, EM_LINEINDEX, i - 1, 0);
RichEdit1->SelLength = (RichEdit1->Lines->Strings[i-1].Length());
RichEdit1->SelAttributes->Color = clRed;
может, чего и напутал... ну, вы в курсе - схема, не для копипейста...

Добавлено через 7 минут
C++
1
2
3
int linear_pos = (int)::SendMessage(richedit->Handle,EM_CHARFROMPOS,0,(LPARAM)&pt);
int y_pos = ::SendMessage(richedit->Handle,EM_LINEFROMCHAR,(WPARAM)linear_pos,0);
int x_pos = linear_pos-(int)::SendMessage(richedit->Handle,EM_LINEINDEX,y_pos,0);
1
Avazart
Эксперт С++
8000 / 5819 / 575
Регистрация: 10.12.2010
Сообщений: 26,840
Записей в блоге: 19
15.12.2012, 21:06 16
C++
1
RichEdit1->Lines->Strings[index] = "some line";
1
LK
Заблокирован
15.12.2012, 21:20 17
Цитата Сообщение от Samrisbe Посмотреть сообщение
Как выделить строку в RichEdit1 по которой кликнул?
Цитата Сообщение от Avazart Посмотреть сообщение
RichEdit1->Lines->Strings[index] = "some line";
Так просто?
0
15.12.2012, 21:20
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2012, 21:20

Скрыть <iostream> в деталях реализации
Здравствуйте, необходимо переместить #include &lt;iostream&gt; из .h в .cpp, и при этом использовать...

О деталях и возможностях реализации <vector>
Эта тема выделена из темы: http://www.cyberforum.ru/cpp-beginners/thread1703270.html Ну это...

Конфигурация будущего компьютера. Разбор в деталях.
ПОскольку в одной из прошлых постов на эту тему у меня было плохо подобрано железо, то теперь я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.