Форум: "Основная";
Текущий архив: 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