Чтение онлайн

ЖАНРЫ

Советы по Delphi. Версия 1.4.3 от 1.1.2001

Озеров Валентин

Шрифт:

implementation uses SysUtils;

constructor TClipboardStream.Create(fmt : word);

var

 tmp : pointer;

 FHandle : THandle;

begin

 FFormat := fmt;

 OpenClipboard(0);

 FHandle := GetClipboardData(FFormat);

 FSize := GlobalSize(FHandle);

 FMemory := AllocMem(FSize);

 tmp := GlobalLock(FHandle);

 MoveMemory(FMemory, tmp, FSize);

 GlobalUnlock(FHandle);

 FPosition := 0;

 CloseClipboard;

end;

destructor TClipboardStream.Destroy;

begin

 FreeMem(FMemory);

end;

function TClipboardStream.Read(var Buffer; Count : longint) : longint;

begin

 if FPosition + Count > FSize then Result := FSize - FPosition

 else Result := Count;

 MoveMemory(@Buffer, PChar(FMemory) + FPosition, Result);

 Inc(FPosition, Result);

end;

function TClipboardStream.Write(const Buffer; Count : longint) : longint;

var

 FHandle : HGlobal;

 tmp : pointer;

begin

 ReallocMem(FMemory, FPosition + Count);

 MoveMemory(PChar(FMemory) + FPosition, @Buffer, Count);

 FPosition := FPosition + Count;

 FSize := FPosition;

 FHandle := GlobalAlloc(GMEM_MOVEABLE or GMEM_SHARE or GMEM_ZEROINIT, FSize);

 try

tmp := GlobalLock(FHandle);

try

MoveMemory(tmp, FMemory, FSize);

OpenClipboard(0);

SetClipboardData(FFormat, FHandle);

finally

GlobalUnlock(FHandle);

end;

CloseClipboard;

 except

GlobalFree(FHandle);

 end;

 Result := Count;

end;

function TClipboardStream.Seek(Offset : Longint; Origin : Word) : Longint;

begin

 case Origin of

 0 : FPosition := Offset;

 1 : Inc(FPosition, Offset);

 2 : FPosition := FSize + Offset;

 end;

 Result := FPosition;

end;

end.
 

Шрифты 

Хранение

стилей шрифта

Как мне сохранить свойство шрифта Style, ведь он же набор?

Вы можете получать и устанавливать FontStyle через его преобразование к типу byte.

Для примера,

Var Style: TFontStyles;

begin

 { Сохраняем стиль шрифта в байте }

 Style := Canvas.Font.Style; {необходимо, поскольку Font.Style – свойство}

 ByteValue := Byte(Style);

 { Преобразуем значение byte в TFontStyles }

 Canvas.Font.Style := TFontStyles(ByteValue);

end;

Для восстановления шрифта, вам необходимо сохранить параметры Color, Name, Pitch, Style и Size в базе данных и назначить их соответствующим свойствам при загрузке.

– Robert Wittig

Управление настройками шрифта

Delphi 1

{

 Данный код изменяет стиль шрифта поля редактирования,

 если оно выбрано. Может быть адаприрован для управления

 шрифтами в других объектах.

 Расположите на форме Edit(Edit1) и ListBox(ListBox1).

 Добавьте следующие элементы (Items) к ListBox:

fsBold

fsItalic

fsUnderLine

fsStrikeOut

}

procedure TForm1.ListBox1Click(Sender: TObject);

var X: Integer;

type TLookUpRec = record

 Name: String;

 Data: TFontStyle;

end;

const LookUpTable: array[1..4] of TLookUpRec = (

 (Name: 'fsBold'; Data: fsBold),

 (Name: 'fsItalic'; Data: fsItalic),

 (Name: 'fsUnderline'; Data: fsUnderline),

 (Name: 'fsStrikeOut'; Data: fsStrikeOut));

begin

Поделиться с друзьями: