Валентин Озеров - Советы по 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», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

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

Интервал:

Закладка:

Сделать

Если это кнопка Previous, добавьте: ModalResult := mrPrevious;

Как заставить формы минимизироваться на панель задач с анимацией?

Nomadicсоветует:

Дело-то вот в чем: Главным окном программы дельфийской является не главная форма, а окно TApplication, которое имеет нулевые размеры, поэтому его не видно. Именно для него показывается иконка на панели задач. Когда пользователь нажимает кнопку минимизации на главной форме, команда минимизации передается этому окну, и сворачивается именно оно, а для остальных просто делается hide. А так как окно TApplication имеет нулевые размеры, то и анимации никакой не видно.

А чтобы этого избежать, необходимо:

В исходном тесте модуля проекта после вызова Application.Initialize выполнить вызов

// В исходном тесте модуля проекта после вызова Application.Initialize

SetWindowLong(Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) orWS_EX_TOOLWINDOW);

В исходном тексте модуля главной формы перекрыть следующие методы –

// // В классе формы

// Интерфейс

protected

procedure CreateParams( varp: TCreateParams); override;

procedureWMSysCommand( varm: TMessage); messageWM_SYSCOMMAND;

// Реализация

procedureTMainForm.CreateParams( varp: TCreateParams);

begin

inherited;

p.WndParent := 0;

end;

procedureTMainForm.WMSysCommand( varm: TMessage);

begin

m.Result := DefWindowProc(Handle, m.Msg, m.wParam, m.lParam);

end;

Вместо SetWindowLong в MDI-приложениях лучше использовать

ShowWindow(Application.Handle, SW_HIDE);

Перемещение формы не за заголовок III

Ситников Митрийсоветует:

В следующем примере показано как можно передвигать форму если пользователь "захватил" Client-пространство:

unitMain;

interface

usesSysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

typeTForm1 = class(TForm)

Button1: TButton;

procedureButton1Click(Sender: TObject);

procedureFormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

MX: integer;

MY: integer;

implementation

{$R *.DFM}

procedureTForm1.Button1Click(Sender: TObject);

begin

Close;

end;

procedureTForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

begin

ifShift<>[ssLeft] then begin

MX:=X;

MY:=Y;

end else begin

Left:=Left+X-MX;

Top:=Top+Y-MY;

end;

end;

end.

Перемещение формы не за заголовок IV

Как мне переместить форму, не имеющую заголовка?

Выберите элемент управления (или саму форму) и напишите это в его (ее) обработчике события OnMouseDown (данный пример дан только для формы):

procedureTForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

begin

ReleaseCapture;

Perform(WM_SYSCOMMAND, SC_MOVE+2, 0);

end;

Классно! Намного проще метода NCHitTest, который я предлагал. Хотя многое из того, чтобы вы мне написали, я не понял. Для чего нужно прибавлять 2 к параметру SC_MOVE? В справке по API об этом ничего не сказано.

Ну хорошо, есть недокументированный способ сообщить Windows о необходимости перемещения окна таким же способом, что и с помощью заголовка (это может вызвать неадекватную реакцию системы, не делайте этого!). Другим способом перемещения окна является перекрытие WMNCHITTEST и возвращения им значения HTCAPTION. Тем не менее, обычно я предпочитаю пользоваться методом SC_MOVE+2, поскольку он не требует создания потомков, а только создание обработчика OnMouseDown. Отчасти аналогично, вы можете добавлять константы SC_SIZE к WM_SYSCOMMAND для получения размера окна подобно тому, как если бы вы потянули его за бордюрчик. В основном мы добавляем код hittest – 9. В следующем классе определена панель, которая сама изменяет свои размеры при щелчке в ее нижнем правом углу, и сама перемещается, если вы щелкнули по ней где-то еще.

TypeTMovablePanel = Class(TPanel)

Private

ProcedurewmNCHitTest( Var Message: TWMNCHitTest); messageWM_NCHITTEST;

Protected

ProcedureMouseDown(Button : TMouseButton; Shift : TShiftState; X, Y : Integer); override;

End;

ProcedureTMovablePanel.wmNCHitTest( Var Message: TWMNCHitTest);

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

Интервал:

Закладка:

Сделать

Похожие книги на «Советы по 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