Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.26;
Скачать: 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 вся ветка

Текущий архив: 2002.09.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
14-85702
NetBreaker666
2002-09-01 22:28
2002.09.26
Marilyn Manson !!! YEAH !!!


1-85442
Skif
2002-09-16 08:02
2002.09.26
Переименовать по маске


8-85615
Evgenij
2002-05-29 14:14
2002.09.26
как сохранить информацию из jpg о дате,и фото апарате ?


4-85776
Groove
2002-08-06 16:17
2002.09.26
help


3-85406
Voldemar2000
2002-09-06 00:25
2002.09.26
БД FoxPro