Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.09.26;
Скачать: [xml.tar.bz2];

Вниз

TMemo или TRichEdit   Найти похожие ветки 

 
olookin   (2002-09-14 09:05) [0]

Здравствуйте. Как сделать так, чтобы в TMemo или TRichEdit можно было писать текст с любого положения каретки (так, как это реализовано в самом Delphi)? Заранее спасибо.


 
Алексей Ким   (2002-09-14 09:41) [1]

хм... может я не в тему но как "так"?


 
alena.svt   (2002-09-14 10:56) [2]

Никак для этого компонентов валом.
RichEdit И Memo Windows"овские контролы.


 
olookin   (2002-09-14 11:12) [3]

Мне не нужны другие компоненты, я уже эти использую. Можно конечно вбухать пустые строки количеством скажем до 1000. Но может есть иной способ?


 
alena.svt   (2002-09-14 17:42) [4]

Ну так возьми ручками и допиши MEMO до боевой готовности.
Исходнички на него есть, Возьми другие исходнички например от SynEdit и сделай сваой гибрид.
P.S. Cделаешь поделись плиз.
RichEdit И Memo Windows"овские контролы.


 
MBo   (2002-09-15 17:26) [5]

Шрифт, естественно, Fixed, например, Courier New

var
CWdt:Integer;

implementation

{$R *.DFM}

//просто находит ширинe символа шрифта Memo
procedure TForm1.FormCreate(Sender: TObject);
var tm:TTextMetric;
hDC:THandle;
begin
hDC:=GetDC(Memo1.Handle);
SelectObject(hDC,Memo1.Font.Handle);
GetTextMetrics(hDC,tm);
CWdt:=tm.tmMaxCharWidth;
ReleaseDC(Memo1.Handle,hDC);
end;


procedure TForm1.Memo1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
dw,nc,cw,nl,fc:integer;
begin
cw:=(x+2) div CWdt;
dw:=Memo1.Perform(em_charfrompos,0,makelparam(x,y));
nc:=LoWord(dw);
nl:=HiWord(dw);
fc:=Memo1.Perform(em_lineindex,nl,0);
nc:=nc-fc;
if cw>nc then begin
Memo1.Lines[nl]:=Memo1.Lines[nl]+StringOfChar(" ",cw-nc);
Memo1.SelStart:=fc+cw;
end;
end;

Пустые концы строк обрезать придется руками, например, при переходе к другой строке


 
MBo   (2002-09-15 17:52) [6]

Service Pack ;)
1) обработка в MouseDown, а не MouseUp смотрится горазд
аккуратнее

2) Определение ширины символа можно (т.к. он fixed) заменить простым TextWidth (это я сначала собирался еще про межстрочное расстояние учитывать)


 
alena.svt   (2002-09-15 20:33) [7]

Хорошо Api конечно знать.
Виновата извиняюсь.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.09.26;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.007 c
4-85780
Hogo
2002-05-31 12:40
2002.09.26
Есть ли такая функция


3-85414
Awex
2002-09-05 19:02
2002.09.26
Русские имена метаобъетов в Interbase (Диалект 3)


1-85487
John Kayfolom
2002-09-16 15:52
2002.09.26
Разложить Integer (32бита) на 4 байта


1-85566
SemFLY
2002-09-12 10:18
2002.09.26
Как перетащить форму, если...


1-85501
Vlad2
2002-09-17 07:45
2002.09.26
использование xml





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский