Как управлять табуляцией в Memo-компоненте?
Для этого необходимо поставить свойство “WantTabs” в “True”.
Теперь для управления шириной табуляции необходимо вызвать API-функцию SendMessage.
В последнем параметре функция ожидает указатель на массив с элементами типа
Word, в котором указаны позиции в единицах экрана. Для примера вызов функции
с указанием двух позиций табуляции:
Read the rest of this entry »
Как можно опросить различные параметры системы, например количество
свободных ресурсов?
Для получения параметров системы существует множество различных API-функций.
Для того, чтобы узнать количество свободных ресурсов, – достаточно вызова
следующей API-функции:
Read the rest of this entry »
Системные сообщения (сокращения)
BM - ButtonMode
BN - Button
BS - ButtonStyle
CB - ComboBox
CBN - Combo Box Notifications
CBS - ComboBoxStyle
EM - EditMessage
ES - EditStyle
FM - FileManager
LB - ListBox
LBN - ListBox Notifications
LBS - ListBoxStyle
MB - MessageButton (Typen)
PS - PenStyle
SB - ScrollBar
SBS - ScrollBarStyle
SM - SystemMetrics
SPI - SystemParametersInfo
WM - WindowMessage
WS - WindowStyle
Как сделать отступ в Memo?
С помощью API-функции SendMessage можно задать поля в Memo-компоненте. Если
необходимо, например, сделать отступ в 20 пикселей слева то можно это сделать
следующим образом:
var Rect: TRect;
begin
SendMessage( Memo1.Handle, EM_GETRECT, 0, LongInt(@Rect));
Rect.Left:= 20;
SendMessage(Memo1.Handle, EM_SETRECT, 0, LongInt(@Rect));
Memo1.Refresh;
end;
Как создать и вызвать модальную форму?
Модальные формы довольно часто выгоднее (с точки зрения использования памяти)
временно создавать, и после того, как форма была вызвана, отработан и закрыт,
- освободить его из памяти. В противном случае Delphi-приложение может быть
настоящим “пожирателем памяти”. Примерно так может выглядеть вызов такой
формы:
Read the rest of this entry »
Как “быструю подсказку” (Hints) сделать многострочной?
Необходимо создать соответствующую компоненту которая показывает “быструю
подсказку” (Hints) с более чем одной строкой. Компонента наследуется от
TComponent и называется TMHint. Hint-текст можно задавать следующим образом:
“Строка 1@Строка 2@Строка 3″. Символ ‘@’ используется как разделитель строк.
Если Вам нравится другой символ – измените свойство Separator. Свойство
Active указывает на активность (TRUE) или неактивность (FALSE) “многострочности”.
unit MHint;
interface
uses
SysUtils, WinTypes, WinProcs, Messages,
Classes, Graphics, Controls, Forms, Dialogs; Read the rest of this entry »
Поля в Memo-компоненте
С помощью API-функции SendMessage можно задать поля в Memo-компоненте.
Если необходимо, например, сделать отступ в 20 пикселей слева то можно
это сделать следующим образом:
var Rect: TRect;
begin
SendMessage( Memo1.Handle, EM_GETRECT, 0, LongInt(@Rect));
Rect.Left:= 20;
SendMessage(Memo1.Handle, EM_SETRECT, 0, LongInt(@Rect));
Memo1.Refresh;
end;
Как создать Ini-файл в директории программы?
По умолчанию ini-файл создается в Windows-директории (например: TIniFile.Create(’FOO.INI’
)), что приводит к “захламлению” оной. Более (эко-)логично (за исключением
случаев, когда программа делается для CD-ROM) если ini-файл создается в
той же директории что и главная программа. Это достигается с помощью одной
строки:
Read the rest of this entry »
INI-файлы (чтение/запись)
function ReadIni(ASection, AString : String) : String;
var
sIniFile: TIniFile;
sPath : String[60];
const
S = 'xyz'; { стандартная строка для выдачи ошибок чтения }
begin
GetDir(0,sPath);
sIniFile := TIniFile.Create(sPath + '\Name.INI');
Result := sIniFile.ReadString(ASection, AString, S); { [Section] String=Value }
sIniFile.Free;
end;
Read the rest of this entry »
Как ускорить навигацию по исходному тексту?
Весьма удобно при работе с текстами больше двух-трех страниц использовать
метки (bookmarks).
Чтобы установить подобную метку – необходимо нажать компбинацию клавиш:
CTRL+SHIFT+Число, где “Число” находится в пределах от 0 до 9. После этого
можно с любого места “прыгнуть” на эту метку. Для этого необходимо нажать
комбинацию CTRL+Число.
Read the rest of this entry »