N := DragQueryFile(HDrop, $FFFF, nil, 0); 

  for I := 0 to (N-1) do 

  begin 

    Size := DragQueryFile(HDrop, I, nil, 0); 

    if Size < 255 then { 255 char. string limit - not really a problem } 

    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 — Application.ProcessMessages.

Если вы выполняете долгие вычисления, то вызов данного метода позволит в 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, не запускается минимизированным.

Проверьте глобальную переменную CmdShow для того чтобы определить, в каком состоянии запускается приложение, и модифицируйте ее как вам необходимо:

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?

Я пытаюсь это сделать, выставляя Form1.Visible := False, но это не помогает.

Windows не позволяет прятать окна MDI Child.

18. Как убрать заголовок у формы MDIChild?

Как убрать заголовок (Caption) из MDIChild?

Для MDIChild установка свойства BorderStyle := bsNone не убирает заголовок. Это можно сделать так:

procedure TMDIChildForm.CreateParams(var Params: TCreateParams); 

begin 

  inherited CreateParams(Params); 

  Params.Style := Params.Style and (not WS_CAPTION); 

end;

19. Сохранение данных в Clipboard.

Перейти на страницу:

Похожие книги