Главная страница
    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.011 c
3-85344
greyserg
2002-09-03 19:23
2002.09.26
Как задать в TQuery нужный тип таблицы


1-85583
il
2002-09-14 14:25
2002.09.26
Где найти текст VCL компонентов?


3-85329
greyserg
2002-09-04 12:21
2002.09.26
как правильно скопировать из Interbase в DBaseIII+ ?


14-85691
michael_b
2002-09-01 20:26
2002.09.26
Подскажите книгу по написанию клиент-серверных в delphi


3-85417
Элина
2002-09-03 18:06
2002.09.26
Открытие с паролем





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский