4. В обработчике
5. Скомпилируйте программу и переименуйте из .exe в .scr ; поместите файл в каталог Windows — Screen Saver должен появиться на панели управления (Control Panel).
7. Как Delphi обрабатывает функции обратного вызова Windows (сallback)?
Точно так же как C: вы можете получить указатель (
Delphi и Visual Basic
1. Есть ли в Delphi эквивалент массива элементов управления из Visual Basic?
Hет. Компоненты Delphi не имеют свойства Index, подобное VB. Однако, имеются три основные причины, почему вы хотите использовать их в VB, и для каждой из них есть решение в Delphi.
Причина 1. Вы хотите использовать один обработчик события для разных компонент на форме.
Это просто. Все, что вы должны сделать — это выбрать тот же самый обработчик для каждой визуальной компоненты. Это лучше, чем в случае с массивом компонент, потому что вы можете одну и ту же процедуру-обработчик события присвоить различным типам компонент; например, кнопка на форме и пункт меню могут вызывать ту же самую функцию для обработки события
Причина 2. Вы хотите динамически создавать и уничтожать визуальные компоненты во время выполнения программы.
Это также довольно просто в Delphi. Предположим, что на форме есть кнопка, и, каждый раз когда она нажимается, вы хотите создавать другую кнопку. Следующий пример показывается, как это делать:
procedure TForm1.Button1Click(Sender: TObject);
var
NewButton: TButton;
begin
NewButton := TButton.Create(Self);
NewButton.Parent := Self;
end;
Причина 3. Вам действительно требуется доступ к компонентам по номеру.
Предположим, что вы решили написать игру вроде Реверси в Delphi. Вам нужно разместить 100 объектов
Board: array [1..10, 1..10] of TShape; Далее в программе нужно создать каждый из этих объекты, вызвав
Если же вы не используете такие большие массивы, т.е., например хотите одинаково реагировать на нажатие 3-5 кнопок с незначительным различием для каждой из них, то можно использовать свойство Tag.
2. Как использовать DLL, написанные в Delphi, например в Visual Basic?
Допустим, вы написали на Delphi DLL и в нем объявили функцию
function DataFileType(lpStr: PChar): Integer; export;
begin
StrPCopy(lpStr, oDataMap.VendorName);
Result := StrLen(lpStr);
end;
в Visual Basic Вы должны подключить ее как:
Declare Function DataFileType Lib "File.dll" (ByVal lpStr As String) As Integer
а в программе на VB использовать следующим образом:
nSize = DataFileType(lpVar)
sVendorName = Mid$(lpVar, 1, nSize)
3. Конвертация TBasicString (VBX) в string.
Я использую VBX и испытываю проблемы с конвертацией
Существует две функции —
•
Базы данных
1. Ошибка инициализации BDE ($2C09).