मुझे लगता है कि एक आइकन जब माउस इस पर ले जाया जाता है पता चलता एक कस्टम घटक बनाने के लिए कोशिश कर रहा हूँ से प्रतीक लोड करने के बाद डिफ़ॉल्ट आइकन के रूप में इस्तेमाल किया। मैं इस तरह प्रतीक लोड हो रहा हूँ:गलत आइकन एक आरईएस फ़ाइल
UNIT Test;
constructor TTestPath.Create(aOwner: TComponent);
VAR myIcon: TIcon;
begin
inherited Create(aOwner);
ImgList:= TImageList.Create(Self);
myicon := TIcon.Create;
TRY
myicon.LoadFromResourceName(HInstance, 'FOLDER'); <------ this becomes application's icon!
ImgList.AddIcon(myicon);
FINALLY
FreeAndNil(myicon);
end;
बात यह है कि जैसे ही मैं अपने परीक्षण आवेदन, आवेदन के आइकन (लाल डेल्फी हेलमेट) का उपयोग करता है कारण करने के लिए Test.pas जोड़ने के रूप में 'फ़ोल्डर की जगह है 'आइकन।
अद्यतन:
EXE फ़ाइल में माउस इस क्रम में हैं: 'फ़ोल्डर', Default_Delphi_icon तो, TTestPath के आइकन एप्लिकेशन का आइकन से पहले exe में जोड़ा जाता है।
यहाँ क्या गलत है: तथ्य यह है कि TTestPath के आइकन EXE फ़ाइल में इस तरह से या तथ्य यह है कि यह पहले आवेदन के (डिफ़ॉल्ट) आइकन रखा गया है में मौजूद हो सकता है?
नीचे नियंत्रण के कोड:
UNIT test;
INTERFACE
USES
System.SysUtils, Winapi.Windows, System.Classes, Vcl.StdCtrls, Vcl.Controls, Vcl.Graphics, vcl.imglist, Vcl.ExtCtrls; {$WARN GARBAGE OFF} {Silent the: 'W1011 Text after final END' warning }
TYPE
TValidity= (vaNone, vaValid, vaInvalid); { Normal/Green/Red color }
TInputType= (itFile, itFolder); { What kind of path will the user type in this control: folder or file }
TTestPath = class(TCustomGroupBox)
private
edtPath : TButtonedEdit;
btnApply : TButton;
btnExplore : TButton;
FInputType : TInputType;
imgList : TImageList;
FShowApplyBtn: Boolean;
protected
public
constructor Create(aOwner: TComponent); override;
published
property Align;
property Anchors;
property BiDiMode;
property Caption;
property Color;
property Constraints;
property Ctl3D;
property DockSite;
property DoubleBuffered;
property DragCursor;
property DragKind;
property DragMode;
property Enabled;
property Font;
property Padding;
property ParentBackground default True;
property ParentBiDiMode;
property ParentColor;
property ParentCtl3D;
property ParentDoubleBuffered;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property TabOrder;
property TabStop;
property Touch;
property Visible;
property StyleElements;
property OnAlignInsertBefore;
property OnAlignPosition;
property OnClick;
property OnContextPopup;
property OnDblClick;
property OnDragDrop;
property OnDockDrop;
property OnDockOver;
property OnDragOver;
property OnEndDock;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnGesture;
property OnGetSiteInfo;
property OnMouseActivate;
property OnMouseDown;
property OnMouseEnter;
property OnMouseLeave;
property OnMouseMove;
property OnMouseUp;
property OnStartDock;
property OnStartDrag;
property OnUnDock;
end;
procedure Register;
IMPLEMENTATION {$R cPathEdit.res}
USES cIO;
constructor TTestPath.Create(aOwner: TComponent);
VAR myIcon: TIcon;
begin
inherited Create(aOwner);
Caption := 'Folder';
Height:= 41;
FShowApplyBtn:= TRUE;
ImgList:= TImageList.Create(Self); { Freed by Self }
myicon := TIcon.Create;
TRY
myicon.LoadFromResourceName(HInstance, 'FOLDER');
ImgList.AddIcon(myicon);
myicon.LoadFromResourceName(HInstance, 'FOLDER_OPEN');
ImgList.AddIcon(myicon);
FINALLY
FreeAndNil(myicon);
end;
edtPath:= TButtonedEdit.Create(Self);
WITH edtPath DO
begin
Parent := Self;
Align := alClient;
Margins.Left := 1;
Margins.Top := 2;
Margins.Right := 1;
Margins.Bottom := 1;
AlignWithMargins := TRUE;
Images := imgList;
TabOrder := 0 ;
OnChange := nil;
RightButton.Hint := 'Browse for a folder';
RightButton.ImageIndex:= 0;
RightButton.HotImageIndex:= 1;
RightButton.Visible := TRUE;
OnRightButtonClick := nil;
OnKeyPress := nil;
end;
btnExplore:= TButton.Create(Self);
WITH btnExplore DO
begin
Parent := Self;
Align := alRight;
Width := 22;
Margins.Left := 1;
Margins.Top := 1;
Margins.Right := 1;
Margins.Bottom := 1;
AlignWithMargins := TRUE;
Caption := '^';
TabOrder := 1;
Hint := 'Open this folder in Windows Explorer';
OnClick := nil;
end;
btnApply:= TButton.Create(Self);
WITH btnApply DO
begin
Parent := Self;
Align := alRight;
Width := 38;
Margins.Left := 1;
Margins.Top := 1;
Margins.Right := 1;
Margins.Bottom := 1;
AlignWithMargins := TRUE;
Hint := 'Create folder if necessary';
Caption := 'Apply';
TabOrder := 2;
OnClick := nil;
end;
FInputType:= itFolder;
end;
procedure Register;
begin
RegisterComponents('xxx', [TTestPath]);
end;
end.
टेस्ट एप्लिकेशन:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, Forms,
test; <-------- this
type
TForm1 = class(TForm)
private
public
end;
var
Form1: TForm1;
IMPLEMENTATION
{$R *.dfm}
end.
डेल्फी एक 'MAINICON' संसाधन नाम जो पहले आइकन है से मुख्य आइकन का उपयोग करता है। चिह्न नाम वर्णमाला द्वारा क्रमबद्ध हैं। यदि आप अपना अन्य आइकन उदा। 'X_FOLDER' इसे काम करना चाहिए। – kobik
अजीब है कि exe में सभी चिह्न 'एन' (या उच्च चरित्र) के साथ शुरू किया जाना चाहिए :) लेकिन मुझे लगता है कि कोशिश करेंगे। धन्यवाद। – Ampere
लेकिन क्या 'फ़ोल्डर' EXE में एक सुलभ आइकन के रूप में मौजूद होना चाहिए? – Ampere