Главная страница
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
1-85548
ЮРИЙ_К
2002-09-12 10:21
2002.09.26
Формирование документа по шаблону форы


7-85714
Igor_thief
2002-07-17 13:22
2002.09.26
Потоки


3-85365
FireStream
2002-09-03 23:31
2002.09.26
ADO - вставка записей


3-85375
Шурик Ш
2002-09-05 11:28
2002.09.26
Редактирование DBGrid


1-85547
NVladimir
2002-09-12 14:27
2002.09.26
Объем программы в ОЗУ