Re[3]: GUI Терминал
От: Dimonka Верблюд  
Дата: 15.11.05 14:24
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>А не подошли они потаму, что курсор(каретку) там можно мышкой переставить в любое месть — а мне это не надо,

А>напр. в консольном приложении ты же не можешь переставить каретку, ка захочешь!
А>Вот.

А что мешает запретить двигать каретку в Memo/RichEdit?
GUI Терминал
От: Аноним  
Дата: 15.11.05 09:38
Оценка:
Привет всем! Помогите советом или наработками.
Задача такая: нужно создать терминал (что то вроде консольного приложения, но он должен быть обязательно графический)
как это можно сделать проще?
У меня сечас получаеться так — создаю компонент TPanel (вообще не важно — использую просто его Handle), далее создаю каретку, перемещаю ее и вывожу TextOut'ом, но все это с буферами, координатами и жутко неудобной работой с фокусом элемента
может есть какой компонент для этих целей?
Re: GUI Терминал
От: Аноним  
Дата: 15.11.05 13:45
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Привет всем! Помогите советом или наработками.

А>Задача такая: нужно создать терминал (что то вроде консольного приложения, но он должен быть обязательно графический)
А>как это можно сделать проще?
А>У меня сечас получаеться так — создаю компонент TPanel (вообще не важно — использую просто его Handle), далее создаю каретку, перемещаю ее и вывожу TextOut'ом, но все это с буферами, координатами и жутко неудобной работой с фокусом элемента
А>может есть какой компонент для этих целей?

Что-то я не пойму, а чем стандартные TMemo/TRichEdit не подошли?
Re[2]: GUI Терминал
От: Аноним  
Дата: 15.11.05 14:15
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Что-то я не пойму, а чем стандартные TMemo/TRichEdit не подошли?
А не подошли они потаму, что курсор(каретку) там можно мышкой переставить в любое месть — а мне это не надо,
напр. в консольном приложении ты же не можешь переставить каретку, ка захочешь!
Вот.
Re[4]: GUI Терминал
От: Аноним  
Дата: 15.11.05 15:03
Оценка:
Здравствуйте, Dimonka, Вы писали:

D>А что мешает запретить двигать каретку в Memo/RichEdit?

Ну так скажи, как это сделать.
Буду благодарен.
Re[5]: GUI Терминал
От: Dimonka Верблюд  
Дата: 15.11.05 15:09
Оценка:
Здравствуйте, Аноним, Вы писали:

D>>А что мешает запретить двигать каретку в Memo/RichEdit?

А>Ну так скажи, как это сделать.
А>Буду благодарен.

Так ты скажи, чего хочешь добиться. Если не хочешь, чтобы RichEdit мышкой кликался — отреж ему мышиные события.
я не совсем понимаю для чего сохранять позицию курсора, откуда такие требования? На мой взгляд достаточно сделать ReadOnly, иначе это какое-то имитирование древних устройств..

Но если конечно интересно, можешь и на панеле текст рисовать..
Re[5]: GUI Терминал
От: TObject Россия  
Дата: 15.11.05 15:21
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Здравствуйте, Dimonka, Вы писали:


D>>А что мешает запретить двигать каретку в Memo/RichEdit?

А>Ну так скажи, как это сделать.
А>Буду благодарен.
Запрет на клавиши перемещения курсора(Arrow,Home,End etc) + запрет на щелочк мыши.....первое, что пришло в голову.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[6]: GUI Терминал
От: Аноним  
Дата: 16.11.05 07:58
Оценка:
Здравствуйте, Dimonka, Вы писали:

D>Здравствуйте, Аноним, Вы писали:


D>>>А что мешает запретить двигать каретку в Memo/RichEdit?

А>>Ну так скажи, как это сделать.
А>>Буду благодарен.

D>Так ты скажи, чего хочешь добиться. Если не хочешь, чтобы RichEdit мышкой кликался — отреж ему мышиные события.

D>я не совсем понимаю для чего сохранять позицию курсора, откуда такие требования? На мой взгляд достаточно сделать ReadOnly, иначе это какое-то имитирование древних устройств..

D>Но если конечно интересно, можешь и на панеле текст рисовать..

"
Не то чтобы мне это было очень интересно, но необходимо создать что-то вроде HyperTerminal — а, тот, что в винде в стандартных программах, но только без глюков
Задача вообще такая — есть устройство , работающее через com порт, необходимо создать сервер, который команды для этого устройства сттавит в очередь и по очереди их отправляет в устройство, плюс там авторизация изменене протокола и еще куча фишочек. По телнету с этим сервером соединяються клиенты. так вот нужено еще чтоб локальный пользователь (без телнета) имел доступ к устройству, причем с GUI терминалом (локальный пользователь — старушка, которая привыкла к определенной программе и уже другой интерфейс не воспринимает).
Re[6]: GUI Терминал
От: Аноним  
Дата: 16.11.05 08:03
Оценка:
Здравствуйте, TObject, Вы писали:

TO>Здравствуйте, <Аноним>, Вы писали:


А>>Здравствуйте, Dimonka, Вы писали:


D>>>А что мешает запретить двигать каретку в Memo/RichEdit?

А>>Ну так скажи, как это сделать.
А>>Буду благодарен.
TO>Запрет на клавиши перемещения курсора(Arrow,Home,End etc) + запрет на щелочк мыши.....первое, что пришло в голову.

запрет на клавиши перемещения курсора — не даст возможность действительно его перемещать! Если я правильно понял — запрет можно сделать в событии OnKeyDown (Kye := 0) — но это не такая большая проблема. а вот запрет на клацканье мышой не даст вообще переместить фокус воода !!! получаеться терминал только на вывод работать будет.
Re[6]: GUI Терминал
От: Аноним  
Дата: 16.11.05 08:04
Оценка:
Здравствуйте, Dimonka, Вы писали:

D>Но если конечно интересно, можешь и на панеле текст рисовать..


проблема еще такая — после перемещения каретки — остаеться след и текст получаетьсяч как-бы подчеркнутым
Re: GUI Терминал
От: vdimas Россия  
Дата: 16.11.05 08:26
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Привет всем! Помогите советом или наработками.

А>Задача такая: нужно создать терминал (что то вроде консольного приложения, но он должен быть обязательно графический)
А>как это можно сделать проще?
А>У меня сечас получаеться так — создаю компонент TPanel (вообще не важно — использую просто его Handle), далее создаю каретку, перемещаю ее и вывожу TextOut'ом, но все это с буферами, координатами и жутко неудобной работой с фокусом элемента
А>может есть какой компонент для этих целей?

Я не дельфист, забрел случайно, поэтому подскажу более "виндовое" решение.

1. Если это у тебя терминал, то у тебя должно быть понятие экранного буфера.
2. Экранный буфер может вмещать больше строк, чем видно на экране.
3. Конкатенировать строки в терминале не обязательно (т.е. терминал не обязан хранить свой текст в виде одной строки), можно прямо так и хранить — фиксированное количество символов на строку. Это избавит тебя от постоянного перераспределения памяти по приходу каждого символа. Т.е. можно использовать фиксированный для текущего сеанса буфер строк.
4. Очевидно, буфер может быть кольцевым, т.е. копировать при переводе строки ничего никуда не нужно.
5. Сделай отрисовку экранной области самостоятельно. У тебя фиксированный шрифт, ты можешь узнать ширину символа, затем вычисли "невалидный" прямоугольник в координатах символов (а не точек), затем прорисуй подстроки только требуемых строк (т.е. рисовать лишнее не обязательно)

Вроде, ничего сложного, но должно получиться легковесное по отношению к ресурсам и шустрое приложение.
Re[7]: GUI Терминал
От: Dimonka Верблюд  
Дата: 16.11.05 08:32
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Задача вообще такая — есть устройство , работающее через com порт, необходимо создать сервер, который команды для этого устройства сттавит в очередь и по очереди их отправляет в устройство, плюс там авторизация изменене протокола и еще куча фишочек. По телнету с этим сервером соединяються клиенты. так вот нужено еще чтоб локальный пользователь (без телнета) имел доступ к устройству, причем с GUI терминалом (локальный пользователь — старушка, которая привыкла к определенной программе и уже другой интерфейс не воспринимает).


Ну и ставь Мемо, отключай от него события мыши, drug'n'drop и клавиш. Будет тебе терминал. Или даже проще — сделай так, чтобы онo никогда не получалo фокус иля спряч каретку, сделай моноширинный шрифт, курсор рисуй каким-нибудь изменяющимся символом, наприер чередование м "|" и пробела.
Re: GUI Терминал
От: wellwell Австралия https://www.softperfect.com
Дата: 16.11.05 08:44
Оценка:
wrote in message news:1488515@news.rsdn.ru...
> может есть какой компонент для этих целей?

Готовые терминалы есть в AsyncPro (freeware) и Internet Component Suite By Francois Piette.
Posted via RSDN NNTP Server 1.9
Re[2]: GUI Терминал
От: Клоун Россия  
Дата: 16.11.05 10:34
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Здравствуйте, Аноним, Вы писали:


А>>Привет всем! Помогите советом или наработками.

А>>Задача такая: нужно создать терминал (что то вроде консольного приложения, но он должен быть обязательно графический)
А>>как это можно сделать проще?
А>>У меня сечас получаеться так — создаю компонент TPanel (вообще не важно — использую просто его Handle), далее создаю каретку, перемещаю ее и вывожу TextOut'ом, но все это с буферами, координатами и жутко неудобной работой с фокусом элемента
А>>может есть какой компонент для этих целей?

V>Я не дельфист, забрел случайно, поэтому подскажу более "виндовое" решение.


V>1. Если это у тебя терминал, то у тебя должно быть понятие экранного буфера.

V>2. Экранный буфер может вмещать больше строк, чем видно на экране.
V>3. Конкатенировать строки в терминале не обязательно (т.е. терминал не обязан хранить свой текст в виде одной строки), можно прямо так и хранить — фиксированное количество символов на строку. Это избавит тебя от постоянного перераспределения памяти по приходу каждого символа. Т.е. можно использовать фиксированный для текущего сеанса буфер строк.
V>4. Очевидно, буфер может быть кольцевым, т.е. копировать при переводе строки ничего никуда не нужно.
V>5. Сделай отрисовку экранной области самостоятельно. У тебя фиксированный шрифт, ты можешь узнать ширину символа, затем вычисли "невалидный" прямоугольник в координатах символов (а не точек), затем прорисуй подстроки только требуемых строк (т.е. рисовать лишнее не обязательно)

V>Вроде, ничего сложного, но должно получиться легковесное по отношению к ресурсам и шустрое приложение.


Списибо большое — это то, чего я хотел
И вопрос еще — проблема с отрисовкой. Тут два варианта
1 — после каждого изменения буфера перерисовывать всю область окна
2 — после каждого изменения буфера просто прорисовывать один символ
имеються такие проблемы
1 — возможно мерцание экрана (я пока не проверял)
2 — (проверял) может оставаться след от курсора
Re[2]: GUI Терминал
От: Клоун Россия  
Дата: 16.11.05 10:45
Оценка:
Здравствуйте, wellwell, Вы писали:

W>wrote in message news:1488515@news.rsdn.ru...

>> может есть какой компонент для этих целей?

W>Готовые терминалы есть в AsyncPro (freeware) и Internet Component Suite By Francois Piette.


Подскажи , пожалуйста — где качнуть?
Re[3]: GUI Терминал
От: Danchik Украина  
Дата: 16.11.05 11:56
Оценка:
Здравствуйте, Клоун, Вы писали:

К>Здравствуйте, wellwell, Вы писали:


W>>wrote in message news:1488515@news.rsdn.ru...

>>> может есть какой компонент для этих целей?

W>>Готовые терминалы есть в AsyncPro (freeware) и Internet Component Suite By Francois Piette.


К>Подскажи , пожалуйста — где качнуть?


TurboPower Internet Professional — здесь есть терминал
Re[4]: GUI Терминал
От: Клоун Россия  
Дата: 16.11.05 11:59
Оценка:
Спасибо — попробую
Re: GUI Терминал
От: Black-bear2  
Дата: 16.11.05 12:08
Оценка:
просто кладешь два TMemo. сверху ReadOnly, а в нижнем вводишь. по Enter-у добавляешь содержимое нижнего в верхний и очищаешь нижний.
Re[2]: GUI Терминал
От: Клоун Россия  
Дата: 16.11.05 12:20
Оценка:
Здравствуйте, Black-bear2, Вы писали:

BB>просто кладешь два TMemo. сверху ReadOnly, а в нижнем вводишь. по Enter-у добавляешь содержимое нижнего в верхний и очищаешь нижний.

Неподходит — должно быть один контрол — идля ввода и для вывода — как конслоная программа
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.