Чтение онлайн

ЖАНРЫ

Советы по Delphi. Версия 1.4.3 от 1.1.2001

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

Шрифт:

 Frms.Free;

end;

procedure TPagesDlg.NextClick(Sender: TObject);

var

 i: word;

 vi: Boolean;

begin

 Next.Enabled:= false;

 if PageControl1.PageCount=1 then AddForms;

 i:= PageControl1.ActivePage.PageIndex;

 if i=0 then vi:= true

 else vi:= TBPgFrm(Frms[i-1]).PgValid;

 if vi then

with PageControl1 do

if i=PageCount-1 then begin

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 

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

Поделиться с друзьями: