1 / 1 / 1
Регистрация: 15.01.2013
Сообщений: 43
1

Бегущая строка. Нужно выполнить в форме (Form), с кнопками и т.п

16.04.2013, 15:55. Показов 3512. Ответов 17
Метки нет (Все метки)

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

Помогите друзья/товарищи. Знаю что многих задевает то, что люди задают подобные вопросы, не приложив свои примеры, как это вышло у него. Если Вы именно такой человек, лучше не трепите себе нервы, просто не помогайте. Поясню немножечко свою ситуацию, я первокурсник, учусь на программиста, как это было у многих, наш препод сразу дал нам знать, буквально следующее:"Я не должен учить вас, моя задача просто проверять ваши знания, так что как вы выучите программирование меня крайне мало тревожит". Каждое занятие, он пытается закрыть сразу 3-5 тем, бегло обьясняя нам суть,в конце-концов приводить пример программы, которая не работает. Четно обещает исправить её на следующем занятии, но и тогда они редко у него начинают работать)) Получаем результат, я практически чайник... Конечно же я уже попробовал сам что-то найти, почитать, многие обьясняют как это выполнить в лэйбле. Я выполнил что-то похожее с таймером, но текст двигается ужасно медленно. Не ругайте меня сильно, вдруг я пропустил уже готовые варианты, каюсь(укажите на них, если моя задача решена в них полностью). Войдите в положение(знаю что надоели уже эти сопли и т.п. Т_Т). К следующему вторнику мне нужно будет доделать ещё 10 лаб. и вот этот курсачь(желательно), чтобы уточнить у препода все недостатки и огрехи. От души желаю всем добра и позитива, если Вы и не сможете помочь, то всё равно я Вам благодарен, ведь Вы уделили моей проблеме, своё драгоценное время!
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.04.2013, 15:55
Ответы с готовыми решениями:

Бегущая строка поверх всех блоков на форме
Доброго времени суток! Вопрос гуру Visual Basic Подскажите пожалуйста как сделать бегущую...

Апплет "бегущая строка", найти ошибку, строка не останавливается и бежит по второму кругу
Заранее извиняюсь если не туда написал, суть вопроса: у меня стоит задача написать апплет, в...

Нужно сделать цикл, вычисляющий, есть ли значения в форме, если нет, выполнить новое условие
Всем привет! В VBA недавно начал работать, и сейчас немного запнулся на одном месте. Бьюсь об...

Бегущая строка
Есть код бегущей строки, но не могу разобраться так как много в нём мне незнакомого (fs, in как-то...

17
LK
Заблокирован
16.04.2013, 16:04 2
если бы вы вместо этих многослов, в которые не очень верится, воспользовались этим или просто посмотрели Похожие темы внизу страницы, вопрос, возможно, был бы уже решен.

Добавлено через 4 минуты
Бегущая строка моргает (label)
Не правильная бегущая строка
бегущая строка
Текст в иконке трея
Различные дополнения
думаю, для вашей задачи достаточно
1
BRcr
16.04.2013, 16:54
  #3

Не по теме:

Проникнитесь да сжальтесь - прям крик души.
Turbokill, а работать ты потом после учебы так же собираешься? Помогите люди добрые, работать времени нет или не умею, а деньги нужны...:D

2
1 / 1 / 1
Регистрация: 15.01.2013
Сообщений: 43
16.04.2013, 18:24  [ТС] 4
Цитата Сообщение от LK Посмотреть сообщение
если бы вы вместо этих многослов, в которые не очень верится, воспользовались этим или просто посмотрели Похожие темы внизу страницы, вопрос, возможно, был бы уже решен.

Добавлено через 4 минуты
Бегущая строка моргает (label)
Не правильная бегущая строка
бегущая строка
Текст в иконке трея
Различные дополнения
думаю, для вашей задачи достаточно
Это всё уже проштудировано, но где там описан способ изменения направления текста? Как созадать кнопку с палитрой цветов, чтобы выбрать любой. Как изменить фон, а главное как сделать так, чтобы текст бегущей строки считывался с любого текстового файла?? Там нет этого, разве не так? Бегущую строку из 3 слов сделать то я могу, а вот эти заморочки с интерфейсом и т.п. увы!
0
LK
Заблокирован
16.04.2013, 21:34 5
Turbokill, порядок такой: выкладываете здесь свои наработки и описываете возникшие проблемы, сообщество чем может, тем помогает.
Цитата Сообщение от Turbokill Посмотреть сообщение
Это всё уже проштудировано, но где там описан способ изменения направления текста? Как созадать кнопку с палитрой цветов, чтобы выбрать любой. Как изменить фон, а главное как сделать так, чтобы текст бегущей строки считывался с любого текстового файла?? Там нет этого, разве не так? Бегущую строку из 3 слов сделать то я могу, а вот эти заморочки с интерфейсом и т.п. увы!
- а в таком тоне здесь общаться не принято.

1. Изменения направления текста - достаточно указать в Инспекторе объектов.
2. Как созадать кнопку с палитрой цветов, чтобы выбрать любой - использовать компонент выбора цвета, таких есть даже два.
3. Как изменить фон - например, изменить фон компонента TLabel в Инспекторе обхектов.
4. Главное как сделать так, чтобы текст бегущей строки считывался с любого текстового файла - это не главное, это мелочь, лечится использованием LoadFromFile(filename).

Все есть, но вы даже не пытались.
0
1 / 1 / 1
Регистрация: 15.01.2013
Сообщений: 43
19.04.2013, 15:35  [ТС] 6
Цитата Сообщение от LK Посмотреть сообщение
Turbokill, порядок такой: выкладываете здесь свои наработки и описываете возникшие проблемы, сообщество чем может, тем помогает.
- а в таком тоне здесь общаться не принято.

1. Изменения направления текста - достаточно указать в Инспекторе объектов.
2. Как созадать кнопку с палитрой цветов, чтобы выбрать любой - использовать компонент выбора цвета, таких есть даже два.
3. Как изменить фон - например, изменить фон компонента TLabel в Инспекторе обхектов.
4. Главное как сделать так, чтобы текст бегущей строки считывался с любого текстового файла - это не главное, это мелочь, лечится использованием LoadFromFile(filename).

Все есть, но вы даже не пытались.
Извиняюсь конечно, но я нивкоем разе не пытался грубить, говорить в "таком тоне" и т.п. В общем я сделал бегущую строку, могу приложить её. Меня интересует то, можно ли сделать такую кнопку, чтобы она в точности повторяла функционал Font, а то в инспекторе обьектов это так удобно, но нужно именно через кнопку. Тоже самое с направление текста, как оформить это через кнопки?(Допустим обычными баттонами, просто стрелочки нарисовать влево/вправо). Насчёт компонента цвета, нашёл в диалогах, коллордиалог, но не разобрался как работает, ведь он пропадает как и таймер, после запуска.(но если получиться организовать кнопку с функционалом, фонт все проблемы с изменением шрифта отпадут). С фоном опять же через кнопочку надо, чтобы нажал, появилась палитра к примеру, выбрал и всё. Ну а с открытием текстов и сохранением, сейчас работаю. Большое спасибо , что помогаете! Зря Вы думаете, что я ничерта не делаю, помимо курсача, у меня 10 лаб, но они никак не связанны с формой, вот уже сделал несколько.
0
4039 / 2329 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
19.04.2013, 15:56 7
Каждый раз собираешься спрашивать разрешение выложить код, с которым тебе нужна помощь? Это будет довольно долго и неэффективно, учти.

По поводу шрифта - есть TFontDialog. Пример работы - TFontDialog.Execute
По поводу цвета, вот пример - TColorDialog.Execute

Советую читать справку повнимательнее и почаще, ибо там есть большая часть ответов на возникающие у новичков вопросы.
0
1 / 1 / 1
Регистрация: 15.01.2013
Сообщений: 43
05.05.2013, 20:56  [ТС] 8
Цитата Сообщение от BRcr Посмотреть сообщение
Каждый раз собираешься спрашивать разрешение выложить код, с которым тебе нужна помощь? Это будет довольно долго и неэффективно, учти.

По поводу шрифта - есть TFontDialog. Пример работы - TFontDialog.Execute
По поводу цвета, вот пример - TColorDialog.Execute

Советую читать справку повнимательнее и почаще, ибо там есть большая часть ответов на возникающие у новичков вопросы.
Практически сделал уже всю работу, но теперь такая загвостка, не выходит открывать и сохранять файл, хотя с изменением шрифта всё в порядке.
Подскажите что не так, вроде всё как надо прописываю.
Для открытия файла прописываю:
C++
1
2
 if(OpenDialog1->Execute())
Edit1->Lines->LoadFromFile(OpenDialog1->FileName);
Ошибку выдаёт:[C++ Error] Unit1.cpp(60): E2316 'Lines' is not a member of 'TEdit'
С сохранением тоже самое:
C++
1
2
if(SaveDialog1->Execute()) 
Label1->Lines->SaveToFile(SaveDialog1->FileName);
Выдаёт:[C++ Error] Unit1.cpp(60): E2316 'Lines' is not a member of 'TLabel'
Ну и я ещё хотел добавить функцию очистки, тоже не хочет работать:
C++
1
Edit1->Clear;
Пишет:
[C++ Error] Unit1.cpp(59): E2235 Member function must be called or its address taken
Подскажите что не так, вроде для изменения шрифта прописал :
C++
1
2
if(FontDialog1->Execute()) 
Label1->Font=FontDialog1->Font;
всё прекрасно работает. Если совсем глупая ошибка, не ругайтесь, я ещё чайник, только 1 курс =) С изменением фона бегущей строки и направлением движения, думаю разберусь, но если не трудно, подскажите что нужно использовать для этого, или какую команду прописать в кнопке. Хотел добавить обновлённую программу, мб кому и понадобиться, но что-то не нашёл как это сделать повторно, поэтому вот код программы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int x = 4;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner):TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  if (Label1->Left+Label1->Width <= Panel2->Width-Panel2->Width)Label1->Left = Panel2->Width;
  Label1->Left = Label1->Left - x;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
  if (Sender == SpeedButton1)Label1->Caption = Edit1->Text;
  if (Sender == SpeedButton2)
    {
      Timer1->Interval = Timer1->Interval - 10;
      x += 2;
      if (Timer1->Interval == 1)SpeedButton2->Enabled = false;
      Label2->Caption = IntToStr(101 - Timer1->Interval);
      SpeedButton3->Enabled = true;
    }
  if (Sender == SpeedButton3)
    {
      Timer1->Interval = Timer1->Interval + 10;
      x -= 2;
      if (Timer1->Interval == 101)SpeedButton3->Enabled = false;
      if (Timer1->Interval == 101)Label2->Caption = IntToStr(102 - Timer1->Interval);
      else Label2->Caption = IntToStr(101 - Timer1->Interval);
      SpeedButton2->Enabled = true;
    }
 
 
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::N5Click(TObject *Sender)
{
if(FontDialog1->Execute())
Label1->Font=FontDialog1->Font;
}
//---------------------------------------------------------------------------
0
1695 / 892 / 206
Регистрация: 25.11.2009
Сообщений: 1,827
05.05.2013, 21:01 9
Ни у эдита, ни у лейбла нет свойства Lines
0
4039 / 2329 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
05.05.2013, 22:27 10
Цитата Сообщение от Lelik-pahan Посмотреть сообщение
Ни у эдита, ни у лейбла нет свойства Lines...
... , у них есть свойства Text и Caption соответственно, которые представляют из себя по одной строчке каждое. Поэтому их можно запихнуть в TStringList, а потом уже сохранить всем скопом.
Можно еще использовать TIniFile, чтоб сохранять каждую строчку отдельно.
0
1 / 1 / 1
Регистрация: 15.01.2013
Сообщений: 43
06.05.2013, 16:24  [ТС] 11
Цитата Сообщение от BRcr Посмотреть сообщение
... , у них есть свойства Text и Caption соответственно, которые представляют из себя по одной строчке каждое. Поэтому их можно запихнуть в TStringList, а потом уже сохранить всем скопом.
Можно еще использовать TIniFile, чтоб сохранять каждую строчку отдельно.
Спасибо, сейчас буду пробовать =)

Добавлено через 51 минуту
Цитата Сообщение от Lelik-pahan Посмотреть сообщение
Ни у эдита, ни у лейбла нет свойства Lines
Что-то не выходит, всё время выдаёт ошибки. Вы говорите я даже не добавил на форму сейф диалог, хотя у меня всё есть. С изменением шрифта всё сработало, добавил ещё сэйф и опен диалоги, с ними не хочет работать. Сейчас попробовал не сохранять, а открывать файл:
C++
1
2
 if(OpenDialog1->Execute())
Edit1->Text->LoadFromFile(OpenDialog1->FileName);
Пишет:
[C++ Error] Unit1.cpp(60): E2288 Pointer to structure required on left side of -> or ->*
0
4039 / 2329 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
06.05.2013, 16:35 12
Цитата Сообщение от Turbokill Посмотреть сообщение
Edit1->Text->LoadFromFile(OpenDialog1->FileName);
Свойство Text имеет тип String, поэтому у него нет метода LoadFromFile() - это во-первых, а во-вторых, Text - не указатель, а непосредственно сам объект, поэтому обращаться к его методам и свойствам следует через точку:
C++
1
if ( Edit1->Text.IsEmpty(  ) ) ShowMessage( "Edit1->Text - пустая строка" );
0
1695 / 892 / 206
Регистрация: 25.11.2009
Сообщений: 1,827
06.05.2013, 16:41 13
Turbokill, исходя из того, что ты писал мне в личку, выходит, что тебе нужно открывать и сохранять МНОГОСТРОЧНЫЙ текст.
Тебе нужно использовать не эдит и не лэйбл, а мемо (TMemo, в палитре компонентов находится сразу после эдита).
А вот с Memo уже можно работать так, как ты и пытался в начале
C++
1
2
3
Memo1->Lines->LoadFromFile(OpenDialog1->FileName);
 
Memo1->Lines->SaveToFile(SaveDialog1->FileName);
чтобы была прокрутка установи у свойства ScrollBars значение ssBoth
0
1 / 1 / 1
Регистрация: 15.01.2013
Сообщений: 43
06.05.2013, 17:16  [ТС] 14
Цитата Сообщение от Lelik-pahan Посмотреть сообщение
Turbokill, исходя из того, что ты писал мне в личку, выходит, что тебе нужно открывать и сохранять МНОГОСТРОЧНЫЙ текст.
Тебе нужно использовать не эдит и не лэйбл, а мемо (TMemo, в палитре компонентов находится сразу после эдита).
А вот с Memo уже можно работать так, как ты и пытался в начале
C++
1
2
3
Memo1->Lines->LoadFromFile(OpenDialog1->FileName);
 
Memo1->Lines->SaveToFile(SaveDialog1->FileName);
чтобы была прокрутка установи у свойства ScrollBars значение ssBoth
Пробую!

Добавлено через 12 минут
Цитата Сообщение от Lelik-pahan Посмотреть сообщение
Turbokill, исходя из того, что ты писал мне в личку, выходит, что тебе нужно открывать и сохранять МНОГОСТРОЧНЫЙ текст.
Тебе нужно использовать не эдит и не лэйбл, а мемо (TMemo, в палитре компонентов находится сразу после эдита).
А вот с Memo уже можно работать так, как ты и пытался в начале
C++
1
2
3
Memo1->Lines->LoadFromFile(OpenDialog1->FileName);
 
Memo1->Lines->SaveToFile(SaveDialog1->FileName);
чтобы была прокрутка установи у свойства ScrollBars значение ssBoth
Отлично, вроде как всё работает, и что я сразу не першёл на Мемо, только теперь такое дело, как удалить надпись Memo 1? Чтобы просто пустое окошечко было для ввода текста?

Добавлено через 18 минут
Цитата Сообщение от Lelik-pahan Посмотреть сообщение
Turbokill, исходя из того, что ты писал мне в личку, выходит, что тебе нужно открывать и сохранять МНОГОСТРОЧНЫЙ текст.
Тебе нужно использовать не эдит и не лэйбл, а мемо (TMemo, в палитре компонентов находится сразу после эдита).
А вот с Memo уже можно работать так, как ты и пытался в начале
C++
1
2
3
Memo1->Lines->LoadFromFile(OpenDialog1->FileName);
 
Memo1->Lines->SaveToFile(SaveDialog1->FileName);
чтобы была прокрутка установи у свойства ScrollBars значение ssBoth
Вухуху!!! Спасибо за такую постую идею, которую Вы мне подкинули, теперь всё замечательно работает, сейчас буду думать как сделать кнопки для изменения направления движения текста + фон. Если знаете что-то по этой теме, буду рад услышать.
0
1695 / 892 / 206
Регистрация: 25.11.2009
Сообщений: 1,827
06.05.2013, 17:20 15
В режиме конструктора в инспекторе объектов у мемо есть свойство Lines. там нажми на кнопку с троеточием, откроется окно. Дальше разберёшься.
Или можешь в конструкторе формы написать
C++
1
Memo1->Clear();
Добавлено через 2 минуты
Цитата Сообщение от Turbokill Посмотреть сообщение
сейчас буду думать как сделать кнопки для изменения направления движения текста + фон. Если знаете что-то по этой теме, буду рад услышать.
Я же писал, за последние полмесяца уже несколько тем было про бегущую строку, там вся реализация, включая направление движения текста. Воспользуйся поиском по форуму.
0
1 / 1 / 1
Регистрация: 15.01.2013
Сообщений: 43
06.05.2013, 20:19  [ТС] 16
Цитата Сообщение от BRcr Посмотреть сообщение
Свойство Text имеет тип String, поэтому у него нет метода LoadFromFile() - это во-первых, а во-вторых, Text - не указатель, а непосредственно сам объект, поэтому обращаться к его методам и свойствам следует через точку:
C++
1
if ( Edit1->Text.IsEmpty(  ) ) ShowMessage( "Edit1->Text - пустая строка" );
Спасибо за помощь, программа на стадии завершения, осталось сделать кнопки со сменой движения направления текста. Появилась загвостка, при запуске программы сразу же начинает бежать текст справа-налево, я организовал движение таким способом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  if (Label1->Left+Label1->Width <= Panel2->Width-Panel2->Width)Label1->Left = Panel2->Width;
  Label1->Left = Label1->Left - x;
// Как я понял, чтобы поменять направление, можно сделать так:
Label1->Left = Label1->Left - x; // движение влево,
Label1->Left = Label1->Left + x; // движение вправо
Label1->Top = Label1->Top - x; // вниз
Label1->Top = Label1->Top + x; // вверх
// это движение влево в низ по диагонали
Label1->Top = Label1->Top - x;
Label1->Left = Label1->Left - x;
Но проблема в том, что при нажатии на кнопку,текст на долю секунды смещается в то или иное направление, после чего продолжает движение по ранее заданному курсу(справа-налево). Я думаю мб, можно сделать такую кнопку, которая вечно включена, но это наверное приведёт к тому что текст будет бороться, куда же ему ехать. Подскажите как это исправить?
0
1695 / 892 / 206
Регистрация: 25.11.2009
Сообщений: 1,827
06.05.2013, 20:28 17
Turbokill, ну что же, так сложно нажать на кнопку поиск?

делай в таймере как и раньше, всегда
C++
1
Label1->Left = Label1->Left + x;
А по нажатию кнопок меняй значение x
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//движение вправо
void __fastcall TForm1::B_RightClick(TObject *Sender)
{
    x = 5;
}
//---------------------------------------------------------------------------
//движение влево
void __fastcall TForm1::B_LeftClick(TObject *Sender)
{
    x = -5;
}
//---------------------------------------------------------------------------
//сменить направление движения
void __fastcall TForm1::B_ReverseClick(TObject *Sender)
{
    x *= -1;  //то же самое, что и  x = x * (-1)
}
Учти, что переменная x должна быть объявлена глобально
0
1 / 1 / 1
Регистрация: 15.01.2013
Сообщений: 43
06.05.2013, 21:45  [ТС] 18
Цитата Сообщение от Lelik-pahan Посмотреть сообщение
Turbokill, ну что же, так сложно нажать на кнопку поиск?

делай в таймере как и раньше, всегда
C++
1
Label1->Left = Label1->Left + x;
А по нажатию кнопок меняй значение x
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//движение вправо
void __fastcall TForm1::B_RightClick(TObject *Sender)
{
    x = 5;
}
//---------------------------------------------------------------------------
//движение влево
void __fastcall TForm1::B_LeftClick(TObject *Sender)
{
    x = -5;
}
//---------------------------------------------------------------------------
//сменить направление движения
void __fastcall TForm1::B_ReverseClick(TObject *Sender)
{
    x *= -1;  //то же самое, что и  x = x * (-1)
}
Учти, что переменная x должна быть объявлена глобально
Блин да не выходит и всё, не думал что так будет сложно сделать какие-то кнопки...Сижу битый час и 0 результата, выдаёт ошибку при добавлении Label1->Left = Label1->Left + x; в таймер, я правильно понял , нужно просто else прописать? А на счёт поисковика, я не нашёл как это сделать. Помогите пожалуйста, ну никак не выходит... =(
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.05.2013, 21:45
Помогаю со студенческими работами здесь

Бегущая строка
Как сделать бегущую строку без мерцания с Canvas и чтобы резало примерно так: Бегущая строка ...

Бегущая строка.
Нужно эмитировать на экране бегущую строку, размер любой,чтобы четко проходила строку вот так : ...

Бегущая строка
Всем Привет, в общем...нужна бегущая строка у которой будет прозрачный фон и которая будет...

бегущая строка
Подскажите, как сделать бегущую строку, как в этом примере для заголовка?

Бегущая строка
На форме создан текстбокс, как организовать в нем бегущую строку методами ВБА ВОРД? Заранее спасибо.

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru