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

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

Интервал:

Закладка:

Сделать

Key := 0;

end;

end;

{ Disable close button }

procedureTForm1.Button1Click(Sender: TObject);

varSysMenu: HMenu;

begin

SysMenu := GetSystemMenu(Handle, False);

Windows.EnableMenuItem(SysMenu, SC_CLOSE, MF_DISABLED orMF_GRAYED);

end;

{ Enable close button }

procedureTForm1.Button2Click(Sender: TObject);

begin

GetSystemMenu(Handle, True);

Perform(WM_NCPAINT, Handle, 0);

end;

Но это окно можно закрыть из TaskBar'а.

Мерцание формы

Как бы это осуществить рисование в окне без его дурацкого мерцания и без помощи создания виртуального изображения в памяти? WM_SETREDRAW здесь поможет?

Попробуйте этот код. Даже если некоторые компоненты имеют пару BeginUpdate / EndUpdate, то для таких компонентов, как TTreeView, интенсивное рисование может послужить причиной перемещения полосы прокрутки и появления других «барабашек». В таких ситуаций вместо дескриптора элемента управления используйте родительский дескриптор.

procedureBeginScreenUpdate(hwnd : THandle);

begin

if(hwnd = 0) thenhwnd := Application.MainForm.Handle;

SendMessage(hwnd, WM_SETREDRAW, 0, 0);

end;

procedureEndScreenUpdate(hwnd : THandle; erase : Boolean);

begin

if(hwnd = 0) thenhwnd := Application.MainForm.Handle;

SendMessage(hwnd, WM_SETREDRAW, 1, 0);

RedrawWindow(hwnd, nil, 0, DW_FRAME + RDW_INVALIDATE + RDW_ALLCHILDREN + RDW_NOINTERNALPAINT);

if(erase) thenWindows.InvalidateRect(hwnd, nil, True);

end;

– Jeff Johnson

Минимизация модального окна

Мне нужно открыть из моей формы модальное окно, т.е. приостановить работу в моей форме до обработки этого модального окна. Но при этом я теряю возможность убрать (минимизировать) мою форму

Nomadicсоветует:

functionTMyForm.Execute: TModalResult;

begin

Show;

try

SendMessage(Handle, CM_ACTIVATE, 0, 0);

ModalResult := 0;

repeat

Application.HandleMessage;

ifApplication.Terminated thenModalResult := mrCancel;

ifModalResult = mrCancel thenCloseModal;

untilModalResult <> 0;

Hide;

Result := ModalResult;

SendMessage(Handle, CM_DEACTIVATE, 0, 0);

finally

Hide;

end;

end;

Конечно, в TMyForm должно быть FormStyle := fsStayOnTop;

Прозрачная форма

Dmitry V. Koreybaсоветует:

Высылаю прогу которая делает прозрачной форму. Может кому-нибудь поможет в его дизайнерских изысканиях.

var FullRgn, ClientRgn, CtlRgn : THandle;

procedureTForm1.DoInvisible;

var

AControl : TControl;

A, Margin, X, Y, CtlX, CtlY : Integer;

begin

Margin := (Width - ClientWidth) div2;

FullRgn := CreateRectRgn(0, 0, Width, Height);

X := Margin;

Y := Height - ClientHeight - Margin;

ClientRgn := CreateRectRgn(X, Y, X + ClientWidth, Y + ClientHeight);

CombineRgn(FullRgn, FullRgn, ClientRgn, RGN_DIFF);

forA := 0 toControlCount - 1 do begin

AControl := Controls[A];

if(AControl isTWinControl) or(AControl isTGraphicControl) then

withAControl do begin

ifVisible then begin

CtlX := X + Left;

CtlY := Y + Top;

CtlRgn := CreateRectRgn(CtlX, CtlY, CtlX + Width, CtlY + Height);

CombineRgn(FullRgn, FullRgn, CtlRgn, RGN_OR);

end;

end;

end;

SetWindowRgn(Handle, FullRgn, TRUE);

end;

procedureTForm1.FormDestroy(Sender: TObject);

begin

DeleteObject(ClientRgn);DeleteObject(FullRgn);

DeleteObject(CtlRgn);

end;

procedureTForm1.DoVisible;

begin

FullRgn := CreateRectRgn(0, 0, Width, Height);

CombineRgn(FullRgn, FullRgn, FullRgn, RGN_COPY);

SetWindowRgn(Handle, FullRgn, TRUE);

end;

procedureTForm1.FormCreate(Sender: TObject);

begin

DoInvisible;

end;

Каким образом можно изменить системное меню формы?

Nomadicсоветует:

Hе знаю как насчет акселераторов,надо поискать, а вот добавить пункт меню(Item) — пожалуйста

typeTMyForm= class(TForm)

procedurewmSysCommand( var Message:TMessage); messageWM_SYSCOMMAND;

end;

const

ID_ABOUT = WM_USER+1;

ID_CALENDAR=WM_USER+2;

ID_EDIT = WM_USER+3;

ID_ANALIS = WM_USER+4;

implementation

procedureTMyForm.wmSysCommand;

begin

caseMessage.wParam of

ID_CALENDAR:DatBitBtnClick(Self);

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

Интервал:

Закладка:

Сделать

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