Читаем Советы по Delphi. Версия 1.4.3 от 1.1.2001 полностью

 ModifyMenu(MainMenu1.Handle, 0, mf_ByPosition or mf_OwnerDraw, comm, 'Go');

end;{TDNForm.FormCreate}


procedure TDNForm.cm_MainExitClick(Sender: TObject);

begin

 DNForm.Close;

end;{TDNForm.cmExitClick}


{для прорисовки меню}

Procedure TDNForm.WMMeasureItem(var Msg:TWMMeasureItem);

Begin

 with Msg.MeasureItemStruct^ do begin

  if ItemID=comm then begin

   ItemWidth:=yMenu;

   Itemheight:=yMenu;

  end;

 end;

End;{WMMeasureItem}

{}

Procedure TDNForm.WMDrawItem(var Msg:TWMDrawItem);

var

 MemDC:hDC;

 BM:hBitMap;

 mtd:longint;

Begin

 with Msg.DrawItemStruct^ do begin

  if ItemID=comm then begin

   BM:=LoadBitMap(hInstance,'dver');

   MemDC:=CreateCompatibleDC(hDC); {hDC входит в структуру TDrawItemStruct}

   SelectObject(MemDC,BM);

   {rcItem входит в структуру TDrawItemStruct}

   if ItemState=ods_Selected then mtd:=NotSrcCopy

   else mtd:=SrcCopy;

   StretchBlt(hDC, rcItem.left, rcItem.top, yMenu, yMenu, MemDC, 0, 0, 24, 23, mtd);

   DeleteDC(MemDC);

   DeleteObject(BM);

  end;

 end{with}

End;{TDNForm.WMDrawItem}

end. 

Memo 

Получение данных из компонента Memo

Delphi 1

Для получения содержимого буфера используйте метод GetTextBuf, или воспользуйтесь приведенным ниже кодом (естественно, откорректируйте его под себя).

procedure TForm1.SpeedButton1Click(Sender: TObject);

var

 LineNo : integer;

 ColNo  : integer;

begin

 LineNo:=SendMessage(Memo1.Handle, EM_LINEFROMCHAR, Memo1.SelStart, 0);

 ColNo:=Memo1.SelStart;

 if LineNo>0 then begin

  While SendMessage(Memo1.Handle, EM_LINEFROMCHAR, ColNo, 0) = LineNo  do ColNo:=ColNo-1;

  ColNo:=Memo1.SelStart-ColNo-1;

 end else ColNo:=Memo1.SelStart;

 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 Key = VK_DELETE then begin

 здесь делайте все, что вы хотите

end;

if Key = VK_BACK then begin

 аналогично

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 Key of

VK_DELETE :

 begin

  Key := 0;  {этим мы не позволяем сообщению keydown передаваться дальше,

   например, форме или компонентам}

  выполняем нужный код;

 end;

Перейти на страницу:

Похожие книги

Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript

Данная книга посвящена программированию игр с помощью ActionScript. Здесь вы найдете подробные указания, необходимые для создания самых разных игр – аркад, головоломок, загадок и даже игровых автоматов. В тексте приведены исходные коды программ и детальные, доступно изложенные инструкции. Базовые принципы программирования ActionScript рассматриваются на примере игр, однако вы без труда сможете применить полученные знания и для разработки неигровых проектов, таких как Web-дизайн и реклама. Рекомендации Гэри Розенцвейга помогут вам не только придумывать занимательные игры и размещать их на Web-сайте, но и оптимизировать скорость их работы, а также защищать свои творения от несанкционированного копирования. Представленный в книге код несложно изменить для использования в других программах.Книга предназначена для широкого круга читателей – создателей анимационных роликов, художников-оформителей, программистов и разработчиков Web-сайтов. Издание может также выступать в качестве практического пособия по изучению ActionScript.

Гэри Розенцвейг

Программирование, программы, базы данных / Программирование / Книги по IT
Программирование. Принципы и практика использования C++ Исправленное издание
Программирование. Принципы и практика использования C++ Исправленное издание

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка. Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие. Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток. Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова

Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT