procedureTfrmExplorer.TreeViewMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var P : TPoint;
begin
if Button<>mbRight then exit;
TreeMenu.AutoPopup := False;
if TreeView.GetNodeAt(X,Y)<>NIL then begin
TreeView.Selected := TreeView.GetNodeAt(X,Y);
P.X := X;
P.Y:=Y;
P := TreeView.ClientToScreen(P);
TreeMenu.Popup(P.X,P.Y);
end;
end;
ΠΠΊΠΎΠ½ΠΊΠΈ Π² PopupMenu
Delphi 2
type TForm1 = class(TForm)
MainMenu1: TMainMenu;
File1: TMenuItem; /**** ΠΠ»Π΅ΠΌΠ΅Π½Ρ Π΄Π»Ρ Menu Bar ****/
Open1: TMenuItem; /**** ΠΠ»Π΅ΠΌΠ΅Π½Ρ Π΄Π»Ρ Menu File ****/
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{private declarations}
public
{public declarations}
Icn, Txt, MnuItm: TBitmap;
end;
procedure TForm2.FormCreate(Sender: TObject);
var
R: TRect;
HIcn: HIcon;
Ic: TIcon;
Index: Word;
FileName: PChar;
begin
/** ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΈΠΊΠΎΠ½ΠΊΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ **/
Ic:=TIcon.Create;
Ic.Handle:=ExtractAssociatedIcon(Hinstance, /* Π·Π°Π΄Π°Π΅ΠΌ ΠΏΡΡΡ ΠΈ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° */, Index);
/** Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ **/
Txt:=TBitmap.Create;
with Txt do begin
Width:=Canvas.TextWidth(' Π’Π΅ΡΡ');
Height:=Canvas.TextHeight(' Π’Π΅ΡΡ');
Canvas.TextOut(0, 0, ' Π’Π΅ΡΡ');
end;
/** ΠΠΎΠΏΠΈΡΡΠ΅ΠΌ ΠΈΠΊΠΎΠ½ΠΊΡ Π² bitmap Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°. ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΌΠ΅Π½ΡΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΈΠΊΠΎΠ½ΠΊΠΈ **/
Icn:=TBitmap.Create;
with Icn do begin
Width:=32;
Height:=32;
Brush.Color:=clBtnFace;
Canvas.Draw(0, 0, Ic);
end;
/** Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΡΠ΄Π° ΠΌΡ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ ΠΈΠΊΠΎΠ½ΠΊΡ ΠΈ ΡΠ΅ΠΊΡΡ **/
MnuItm:=TBitmap.Create;
with MnuItm do begin
Width:=Txt.Width+18;
Height:=18;
with Canvas do begin
Brush.Color:=clBtnFace;
Pen.Color:=clBtnFace;
Brush.Style:=bsSolid;
Rectangle(0, 0, Width, Height);
CopyMode:=cmSrcAnd;
StretchDraw(Rect(0, 0, 16, 16), Icn);
CopyMode:=cmSrcAnd;
Draw(16, 8-(Txt.Height div 2), Txt);
end;
end;
end;
procedure TForm2.FormShow(Sender: TObject);
var
ItemInfo: TMenuItemInfo;
hBmp1 : THandle;
begin
HBmp1:=MnuItm.Handle;
with ItemInfo do begin
cbSize := SizeOf(ItemInfo);
fMask := MIIM_TYPE;
fType := MFT_BITMAP;
dwTypeData := PChar(MakeLong(hBmp1, 0));
end;
/** ΠΠ°ΠΌΠ΅Π½ΡΠ΅ΠΌ MenuItem Open1 Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Π½ΡΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ **/
SetMenuItemInfo(GetSubMenu(MainMenu1.Handle, File1.MenuIndex), Open1.MenuIndex, true, ItemInfo);
end;
Π ΠΌΠ΅Π½Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ ΠΏΠ°Π»ΠΈΡΡΠΎΠΉ ΠΈΠΊΠΎΠ½ΠΊΠΈ. Π― ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΡ Π»ΡΡΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Π½ΠΎ ΡΡΠΎ Π²ΡΠ΅, ΡΡΠΎ Ρ Π²Π°ΠΌ ΠΌΠΎΠ³Ρ ΡΠ΅ΠΉΡΠ°Ρ Π΄Π°ΡΡ.
ΠΠΈΡΡΠΈΠ½Π³ Π±ΡΠ» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΠΈΠΊΠΎΠ½ΠΊΠΈ Π² Β«ΡΠΠΊΠ½ΡΡΠΎΠ΅Β» ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΠ΅Π½Ρ (ΠΏΡΠΎΡΡΠΎ ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Win95). ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΠΈΠΌΠ΅ΡΡ Β«ΡΠΠΊΠ½ΡΡΠΎΠ΅Β» ΠΈ Β«Π½Π΅ΡΠΠΊΠ½ΡΡΠΎΠ΅Β» ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅.
unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus,ShellAPI;
type TForm1 = class(TForm)
MainMenu1: TMainMenu;
File1: TMenuItem;
Open1: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
Icn, MnuItm : TBitmap;
end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var
R: TRect;
HIcn: HIcon;
Ic: TIcon;
Index: Word;
begin
{ /** ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΈΠΊΠΎΠ½ΠΊΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ **/ }
Index := 0;
{ 11-Ρ ΠΈΠΊΠΎΠ½ΠΊΠ° Π² ΡΠ°ΠΉΠ»Π΅ }
Ic:=TIcon.Create;
Ic.Handle:=ExtractAssociatedIcon(Hinstance, 'c:\win95\system\shell32.dll', Index);
{ /** ΠΠΎΠΏΠΈΡΡΠ΅ΠΌ ΠΈΠΊΠΎΠ½ΠΊΡ Π² bitmap Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°. ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΌΠ΅Π½ΡΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΈΠΊΠΎΠ½ΠΊΠΈ **/ }
Icn:=TBitmap.Create;
with Icn do begin
Width:=32;
Height:=32;
Canvas.Brush.Color := clbtnface;
Canvas.Draw(0,0,Ic);
end;
{ /** Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΡΠ΄Π° ΠΌΡ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ ΠΈΠΊΠΎΠ½ΠΊΡ ΠΈ ΡΠ΅ΠΊΡΡ **/ }
MnuItm:=TBitmap.Create;
with MnuItm do begin
Width :=18;
Height:=18;
with Canvas do begin
Brush.Color:=clbtnface;
Pen.Color:=clbtnface;
CopyMode:=cmSrcAnd;
StretchDraw(Rect(0,0,16,16), Icn);
end;
end;
end;
procedure TForm1.FormShow(Sender: TObject);
var
ItemInfo: TMenuItemInfo;
hBmp1 : THandle;
begin
HBmp1:=MnuItm.Handle;
with ItemInfo do begin
cbSize := SizeOf(ItemInfo);
fMask := MIIM_CHECKMARKS;
fType := MFT_BITMAP;
hBmpunChecked := HBmp1; { ΠΠ΅ΠΎΡΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠ΅ (Unchecked) ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ }
hBmpChecked := HBmp1; { ΠΡΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠ΅ (Checked) ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ }
end;
{ /** ΠΠ°ΠΌΠ΅Π½ΡΠ΅ΠΌ MenuItem Open1 Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Π½ΡΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ **/ }
SetMenuItemInfo(GetSubMenu(MainMenu1.Handle, File1.MenuIndex), Open1.MenuIndex, true, ItemInfo);
end;
end.
ProgressBar
ProgressBar β Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΠΊΠ°
ΠΠΈΡΡΠΌΠΎ ΡΠΈΡΠ°ΡΠ΅Π»Ρ
ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅ ΠΠ°Π»Π΅Π½ΡΠΈΠ½!
ΠΠ°ΠΊΠ°Π·ΡΠΈΠΊ ΠΌΠΎΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΎΠ±ΡΠ°ΡΠΈΠ»ΡΡ Ρ ΠΏΡΠΎΡΡΠ±ΠΎΠΉ β "Π‘Π΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ΅ΡΡ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ ΠΊΠ°ΠΊ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΠΠΎΡΡΠΎΠ½Π°. Π§ΡΠΎΠ± Π±ΡΠ» Π² ΡΡΠ°ΡΡΡ ΡΡΡΠΎΠΊΠ΅ ΠΈ ΠΠΠΠΠΠΠ₯ ΡΠ°ΠΌΠΎΠΊ". ProgressBar Π² StatusBar β Π½Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π½ΠΎ ΠΊΠ°ΠΊ Π±ΡΡΡ Ρ ΡΠ°ΠΌΠΊΠΎΠΉ ΠΎΡ ProgressBar? ProgressBar Π²ΡΠ΅Π³Π΄Π° Π²ΡΡΠ΅ΡΡΠΈΠ²Π°Π΅Ρ ΡΠ°ΠΌΠΊΡ ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΅Π΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°Ρ ΠΈΠ΄Π΅Ρ, Π²ΠΎΠΏΠ»ΠΎΡΠΈΠ²ΡΠ°ΡΡΡ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Ρ Π½ΠΎΠ²ΡΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ ShowFrame. Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ Π½Π° ΡΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΡΠΌ.
unit SProgress;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls;
type TVSProgressBar = class(TProgressBar)
procedure WMNCPAINT(var Msg: TMessage); message WM_NCPAINT;
private
{ Private declarations }
FShowFrame: boolean;
procedure SetShowFrame(Value: boolean);
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
published
{ Published declarations }
property Align;
property Anchors;
property BorderWidth;
property DragCursor;
property DragKind;
property DragMode;
property Enabled;
property Hint;
property Constraints;
property Min;
property Max;
property Orientation;
property ParentShowHint;
property PopupMenu;
property Position;
property ShowFrame: boolean read FShowFrame write SetShowFrame;
property ShowHint;
property Smooth;
property Step;
property TabOrder;
property TabStop;
property Visible;
property OnContextPopup;
property OnDragDrop;
property OnDragOver;
property OnEndDock;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnStartDock;
property OnStartDrag;
end;
procedure Register;
implementation
{ TVSProgressBar }
constructor TVSProgressBar.Create(AOwner: TComponent);
begin
Inherited;
FShowFrame:= True;
end;
procedure TVSProgressBar.SetShowFrame(Value: boolean);