N := DragQueryFile(HDrop, $FFFF, nil, 0);
for I := 0 to (N-1) do
begin
Size := DragQueryFile(HDrop, I, nil, 0);
if Size < 255 then
begin
FName[0] := Chr(Size);
DragQueryFile(HDrop, I, @FName[1], Size+1);
CreateChild(FName);
end;
end;
Msg.Result := 0;
inherited;
end;
12. Как может выделить время CPU другим задачам , подобно "DoEvents" в VB?
Эквивалент в Delphi —
Если вы выполняете долгие вычисления, то вызов данного метода позволит в Win 16 выполняться параллельно другим приложениям, а в Win 32 - корректно перерисовываться вашему приложению.
13. В каком порядке происходят события при создании и показе окна?
При создании окна обработчики событий выполняются в следующем порядке:
• OnCreate
• OnShow
• OnPaint
• OnActivate
• OnResize
• OnPaint (снова)
14. UpCase для русского языка.
Данная функция (UpCase) производит преобразование только латинских символов в верхний регистр. Для правильного преобразования необходимо использовать функции Windows API, поскольку именно Windows должна "знать" о кодировке национальных символов. Причем к конфигурации BDE кодровка Windows не имеет никакого отношения — имея английские Windows без русификатора и выставив в BDE кодировку Paradox ANSII Cyrillic нормальных русских букв получить не удастся.
А функции для преобразования следующие — OemToAnsi, AnsiToOem, OemToAnsiBuf, AnsiToOemBuf в Win16 (модуль WinProcs) и OemToChar, CharToOem, OemToCharBuf и CharToOemBuf в Win32 (модуль Windows)..
15. Приложение, написанное на Delphi, не запускается минимизированным.
Проверьте глобальную переменную
procedure TForm1.FormCreate(Sender: TObject);
begin
if CmdShow = SW_SHOWMINNOACTIVE then WindowState := wsMinimized;
end;
Например, если необходимо запускать приложение либо минимизированным, либо максимизированным, используйте следующий код:
procedure TForm1.FormCreate(Sender: TObject);
begin
if CmdShow = SW_SHOWMINNOACTIVE then WindowState := wsMinimized
else WindowState := wsMaximized;
end;
16. Объясните разницу в помещении uses в секцию interface или implementation.
Секция interface — интерфейсная. Туда попадают объявления констант, типов (в т.ч. и объектов или классов) переменных, процедур и функций. Поэтому для этой части uses должен содержать ссылки на те модули, которые используются для объявлений в этой части.
Секция implementation — описание реализации интерфейсной части, здесь в uses должны быть упомянуты те модули, которыми вы пользуетесь для написания кода. Например, Вы хотите в модуле пользоваться функциями API Windows, для этого добавьте в объявлении implementation строку uses WinTypes, WinProcs; или uses Windows;. Таким образом, вы явно указываете что данными модулями будете пользоваться только в секции реализации.
Конечно, можно упоминать модули только в части interface, но правильная расстановка имен модулей в соответствующем uses гарантирует исключение циклических ссылок, а также улучшает читаемость программы.
17. Как спрятать окна MDI Child?
Я пытаюсь это сделать, выставляя
Windows не позволяет прятать окна MDI Child.
18. Как убрать заголовок у формы MDIChild?
Как убрать заголовок (
Для MDIChild установка свойства
procedure TMDIChildForm.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style := Params.Style and (not WS_CAPTION);
end;
19. Сохранение данных в Clipboard.