ModifyMenu(MainMenu1.Handle, 0, mf_ByPosition or
end
procedure
begin
DNForm.Close;
end
{для прорисовки меню}
Procedure
Begin
with
if
ItemWidth:=yMenu;
Itemheight:=yMenu;
end
end
End
{}
Procedure
var
MemDC:hDC;
BM:hBitMap;
mtd:longint;
Begin
with
if
BM:=LoadBitMap(hInstance,'dver');
MemDC:=CreateCompatibleDC(hDC); {hDC входит в структуру TDrawItemStruct}
SelectObject(MemDC,BM);
{rcItem входит в структуру TDrawItemStruct}
if
else
StretchBlt(hDC, rcItem.left, rcItem.top, yMenu, yMenu, MemDC, 0, 0, 24, 23, mtd);
DeleteDC(MemDC);
DeleteObject(BM);
end
end
End
end
Memo
Получение данных из компонента Memo
Delphi 1
Для получения содержимого буфера используйте метод GetTextBuf, или воспользуйтесь приведенным ниже кодом (естественно, откорректируйте его под себя).
procedure
var
LineNo : integer;
ColNo : integer;
begin
LineNo:=SendMessage(Memo1.Handle, EM_LINEFROMCHAR, Memo1.SelStart, 0);
ColNo:=Memo1.SelStart;
if
While
ColNo:=Memo1.SelStart-ColNo-1;
end else
Panel1.Caption:='Строка '+IntToStr(LineNo)+' ; Колонка '+IntToStr(ColNo);
{Здесь вы можете получить текст через Memo1.Lines[LineNo].Text[ColNo] …}
end
Предупреждение! Данный код был написан в среде WinNT/D2 с использованием элемента управления richedit. Я тестировал то же самое, но с компонентом Memo и в D1, но этот код я забыл дома. Код выше написан по памяти и не тестировался, но я думаю он должен работать. Если вы переберетесь на D2, измените вызов sendmessage на следующий:
SendMessage(Memo1.Handle, EM_EXLINEFROMCHAR, 0, ColNo)
Изменение поведения Delete в компоненте Memo
Delphi 1
Просто меняю обработчик Memo OnKeyDown следующим образом:
if
здесь делайте все, что вы хотите
end
if
аналогично
end;
Вероятно, лучшим решением было бы использование конструкции CASE, но я не уверен, что она поймет как нужно VK_??. Возможно, после обработки нужно вызвать унаследованный обработчик, т.е. дать поработать обработчику верхнего уровня, у которого мы стырили управление. Не хотите подумать над этим?
Чтобы понять, где мы сейчас находимся, используйте SelStart, например, так:
var
Lpos, Cpos : Integer;
Lpos := SendMessage(memo1.Handle, EM_LINEFROMCHAR, Memo1.SelStart, 0);
Cpos := SendMessage(memo1.Handle, EM_LINEINDEX, Lpos, 0);
CPos := Memo1.SelStart-CPos;
Ответ
: поскольку vk_? имеет целочисленный тип, то это будет работать:case
VK_DELETE :
begin
Key := 0; {этим мы не позволяем сообщению keydown передаваться дальше,
например, форме или компонентам}
выполняем нужный код
end
Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT