![]() |
Icon aus Ordner laden und anzeigen nur wie?
Hallo Leute,
ich hab da folgendes Problem und zwar im nachfolgenden Code würde ich gerne das TestIco aus einem Ordner laden und anzeigen lassen, leider hab ich keine Ahnung wie ich das anstellen muss und brächte etwas Hilfe.
Delphi-Quellcode:
Ich weiß zwar das das ich es so laden kann:
procedure TQipPlugin.DrawSpecContact(PlugMsg: TPluginMessage);
var ContactId : DWord; wStr : WideString; // Data : Pointer; Cnv : TCanvas; R : PRect; R1 : TRect; TestIcon : HICON; // TestIcon : TICON; begin if not Assigned(FfrmMain) then Exit; ContactId := PlugMsg.WParam; if (ContactId <> FfrmMain.UniqContactId) then Exit; //Data not used here in this example because plugin added only one contact //Data := Pointer(PlugMsg.LParam); Cnv := TCanvas.Create; try Cnv.Handle := PlugMsg.NParam; R := PRect(PlugMsg.Result); SetBkMode(Cnv.Handle, TRANSPARENT); TestIcon := LoadImage(0, IDI_INFORMATION, IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR or LR_SHARED or LR_LOADTRANSPARENT); DrawIconEx(Cnv.Handle, 8, 2, TestIcon, 16, 16, 0, 0, DI_NORMAL); DestroyIcon(TestIcon); wStr := 'Text'; Cnv.Font.Name := 'Tahoma'; Cnv.Font.Color := clNavy; Cnv.Font.Size := 8; Cnv.Font.Style := [fsBold]; R1 := Rect(R^.Left + 26 + FSpecLeft, R^.Top + 1 + FSpecTop, R^.Right, R^.Bottom); DrawTextW(Cnv.Handle, PWideChar(wStr), Length(wStr), R1, DT_LEFT); finally Cnv.Free; end; end;
Delphi-Quellcode:
aber nicht wie ich es anstellen muss, das es nachher angezeigt wird.
var TestIcon : TICON;
[...] TestIcon := TIcon.Create; TestIcon.LoadFromFile(ExtractFilePath(FDllPath)+'Test.ico'); [...] Danke schon mal für eure Hilfe. Mfg Dog [edit=Luckie]Tippfehler im Titel korrigiert. Mfg, Luckie[/edit] |
Re: Ico aus Ordner laden und anzeigen nur wie?
Wo ist das Problem:
Delphi-Quellcode:
Allerdings habe ich es mit DrwaIconEx nicht transparent bekommen, auch wenn ich die Eigenchaft von TIcon Transparent auf true gesetzt habe. Mit DrawIcon wurde es automatisch transparent dargestellt. Nur kann man da keine Größe angeben. Da müsstest du dann ein Passendes Icon benutzen. Umd mit dem LR_SHARED musst du vorsichtig sein. Lies dazu mal was im Windows SDK steht.
procedure TForm1.Button1Click(Sender: TObject);
var Icon: TIcon; Path: String; begin Path := ExtractFilePath(ParamStr(0)) + 'Moebius.ico'; Icon := TIcon.Create; try Icon.LoadFromFile(Path); //DrawIcon(Self.Canvas.Handle, 0, 0, Icon.Handle); DrawIconEx(Self.Canvas.Handle, 0, 0, Icon.Handle, 16, 16, 0, 0, DI_IMAGE); finally Icon.Free; end; end; |
Re: Icon aus Ordner laden und anzeigen nur wie?
Cool funktioniert super.
Eine Frage hab ich da aber noch und zwar mein Ico hat einen Transparenten Hintergrund und wenn es nachher angezeigt wird ist das was Tranzparent ist schwarz. Wie schaffe ich es das der Hintergrund weiß angezeigt wird? Ps: Habs auch mit TestIcon.Transparent := True; versucht der Hintergrund bleibt leider schwarz. |
Re: Icon aus Ordner laden und anzeigen nur wie?
Wie gesagt mit DrawIcon wird es transparent. Warum es mit DrawIconEx nicht transparent wird, weiß ich im Moment auch nicht.
PS: Die Dinger heißen Icon und nicht Ico. |
Re: Icon aus Ordner laden und anzeigen nur wie?
hm... ok ist nicht schlimm dann pass ich es dem Hintergrund an.
Ist es auch möglich das Icon nicht aus einem Ordner zu laden sondern von der Form zu nehmen? (Image1) Ps: Sorry hatte mich bei ico verschrieben sollte Icon heißen. |
Re: Icon aus Ordner laden und anzeigen nur wie?
Ich glaube TIcon hat auch eine Methode LoadFromResource.
|
Re: Icon aus Ordner laden und anzeigen nur wie?
Es gibt leider nur:
LoadFromClipboardFormat LoadFromStream LoadFromFile gibts vll noch eine Möglichkeit? |
Re: Icon aus Ordner laden und anzeigen nur wie?
Lade das Icon mit einem TResourcenStream und von da mit LoadFromResource.
|
Re: Icon aus Ordner laden und anzeigen nur wie?
Zitat:
|
Re: Icon aus Ordner laden und anzeigen nur wie?
Also so schwer kann das doch nicht sein:
Delphi-Quellcode:
Bt. mein BDS2006 kennt für TIcon auch die Methoden LoadFromResourceName und LoadFromResourceID.
procedure TForm4.Button1Click(Sender: TObject);
var ResourceStream: TResourceStream; Icon: TIcon; begin ResourceStream := TResourceStream.CreateFromID(HInstance, <Deine Icon ID>, 'Icon'); try Icon := TIcon.Create; try Icon.LoadFromStream(ResourceStream); DrawIcon(Self.Canvas.Handle, 0, 0, Icon.Handle); finally Icon.Free; end; finally ResourceStream.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz