Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΏΠΎ Delphi. ВСрсия 1.4.3 ΠΎΡ‚ 1.1.2001Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 93

Автор Π’Π°Π»Π΅Π½Ρ‚ΠΈΠ½ ΠžΠ·Π΅Ρ€ΠΎΠ²

   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;