Шаг 11.2 - Создание процедуры установки спецсимвола
Реализуем механизм вставки спецсимвола в текущий компонент редактирования из буфера обмена Windows. В структуре описания формы fmMDIChild в секции protected зарегистрируем новую процедуру PasteSpecSymbol, как указано ниже.
TfmMDIChild = class(TForm)
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
BufWidth: integer;
BufHeight: integer;
BufTop: integer;
BufLeft: integer;
protected
{ Protected declarations }
procedure WndProc(var Message: TMessage); override;
procedure PasteSpecSymbol;
public
{ Public declarations }
end;
В разделе implementation в разделе uses добавим следующие описания:
uses VLDefinition, VLEdit, VLComboBox, VLMemo, ClipBrd;
Установите курсор на описание процедуры PasteSpecSymbol и нажмите клавишы <Ctrl>+<Shift>+<C>. Будет создана собственно процедура PasteSpecSymbol, в теле процедуры введите строки, как указано ниже.
procedure TfmMDIChild.PasteSpecSymbol;
var
cED: TVLEdit;
cCMB: TVLComboBox;
cMM: TVLMemo;
// указатели на визуальные компоненты редактирования,
// в которые может быть вставлен спецсимвол
begin
if Self.ActiveControl<>nil then
// если активизирован какой-нибудь визуальный компонент
begin
case Self.ActiveControl.Tag of
1: // компонент TVLEdit, каждый тип визуального компонента в системе Visual Loodsman
// имеет свой уникальный целочисленный идентификатор, для удобства
// определения типа
begin
cED:=TVLEdit(Self.ActiveControl);
// привести тип активного компонента к указателю
cED.PasteFromClipboard;
// вставить содержимое буфера обмена
end;
2: // компонент TVLComboBox
begin
cCMB:=TVLComboBox(Self.ActiveControl);
// привести тип активного компонента к указателю
cCMB.PasteFromClipboard;
// вставить содержимое буфера обмена
end;
7: // компонент TVLMemo
begin
cMM:=TVLMemo(Self.ActiveControl);
// привести тип активного компонента к указателю
cMM.PasteFromClipboard;
// вставить содержимое буфера обмена
end;
end;
end;
end;
Далее...