Виртуальная библиотека Delphi

Тут можно читать онлайн Виртуальная библиотека Delphi - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Виртуальная библиотека Delphi
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    3/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 60
    • 1
    • 2
    • 3
    • 4
    • 5

Виртуальная библиотека Delphi краткое содержание

Виртуальная библиотека Delphi - описание и краткое содержание, автор Неизвестный Автор, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Виртуальная библиотека Delphi - читать онлайн бесплатно полную версию (весь текст целиком)

Виртуальная библиотека Delphi - читать книгу онлайн бесплатно, автор Неизвестный Автор
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

begin

{ default WndProc return value }

Result := 0;

{ handle messages here; the message number is in Msg }

Result := CallWindowProc(OldWndProc, hWndAppl, Msg, wParam, lParam);

end;

begin

Application.CreateForm(TForm1, Form1);

OldWndProc := TFarProc(GetWindowLong(Application.Handle, GWL_WNDPROC));

SetWindowLong(Application.Handle, GWL_WNDPROC, Longint(@NewWndProc));

Application.Run;

end.

10. Проблема с DragDrop для внешних программ.

картинка 80

Я пишу небольшую программку — "мусорную корзину". В FormCreate вызывается DragAcceptFiles(HANDLE, True) . Проблема в том, что когда размер окна восстанавливается и затем минимизируется Drag and Drop перестает работать. Я безуспешно пробовал помещать DragAcceptFiles в разные методы формы. Однако если сделать вызов DragAcceptFiles(Application.Handle, True) в MainForm.Create , то все работает. Как перехватить событие WM_DROPFILES ?

картинка 81

Это можно сделать так:

type

TMainForm = class(TForm)

...

procedureFormCreate(Sender: TObject);

private

procedureDropFiles( varMsg : TWMDropFiles); messageWM_DROPFILES;

end;

procedureTMainForm.DropFiles( varMsg : TWMDropFiles);

begin

DragQueryPoint(Msg.Drop, Point);

NrOfFiles := DragQueryFile(Msg.Drop, Word(-1), FileName, BufSize);

DragQueryFile(Msg.Drop, 0, FileName, BufSize);

end;

procedureTMainForm.FormCreate(Sender: TObject);

begin

DragAcceptFiles(Handle, True);

end;

Подробнее о перехвате событий Windows см. Главу 7 руководства Component Writers Guide.

11. Как обрабатывать WM_DROPFILES (Drag/Drop)?

Следующий код показывает как обрабатывать это событие. Обрабатываются имена всех "брошенных" файлов. Для загрузки каждого файла вызывается CreateChild(FName) . В обработчике OnCreate данной формы вы должны вызвать DragAcceptFiles .

type

TFrameForm = class(TForm)

...

protected

procedureWMDropFiles( varMsg: TMessage); messageWM_DROPFILES;

end;

procedureTFrameForm.WMDropFiles( varMsg : TMessage);

var

I, N, Size: Word;

FName: string;

HDrop: Word;

begin

HDrop := Msg.WParam;

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

forI := 0 to(N-1) do

begin

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

ifSize < 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 для того чтобы определить, в каком состоянии запускается приложение, и модифицируйте ее как вам необходимо:

procedureTForm1.FormCreate(Sender: TObject);

begin

ifCmdShow = SW_SHOWMINNOACTIVE thenWindowState := wsMinimized;

end;

Например, если необходимо запускать приложение либо минимизированным, либо максимизированным, используйте следующий код:

procedureTForm1.FormCreate(Sender: TObject);

begin

ifCmdShow = SW_SHOWMINNOACTIVE thenWindowState := wsMinimized

elseWindowState := wsMaximized;

end;

16. Объясните разницу в помещении uses в секцию interface или implementation.

Секция interface — интерфейсная. Туда попадают объявления констант, типов (в т.ч. и объектов или классов) переменных, процедур и функций. Поэтому для этой части usesдолжен содержать ссылки на те модули, которые используются для объявлений в этой части.

Секция implementation — описание реализации интерфейсной части, здесь в usesдолжны быть упомянуты те модули, которыми вы пользуетесь для написания кода. Например, Вы хотите в модуле пользоваться функциями API Windows, для этого добавьте в объявлении implementationстроку uses WinTypes, WinProcs;или uses Windows;. Таким образом, вы явно указываете что данными модулями будете пользоваться только в секции реализации.

Конечно, можно упоминать модули только в части interface, но правильная расстановка имен модулей в соответствующем usesгарантирует исключение циклических ссылок, а также улучшает читаемость программы.

17. Как спрятать окна MDI Child?

картинка 82

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

картинка 83

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

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

картинка 84

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

картинка 85

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

procedureTMDIChildForm.CreateParams( varParams: TCreateParams);

begin

inheritedCreateParams(Params);

Params.Style := Params.Style and( notWS_CAPTION);

end;

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

картинка 86

Мне нужно использовать clipboard для сохранения данных в собственном формате и я хочу для этого написать набор процедур ввода/вывода с использованием потоков (streams). Возможно ли создать объект TMemoryStream , эаполнить его и поместить в Clipboard?

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

Интервал:

Закладка:

Сделать


Неизвестный Автор читать все книги автора по порядку

Неизвестный Автор - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Виртуальная библиотека Delphi отзывы


Отзывы читателей о книге Виртуальная библиотека Delphi, автор: Неизвестный Автор. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x