Виртуальная библиотека Delphi

Здесь есть возможность читать онлайн «Виртуальная библиотека Delphi» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Виртуальная библиотека Delphi: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Виртуальная библиотека Delphi»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Виртуальная библиотека Delphi — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Виртуальная библиотека Delphi», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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

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

procedureTForm1.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 и определение строки курсора.

картинка 62

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

картинка 63

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

procedureTForm1.Edit1KeyDown(Sender: TObject; varKey: Word; Shift: TShiftState);

begin

ifKey = VK_F8 then

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

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

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

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

else ifKey = VK_F7 thenSendMessage(Memo1.Handle, WM_VSCROLL, SB_PAGEUP, 0);

end;

картинка 64

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

картинка 65

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

Memo1.Perform(EM_UNDO, 0, 0);

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

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

картинка 66

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

картинка 67

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

procedureTMyForm.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?

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

procedureTForm1.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?

Используйте следующий код для обработки события OnDrawDataCell у TDBGrid . (Перед запуском программы создайте объект TMemoField для memo поля в Fields Editor).

procedureTForm1.DBGrid1DrawDataCell(Sender: TObject; constRect: TRect; Field: TField; State: TGridDrawState);

var

P: array[0..1023] ofChar; { MemoField buffer }

BS: TBlobStream;

S: string;

begin

ifField isTMemoField then

with(Sender asTDBGrid).Canvas do

begin

{ Table1Notes is the TMemoField }

BS := TBlobStream.Create(Table1Notes, bmRead);

FillChar(P, SizeOf(P), #0);

BS.Read(P, SizeOf(P));

BS.Free;

S := StrPas(P);

{ remove carriage returns & line feeds }

whilePos( #13, S) > 0 doS[Pos( #13, S)] := ' ';

whilePos( #10, S) > 0 doS[Pos( #10, S)] := ' ';

{ clear the cell }

FillRect(Rect);

{ fill cell with memo data }

TextOut(Rect.Left, Rect.Top, S);

end;

end;

17. Не возникает событие TSpeedButton.OnDblClick.

картинка 68

Я создаю событие на SpeedButton1.OnDblClick , но оно, похоже, вообще никогда не возникает. OnClick работает. Что делать?

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Виртуальная библиотека Delphi»

Представляем Вашему вниманию похожие книги на «Виртуальная библиотека Delphi» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Виртуальная библиотека Delphi»

Обсуждение, отзывы о книге «Виртуальная библиотека Delphi» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x