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


Автор: TP@MB@Y 20.5.2006, 22:37
Хочу динамически создавать кнопку напротив нужного текста в RichEdit. 
Что-то не получается, даже, если вручную на него положить кнопку, то она не видна. 
У кого какие соображения на этот счет? smile

PS Задача у меня такая: я ввывожу текст на экран(через richedit). Текст этот - некая информация, разделенная на части. Вот хочу сделать, чтобы пользователь мог кликать по нужной части(ну хотябы по кнопочке напротив этого текста) и тем самым было ясно что пользователь выбрал.  

Автор: TP@MB@Y 21.5.2006, 01:40
Упс... Меня что-то сглючило. Прошу модераторов перенести в общий раздел тему...
Заранее спасибо и сорри 

Автор: Sunvas 21.5.2006, 02:02
TP@MB@Y, что-то понять трудновато.. Приведи пример кода, нарисуй в паинте нужный результат.. 

Автор: Poseidon 21.5.2006, 04:11
Цитата(TP@MB@Y @  20.5.2006,  22:37 Найти цитируемый пост)
Хочу динамически создавать кнопку
 Ну тык создавай smile

Код
var Btn: TButton;
begin
Btn:= TButton.Create(nil);
Btn.Parent:= Form1 ;
Btn.Left:= 5;
Btn.Top:= 5;
end;
 Left и Top указывай те, что тебе надо. Обработчик OnClick тоже сам присваивай. 

Автор: Sunr1se 21.5.2006, 09:08
Цитата(TP@MB@Y @  20.5.2006,  22:37 Найти цитируемый пост)
даже, если вручную на него положить кнопку, то она не видна

Правой кнопкой на Button'е->Control->Bring To Front
Может быть создать таких кнопок побольше, сделать их невидимыми, а в нужный момент перемещать их на RichEdit? Некрасиво и неудобно, но все же... 

Автор: Poseidon 21.5.2006, 10:49
Цитата(Sunr1se @  21.5.2006,  09:08 Найти цитируемый пост)
Может быть создать таких кнопок побольше, сделать их невидимыми, а в нужный момент перемещать их на RichEdit? 
 И сколько ты их сделаешь? 100? 500? А вдруг все-равно не хватить? Для этой задачи правильнее создавать динамичсески.

 

Автор: TP@MB@Y 21.5.2006, 14:26
Poseidon, 
Sunr1se, 
Спасибо, буду пробовать


Sunvas,  ну куском кода тут не обойтись) Вобщем я по заданным параметрам генерирую табулатуры (например аккордов). И мне хочется, чтобы пользователь мог только одним кликом выбрать нужную табулатуру(она в виде текста в RichEdit) и тем самым прога будет знать что пользователь выбрал и делать нужные действия. 
Вот я и думаю: вывожу табулатуру на экран, потом рядом создаю кнопку, вешаю на нее событие(например присваивание переменной номера табулатуры).
А еще думаю такой вариант: вместо RichEdita поставить чтонибуть типа ListView и сделать один столбец, чтобы в каждой ячейке был текст(многострочный) и тогда не надо будет заморачиваться с кнопками... 

Как думаете? 

Автор: Sunr1se 21.5.2006, 16:23
Я думаю, что под эти нужды можно заточить Virtual Treeview:
http://www.delphi-gems.com/VirtualTreeview/
Там в демке есть то, что тебе нужно: список, и напротив каждого элемента стоит либо CheckBox, либо RadioButton. 

Автор: TP@MB@Y 21.5.2006, 20:28
Sunr1se, 
я посмотрел и пришел к выводу что мне подойдет просто ListView, но там многострочный текст не проходит. Вместо #10#13 выводятся черточки. Что делать? 

Автор: Sunr1se 22.5.2006, 11:41
Там же вроде string используется... Его мнострочным сделать не получится. 

Автор: Sunr1se 22.5.2006, 15:53
Кстати, я сейчас попробовал динамически создавать кнопку на RichEdit'е, так она сверху оказывается, никуда не пропадает.
И еще один вариант. Может быть создавать для каждой табулатуры свой RichEdit и вешать на него событие OnContextPopup? Тогда нужное тебе действие будет происходить при нажатии правой кнопки на RichEdit.
Вот только хватило бы места... smile 

Автор: TP@MB@Y 22.5.2006, 18:26
Sunr1se, 
Не. С кнопками завязано) Я через AdvListView буду делать - там широкие возможности для этого. Но всеравно за помощь smile 

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