Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2010, 15:08   #21
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Это актуально, я сейчас борюсь с этой ерундовиной. И там еще кое-что - если много много сделать энтеров (ввести пустых строк) и потом вызвать мою менюшку, то данные из списка не всегда отображаются (хотя если выделять, то они там есть ).
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 15.02.2010, 15:14   #22
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

это тоже видел, менюшка появляется, только где-то за областью... и еще, снять-бы пунктирное выделение в mets, но тогда или перерисовку для listbox-а свою нужно по типу "if odFocused in State then DrawFocusRect((Control as TlistBox).Canvas.Handle, Rect)" или какой-нить api (ща не вспомню) запретить...

ооо, прочитал комментарий насчет хитрого листбох-а

upd
-------

проверил, сама caretpos правильно считает, если текст по вертикали выходит за границы и движком прокрутить вниз...
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 15.02.2010 в 15:25.
raxp вне форума Ответить с цитированием
Старый 15.02.2010, 15:20   #23
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

У меня не такой уровень - мне еще пару левелаппов надо, ну и новые способности прокачать, а из артефактов только DRKB и гугл .

Цитата:
ооо, прочитал комментарий насчет хитрого листбох-а
Там вообще много занимательного (и для меня тоже, потому что я не с нуля писал). Даже затрудняюсь определить какими путями протекает ход моих мыслей...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 15.02.2010 в 15:51.
Utkin вне форума Ответить с цитированием
Старый 15.02.2010, 15:52   #24
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

думаю текущую позицию по -x- нужно узнавать по фактической ширине текста до каретки (курсора), т.к. ширина символов разная, поэтому умножение каретки по -x- на ширину шрифта и дает погрешность... или использовать шрифт с одинаковой шириной символов, что конечно-же неприемлемо...

...по пунктиру в mets, добавил в-лоб...
Код:
protected
 procedure to_draw(Control: TWinControl; Index: Integer;Rect: TRect; State: TOwnerDrawState);
...

procedure THMemo.to_draw(Control: TWinControl; Index: Integer;Rect: TRect; State: TOwnerDrawState);
begin
 with (Control as TListBox).Canvas do begin
  Font.Color := clblack;
  font.Style:= [fsbold];
  FillRect(Rect);
  textout(Rect.left+1, Rect.Top+1,(Control as TListBox).Items[Index])
 end;
 if odFocused in State then DrawFocusRect((Control as TListBox).Canvas.Handle, Rect) 
end;
...

constructor THMemo.Create(AOwner: TComponent);
begin
...
 Mets.Style:= lbOwnerDrawFixed;
 Mets.OnDrawItem:= to_draw;
 Mets.ItemHeight:=14;
 METS.BevelOuter:= bvRaised;
 Mets.BevelKind:= bksoft;
...
хотя, что это я отвлекся на третьестепенное ...

upd
-------

при использовании шрифта 'Fixedsys' смещение на длинных строках ушло, зафункциклировало... значит мысля имеет право на жизнь
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 15.02.2010 в 16:03.
raxp вне форума Ответить с цитированием
Старый 15.02.2010, 15:54   #25
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Ну и как? Зафунциклировало? Просто я сейчас ковыряюсь немного в другом направлении...

Это понятно, Ваш код не сработал.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 15.02.2010 в 16:31.
Utkin вне форума Ответить с цитированием
Старый 15.02.2010, 17:38   #26
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

почему не... теперь с любым шрифтом появление listbox верно... осталось побороть "хитрость" листбокса
Код:
procedure THMemo.ShowMetods();
var   x, y: Integer;
begin
    pX:= CaretPos.x;
    pY:= CaretPos.y;

    //form1.Caption:= copy(lines[py],1,px);
    x:= ww + 5;
    y:= hh*py + 3;
...

procedure THMemo.WMPaint(var Message: TWMPaint);
...
 Canvas.Font.Size := Font.Size;

 pX:= CaretPos.x;
 pY:= CaretPos.y;
 s:= copy(lines[py],1,px);
 ww:= canvas.TextWidth(s); // определяем ширину текста до текущей каретки на текущей строке
 hh:= Canvas.TextHeight('1');
 s:='';
...
и обновляем есственно..
Код:
procedure THMemo.KeyDown(var Key: Word; Shift: TShiftState);
begin
 InValidate;
    if (key = Ord('M')) and (ssCtrl in Shift) then
    begin
upd
-------

из менюшки текст теперь вставляет некорректно... смотрю дальше...
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 15.02.2010 в 17:48.
raxp вне форума Ответить с цитированием
Старый 16.02.2010, 09:09   #27
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Последняя версия, у меня все вставляет правильно.
Вложения
Тип файла: rar Подсветка.rar (25.5 Кб, 45 просмотров)
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переход на новую строку в Memo Лонли-Локли Компоненты Delphi 12 08.01.2021 05:00
Переход на новую строку delphin100 Общие вопросы Delphi 9 31.05.2012 04:52
Переход на новую строку в Memo1 )Игнат( Общие вопросы Delphi 2 07.07.2009 20:31
Переход на новую строку код13 Ecosasha Общие вопросы C/C++ 12 11.06.2009 18:31
Работа с файлом(переход на новую строку) Rifler Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 06.12.2008 23:51