Читаем Виртуальная библиотека Delphi полностью

procedure TForm1.DooDah; 

var 

  Count: Integer; 

begin 

  Count := 0; 

  while (Count < ComponentCount) and (Components[Count] <> 'Button1') do Inc(Count); 

  TButton(Components[Count]).SetFocus; 

end;

или еще проще:

procedure TForm1.DooDah; 

var 

  Target: TComponent; 

begin 

  Target := FindComponent('Button1'); 

  TButton(Target).SetFocus; 

end;    

Оба этих примера показывают как найти компонент TButton с именем Button1, и вызвать его метод SetFocus.

12. Как получить горизонтальный ScrollBar на ListBox?

Пошлите сообщение LB_SETHORIZONTALEXTENT в ListBox. Например, сообщение может быть отослано в момент создания формы:  

procedure TForm1.FormCreate(Sender: TObject); 

begin 

  SendMessage(Listbox1.Handle, LB_SETHORIZONTALEXTENT, 1000, Longint(0)); 

end

13. Как определить текущую колонку и строку каретки в компоненте TMemo?

Вы можете использовать сообщения Windows API EM_LINEFROMCHAR и EM_LINEINDEX для определения положения.  

var 

  LineNum: Longint; 

  CharsBeforeLine: Longint; 

begin 

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

  CharsBeforeLine := SendMessage(Memo1.Handle, EM_LINEINDEX, LineNum, 0); 

  Label1.Caption := 'Line ' + IntToStr(LineNum + 1) 

  Lebel2.Caption := 'Position ' + IntToStr(Memo1.SelStart - CharsBeforeLine + 1); 

end;

14. Постранична прокрутка TMemo, реализация Undo и определение строки курсора.

Как прокрутить содержимое компонента TMemo?

Приведенная ниже процедура предполагает, что фокус находится на Edit1 и осуществляет прокрутку в соответствии с нажатыми клавишами.  

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); 

begin 

  if Key = VK_F8 then 

    SendMessage(Memo1.Handle,  { HWND для Memo } 

                WM_VSCROLL,    { сообщение Windows } 

                SB_PAGEDOWN,   { на страницу вниз } 

                0)             { не используется } 

  else if Key = VK_F7 then SendMessage(Memo1.Handle, WM_VSCROLL, SB_PAGEUP, 0); 

end;

Если определено всплывающее (popup) меню для TMemo,и заданы клавиши для операций Cut, Copy, Paste, то я могу обрабатывать эти события, вызывая методы CutToClipboard, CopyToClipboard, и т.д. Однако, если я поместили пункт Undo в меню (обычно Ctrl+Z), то как дать знать TMemo, что нужно выполнить Undo?

Если встроенного Undo достаточно, то это очень просто:

Memo1.Perform(EM_UNDO, 0, 0);

Для переключения свойства Enabled пункта меню Undo1:

Undo1.Enabled := Memo1.Perform(EM_CANUNDO, 0, 0) <> 0;

Как можно определить, на какой строке в TMemo находится курсор?

Весь фокус в сообщении EM_LINEFROMCHAR. Попробуйте:  

procedure TMyForm.BitBtn1Click(Sender: TObject); 

var 

  ILine: Integer; 

begin 

  ILine := Memo1.Perform(EM_LINEFROMCHAR, $FFFF, 0); 

{ Внимание: номера строк начинаются с нуля } 

  MessageDlg('Line Number: ' + IntToStr(ILine), mtInformation, [mbOK], 0); 

end

15. Как поместить BLOB Memo в компонент TMemo?

Попробуйте так:  

procedure TForm1.Button1Click(Sender: TObject); 

var 

  S: TBlobStream; 

begin 

  S := TBlobStream.Create(Table1BBBMemo, bmRead); 

  Memo1.Lines.LoadFromStream(S); 

  S.Free; 

end

где:

1. Table1BBBMemo — имя поля BLOB Memo (TMemoField).

2. Memo1 — имя компонента TMemo. Естественно, что этим же способом можно обмениваться информацией с BLOB-полями произвольного типа.

16. Как показать содержимое Memo поля в TDBGrid?

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

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

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных