» » » Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001


Авторские права

Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

Здесь можно скачать бесплатно "Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001" в формате fb2, epub, txt, doc, pdf. Жанр: Программирование. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001
Рейтинг:
Название:
Советы по Delphi. Версия 1.4.3 от 1.1.2001
Издательство:
неизвестно
Год:
неизвестен
ISBN:
нет данных
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

Описание книги "Советы по Delphi. Версия 1.4.3 от 1.1.2001"

Описание и краткое содержание "Советы по Delphi. Версия 1.4.3 от 1.1.2001" читать бесплатно онлайн.



…начиная с 1001. Смотрите другие файлы…






   CancelBtnClick(Sender);

   exit;

  end else begin

   ActivePage:= FindNextPage(ActivePage, True, false);

   if ActivePage.PageIndex=PageCount-1 then Next.Caption:= 'Finish';

   Prev.Enabled:= true;

   if TBPgFrm(Frms[i]).PgInit then Next.Enabled:= true

   else PrevClick(Sender);

  end else Next.Enabled:= true;

end;


procedure TPagesDlg.PrevClick(Sender: TObject);

begin

 Prev.Enabled:= false;

 with PageControl1 do begin

  ActivePage:= FindNextPage(ActivePage, false, false);

  Prev.Enabled:= ActivePage.PageIndex>0;

 end;

 Next.Caption:= 'Next';

 Next.Enabled:= true;

end;


end.


unit Unit3; //наследник с RadioGroup.

interface

uses ...

type TBPgFrm3 = class(TBPgFrm)

 RadioValid: TRadioGroup;

public

 function PgValid: boolean; override;

end;

implementation


{$R *.DFM}


function TBPgFrm3.PgValid: boolean;

begin

 result:= RadioValid.ItemIndex=0;

end;


end.


unit Unit4; // наследник с CheckBox.

interface

uses ...

type TBPgFrm2 = class(TBPgFrm)

 CheckValid: TCheckBox;

public

 function PgValid: boolean; override;

end;

implementation


{$R *.DFM}


function TBPgFrm2.PgValid: boolean;

begin

 result:= CheckValid.Checked;

end;

end.

В Delphi 4 появились новые возможности, в частности, возможность докинга визуальных компонент, в частности, форм, на различные DockSite, в том числе и на TPageControl. Это более удобно. Кроме того, Вы имеете возможность использования TFormLoader из библиотеки VG Library. 

IMHO файл *.dfm – это компилированный ресурс с определением установок формы. А можно ли как-то увидеть этот ресуpс в исходном виде?

Nomadic советует: 

1. File|Open… ТвояФорма.DFM – увидишь текст;

2. «Delphi\bin\convert ТвояФорма.DFM» — получится ТвояФорма.TXT (можно и наоборот).

Идею в массы: в DN/VC/NC можно настроить viewer'ом .DFM .BAT'ник, который скажет convert;wpview;del – и заглядывать в .DFM не открывая Delphi.

Кстати, функции, которые реализуют это преобразование, доступны для использования в личных целях :)

CLASSES.PAS:

[…]

{ Object conversion routines }

procedure ObjectBinaryToText(Input, Output: TStream);

procedure ObjectTextToBinary(Input, Output: TStream);


procedure ObjectResourceToText(Input, Output: TStream);

procedure ObjectTextToResource(Input, Output: TStream); 

Определение перемещения формы

Кто-нибудь знает как мне определить перемещение пользователем главной формы приложения (не изменение ее размеров), кроме как использования таймера и проверки значений свойств Form.Top и Form.Left?

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

1. WM_WINDOWPOSCHANGING (возникает перед перемещением),

2. WM_WINDOWPOSCHANGED (возникает после перемещения), или

3. WM_MOVE (возникает после перемещения)

 – Robert Wittig 

Можно ли сделать так – одновременно иметь на экране всегда доступную форму – например, "Навигатор", и, открывая модальные формы, иметь всегда доступ к форме "Навигатор"?

Nomadic советует:

Обманом можно все.

procedure ShowAlmostModal(FormModal:TForm);

begin

 NavigatorForm.Enabled:=false;

 FormModal.ShowModal

end;

И вот это привесь на OnShow почти модальной формы

procedure FormShow(Sender:Tobject);

begin

 NavigatorForm.Enabled:=true;

end;

Как создать окна непрямоугольной формы и работать с ними?

Nomadic советует:

Достаточно создать регион нужной формы и вызвать SetWindowRgn —

HRGN rgn := CreateEllipticRgn(10,10,100,100);

SetWindowRgn(hMyWnd,rgn); // Вот и будет круглое окно

При этом регион этот теперь используется Windows и будет уничтожен при закрытии окна.

Попробуйте вот этот обpаботчик OnCreate : На меня это произвело впечатление.

procedure TForm1.FormCreate(Sender: TObject);

const W=36*pi/180;

var

 R,R1,R2: HRgn;

 X,Y,i:integer;


 function S(a:integer;R:integer):integer;

 begin

  Result:=round(R*sin(W*a));

 end;


 function C(a:integer;R:integer):integer;

 begin

  Result:=round(R*cos(W*a));

 end;


 function GetStarReg(X,Y,R:integer):HRGN;

 var P : array [0..4] of TPoint;

 begin

  P[0] := Point(X, Y-R);

  P[1] := Point(X-S(4,R), Y-C(4,R));

  P[2] := Point(X-S(8,R), Y-C(8,R));

  P[3] := Point(X-S(2,R), Y-C(2,R));

  P[4] := Point(X-S(6,R), Y-C(6,R));

  Result := CreatePolygonRgn(P, 5, WINDING);

 end;


begin

 X:=Width div 2;

 Y:=Height div 2;

 R:=GetStarReg(X,Y,100);

 i:=1;

 repeat

  R1:=GetStarReg(X-S(i,120),Y-C(i,110),40);

  CombineRgn(R,R,R1,RGN_OR);

  inc(i,2);

 until i>9;

 R1:=GetStarReg(X,Y,30);

 CombineRgn(R,R,R1,RGN_DIFF);

 R1:=CreateEllipticRgn(3,3,Width-6,Height-6);

 R2:=CreateEllipticRgn(20,10,Width-20,Height-10);

 CombineRgn(R1,R1,R2,RGN_DIFF);

 CombineRgn(R,R,R1,RGN_OR);

 SetWindowRgn(Handle, R, True);

end;

Как запретить кнопку Close [×] в заголовке окна?

Nomadic советует:

Вот кусок, который делает все, что тебе нужно:

procedure TForm1.FormCreate(Sender: TObject);

var Style: Longint;

begin

 Style := GetWindowLong(Handle, GWL_STYLE);

 SetWindowLong(Handle, GWL_STYLE, Style And Not WS_SYSMENU);

end;


procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

 if (Key = VK_F4) and (ssAlt in Shift) then begin

  MessageBeep(0);

  Key := 0;

 end;

end;


{ Disable close button }

procedure TForm1.Button1Click(Sender: TObject);

var SysMenu: HMenu;

begin

 SysMenu := GetSystemMenu(Handle, False);

 Windows.EnableMenuItem(SysMenu, SC_CLOSE, MF_DISABLED or MF_GRAYED);

end;


{ Enable close button }

procedure TForm1.Button2Click(Sender: TObject);

begin

 GetSystemMenu(Handle, True);

 Perform(WM_NCPAINT, Handle, 0);

end;

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

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

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

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

procedure BeginScreenUpdate(hwnd : THandle);

begin

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

 SendMessage(hwnd, WM_SETREDRAW, 0, 0);

end;


procedure EndScreenUpdate(hwnd : THandle; erase : Boolean);

begin

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

 SendMessage(hwnd, WM_SETREDRAW, 1, 0);

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

 if (erase) then Windows.InvalidateRect(hwnd, nil, True);

end;

– Jeff Johnson 

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

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

Nomadic советует:

function TMyForm.Execute: TModalResult;

begin

 Show;

 try

  SendMessage(Handle, CM_ACTIVATE, 0, 0);

  ModalResult := 0;

  repeat

   Application.HandleMessage;

   if Application.Terminated then ModalResult := mrCancel;


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

Похожие книги на "Советы по Delphi. Версия 1.4.3 от 1.1.2001"

Книги похожие на "Советы по Delphi. Версия 1.4.3 от 1.1.2001" читать онлайн или скачать бесплатно полные версии.


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

Все книги автора Валентин Озеров

Валентин Озеров - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Отзывы о "Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001"

Отзывы читателей о книге "Советы по Delphi. Версия 1.4.3 от 1.1.2001", комментарии и мнения людей о произведении.

А что Вы думаете о книге? Оставьте Ваш отзыв.