Вниз
Скачать: CL | DM;

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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.01 c
14-85664
RV
2002-08-26 09:00
2002.09.26
во, 100% интересная ветка должна быть, Что значит Ваш ник?


1-85480
Лена
2002-09-16 16:34
2002.09.26
Общие вопросы


8-85616
Yaro
2002-01-13 04:29
2002.09.26
Fast draw from array


1-85509
Серг
2002-09-17 10:20
2002.09.26
Console App


1-85595
Kotka
2002-09-14 22:52
2002.09.26
Типа защита...




   Наверх