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


Автор: DIFox 31.10.2009, 17:22
Добрый день.  Есть TMemo1. В нём  есть определённый текст. Мне надо чтобы при включении CheckBox в текст вставлялась определённая строчка,и наоборот если Чекбокс активен и я  снимаю галочку то чтрочка удаляется.

ну  к примеру так:

if CheckBox1.Checked then  Memo1.Lines.Insert(0,'1')

else  Memo1.Lines.Delete(0);
end;

те 0 которые я  выделил в коде это номера строк но если их поменять на другие цифры то пчему-то не работает.

Подскажите пожалуйста.

 В принципе  мне без разницы какой это компонет TMemo или что-то другое.

Автор: amsoft 31.10.2009, 17:55
возможно, неправильно указываешь индекс строки для вставки/удаления

ЗЫ к примеру хочешь вставить строку в позицию 1, когда у тебя список пустой

Автор: Данкинг 31.10.2009, 18:02
Цитата(DIFox @  31.10.2009,  17:22 Найти цитируемый пост)
то пчему-то не работает.

Ошибка в 17-й строке?

Автор: DIFox 31.10.2009, 18:08
Цитата

Ошибка в 17-й строке?


Сама программа Запускается  вот толко строчку она не добавляет когда  я активрую чекбокс

Автор: amsoft 31.10.2009, 18:16
Код

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Checked
then Memo1.Lines.Insert(SpinEdit1.Value,'bla-bla-bla')
else Memo1.Lines.Delete(SpinEdit1.Value);
end;


все работает

Автор: DIFox 31.10.2009, 18:27
Цитата

SpinEdit1.Value


1) а что? компонент какой-то

2) если усложнить задачу до 2  чекбоксов и и 2 строчки.

Ставлю 2 чекбокса добавляестся 2 строчки. Снимаю галочку с 1 го пропадает 1 строчка, снимаю со второго пропадает вторая строчка, Ставлю назад галочки, строчки появляются. Как такое сдлеть?

Автор: amsoft 31.10.2009, 18:46
Цитата(DIFox @  31.10.2009,  18:27 Найти цитируемый пост)
а что? компонент какой-то


да. в нем задаешь номер позиции, куда надо вставить/удалить строку

Цитата(DIFox @  31.10.2009,  18:27 Найти цитируемый пост)
Ставлю 2 чекбокса добавляестся 2 строчки. Снимаю галочку с 1 го пропадает 1 строчка, снимаю со второго пропадает вторая строчка, Ставлю назад галочки, строчки появляются. Как такое сдлеть?


еще через три сообщения выяснится, что у тебя три чекбокса ...

обрисуй  полную картину

Автор: DIFox 31.10.2009, 18:59
ну  вообщем так  я хочу сдлеть что-то приблизительное  емулятора.
Будут чекбоксы.
Пользователь будет выбирать какие чекбоксы ему надо. соответсвенно при выборе чекбокса, будет добавлятся строчка. каждый  чекбокс какая-то строчка. Если пользователь ошибся то он забирает галочку и строчка удаляется. вот сообственно и всё.  Попробую тот компонет что вы  мне написали(спасибо). 

Автор: amsoft 31.10.2009, 19:05
DIFox, 
тот компонент я ввел для образца, чтобы ты смог поэкспериментировать с добавлением/удалением строк, задавая индекс строки в процессе выполнения приложения через этот компонент.

Автор: DIFox 31.10.2009, 19:11
не работает.
SpinEdit1.Value:=5;

хочу чтобы  в 5 строчку вставило мой текст.

Даже если выбрать цифру  5 не работатет :(

Автор: amsoft 31.10.2009, 19:30
у тебя есть какой-то список, максимальное кол-во строк в нем известно и каждой строке соответствует свой чекбокс.
если чекбокс отмечен, то соответствующая строка появляется в списке, если нет - то строка удаляется. Правильно понял?

возможно тебе подойдет следующий вариант:

берешь два компонента TCheckListBox и TListBox
в первый заносишь все строки, какие могут быть добавлены в твой список и делаешь следующее


Код

procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
var
X: integer;
begin
ListBox1.Clear;
for X := 1 to CheckListBox1.Items.Count do
    if CheckListBox1.Checked[X-1] then ListBox1.Items.Add(CheckListBox1.Items[X-1]);
end;

Автор: DIFox 31.10.2009, 19:40
не совсем так.

У меня  есть пустое поле для  текста. 
есть чекбоксы.

я  ставлю активрую первый чекбокс, в  текстовом поле, в 1 строчке появляеться строчка текста.
я  ставлю второй чекбокс появляется в тектововом поле, вторая строчка.

Это я  сделал и у меня работает. но вот если конечный пользователь передумает и заберёт галочку с  1 - го чекбокса то должна пропасть 1-ая строчка. заберёт вторую должна пропасть 2-строчка.

Автор: chip_and_dayl 31.10.2009, 19:47
DIFox, 
Зайди в в свойство компонента Мемо Lines через Object  Inspector.  Откроется окно, нажми ентер разика 10. И должно заработать

Добавлено через 2 минуты и 40 секунд
Но в этом случае пользуйся вместо Инсерт и Делете - 
Memo1.Lines[0]:='' (если чек бокс убрат) и Memo1.Lines[0]:='0'  (если есть)
Memo1.Lines[1]:='' (если чек бокс убрат) и Memo1.Lines[1]:='1'  (если есть)

Memo1.Lines[т]:='' (если чек бокс убрат) и Memo1.Lines[т]:='т'  (если есть)

Автор: DIFox 31.10.2009, 19:52
Цитата

Зайди в в свойство компонента Мемо Lines через Object  Inspector.  Откроется окно, нажми ентер разика 10. И должно заработать



всё  спасибо огромное)) помогло

Автор: chip_and_dayl 31.10.2009, 19:53
Капец. Не знаю как удалить сообщениеsmile


З. Ы. Пожалуйстаsmile

Автор: amsoft 31.10.2009, 19:59
Цитата(DIFox @  31.10.2009,  19:40 Найти цитируемый пост)
Это я  сделал и у меня работает. но вот если конечный пользователь передумает и заберёт галочку с  1 - го чекбокса то должна пропасть 1-ая строчка. заберёт вторую должна пропасть 2-строчка.


если всего два чекбокса, 
то при установке/снятии первого флажка всегда вставляется/удаляется строка с индексом 0
при установке/снятии второго флажка следует смотреть на состояние первого - если он выделен, то вставляешь/удаляешь строку с индексом 1, если снят - работаешь со строкой с индексом 0

Автор: DIFox 31.10.2009, 20:08
Цитата

то при установке/снятии первого флажка всегда вставляется/удаляется строка с индексом 0
при установке/снятии второго флажка следует смотреть на состояние первого - если он выделен, то вставляешь/удаляешь строку с индексом 1, если снят - работаешь со строкой с индексом 0


тоже  очень пригодится  спасибо)

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