Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

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

Советы по Delphi. Версия 1.4.3 от 1.1.2001: краткое содержание, описание и аннотация

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

…начиная с 1001. Смотрите другие файлы…

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

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

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

Интервал:

Закладка:

Сделать

В 16-битной версии Delphi вам необходимо работать с блоками по 32K или 64K и картой. Вы могли бы сделать приблизительно следующее:

type

chunk: array[0..32767] ofbyte;

pchunk: ^chunk;

varBigArray: array[0..31] ofpChunk;

Для создания массива:

fori := 0 tohigh(bigarray) donew (bigArray[i]);

Для получения доступа к n-ному байту в пределах массива (n должен иметь тип longint):

bigArray[n shr15]^[n and$7fff] := y;

x := bigArray[n shr15]^[n and$7fff];

Это даже осуществляет проверку выхода за границы диапазона, если вы установили в ваших настройках опцию «range checking»!

n должен находиться в диапазоне [0..32*32*1024] = [0..1024*1024] = [0..1048576].

Для освобождения массива после его использования необходимо сделать следующее:

fori := 0 tohigh(bigarray) dodispose (bigArray[i]);

Свойства

Редактор свойств для точки

TPoint не имеет информацию о типе, следовательно, вы не можете зарегистрировать для него редактор свойства. Вы можете иметь редактор свойств только для строк, реальных, порядковых чисел или указателей на объекты. Дело в том, что редактор свойств имеет только следующие методы, чтобы иметь доступ к свойствам через RTTI:

GetValue/SetValue для строк (strings)

GetFloatValue/SetFloatValue для натуральных чисел (floats)

GetOrdValue/SetOrdValue для порядковых (и указателей)

Решением может быть создание класса TPersistentPoint, являющегося наследником TPersistent и имеющего те же свойства, что и TPoint. Вы можете просто «обернуть» TPoint для хранения значений, или создать явные поля. Непосредственное использование TPoint сделает использование метода Assign легким и быстрым для кодирования. Для процедур чтения и записи вы можете использовать поля записи, как показано ниже:

typeTPersistentPoint = class(TPersistent)

private

FPoint: TPoint;

published

propertyX : integer readFPoint.X writeFPoint.X;

propertyY : integer readFPoint.Y writeFPoint.Y;

end;

– Mike Scott

Хитрость вызова редактора свойств

Я пишу редактор для свойства TStrings. В зависимости от значений других свойств, я хотел бы показывать или свой редактор свойства, или редактор свойства TStringListProperty, заданный по умолчанию, но я не знаю как передавать управление TStringListProperty...

Сделайте ваш редактор свойства наследником TStringListProperty (добавьте STREDIT в список используемых модулей) и согласно вашим обстоятельствам вызывайте метод предка Edit:

UnitMyEditor;

interface

usesSTREDIT;

typeTMyStringListProperty = class(TStringListProperty)

procedureEdit; override;

end;

implementation

procedureTMyStringListProperty.Edit;

begin

if{ какие-то условия } then{ что-то делаем }

else inheritedEdit;

end;

end.

- Pat Ritchey

Как убрать публичное свойство компонента/формы из списка видимых/редактируемых свойств в Инспекторе Обьектов?

Nomadicсоветует:

Из TForm property не убиpал, но из TWinControl было дело. А дело было так:

interface

type TMyComp = class(TWinControl)

end;

procedure Register;

implementation

procedure Register;

begin

RegisterComponents('MyPage', [TMyComp]);

RegisterPropertyEditor(TypeInfo(String),TMyComp,'Hint', nil);

end;

[ и т.д.]

Тепеpь property 'Hint' в Object Inspector не видно. Рад, если чем-то помог. Если будут глюки, умоляю сообщить. Такой подход у меня сплошь и pядом.

Свойство FileName в невизуальном компоненте

Следующий код взят из dsgnintf.pas (иногда стоит покопаться в файлах!) для свойства TMPLayer.filename, с помощью C.Calvert…

В заголовке модуля компонента…

TFileNameProperty = class(TStringProperty)

public

functiongetattributes: TPropertyattributes; override;

procedureEdit; override;

end;

добавьте функцию регистрации…

RegisterPropertyEditor(Typeinfo( String), TMyComponent, 'Filename', TFileNameProperty);

и код…

functionTFileNameProperty.GetAttributes;

begin

Result := [paDialog];

end;

ProcedureTFilenameProperty.edit;

var

MFileOpen: TOpenDialog;

begin

MFileOpen := TOpenDialog.Create(Application);

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

Интервал:

Закладка:

Сделать

Похожие книги на «Советы по Delphi. Версия 1.4.3 от 1.1.2001»

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


Отзывы о книге «Советы по Delphi. Версия 1.4.3 от 1.1.2001»

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

x