Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2010, 09:31   #1
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию Автоматический переход на новую строку в Мемо

В своем компоненте замутил всплывающий список по типу как в Делфи - нажимаешь определенную комбинацию клавиш и появляется ListBox для выбора. Однако во время его появления Мемо автоматически выделяет ему пустую строку, что не есть хорошо. Собственно как этого избежать?
ЗЫ. Родителем ЛистБокса является мой Мемо.

Код:
procedure THMemo.ShowMetods();
begin

    Mets.Left:=(CaretPos.x)*Font.Size+5;
    Mets.Top:=(CaretPos.y)*Font.Size+5;
    Mets.Visible:=True;
    Mets.Show;
    Mets.SetFocus();
end;
////////////////////////////////////////////////////////////////////////////////
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 12.02.2010 в 09:46.
Utkin вне форума Ответить с цитированием
Старый 12.02.2010, 10:20   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Мемо автоматически выделяет ему пустую строку
Всмысле? Как ты в Списке поиск делаешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.02.2010, 10:22   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Код:
procedure THMemo.InsertMetod();
var
    Text: String;
    x, y: Integer;
begin

    // Äàííûå èìåþòñÿ?
    If Mets.Items.Count<1 then Mets.Items.Add('');
    Mets.ItemIndex:=0;
    
    // Ïîëó÷èì äàííûå
    Text:=Mets.Items[Mets.itemIndex];
    Text:=FOnInsMetod(Self, Text);

    // Âñòàâèì äàííûå â òåêñò Ìåìî
    x:=CaretPos.X;
    Lines.Delete(y);
    Lines.Delete(y);
    y:=CaretPos.Y;

    Lines.Strings[y]:=Text+Copy(Lines.Strings[y], x+1, Length(Lines.Strings[y])-x);
    Lines.Strings[y-1]:=Lines.Strings[y-1]+Lines.Strings[y];
    Lines.Delete(y);

    // Cïðÿ÷åì Ñïèñîê âñòðîåííûõ ìåòîäîâ
    Mets.Hide;

    // Óñòàíîâèì ôîêóñ íà îêíå ðåäàêòèðîâàíèÿ òåêñòà
    SetFocus;
end;
////////////////////////////////////////////////////////////////////////////////
Махинации с Lines.Delete(y); направлены на то, чтобы убирать этот разрыв, но когда список только появляется, все равно видно, что строка рвется на три части
Например: привет Вася. Если вставить из ЛистБокса то появится три строчки вместо одной.
FOnInsMetod - событие, возникает, когда пользователь вставляет строку из списка. Цель дописывать всякие там скобки и параметры (либо вообще дописывать что-то другое).
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 12.02.2010 в 10:25.
Utkin вне форума Ответить с цитированием
Старый 12.02.2010, 10:36   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Если вставить из ЛистБокса то появится три строчки вместо одной.
Если дело только в этом то после выбора в ЛистБоксе пусть код:
Код:
Memo1.Lines.SelText:=ListBox1.items[ListBox1.ItemIndex];
Или я тебя не понял )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.02.2010, 10:40   #5
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Он пишет, что так нельзя .
Я внутри компонента это делаю, там нельзя Lines.SelText:=ListBox1.items[ListBox1.ItemIndex];

По бреакпоинтам лишняя строка появляется раньше, я так понял в момент отображения ЛистБокса, а не в момент вставки текста.

ЗЫ. Хотел запретить перерисовку компонента, но тогда и ЛистБокс тоже не отображается...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 12.02.2010 в 10:54.
Utkin вне форума Ответить с цитированием
Старый 12.02.2010, 11:26   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Знаешь, друже, мне так трудно сказать где косяк, не вида кода, не щупая его за буфера )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.02.2010, 12:54   #7
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Вот мой исходничек, остались сущие мелочи, добавить описание и можно выкладывать в массы .
Вложения
Тип файла: rar hmemo.rar (5.7 Кб, 15 просмотров)
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 12.02.2010, 13:24   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А работать с ним как чтоб нарваться на ту ошибку что тя достала?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.02.2010, 15:10   #9
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Ну Контрол М .
Или имя_компонента.ShowMetods();
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 12.02.2010 в 15:16.
Utkin вне форума Ответить с цитированием
Старый 12.02.2010, 15:27   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Ну Контрол М
Ну а как список этих самых методов заполнить то?
Если я просто жмакну ^M у меня вывалится пустой список.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переход на новую строку в Memo Лонли-Локли Компоненты Delphi 12 08.01.2021 05:00
Переход на новую строку delphin100 Общие вопросы Delphi 9 31.05.2012 04:52
Переход на новую строку в Memo1 )Игнат( Общие вопросы Delphi 2 07.07.2009 20:31
Переход на новую строку код13 Ecosasha Общие вопросы C/C++ 12 11.06.2009 18:31
Работа с файлом(переход на новую строку) Rifler Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 06.12.2008 23:51