Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Имитация окна dos в форме


Автор: Ibragim 21.10.2004, 02:02
Всем ночи доброй. Тут еще один вопрос назрел.
Есть форма, в ней некий объект "окно дос". В него с большой скоростью должна выводиться текстовая информация. Прекрасно работает TMemo.Text := TMemo.Text + 'NewText'; Однако для моей скорости очень много перерисовок и мерцаний. При той же скорости вывода если выводить в окно DOS в полноэкранном режиме (ну, переписать на Pascal'e под DOS) получается, понятное дело, все красивенько и т.п. Может, есть готовые решения для такой задачи? Уж больно неохота в DirectDraw лезть...

Автор: ~FoX~ 21.10.2004, 07:59
А consol appliaction не подойдет?

Автор: Ibragim 21.10.2004, 10:11
К сожалению, нет. Это должно выводиться в рамках большого проекта на отдельно взятой форме.

Автор: p0s0l 21.10.2004, 12:04
Если дело в мерцаниях, попробуй Memo1.DoubleBuffered := True

Автор: Snowy 21.10.2004, 12:12
1. Можно сделать консольное апп и просто воткнуть его поверх своей формы в нужную позицию и нужного размера.
2. Рисовать на канве и скролить блоками вверх.
3. Если такая огромная скорость, то зачем вообще такое окно? Может хватит просто Tlabel?
4. Можно воткнуть , дать ему цвет белый-на-черном и разрешить wrap текста. Написать отдельную функцию, которая будет изменять содержимое этого лабела в зависимости от кол-ва строк в тексте на экран. Только не забыть убрать автосайз. В данном случае никакого скрола, а как раз имитация DOS окна. Только шрифт поставить консольный или хотя бы курьер. Никакого скрола - дискретная перерисовка.

Автор: ~FoX~ 21.10.2004, 12:24
Ibragim
Хм.....офтоп конечно, но зачем выводить на экран то что все равно никто не успивает читать :qstn ?

Автор: Girder 21.10.2004, 13:57
Ibragim тебя спасет... Windows.SetParent (или SetPatent :) )

1)Распакуй архив с сохранением дирректорий
2)Скомпилируй прогу в дирректории Console (PrConsole.dpr)
3)Скомпилируй(Project1.dpr) и запусти :)

PS: Если тебе надо будет досовскую программу запустить вместо PrConsole то... замени PChar(PrConsole) на имя(с полным путем) твоей Dos проги...

Автор: Ibragim 22.10.2004, 18:28
спасибо за кучу вариантов... пробуем! Что-то получится - напишу.

2Fox: там выводятся псевдографикой блочки разных оттенков, типа графика, причем представление информации должно быть именно таким (граафик и т.п не подходит).

2Girder: К сожалению, не спасает... Данные для вывода формируются уж очень сложно, зависят от четырех разных потоков - никак в консоль не завернуть.... К тому же они отображаются еще и в другом представлении.

Автор: Ibragim 22.10.2004, 20:02
2 pOsOl спасибо, ваш вариант самый простой и удачный. Осталась одна проблема - убирать тот текст что уходит вверх, чтобы была имитация окна как в досе. То есть скрол не нужен, нужно чтобы просто текст уходящий вверх "исчезал".
Ничего не насоветуете?

PS Спасибо всем откликнувшимся!

Автор: Pakshin A. S. 22.10.2004, 20:06
Как я понял, речь о Memo...
Код

if Memo.Lines.Count =  MaxCount
 then
  Memo1.Lines.Delete(0);
Memo1.Lines.Add('some text');

Вроде так...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)